banner
lca

lca

真正的不自由,是在自己的心中设下牢笼。

Windows XMLイベントログ(EVTX)の解析

evtx ログの説明#

Windows の evtx ログの保存場所

%SystemRoot%\System32\Winevt\Logs\

image.png

主なログには、アプリケーション、セキュリティ、システムログなどが含まれます。ログのデフォルトサイズは 20484K(20M)であり、超過した部分は期限切れのログを上書きします。

Windows の標準のイベントビューアを使用して、対応するログを表示できます。

image.png

イベント ID 4624 のイベントをランダムにクリックすると、次のような内容が表示されます。XML ビューに切り替えると、XML 形式のログを表示できます。

image.png

evtx_dump#

evtx ログを解析するためのツール

対応するバージョンをダウンロードしてください:

https://github.com/omerbenamram/evtx/releases

evtx_dump <evtx_file>:xml形式でダンプする

evtx_dump -o json <evtx_file>:json形式でダンプする

evtx_dump -f <output_file> -o json <input_file>:指定されたファイルに出力する

fdと組み合わせて使用すると、一括処理が容易になります。

fd -e evtx -x evtx_dump -o jsonl:拡張子がevtxで終わるすべてのファイルを個別のjsonファイルにダンプする

fd -e evtx -x evtx_dump '{}' -f '{.}.xml':evtxに対応するxmlファイルを作成し、内容を対応するxmlファイルに出力する

fd -a -e evtx | xargs -I input sh -c "evtx_dump -o jsonl input | jq --arg path "input" '. + {path: \$path}'"

-e:ファイルの拡張子
-a:非表示ファイルやディレクトリを検索する
xargs -I input sh -c “command”:input変数を渡し、commandを実行する
jq --arg path “input” ‘. + {path: \$path}’:path変数を出力のjsonファイルに追加する

抽出#

evtx ファイルから EventID を抽出する

evtx_dump temp_scheduled_task_4698_4699.evtx -o jsonl | jq '.Event.System.EventID'

EventID をソートして数を集計する

evtx_dump Security.evtx -o jsonl | jq '.Event.System.EventID' | sort | uniq

image.png

イベント ID を確認することで、現在のログに含まれるほとんどのログの状態がわかります。上記の 5379 は、Microsoft Windows Defender アンチウイルスソフトウェアに関連するイベントを示しており、このイベントは Windows Defender の対応するポリシー情報を記録し、Defender の定期的なスキャンや更新の状況を示します。4625 はログインの失敗を示し、ログが 1 つしかない場合は、ログインの総当たり攻撃の試みは存在しないことを意味します。4672 は管理者のログインを表し、管理者としての操作も記録されます。これは Linux の sudo に似ており、1 回の sudo につき 1 つのログが記録されます。

イベント ID との対応関係を一つずつ比較して、関連するイベントの影響を判断できます。

複数のフィールドを抽出する

evtx_dump temp_scheduled_task_4698_4699.evtx -o jsonl | jq '.Event.System.EventID','.Event.System.Computer'

EvtxECmd#

EvtxECmd はイベントレコードファイル(evtx)の解析ツール(Windows 用)であり、標準の CSV、XML、および json 形式の出力を生成できます!カスタムマッピング機能もサポートしており、ロックされたファイルを処理し、その他の機能も提供しています!

使用法#

内容を json ファイルにエクスポートする

EvtxECmd.exe -f C:\Users\lca\Desktop\Security.evtx --json .

image

上記の図のように、Security.evtx を解析し、出力の末尾にイベント ID の数も集計されています。

image

現在のディレクトリに json ファイルが生成されるので、次に jq ツールを使用して json ファイルの内容を解析できます。

cat 20240813012115_EvtxECmd_Output.json | jq . -c | jq '. | select(.EventId==4624)'

# . -c : . is a jq filter that represents the entire input. -c compresses the output into a compact JSON string format.
# . | : . represents the entire JSON object passed in earlier

指定したフィールドを抽出する場合、例えば 4624 のログから MapDescription フィールドの内容を抽出する場合は次のようになります。

cat 20240813012115_EvtxECmd_Output.json | jq . -c | jq '. | select(.EventId==4624) | "\(.MapDescription)"'

# \(.MapDescription):抽出されたJSONオブジェクトからMapDescriptionフィールドの値を抽出し、文字列として出力します。

このような jq フィルタは、jq の構文に慣れることが主な目的です。

イベント ID の参考:Windows 応急対応マニュアルのノート

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。