セキュリティを楽しく学ぶ、触れる。セキュリティごった煮ブログ

ネットエージェント
セキュリティごった煮ブログ

 コース:元祖こってり

「元祖こってり」記事はネットエージェント旧ブログ[netagent-blog.jp]に掲載されていた記事であり、現在ネットエージェントに在籍していないライターの記事も含みます。

FD改ざん事件についての技術的考察

松本隆

 皆さんこんにちは、フォレンジック・エバンジェリストの松本です。今回はFD改ざん事件についての技術的な解説記事を書かせていただこうと思います。

-----

■はじめに
 今回のFD改ざんの記事について、新聞各社の特集記事を興味深く読ませていただいている。弊社でもここしばらくはこの話題で持ちきりだったのだが、その議論の中で同僚から記事の内容をデジタル・フォレンジックに不慣れな方に向けて、解説してみてはどうかという意見をいただいた。
 ブログのネタもそろそろ尽きつつあったので(笑)、そのアイデアをありがたく頂戴し、フォレンジックの技術的な観点から事件について解説してみようと思う。今回は事件の焦点であり、皆さん興味を持っているであろうフロッピーディスクのタイムスタンプの改ざんと、改ざん痕跡の追跡についてである。
 10月1日現在で公開されている情報をまとめると、今回のタイムスタンプの改ざん事件では、専用のタイムスタンプ書き換えツールを用い、証拠ファイルの「作成日時」「更新日時」のタイムスタンプのうち、「更新日時」のタイムスタンプを「2004年6月1日1時20分06秒」から「2004年6月8日21時10分56秒」に改ざんした。ただし、ファイルには「2009年7月13日」に更新日時を書き換えた痕跡が残っていた、ということのようだ。
 ここで混乱するのが、「更新日時」と「ファイルに残っている痕跡としての更新日時」という、2種類の"更新日時"だろう。そこで、Windowsのフロッピーディスクで一般的に用いられているFATファイルシステムのタイムスタンプ情報と、(今回の事件で書き換えられたとされる)一太郎ファイルのメタ情報内のタイムスタンプについて、筆者の環境で検証してみようと思う。
 なお、残念ながら一太郎の環境を用意できなかったため、本記事で解析しているファイルはネットで無料テンプレートとして一般公開されているものを利用させていただいた。問題はないと思うが、念のためにファイル名や著作者などの情報は伏せた形で必要な部分のみ掲載する。

■改ざん前のタイムスタンプについて
図1 まずは改ざん前のタイムスタンプを確認してみよう。図1で示しているのは、今回の検証でタイムスタンプ改ざんする対象ファイルの、ファイルシステムのタイムスタンプだ。図1の右上に、Windowsエクスプローラーから確認できる、おなじみのファイルのプロパティ情報を表示している。
 図1の下側にある数字の羅列が、フロッピーディスクのFATファイルシステムの、FATディレクトリエントリ(以下ディレクトリエントリ)と呼ばれる情報をバイナリエディタで表示したものだ。ディレクトリエントリには、ファイルの名前やファイルサイズ、タイムスタンプ情報などが記録されている。見比べていただければ、Windowsのファイルプロパティのタイムスタンプ情報が、ディレクトリエントリのタイムスタンプと同じであることがわかる。データはリトルエンディアン(Little Endian)で記録されており、たとえば図1の作成日時は「3D 3D 69 AF」と読む。
 なお、ディレクトリエントリの作成日時がプロパティ情報と1秒異なっているが、これはディレクトリエントリにもう1バイト分、10ミリ秒を記録する領域があるためだ。今回は説明を単純化するために、ミリ秒は丸める形でファイルプロパティ情報と同じ4バイトのDOS形式でタイムスタンプを表記しているので、この点ご容赦いただきたい。

図2 図2は改ざん前のファイルのメタ情報を、同じくバイナリエディタで表示したものだ。
 ファイルのメタ情報とは、ファイルのデータ(内容)そのものではなく、データを管理するためのデータ(ファイルの属性情報など)のことである。よく知られているものに、HTMLファイルにおいてのheadタグ内に記述されるmetaタグや、撮影日時や機種名等が画像ファイルに記録されるデジカメのExif(Exchangeable image file format)がある。ちなみに今回検証する一太郎形式のメタ情報には、ファイルの作成者、更新者、コンテンツ記述方式、データの版番号、そしてファイルの作成日や更新日時といったタイムスタンプ情報などが記録されているのが確認できた(※1)。
 図2では一太郎ファイルのメタ情報のタイムスタンプとして、8バイトのWindowsタイムスタンプ形式の「作成日時」と「更新日時」を確認できる。ここで確認してほしいのは、図1のファイルシステムのタイムスタンプ情報とは異なる日時が記録されている点である。そもそもこのファイルシステムとメタ情報の更新日時は何のために保存されているのだろうか?

 まず整理したいのが、ファイルシステムの情報とメタ情報の違いである。ファイルシステムの情報はディレクトリエントリ、つまりファイルの外側のファイルシステムに記録されているのに対し、ファイルのメタ情報はファイルそのものに記録されている。
