14章
Hands-on-2
ここでは、CDIR-Aに含まれる次の調査ツール(パーサー)を使用して、不正な実行ファイルを調査するハンズオンを行います。
- WMIリポジトリ調査ツール:PyWMIPersistenceFinder
- Shimcache調査ツール:Shimcache.exe
- Amcache調査ツール:Amcache.exe
想定をもとに、実際の調査の流れに沿って各アーティファクトを調査しましょう。
CDIR-A(Analyzer)は、以下のURL(株式会社サイバーディフェンス研究所の公式Githubリポジトリ)から入手できます(すでに最新版をセットアップ済みであれば、改めてダウンロードする必要はありません)。
https://github.com/CyberDefenseInstitute/CDIR-A
ハンズオンの想定
次の想定でハンズオンを実施します。
- 外部からの連絡により、組織内の情報漏えい事案が発覚
- 漏えいした情報が保存されていたPCを特定し、アンチウイルスソフトウェアでスキャンしたところマルウェアの検知なし
- 同PCから保全したレジストリを解析し、Runキーを調査したところ、不審な永続化の痕跡なし
- 保全した他のアーティファクトを調査して、不審なファイルの有無を確認する
ハンズオンで使用するファイル
解析対象の各アーティファクト(保全したファイル)は、演習用データの次の相対パスに保存されています。
【WMI】
s14\h2\WMI
【レジストリ】
s14\h2\Registry
WMIリポジトリの調査
まず、Runキー以外の方法によりマルウェアが永続化されていることを想定して、WMIリポジトリを調査します。CDIR-Aのパーサーに含まれるPyWMIPersistenceFinderを使用して、保全したWMIリポジトリから永続化情報を抽出しましょう。
WMIリポジトリから永続化情報の抽出
コマンドプロンプトから、CDIR-Aのパーサーが保存されているフォルダに移動し、さらに「PyWMIPersistenceFinder」フォルダへ移動して、PyWMIPersistenceFinder.exeを実行します。出力結果は任意のテキストファイルにリダイレクトしましょう。
- PyWMIPersistenceFinderの実行例
> PyWMIPersistenceFinder.exe C:\s14\h2\WMI\OBJECTS.DATA > %userprofile%\desktop\out\wmi_out.txt
※ あらかじめデスクトップに「out」フォルダー(
%userprofile%\desktop\out)を新規作成し、出力を保存する例です。
出力結果の分析
出力したテキストファイルをメモ帳等で開き、内容を分析します。
2つの永続化情報が抽出されています。
Enumerating FilterToConsumerBindings...
2 FilterToConsumerBinding(s) Found. Enumerating Filters and Consumers...
Bindings:
iNVoKe_wINrm-iNVoKe_wINrm <==※【1つ目の永続化情報】
Consumer:
Consumer Type: CommandLineEventConsumer
Arguments: c:\Windows\temp\ewr23d3\ial4lw.exe -c -ctype service -cobject WinRM -caction start
Consumer Name: iNVoKe_wINrm
Filter:
Filter name: iNVoKe_wINrm
Filter Query: SELECT * FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstance ISA 'Win32_PerfFormattedData_PerfOS_System' AND TargetInstance.SystemUpTime >= 200 AND TargetInstance.SystemUpTime < 360
---【中略】---
SCM Event Log Consumer-SCM Event Log Filter <==※【2つ目の永続化情報】
(Common binding based on consumer and filter names, possibly legitimate)
Consumer: NTEventLogEventConsumer ~ SCM Event Log Consumer ~ sid ~ Service Control Manager
Filter:
Filter name: SCM Event Log Filter
Filter Query: select * from MSFT_SCMEventLogEvent
2つ目の永続化情報は、イベントログコンポーネントを起動する正規のものと考えられます。
1つ目の永続化情報「iNVoKe_wINrm-iNVoKe_wINrm」に注目してみていきましょう。
Consumer情報のArgumentsを確認すると、次の実行ファイルを起動するアクションが指定されています。
c:\Windows\temp\ewr23d3\ial4lw.exe -c -ctype service -cobject WinRM -caction start
「ial4lw.exe」というファイルを実行しようとしていることがうかがえます。さらに、実行時のパラメータから、WinRM(Windows標準のリモートコマンドサービス)を起動することが目的と推測されます。
また、バインドされたFilter情報のFilter Queryに指定された条件を確認すると、特定のコンポーネント(Win32_PerfFormattedData_PerfOS_System)の稼働時間をトリガーとしてアクションを実行するものと推測されます(実際は、OSの起動から200秒経過後に実行する条件です)。
以上の分析結果から、不審なファイルをOS起動時に実行して、侵入の横展開に悪用されることが多いWinRMサービスを強制起動することが目的であると想像されます。このように、WMIにより永続化されたファイル「ial4lw.exe」は、攻撃者により設置されたものである可能性が高いでしょう。
次は、永続化されたファイル「ial4lw.exe」の本体がすでに削除されている状況と想定し、このファイルに関する情報収集を行いましょう。
Shimcacheの調査
Shimcacheに「ial4lw.exe」が記録されていれば、この実行ファイルが少なくとも過去には調査対象PCに実在し、かつ実行時にはShim(互換性回避機能)が必要であるということがわかります。また、実行ファイルの最終更新日時も取得できます。
CDIR-Aのパーサーを使って、レジストリファイル「SYSTEM」からShimcacheをパースしましょう。
Shimcacheのパース
コマンドプロンプトから、CDIR-Aのパーサーが保存されているフォルダに移動し、shimcache.exeを実行します。
- shimcache.exeの実行例
> shimcache.exe -o %userprofile%\desktop\out C:\s14\h2\Registry
Found 694 entries for Windows10Creators in ControlSet001
Saved: 'C:\Users\axd2-user\desktop\out\shimcache\shimcache_output.csv'
※ あらかじめデスクトップに「out」フォルダを新規作成し、出力結果を保存する例です。
出力結果の分析
パース結果は、指定した出力フォルダにCSV形式(shimcache_output.csv)で出力されます。
以下、LibreOfficeの表計算アプリケーション(Calc)が、CSVファイルのデフォルト編集用アプリケーションとして設定されている想定で説明します。
上記のCSVファイルを、エクスプローラーからダブルクリック等により開きます。「テキストのインポート」設定画面が表示されますので、「文字エンコーディング」には「Unicode(UTF-8)」、区切り文字には「タブ」を指定して下さい。
Ctrl+Fキーでの検索や、「データ」-「オートフィルター」でのフィルター機能を使って、「ial4lw.exe」のエントリーを探しましょう。
- Calcのオートフィルターで、「
ial4lw.exe」をPathに含むデータのみを表示

