Living off the Land・PowerShell・WMI・LOLBinsの調査
管理端末WS-41でPowerShellが起動し、WMIを介してサーバSV-1上にプロセスが作られた。PowerShellもWMIも業務で使うため、起動した事実だけで侵害とは言えない。一方、署名済みのOS標準バイナリだから安全とも言えない。Living off the Landの手法を、何を実行し、どこへ渡し、何が残ったかという証拠で読む。
読む順序は、用語→実際の構成と処理→記録の照合→異常の成立条件→変更・復旧→短答演習です。以下の組織、アドレス、時刻、識別子、ログは教材用の架空例です。観測できた事実と、追加調査が必要な推論を分けて読みます。
1. 用語をこの事案の判断に結び付ける
用語 | 意味とこの事案での判断の限界 |
|---|---|
Living off the Land | OSや管理製品に元からある機能を悪用して攻撃目的を達成する考え方。専用マルウェアのファイルが見つからない場合でも行動で追う。 |
PowerShell | Windowsの自動化シェルとスクリプト環境。管理にも使う。powershell.exeの起動だけでなく、スクリプト内容、親プロセス、利用者、接続先を読む。 |
WMI | Windows Management Instrumentation。管理情報の照会やローカル・遠隔操作に使う仕組み。WMI経由の要求と対象端末で実行されたプロセスは別々に確認する。 |
LOLBins | 正規の署名付き/標準バイナリを意図外の実行、ダウンロード、プロキシ処理などに使う概念。rundll32、regsvr32、mshta等は例だが、名前だけで悪用確定ではない。 |
Script Block Logging | PowerShellのスクリプトブロックをOperationalログの4104等に記録する機能。設定と版に依存し、機密情報が記録される可能性もある。 |
WMI永続化 | WMIの永続イベント購読を作り、条件成立時に動作させる手法。WMIによる一回の遠隔照会・実行とは区別する。 |
親子プロセス | どのプロセスが次を起動したかの関係。Office→PowerShell→rundll32等の連鎖は手掛かりだが、正規管理ツールも同様の形を取り得る。 |
実行制御 | 許可するスクリプト・バイナリと操作範囲を制限する。OS標準バイナリの署名だけを信頼すると意図外の引数や読み込む内容を見落とす。 |
2. 構成と判断する位置
架空のA社ではWS-41の経理担当が09:00に文書を開き、09:02にWINWORD.EXEからPowerShellが起動した。09:04にWS-41からWMIでSV-1へ接続し、09:05にSV-1でrundll32.exeがC:\Users\Public\u.dllを読み込んだ。09:07にSV-1から外向きHTTPS接続が発生した。管理票CHG-41にはSV-1の定期監査はあるが、文書からのPowerShell起動やPublic配下のDLL実行は含まれない。
- 1. 文書起点:証跡 親子プロセス/防御・対処 文書実行制御
- 2. PowerShell:証跡 4104と引数/防御・対処 監査と制限
- 3. WMI遠隔操作:証跡 両端の認証/防御・対処 接続先制限
- 4. rundll32:証跡 DLLパスとハッシュ/防御・対処 実行制御
- 5. 外向き通信:証跡 プロセスと宛先/防御・対処 遮断と調査
正規機能の名前ではなく引数と後続動作を見る。
図の連鎖を確定するには、WS-41のPowerShell/WMI要求とSV-1の認証・プロセス実行の対応が必要。rundll32.exe自体の正規署名は、読み込んだu.dllの安全性を示さない。
3. 正常時の処理と管理
PowerShell 4104、Windows 4688、WMI-Activity、EDRのプロセス・ネットワーク記録を有効化し、保持・機密保護を設計する。
正規管理作業の作業票、管理端末、実行アカウント、対象サーバ、許可するスクリプト・時間帯を定義する。
WMIの遠隔操作が可能なアカウントと経路を最小化し、対象側のプロセス作成・サービス変更を監査する。
OS標準バイナリについても、読み込むDLL・スクリプト・URL・引数と親プロセスを確認する。
疑わしい連鎖では実行内容と後続通信を保全し、標準バイナリの一律禁止ではなく悪用条件の閉鎖と業務試験を行う。
PowerShellのExecution Policyは管理上の誤実行を減らす機能であり、強固なセキュリティ境界として単独で頼らない。署名・実行制御、特権分離、スクリプトログ、EDRを組み合わせる。
4. 設定・記録のフィールドを読む
項目 | 読み方と注意点 |
|---|---|
4688 parent / command | 親子関係とコマンドライン。監査ポリシーが無効だと引数が欠けるため、EDRや4104で補う。 |
4104 script block | PowerShellの実際のスクリプト内容。長いスクリプトは複数イベントに分かれる場合があるため識別子で再構成する。 |
WMI client / target | 要求元WS-41、認証ID、対象SV-1、操作種別。送信元ログだけで対象上の実行成功を断定しない。 |
target process | SV-1で起動したrundll32.exeの親、引数、ログオンID、読み込むDLL。署名済みバイナリと任意DLLを区別する。 |
DLL path / hash / signer | Public配下u.dllの内容、署名、ハッシュ、作成時刻。ファイルがない場合もメモリやプリフェッチを確認する。 |
network connection | SV-1のどのプロセスが外へ接続したか。FW上のサーバIPだけではrundll32からの通信と結べない。 |
persistence object | タスク、サービス、WMI永続イベント購読の有無。WMIの単発実行と永続化を混同しない。 |
以下は架空のEDR・Windowsイベント要約。実際のイベントIDの取得は監査設定に依存する。
09:00 WS-41 process=WINWORD.EXE file=invoice.docm
09:02 WS-41 event=4688 parent=WINWORD.EXE
child=powershell.exe user=U-41
09:03 WS-41 event=4104 script_id=S41 action=WMI-start
09:04 SV-1 event=4624 type=3 account=adm-ops src=WS-41
09:05 SV-1 event=4688 child=rundll32.exe
arg=C:\Users\Public\u.dll,Start
09:07 SV-1 dst=203.0.113.88:443 pid=4884文書→PowerShellは通常作業から外れ、WMI操作とSV-1のadm-opsログオン、Public配下DLL実行が連続している。相関は強いが、SV-1のPID 4884がrundll32かをプロセス表で確認する必要がある。外向き443の一件だけでC2や情報送出は断定できない。
5. 異常が成立する条件と証拠
状態・攻撃 | 成立条件、証拠、対策の位置 |
|---|---|
文書からPowerShell | Officeマクロ等からシェルを起動し得る。親子関係、文書出所、スクリプト内容を確認する。 |
PowerShellのメモリ実行 | ディスクに実行ファイルが残らない場合がある。4104、EDR、メモリと通信を重視する。 |
WMI遠隔実行 | 管理権限と到達経路があれば別端末でプロセスを起動し得る。要求側と対象側の認証・プロセスを結ぶ。 |
LOLBinsによる代理実行 | rundll32等の正規バイナリが任意DLLを読み込む。バイナリ名ではなく引数・ロード対象を確認する。 |
WMI永続イベント | イベントフィルタ、Consumer、Bindingを登録すると再起動後も条件付き実行し得る。単発のWMI呼出しと分ける。 |
署名の誤信頼 | Microsoft署名の本体を使っても、読み込まれるDLLやスクリプト、取得URLが安全とは限らない。 |
Living off the Landは『ファイルが一切存在しない』という意味ではない。u.dllのような追加物を読み込む場合も、標準機能だけで情報収集する場合もある。観測した機能と証拠で具体的な手法を書く。
6. 調査で結論を強くする順序
判定段階 | 必要な証拠と結論の上限 |
|---|---|
何が起点か | 文書の入手経路、マクロ、WS-41の親子プロセスと利用者を確認。 |
何を命令したか | 4104のスクリプト内容、引数、WMI要求対象を確認。難読化されたら安全な環境で解析する。 |
対象で動いたか | SV-1の認証、4688、DLL読込み、サービスやタスクを確認。送信元の要求だけでは不十分。 |
何が残ったか | WMI永続購読、サービス、タスク、レジストリ、ファイルと資格を探す。 |
封じ込めは効いたか | WS-41とSV-1の活動、外向き通信、盗難資格の利用停止を確認。 |
PowerShellは管理者にも攻撃者にも便利で、起動回数だけをアラートにすると誤検知が多い。文書閲覧プロセスからの起動、EncodedCommand、ネットワーク取得、外部スクリプト実行、管理対象外のサーバへの遠隔実行を組み合わせる。ただし難読化フラグ自体は正規ツールも使い得る。
4104はScript Block Loggingが有効なときの重要な観測点で、スクリプトの内容が残り得る。コマンドラインの短い文字列と異なり実際の処理に近いが、全端末に設定されていたか、ログが収集できたかを確認する。認証情報など機密をログに残す危険があるため、保管・閲覧権限を制限する。
WMIは情報照会、プロセス起動、イベント購読など異なる使い方を持つ。09:03のWMI要求ログだけなら『SV-1で実行された』とは書かない。SV-1側のログオン、WmiPrvSE経由のプロセス作成、実行ファイル、後続通信を結ぶ。単発実行と永続イベント購読も分ける。
rundll32.exeはWindows標準の署名済みバイナリでも、引数で指定されたDLLを読み込む。C:\Users\Public\u.dllが誰に書き込めるか、署名とハッシュ、作成時刻、エクスポートされた関数、ロード結果を調べる。rundll32のハッシュだけを既知正常と照合してもu.dllの安全性は分からない。
LOLBinsの検知では、バイナリ名を無条件に拒否すると正規インストーラや管理運用が止まる。許可される親、引数、読み込む場所、ネットワーク接続、利用者、対象サーバを定め、通常と異なる組合せを調べる。実行制御製品の署名許可だけで代理実行を防げるとは限らない。
PowerShellを使わず.NETのAutomation APIから実行する場合、powershell.exeのプロセス名検索では見落とすことがある。スクリプトブロックの記録、モジュールのロード、EDRの振る舞いを組み合わせる。逆にPowerShellの起動があるから攻撃とは断定せず、実際のスクリプト内容と作業票を確認する。
WMI永続化の疑いがあれば、イベントフィルタ、Consumer、Bindingの三つを照合し、作成時刻と所有者、実行先を保全する。単にWMIサービスを停止すると正規監視にも影響する。悪性の購読だけを削除し、別のサービス・タスクが残らないか調べる。
WS-41を隔離してもSV-1上のrundll32や永続化は残る。adm-ops資格が盗まれたなら別端末から再接続できる。WS-41とSV-1を別の調査対象として扱い、必要な資格とセッションを失効してから信頼できる構成へ戻す。
7. 変更・障害・例外運用
運用場面 | 崩れやすい条件と確認 |
|---|---|
正規管理スクリプト | 作業票、署名、管理端末、実行時刻、対象を把握し、同名の不正スクリプトと区別する。 |
監査未設定 | 4104や4688が出ない端末を『実行なし』としない。EDRや宛先側ログを使い、設定を改善する。 |
旧アプリの依存 | rundll32やWMIを一律停止すると業務影響が出る。限定的な権限制御と監視へ移す。 |
証拠の消失 | ファイルレスに見えてもメモリ、プリフェッチ、ログ、通信に痕跡が残り得る。再起動前の保全を検討する。 |
別端末への拡大 | 同じadm-opsでのログオン、同じDLLハッシュとWMI手法を環境全体で探索する。 |
『正規バイナリが使われた』という説明で事案を閉じない。署名されているのはバイナリ本体であり、そのバイナリが読み込む内容と利用者の意図を保証しない。
8. 封じ込めと復旧条件
- 1. 起点保全:対応 文書とスクリプト/確認する証跡 親子と4104
- 2. 遠隔照合:対応 WMIの両端を追う/確認する証跡 認証と4688
- 3. 残存調査:対応 DLLと購読を調査/確認する証跡 ファイルと設定
- 4. 復旧確認:対応 資格と端末を戻す/確認する証跡 再起動と監視
起点、対象実行、残存設定を順に確認する。
PowerShellを止めただけではSV-1のプロセスやWMI購読は消えない。起点と実行先、資格のそれぞれを封じ込めて復旧する。
WS-41の文書、4688、4104、WMI要求、SV-1のログオン・4688・DLL・通信を保全する。
WS-41とSV-1の進行中活動を隔離し、adm-opsの他の利用先を調べて資格を失効する。
u.dll、WMI永続購読、サービス、タスク、外向き通信を確認し、不正設定を除去または再構築する。
Officeからのスクリプト起動、遠隔WMI権限、書込み可能なDLL配置を見直し、正規管理作業は維持する。
再起動後も不正実行が戻らず、正規監視・業務スクリプトが動き、ログが取得できることを確認する。
ファイルが見つからなくても実行がなかったとは言えない。ログ取得範囲と揮発性の証拠を明示し、同じ振る舞いが再発しないかを監視する。
9. 科目B(午後)の解答手順
『PowerShellは悪い』『Microsoft署名なので安全』の二択では解けない。親子プロセス、4104の内容、WMI要求、対象側の4688、DLL実体、通信をつなぎ、観測できた段階だけを断定する。
PowerShellとWMIの正規用途を把握する。
4104・4688の監査設定と欠落を確認する。
LOLBins本体と読込内容・引数を分ける。
単発WMI実行と永続イベント購読を区別する。
10. 短答演習
演習1:PowerShell起動
条件:WS-41でpowershell.exeを確認。
質問:侵害確定か。
解答:未確定。親、引数、4104、作業票を調べる。
誤答の理由:管理用途を考慮していない。
演習2:4104欠落
条件:WS-41に4104がない。
質問:実行なしといえるか。
解答:言えない。設定・保持・収集を確認し、EDR等を照合する。
誤答の理由:ログ不在を行為不在と扱っている。
演習3:WMI要求
条件:WS-41からSV-1へWMI呼出し。
質問:SV-1で実行成功か。
解答:対象側の認証・プロセスを確認する。
誤答の理由:要求と受理・実行を混同している。
演習4:署名済み
条件:rundll32.exeはMicrosoft署名。
質問:u.dllも安全か。
解答:別にu.dllの出所・署名・ハッシュ・権限を調べる。
誤答の理由:代理実行の対象を見ていない。
演習5:WMI永続化
条件:WMI-Activityに単発照会。
質問:永続イベント購読か。
解答:断定できない。Filter、Consumer、Bindingを調べる。
誤答の理由:単発操作と永続設定を混同している。
演習6:WS隔離
条件:WS-41を隔離。
質問:SV-1の活動も終了か。
解答:SV-1の実行・通信、adm-opsの利用を別に止める。
誤答の理由:起点端末の隔離だけで横展開先を放置している。
11. 一次資料
MITRE ATT&CK:System Binary Proxy Execution
この記事についてAIに深掘り質問する
ChatGPT、Claude、Perplexityにこの記事を参照させ、要点の確認や疑問点を自由に質問できます。
次におすすめの学習
編集・検証について
編集・検証:IT資格ラボ編集部
IPAが公開する試験要綱・シラバス・過去問題と、各技術の公式資料を優先して内容を確認しています。制度変更や誤りを確認した場合は、記事を見直して更新します。
編集方針・情報源・訂正方針を見る