Windowsの水曜日。 プリフェッチ ファイル

今日の投稿では、Windows のプリフェッチについて少し説明します。 その前に、今後のトレーニングについて簡単にお知らせします。

私は現在、SANS Security East 2017 で Chad Tillbury 氏と行う FOR508 クラスを準備しています。 非常に近くなってきていますが、素晴らしいクラスと、次の致命的なフォレンジックチームを見つけることを楽しみにしています! もし参加される方は、前もって私にLINEをください。 参加したい方は、まだ申し込みが可能だと思います また、イベント期間中の1月11日(水)には、「Zero In on the Artifacts That Matter」というSANS@Nightの講演を行う予定です。 以前にも言いましたが、もう一度言います。DFIR の世界で私たちが好む多くの成果物は、実際には、ユーザーや開発者の生活をより簡単に、あるいはより効率的にしようとするオペレーティング システムの副産物なのです。 私の意見では、プリフェッチもこのカテゴリに属します。

Prefetch は Windows XP から存在しています。 これはもともと、システムの起動とアプリケーションの起動を高速化するために設計されたものです。 プリフェッチの目標は、実行時にアプリケーションのスタートアップ動作を分析および記録して、将来のスタートアップをより効率的にすることです。 このデータは、アプリケーション起動後、最大で10秒間記録されます。 記録されたアプリケーションの動作は、パス C:\Windows\Prefetch.

Prefetch Files

上述のように、プリフェッチファイルは静的ディレクトリ C:\Windows\Prefetch にあります。 プリフェッチファイルは .pf 拡張子を持ち、標準の命名規則に従っています:

<APPLICATION NAME IN ALL CAPS>-<EIGHT CHARACTER HASH OF APPLICATION LOCATION>.pf

Prefetch files には次のメタデータが含まれています。

  • 対応する実行ファイルの名前
  • 実行ファイルが実行された回数
  • プリフェッチ ファイルのサイズ
  • アプリケーション起動中に参照されたファイルとディレクトリ (Windows が追跡したいもの)
  • ボリューム パスおよびシリアル番号を含む実行ファイルが存在するボリュームに関する情報
  • 実行ファイルがあるボリュームに関連する情報。

テスト ホストからのいくつかのプリフェッチ ファイルのサンプルです。

Screenshot Prefetch folder from a Windows 10 Test Host

Note that I have several applications with the same name, but a different location.This is a sample of some prefetch files from my test host. これは、多少類似したハッシュによって証明されており、多くのアプリケーションの場合、ソフトウェア更新またはフォルダー構造の変更を示していると思われます。

EDIT: Eric Zimmerman に感謝します。トレース ファイルに大文字/小文字の区別がないにもかかわらず、プリフェッチ ファイル名がコマンド ライン引数にも依存し、大文字/小文字を区別することを覚えていてくれました。 Hexacorn はここでハッシュ アルゴリズムを詳細にカバーしており、このレベルのプリフェッチ解析を行う必要がある場合は、それをチェックアウトすることをお勧めします。

Prefetch ファイルの解析

Prefetch ファイルの構造は実際には非常によく知られており、複数の解析オプションが利用可能です。 ここでは、いくつかのオプションを紹介します。

  • 最悪の場合、strings を使用してプリフェッチ トレース情報についてのいくつかの情報を得ることができます。 以下は、疑わしい実行ファイルから Unicode 文字列を列挙する例です:

A のプリフェッチ ファイルからの文字列のスクリーンショットです。EXE
  • Eric Zimmerman 氏は、現在バージョン 0 のツール PECmd を保守しています。2209>
  • log2timeline/Plaso はプリフェッチパーサを含んでおり、プリフェッチファイルからタイムラインフォーマットにキーデータを置くことができます。 それに関するより多くの情報をここで見ることができます。 以下は、TZWorks の pf ツール出力の例です。

Screenshot of TZWorks’ pf output for a prefetch file

この出力内のフォレンジック アーティファクトについては次節に記載したいと思います。 しかし、文脈情報、実行時間、重要なタイムスタンプを得ることができたことに注目してください。

Prefetch ファイルの解析に関するもう 1 つの重要な注意点は、新しいプリフェッチ バージョン、つまり Windows 10 では、以前のバージョンのパーサーとうまく動作しない新しい圧縮形式を使用しているということです。 ファイルが破損しているかもしれないと推測する前に、ツールが Windows 10 のアーティファクトを処理できることを確認するか、新しいスクリプトを探します。

DFIR での使用方法

DFIR 分析者はプリフェッチを認識する必要があります。 以下は、私が過去にプリフェッチを使用したいくつかの方法です。

  • 実行カウントは、マルウェアがシステム上にどれくらいの期間存在したか、またはどれくらいの頻度で使用されたかについて、重要な情報を提供することができます。 もし、マルウェアが 2 回しか実行された証拠を見なかったのに、プリフェッチが何十回と表示した場合、もっと調べる必要があります。 次のことを考えてみてください。 何がプリフェッチファイルを作成し、何がプリフェッチファイルを変更するのか? これらのアクションをタイムスタンプに変換すると、次のように判断できます。 プリフェッチファイルの作成タイムスタンプは、そのアプリケーションが最初に実行された時刻であり、プリフェッチファイルの最終修正時刻は、それが最後に実行された時刻である。 上のスクリーンショットをもう一度見てみましょう。

Screenshot of TZWorks’ pf output for a prefetch file

我々の最後の実行時間 (2012-04-04 00:43:06.137) と変更時間に注意してください。 (2012-04-04 00:43:07). これで、解析することなく、Prefetch ファイルを通して非常に迅速に、最後の実行時刻を見つけることができます。 たとえば、プリフェッチ フォルダーからのすべてのファイルの作成タイムスタンプを表示することを考えてみてください。 興味のあるタイムフレーム、または既知のマルウェアのプリフェッチファイルがある場合、時間的に近いタイムスタンプを持つ他のファイルを探します。

  • プリフェッチファイル、特に既知のマルウェアに関連するものを分析する場合、マッピングまたはロードしたファイルを見てみましょう。
  • さらに、プリフェッチ ファイルからマップされたディレクトリを調査してください。 外部ドライブまたは以前のパーティションの証拠が見つかるかもしれません。
  • ファイルの末尾に異なるハッシュを持つ複数のプリフェッチ ファイルが表示されますか。 このハッシュは場所から得られるもので、複数の場所にマルウェアが存在する可能性があることを忘れないでください。 そのため、プリフェッチ ファイルのタイムスタンプは非常に強力な指標として頼りになりますが、最大 10 秒の遅延を考慮しなければなりません。

Going Beyond the Prefetch

Windows Vista 以降、Microsoft は SuperFetch や ReadyBoost、ReadyBoot および ReadyDrive といった追加機能でプリフェッチを拡張し続けています。 これらの機能については、後の投稿で掘り下げていきます。

Until tomorrow, Happy Forensicating!

コメントを残す

メールアドレスが公開されることはありません。