分析の結果、「ial4lw.exe」は、2022年3月11日17時46分18秒ころに、共有ファイルサーバー(VBOX共有用フォルダ)を経由して、調査対象PCに設置されたものと推測されます。
続いて、Amcacheをパースして、さらに「ial4lw.exe」に関する情報を収集しましょう。
Amcacheの調査
Amcacheに「ial4lw.exe」が記録されていれば、ハッシュ値(SHA-1)をはじめ、さまざまな属性情報が取得できます。
CDIR-Aのパーサーを使って、Amcacheハイブファイルをパースしましょう。
Amcacheのパース
コマンドプロンプトから、CDIR-Aのパーサーが保存されているフォルダに移動し、amcache.exeを実行します。
- amcache.exeの実行例
> amcache.exe -o %userprofile%\desktop\out C:\s14\h2\Registry
INFO:amcache:Root\File key not found
Saved: C:\Users\axd2-user\desktop\out\amcache\amcache_inventory_output.csv
※ あらかじめデスクトップに「out」フォルダを新規作成し、出力結果を保存する例です。
出力結果の分析
パース結果は、指定した出力フォルダにCSV形式(amcache_inventory_output.csv)で出力されます。
ダブルクリック等でCSVファイルを開く(Calcの使用を想定)と、「テキストのインポート」設定画面が表示されますので、「文字エンコーディング」には「Unicode(UTF-8)」、区切り文字には「タブ」を指定して下さい。
Shimcacheと同様に、Ctrl+Fキーでの検索や、「データ」-「オートフィルター」でのフィルター機能を使って、「ial4lw.exe」のエントリーを探します。
- Calcのオートフィルターで、「
ial4lw.exe」をFile Pathに含むデータのみを表示

分析の結果、「ial4lw.exe」のハッシュ値(SHA-1)、ファイルサイズ、コンパイル日時等が取得できました。属性情報を一通り確認し、今後の分析に必要な情報を収集しましょう。
最後に、ここまで調査した結果をもとにして、次の問題(実行ファイルの正体を調査)にチャレンジしてください。
(上の図で、一部マスクしているハッシュ値が、回答の手がかりとなります。)
問題
WMIによって永続化されていた実行ファイル「
ial4lw.exe」のハッシュ値を、VirusTotalや公開サンドボックスなどで検索し、本来のソフトウェア名(※ サービスの起動停止機能を持つフリーツールをリネームしたものです)を特定して下さい。Flagには、ソフトウェア名(アルファベット:13文字)を入力して下さい。
※ 全角スペース/半角スペースおよび「.exe」等の実行ファイル拡張子は含めずに入力して下さい。
※ VirusTotal等でハッシュ値を検索する際、先頭の "0000" を含めるとヒットしないため、5文字目以降を検索キーワードにしましょう。