フォレンジックするとき、とりあえず実行ファイルの履歴を見るだろう。
今回はそんな時に備えて、アーティファクト「Prefetch」の解析について紹介したい。
Prefetchとは
Prefetchの概要
Prefetchは、Windowsでの実行ファイル履歴を保存しているアーティファクト。
デフォルトでオンになっているため、EDR製品などを導入していなくても、後からこれを解析すればたいていの実行ファイル履歴はわかる。
インシデントレスポンスチーム御用達のアーティファクトである。
普通のWindowsOSであればデフォルトで有効化されているが、WindowsServerの場合はデフォルトで無効となっている点は要注意。
Prefetchから何がわかるのか
Prefetchフォルダ内には、以下のように実行ファイルごとにたくさんの.pfファイルが保存されている。
これらを解析することで実行状況に関する履歴を調べることができる。
そして、各pfファイルの中には、以下のようなデータが含まれている。
- 実行ファイル名
- 実行ファイルのパス
- 過去8回分の実行日時
- 実行回数
- 実行ファイルが参照したデータのファイル名やパス(起動後おおよそ10秒くらい)
これらに加えて、pfファイルのタイムスタンプ(メタデータ)からも以下のようなことがわかる。
(つまり、ツールで解析せずともエクスプローラ上から確認できるということ)
- 作成日時=当該ファイルが最初に実行された日時
- 更新日時=最後に実行された日時
Prefetchの活用方法
マルウェアが発見されたときに、
- いつ実行されたか
- どのパスから実行されたか
- 起動したプロセスがどのファイルやDLLを参照したか
を調査することができるため、感染経路や被害状況、情報漏洩の有無を確認するのに役立てることができる。
(とはいっても、Prefetch単独では「マルウェア被害、情報漏洩はなし!」とまで言い切れないので、クリティカルなアーティファクトと考えてはいけない)
また、不審な実行ファイル(ワイプツールなど)の履歴を確認すれば、不正調査で犯人の動きや証拠隠滅活動の有無を調査することも可能。
アーティファクトの保存場所
このアーティファクトの保存場所は以下のところ。
隠しファイルですらないのでシンプルにアクセスできるが、初回は管理者権限付与が必要なので、解析前にエクスプローラでアクセスしておくといいかもしれない。(必要あるかわからないが一応…)
C:\Windows\prefetch
WindowsPrefetchViewでの解析方法
WindowsPrefetchViewの概要
このツールは、主にライブフォレンジックで使用するGUIアプリ。
解析したい端末上で起動することで、ほぼ自動的に情報を収集して解析してくれるという頼もしいつくりになっている。
開発元はNirsoftで、セキュリティベンダー提供でもあることから信頼性も高く、ユーザーフレンドリーな画面からもかなり人気が高い。
あと、一番大事なところだが無料である。
ツールのインストール方法
以下のサイトからZIPをダウンロードして解凍し、あとは実行するだけ。
特に環境づくりは必要なく、Windows10以降であればたいていの環境で動作する。
解析の実施
ダウンロードが完了すれば実行する。
すると以下の画面が立ち上がり、特に操作も必要なく解析完了したことがわかる。
画面をよく見ると、左からpfファイル名、作成日時と更新日時(pfファイル自体の)、ファイルサイズ、exe名、パス、起動回数、最終起動日時などが書いてある。
下の枠には、この実行ファイルから起動したプロセスから参照されたファイルが表示されている。
ここで「参照」とはいっても、アクセスしたファイルがすべて記載されるわけではないので注意。
ちなみに、Windowsの実行ファイルから参照した記録である以上、ほとんどがDLLファイルとなる。
別のpfファイルを選択してみた。
rundll32.exeのpfファイルも作成されるので、この履歴も確認できる。
過去、Emotetが盛んになった際、rundll32.exeを使った攻撃が頻発していた。
この解析をすることで、「どんなdllを実行したのか」「怪しいdllを読み込んでいないか」を確認できる。
あまり使うことはないが、こういう表示方法もある。
WindowsPrefetchViewについてはこれでおしまい。
PECmdでの解析方法
PECmdの概要
サイバーセキュリティ業界のシドと呼ばれる「Eric Zimmerman」の作成ツール。
先ほどのWindowsPrefetchViewと違い、こちらはコマンドラインから実行するスタイル。
とはいってもオプションもシンプルで扱いやすい。
そして無料。
ツールのインストール方法
いつものEric ZimmermanサイトからDLできる。
exe形式なので特に環境づくりも必要ない。
解析の実施
サイトからDLしたら、コマンドプロンプトから以下のように実行する。
PECmd.exe -f "C:\Windows\Prefetch\<対象の.pfファイル>"
すると以下のようにコマンドプロンプト上で結果が表示される。
で、このままでは調査しづらいので、オプション変更。
出力形式をcsvに変更。(–csv)
さらに、単一のpfファイルだけでなく、Prefetchフォルダ全体を解析するように変更。(-f→-d)
ついでに画面出力を抑えるオプションを設定。(-q)
そして以下のような構文で実行する。
-qを忘れるとかなり時間がかかるので注意。
PECmd.exe -d C:\Windows\Prefetch --csv pref.csv -q
出力完了すればcsvファイルを開いてみる。
先ほどのWindowsPrefetchViewのような結果が表示される。
右にスクロールすると、合計過去8回分の起動日時がわかる。
さらに右に行くと、参照したファイルを確認できる。
ボリューム名すら表示してくれないユーザーホスティリティーぶりにシビレるね。
PECmdについては以上で紹介終わり。
Prefetchについて個人的に思うこと
Prefetch自体は非常に優秀なアーティファクトで、マルウェアの活動やユーザーの不正な動きを追跡するのに非常に役に立つ。
さらに、単一のアーティファクトとしては、情報量も豊富。
ただし、このPrefetchのタイムラインから最終的な判断を下すのは難しい。
結局のところ、AxiomやXwaysでHDDをまるごと解析したときのタイムラインに比べると、その網羅性や信頼性についてはかなり負けているからだ。(そりゃ当然だが)
そのため、Prefetch単体の解析が活躍する場面としては
- フォレンジック調査初期でのライブフォレンジック
- Emotet感染のようにDLLファイルが調査の主軸となる場合の狭スコープ調査
となってくるかな。
遊戯王で言ったら、イケニエ無しで召喚できるカード的な存在か?
なんか違うけどいいか。
まとめ
今回はPrefetchについて紹介した。
特にインシデント対応初期で役立つアーティファクトなので、ぜひとも解析スキルを習得しておきたいところ。
コメント