Timeline Mode
概要
調査によっては、行なわれた操作の timeline を作成することで、解析を開始すべき場所を特定することが容易になる場合もある。もちろん、ファイルの時刻は攻撃者によって簡単に改変され得るため、100% 信頼することはできない。しかし Autopsy ではファイル操作の timeline を生成することができる。
ファイルには、少なくとも三つの時刻が関連づけられている。各時刻の詳細はファイルシステムのタイプに依存する。
以下の時刻は、UNIX のファイルシステム (EXT2FS & FFS) に存在する:
- 更新時刻: ファイルが最後に更新された時刻。
この時刻は utimes() 関数を用いることで修正できる。
この時刻は「tar」アーカイブ中に保存されている。
そのため、ファイルの更新時刻を、
実際に更新が行なわれた時刻よりも前に設定することも可能である。
- アクセス時刻: ファイルが最後にアクセスされた時刻。
この時刻は utimes() 関数を用いることで修正できる。
- 変更時刻: ファイルのステータス(inode データ)が最後に修正された時刻。
この時刻は UNIX の utimes() 関数を用いて設定することができない
(しかし、utimes() 関数により、その他の値が変更された際には、この値も変更される)。
EXT2FS ファイルシステムには、削除時刻も存在する。
しかし、これは timeline では表示されない。
以下の時刻は、FAT ファイルシステムに存在する:
- 書き込み時刻: ファイルが最後に書き込まれた時刻。
これは FAT ファイルシステムにおいて記録が必須とされる唯一の時刻である。
- アクセス時刻: ファイルが最後にアクセスされた時刻。
FAT の場合、これは 1日単位(分単位ではなく)で記録される
これは、設定任意の値であるため、OS によってはこの値を更新しないものもある。
- 作成時刻: ファイルが作成された時刻。
これも設定任意の値であるため、OS によってはこの値を更新しないものもある。
実際、ほとんどの Windows のインストールにおいて、
C:\\Windows や C:\\Program Files のようなディレクトリの更新時刻は 0 である。
NTFS ファイルシステムには、いくつかの時刻が記録されるが、
以下の 3 つのみが timeline で用いられる。
これらの時刻は \$STANDARD_INFORMATION 属性から収集される。
- 書き込み時刻: ファイルが最後に書き込まれた時刻。
- アクセス時刻: ファイルが最後にアクセスされた時刻。
- 変更時刻: MFT エントリが最後に変更された時刻。
Timeline の作成
timeline を作成するには、二つのステップが必要である。
最初のステップは、各ファイルシステムのイメージから必要なデータを取り出し、保存することである。
このステップで、各ファイルシステムからのデータは、汎用のフォーマットで格納される。
(TCT からの)歴史的な理由により、このファイルは body ファイルと呼ばれる。
次のステップは body ファイルを入力として、指定された時間帯のファイル操作の timeline が格納される ASCII ファイルを生成することである。最終的に出力された timeline は Autopsy やテキストエディタなどを用いて参照することが可能である。
body ファイルの作成
ファイルのメタデータは、ファイルシステムから収集されて、bodyファイルに格納されている必要がある。データの抽出先のファイルには、大きく 3 つの形式がある:
- Allocated Files:
ディレクトリに存在する「ls」や「dir」で表示することが可能なファイルである。
言い替えれば、これらはファイル名の構造体が割り当てられているファイルである。
- Unallocated Files:
削除されたものの、名前がディレクトリ構造体中に残っているファイルである。
これらの構造体は、新しいファイルがディレクトリ中に作成されると上書きされるが、
上書きされていないものから、未割当の inode エントリの情報が取得できる。
If the inode that the name points to has been reallocated, then the entry will
say (realloc) next to it.
- Unallocated Inodes (meta-data):
削除されたファイルである。ファイルが削除されると、メタデータ構造体はこれを反映して更新される。通常、ファイルに関連する時刻は再度割り当てられるまで、構造体中に保存される。
そのため、これはファイル名を示すものではないが、操作が発生したことを示すものである。
body ファイルを生成するには、まずトップにあるリストから解析したいイメージを選択する。引続き、抽出したいデータのタイプを指定する。
デフォルトでは、すべてのタイプが抽出される。
最後に、生成する body ファイルの名前を指定する。
ファイルは、output ディレクトリ内に作成され、
エントリがホスト設定ファイルに追加される。
新しいファイルの MD5 の値を計算するオプションを設定することも可能である。
Timeline の生成
次のウインドウで、新規に作成されたbodyファイルに基づいた timeline を生成することが可能である。
左側のメニューからオプションを選択する。日付の範囲も timeline ファイルの名前と同様に選択する必要がある。
生成される timeline は ホストのタイムゾーンを利用する。
イメージが UNIX ファイルシステムのものである場合、UID や GID を実際の名前に変換する際に、パスワードおよびグループファイルを使うことができる。
現在のところ、この作業は簡単には行なえないが、ファイルがどこに存在するかの記述してある「Notes」機能を利用することが可能である。
time line はoutputディレクトリ中に作成される。
新しいファイルの MD5 のハッシュ値を計算するオプションを選択することも可能である。
Timeline の表示
timeline は Autopsy で表示することができる。Timelines は非常に範囲が広くなる傾向があり、数千にも及ぶ行が存在することもあり得る。
HTML ブラウザはこのサイズのテーブルを適切に扱えず、処理を行なう際にトラブルが発生することも多い。
そのため、Autopsy では timeline を一度に1ヶ月分のみ表示することが可能にしている。
これはシェルをオープンして、timeline をテキストエディタや「less」や「more」のようなページャで開くよりも簡単であろう。
Brian Carrier