図3 つまり、ファイルのメタ情報はファイルの内容やその取り扱いについて管理するための情報であり、ファイルシステムの情報はメタ情報とファイルの内容をあわせた、ファイル全体を管理するための情報である、という違いである。
 次にそれぞれの更新日時にはどのような情報が保持されるだろうか。実はこれらは通常、同じ値のはずである。なぜならコンテンツやメタデータを変更した後で更新内容を確定するために、ユーザはツールのメニューから「ファイルを保存」するだろう。このタイミングを更新日時としてファイルシステムやファイルのメタ情報に記録することが多いからだ。
 しかし、今回の筆者の検証環境では2つの更新日時に大きな違いがある。なぜだろう。仮説に過ぎないが、タイムスタンプの違いは、たとえば図4のような作業の結果発生した可能性がある。
図4 少々複雑だが、ここではファイルシステムの情報とメタ情報という2つの情報が、管理する目的も記録が保存されている場所もそれぞれ異なっている点、そしてコピーなどの作業を行うことによって、それぞれのタイムスタンプに違いが生まれてくることを理解いただければ問題ないだろう。

 余談だが、図4の手順2において、タイムスタンプ書き換えツールを用いてファイルのタイムスタンプ情報を設定しているのに違和感を覚える方がいるかもしれないが、これは実はそれほど珍しいことではない。そもそもファイルのプロパティ情報を書き換えるツールは本来、改ざん目的で利用するものではなく、電子データの納品や一般公開時に、体裁を整えるためにタイムスタンプを統一したり、不必要な内部情報を削除するためのものである。
 本来、企業における情報セキュリティの観点では、ファイルのメタ情報などの「隠し情報」は、見苦しくないように整形し不必要なものは削除することが正しいとされてきた。しかしデジタル・フォレンジックの観点からは、ファイルのメタ情報は有力な証拠であり、今後はこれらの情報セキュリティの常識についても検証し、見直していく必要があるかもしれない。

■ファイルシステムのタイムスタンプを改ざんしてみよう
図5 それではタイムスタンプを書き換えるツールを用いて、このファイルの作成日時と更新日時を変更してみよう。ツールは「ファイルバイザー Ver6.4.7.1」を利用した。ツールを用いてファイルシステムの作成日時を「2010年9月29日 13時13分31秒」から「2009年9月9日 9時9分9秒」に、更新日時を「2009年3月14日 23時00分32秒」から「2010年10月10日 10時10分10秒」に変更した。
図6 ファイルシステムのタイムスタンプが変更されているかを確認するために、ファイルのプロパティ情報とディレクトリエントリのタイムスタンプを確認しよう。
 図1と図5(or図6)を見比べるとよく分かるが、作成日時と更新日時がそれぞれツールで設定された日時に変更されていることが確認できる。

 それでは次にファイルのメタ情報を確認してみよう。
図7 ごらんのように、ファイルシステムのタイムスタンプを改ざんしても、ファイルのメタ情報のタイムスタンプは書き換わっていないことが確認できる。実は論理ファイルサイズも、ハッシュ値を比べても改ざん前と後で変化はない。ツールで改ざんしたのはあくまでファイルシステムの、つまりファイルの外側の情報だけなのだ。

■FD改ざん事件を検証してみよう
 それでは、これまでの検証結果をもとに、今回のFD改ざん事件を検証してみよう。もう一度事件の報道から改ざんの流れについて整理する。

 ①専用のタイムスタンプ書き換えツールを用い、証拠ファイルの「更新日時」のタイムスタンプが「2004年6月1日1時20分06秒」から 「2004年6月8日21時10分56秒」に改ざんされていた
 ②ファイルには「2009年7月13日」に更新日時を書き換えた痕跡が残っていた

 ここで筆者がまず疑問に感じたのは、「報道にあるようにファイルシステムのタイムスタンプのみを専用ツールによって改ざんしたとすれば、ファイルのメタ情報に記録されている更新日時は変更されないのでは?」ということだった。
 しかし、後日の報道で書き換え前と書き換え後のファイルの詳細なプロパティ情報が公開された。これによるとファイルの論理サイズが16,896バイトから19,456に増加していることがわかる。つまり、ファイルのメタ情報の更新日時とされる2009年7月13日にはタイムスタンプの書き換えだけでなく、ファイルそのものにも何らかの変更があった可能性が考えられる。そのため、ファイルのメタ情報に記録が残り、書き換えの日時がより明確に特定されたのではないだろうか。
 フロッピーディスクなど記憶媒体単体の情報から、ファイルシステムのタイムスタンプ改ざんを見抜くことは、実は非常に困難である。該当ファイルのプロパティ情報を確認すると、Aドライブ直下に対象のファイルがあったと思われるが、これでは親フォルダの更新情報なども確認できないため、特定はさらに難しいだろう。故意か偶然かはさておき、2560バイトのファイル更新(※2)が、今回のファイルの改ざん日時特定の決め手となったのである。

(※1) 実際は手元の環境では更新者が「Last Saved By」、更新日時が「Last Revised Date」となっている。意味的には最終保存者や最終改訂日時のほうが適切かもしれないが、今回はファイルシステム情報との比較のために表現を統一している

(※2) 一太郎形式ファイルのメタデータの更新内容や、データ圧縮機能の有無、圧縮効率など不明確な点もあるので、必ずしも「2560バイト分のデータが書き加えられた」ということではない

メルマガ読者募集 採用情報 2020年卒向けインターンシップ

月別