Skip to content

Windows イベントログのバイナリ形式を読む

.evtx ファイルの内部構造、64 KB チャンクと XML テンプレートの仕組み、各イベントに含まれる情報、そしてこのバイナリ形式が Windows のインシデント対応とフォレンジック調査でなぜ重要なのかを短くまとめた入門。

公開 1 {n} 分で読める

Windows イベントログ — .evtx — は、Microsoft が Windows Vista で導入し、古い .evt を置き換えるためのバイナリ形式です。ログオン、サービス起動、PowerShell コマンドライン、Sysmon のプロセス作成、そして長大なプロバイダ固有チャネルのほとんどが、ここに直列化されます。Windows のインシデント レスポンスの背骨と言ってよい存在です。

.evtx に初めて触れる方は、まず .evtx ファイルとは何か.evtx ファイルの開き方 から読み始めてください。本記事の以降は、形式にすでに慣れたアナリスト向けの簡潔なオリエンテーションです。

ファイル構造

すべての .evtx は、4 KB のヘッダー(マジック ElfFile\0、チェックサム、チャンク数)で始まり、64 KB のチャンクが連なります。各チャンクは独自のヘッダー(ElfChnk)、そのチャンク内で出現する XML テンプレート テーブル、そしてそれらをテンプレート ID で参照するバイナリ レコードの列から構成されます。パーサーは、テンプレートのプレースホルダにレコード固有の値を束ねて、各イベントを再構築します。

レコードの中身

デコード後、各レコードは XML 文書になり、主に 2 つのセクションを持ちます。

  • <System> — プロバイダ名、チャネル、Event ID、レベル(1 重大 → 5 詳細)、コンピュータ名、セキュリティ コンテキスト、書き込み時の UTC タイムスタンプ。
  • <EventData> — プロバイダ固有のパラメータ(ログオン イベントの対象アカウント、プロセス作成のイメージ パス、など)。

Event ID だけではトリアージに十分でないことが多く、フォレンジックの「合図」は <EventData> ペイロードに宿っています。

このツールはどう読むか

パーサーは Rust クレート omerbenamram/evtx を WebAssembly にコンパイルし、Web Worker 上で実行しています。ファイルをドロップすると、Worker がメモリ上に読み込み、各チャンクを走査し、レコードごとの XML を再構築します。ネットワークに何も流しません。Wi-Fi を切って確かめることもできます。