PowerShell Empireをより直感的に、効率的に操作するためのStarkillerの使い方を徹底解説します。
はじめに: StarkillerとPowerShell Empireとは?
PowerShell Empireは、ペネトレーションテストやレッドチーム活動において、主に侵入後の活動(Post-Exploitation)フェーズで使用される強力なC2(Command and Control)フレームワークです。PowerShell、Python、C#などで書かれたエージェントを利用し、侵害したシステムのリモート制御、権限昇格、横展開、情報窃取などを支援します。その柔軟性と豊富な機能から、セキュリティ専門家だけでなく、実際のサイバー攻撃者にも利用されることがあるツールです。
Starkillerは、このPowerShell Empire(以下、Empire)を操作するための公式GUI(グラフィカルユーザーインターフェース)フロントエンドです。もともとはElectronとVueJSで開発されていましたが、Empire 5.0以降ではEmpire自体にバンドルされ、Webアプリケーションとして提供されるようになりました。Starkillerを使うことで、Empireの各種機能をコマンドラインではなく、視覚的なインターフェースを通じて管理・操作できるようになります。これにより、特に複数のオペレーターが共同で作業する際の効率が大幅に向上します。✨
💡 なぜGUI(Starkiller)を使うのか?
- 直感的な操作: コマンドを覚えなくても、メニューやボタンで操作可能。
- 視認性の向上: リスナー、エージェント、モジュールなどの状態を一覧で把握しやすい。
- マルチユーザー対応: 複数オペレーターでの共同作業を円滑に進められる機能(ユーザー管理、チャットなど)。
- 効率化: 定型的な操作を素早く実行できる。
Empireは当初2015年に公開されましたが、オリジナルのリポジトリは更新が停止しています。現在は、BC-Securityなどがフォークし、活発な開発が続けられています。StarkillerもBC-Securityによって開発・メンテナンスされています。
前提条件と準備
Starkillerを利用するには、まず動作するEmpireサーバーが必要です。Empire 5.0以降、StarkillerはEmpireに統合されているため、個別のインストールは基本的に不要になりました。
Empireサーバーのセットアップ
Empireサーバーは、Kali Linux、Ubuntu、DebianなどのLinux環境やDocker上で動作させることができます。BC-SecurityのGitHubリポジトリからクローンしてインストールするのが一般的です。
# リポジトリのクローン (サブモジュールも含む)
git clone --recursive https://github.com/BC-SECURITY/Empire.git
# Empireディレクトリへ移動
cd Empire
# セットアップスクリプトの実行 (依存関係のインストールなど)
sudo ./setup/install.sh
Kali Linuxを使用している場合、aptコマンドで簡単にインストールできることもあります(ただし、リポジトリの状況によりバージョンが最新でない場合があります)。
sudo apt update
sudo apt install powershell-empire
Empireサーバーの起動
Starkillerから接続するには、EmpireサーバーをRESTful APIモードで起動する必要があります。デフォルトでは、ポート1337でAPIが起動し、ユーザー名empireadmin
、パスワードpassword123
で待ち受けます。
# REST APIモードで起動 (CLIインターフェースも同時に起動)
sudo ./ps-empire server --rest
# REST APIモードで起動 (ヘッドレス、CLIなし)
# sudo ./ps-empire server --headless
# ポートや認証情報を変更する場合 (例)
# sudo ./ps-empire server --rest --restport <ポート番号> --username <ユーザー名> --password <パスワード>
Empire 5.0以降は、サーバー起動後にWebブラウザからStarkillerにアクセスします。通常は https://<EmpireサーバーIP>:1337
のようなURLになります(ポート番号は変更可能)。
Starkillerへの接続とインターフェース概要
Starkillerへのアクセス
EmpireサーバーをREST APIモードで起動した後、Webブラウザを開き、指定されたURL(デフォルト: https://<EmpireサーバーIP>:1337
)にアクセスします。ログイン画面が表示されるので、Empireサーバー起動時に設定した(またはデフォルトの)ユーザー名とパスワードを入力します。
ログインに成功すると、Starkillerのダッシュボードまたはリスナー画面が表示されます。
主要なメニューと機能
Starkillerのインターフェースは、主に左側のサイドバーにあるメニューから構成されます。以下は主要なメニュー項目とその概要です。
メニュー項目 | 概要 | 主な機能 |
---|---|---|
Listeners (リスナー) | ターゲットからの接続(コールバック)を待ち受ける設定。C2通信の入口。 | 新規リスナー作成、既存リスナーの表示・編集・開始・停止、タイプ選択(HTTP, HTTPS, Malleable HTTP, PHPなど) |
Stagers (ステージャー) | ターゲット上で実行され、エージェントをダウンロード・実行させるための小さなコード片。 | リスナーに対応したステージャーの生成、タイプ選択(PowerShell, Python, C#, VBA, BATなど)、オプション設定、生成コード/ファイルの取得 |
Agents (エージェント) | ターゲット上で動作し、Empireサーバーと通信して命令を受け付けるプログラム。 | アクティブなエージェントの一覧表示、エージェントへの対話(コマンド実行、モジュール実行)、情報表示(OS, IPアドレス, ユーザー名など)、タスク管理、エージェントの削除・名前変更 |
Modules (モジュール) | 特定のタスク(権限昇格、情報収集、横展開など)を実行するためのスクリプトやツール群。 | モジュールの検索・閲覧、モジュールの実行、オプション設定、実行結果の確認 |
Credentials (認証情報) | 収集された認証情報(ユーザー名、パスワード、ハッシュなど)の管理。 | 認証情報の一覧表示、追加、編集、削除。Mimikatzなどのモジュール実行結果が自動的に追加されることも。 |
Reporting (レポート) | 操作ログや収集情報の表示。 | 実行されたタスク、エージェントのイベント、チャットログなどの確認。 |
Chat (チャット) | 複数オペレーター間でのリアルタイムコミュニケーション機能。 | メッセージの送受信。共同作業時の情報共有に利用。 |
Plugins (プラグイン) | Empireの機能を拡張するプラグインの管理・実行。 | 利用可能なプラグインの一覧表示、設定、実行。(例: SOCKSプロキシサーバー) |
Users (ユーザー) | Empireサーバーにアクセスできるユーザーアカウントの管理。 | ユーザーの追加、編集、権限設定。マルチユーザー機能の中核。 |
Bypasses (バイパス) | セキュリティ対策(AV, EDRなど)を回避するための設定やスクリプトの管理。 | バイパス手法の作成、編集、適用。 |
Settings (設定) | StarkillerやEmpireの各種設定。 | APIトークン管理、テーマ(ダークモードなど)変更、Malleable C2プロファイル管理など。 |
これらのメニューを駆使して、ペネトレーションテストやレッドチーム活動の各フェーズを進めていきます。 🧑💻
なお、一部の機能(ダッシュボード、グラフビュー、プロセスブラウザ、インタラクティブシェル、モジュールスクリプト編集など)は、開発者をサポートするスポンサー向けの追加機能として提供されている場合があります。
基本的な操作手順
Starkillerを使った基本的な攻撃フローは、概ね以下のようになります。
- リスナーの作成・起動: ターゲットからの接続を受け付ける準備をします。
- ステージャーの生成: 起動したリスナーに接続するためのコードを生成します。
- ステージャーの実行: 生成したステージャーを何らかの方法でターゲット上で実行させます。(例: フィッシングメール、脆弱性利用、物理アクセスなど)
- エージェントの接続確認: ターゲット上でステージャーが実行されると、Empireサーバーに接続し、エージェントがStarkiller上に表示されます。
- エージェントとの対話: 接続されたエージェントを通じて、コマンド実行やモジュールの利用を行います。
1. リスナーの作成・起動
- 左メニューから「Listeners」を選択します。
- 右上にある「Create Listener」ボタン(または同様のボタン)をクリックします。
- 「Listener Type」ドロップダウンから、使用したいリスナーの種類(例: `http`, `https`, `redirector`, `onedrive`など)を選択します。
- 選択したタイプに応じて、必須項目(Name, Port, Hostなど)を入力します。多くの場合、デフォルト値が設定されていますが、特にポート番号は未使用のものを選ぶ必要があります。Empireは通常、1ポートにつき1リスナーしかサポートしません。
- 必要に応じて、「Optional」セクションを展開し、追加のオプション(通信プロファイル、暗号化設定など)を構成します。
- 「Submit」ボタンをクリックしてリスナーを作成します。
- リスナー一覧画面に戻り、作成したリスナーが「Active」として表示されていることを確認します。リスナー名をクリックすると詳細設定を確認できます。
ヒント: Malleable C2プロファイルを使用すると、HTTP/S通信の見た目を正規のトラフィック(例: GoogleやAmazonの通信)に偽装し、ネットワーク検知を回避しやすくなります。
2. ステージャーの生成
- 「Listeners」画面で、使用したいリスナーの行にある「Generate Stager」アイコン(スーツケースのようなアイコン)をクリックします。
- 「Stagers」画面に遷移します。右上の「Create Stager」ボタンをクリックします。
- 「Listener」ドロップダウンから、先ほど作成したリスナーを選択します。
- 「Stager Type」ドロップダウンから、ターゲット環境や配布方法に適したステージャーの種類を選択します。(例: `windows/launcher_bat`, `multi/launcher`, `osx/applescript`, `windows/hta`など)
- 必要に応じてオプション(出力形式、難読化、バイパス設定など)を構成します。
- 「Submit」ボタンをクリックします。ステージャーの生成には少し時間がかかる場合があります。
- 生成されると、ステージャーが一覧に表示されます。ステージャーの種類に応じて、コピーアイコン(クリップボードへコピー)またはダウンロードアイコンが表示されます。
- アイコンをクリックして、生成されたコードまたはファイルを取得します。赤い削除ボタンで不要なステージャーを削除できます。
3. ステージャーの実行
このステップはStarkillerの操作外ですが、最も重要な部分です。生成したステージャーをターゲットマシン上で実行させる必要があります。手法は多岐にわたります。
- マクロを含むOfficeドキュメントをメールで送付する。
- 実行ファイルをUSBメモリに入れて手渡す。
- Webサイトの脆弱性を利用してダウンロード・実行させる。
- 既知の脆弱性を悪用してリモートでコードを実行する。
4. エージェントの接続確認
ターゲット上でステージャーが正常に実行されると、設定されたリスナーに対してコールバックが行われます。Starkillerの「Agents」メニューを選択すると、接続してきたエージェントが一覧に表示されます。新しいエージェントが接続されると、通常は通知が表示されます。🎉
5. エージェントとの対話とモジュールの利用
- 「Agents」画面で、操作したいエージェントをクリックします。
- エージェントの詳細画面が表示され、基本情報(IP、ユーザー名、プロセスIDなど)やタスク管理、対話インターフェースなどが利用できます。
-
コマンド実行:
- 「Interact」タブなどで、ターゲットマシン上で直接実行したいOSコマンド(例: `whoami`, `ipconfig`, `ls`)を入力し、実行します。
- 実行結果は通常、タスク結果エリアに表示されます。
-
モジュールの利用:
- 「Modules」タブ(またはメインメニューの「Modules」)から、目的のタスク(例: `privesc/sherlock`, `credentials/mimikatz`, `collection/keylogger`)を実行するモジュールを検索します。
- 使用したいモジュールを選択し、「Execute」ボタンなどをクリックします。
- モジュールが必要とするオプション(対象エージェント、パラメータなど)を設定し、実行します。
- 実行結果はタスク結果エリアや、モジュールによっては「Reporting」や「Credentials」メニューに反映されます。
-
ファイル操作:
- エージェント画面の機能(または専用モジュール)を使用して、ファイルのアップロードやダウンロードを行います。
-
エージェント管理:
- エージェントにわかりやすい名前を付けたり(Rename)、不要になったエージェントを削除(Kill/Remove)したりできます。
例えば、`privesc/sherlock`モジュールを実行して権限昇格可能な脆弱性を探し、`credentials/mimikatz`モジュールでメモリから認証情報を窃取する、といった一連の操作をStarkiller上で行うことができます。
高度な機能とヒント
- マルチユーザー連携: ユーザー管理機能で複数のオペレーターアカウントを作成し、チャット機能で連携しながら作業を進めることができます。誰がどのタスクを実行したかのログも残ります。
- Malleable C2プロファイル: 通信内容をカスタマイズし、正規のWebトラフィックに偽装することで、IDS/IPSやプロキシによる検知を回避しやすくなります。「Settings」メニューから管理できます。
- プラグインの活用: SOCKSプロキシサーバープラグインなどを利用して、侵害したマシンを踏み台にしたさらなる内部ネットワークへのアクセスなどが可能です。「Plugins」メニューから管理・実行します。
- Bypass機能: Invoke-Obfuscationなどの技術を利用して、PowerShellスクリプトを難読化し、アンチウイルス製品による検知を回避する試みが可能です。「Bypasses」メニューで管理します。
- API連携: EmpireのRESTful APIを利用して、独自のスクリプトやツールからEmpireを自動操作することも可能です。
- スポンサー機能: スポンサーになることで、ダッシュボード、グラフビュー(エージェント間の接続関係などを視覚化)、インタラクティブシェル、ファイルブラウザなどの便利な追加機能が利用可能になる場合があります。
💡 ヒント: 定期的にBC-SecurityのブログやGitHubリポジトリをチェックし、EmpireとStarkillerの最新情報や新機能、セキュリティアップデートを確認することをお勧めします。
セキュリティ上の考慮事項と対策
EmpireとStarkillerは非常に強力なツールであり、その悪用は深刻な被害をもたらす可能性があります。利用者は常に倫理観を持ち、法規制を遵守する必要があります。
攻撃者視点での注意点
- 検知リスク: Empireのエージェントや通信は、多くの最新EDR(Endpoint Detection and Response)製品やセキュリティ監視ソリューションによって検知される可能性があります。Malleable C2や難読化、バイパス技術を駆使しても、完全に検知を回避できる保証はありません。
- ログ: Empireサーバーおよびターゲットマシン上での操作はログとして記録されます。これらのログが調査対象となる可能性があります。
- ツールの痕跡: ステージャ実行時のファイルや、実行後のプロセス、ネットワーク通信などが、侵害の痕跡(Indicators of Compromise – IoC)となります。
防御者視点での対策
- PowerShellロギングの強化: スクリプトブロックロギングやモジュールロギングを有効にし、不審なPowerShellアクティビティを監視します。
- EDR/NGAVの導入: 不審なプロセス実行、メモリインジェクション、ファイルレス攻撃などを検知・ブロックできる最新のエンドポイントセキュリティ製品を導入します。
- ネットワーク監視: 不審なC2通信パターン(ビーコン通信、非標準ポート、不審なドメインへのアクセスなど)を監視し、ファイアウォールやプロキシでブロックします。JA3/SフィンガープリントやJARMなども検知の手がかりになります。
- ユーザー権限の最小化: 不要な管理者権限を付与せず、Least Privilegeの原則を徹底します。
- 脆弱性管理: OSやアプリケーションの脆弱性を速やかに修正し、初期侵入や権限昇格の経路を塞ぎます。
- セキュリティ意識向上教育: フィッシングメールや不審なファイルに対する従業員の意識を高めます。
重要: Empireのようなツールは、防御策のテストや改善、インシデント対応能力の向上に役立ちますが、その使用は常に管理された安全な環境で行われるべきです。
まとめ
Starkillerは、強力なC2フレームワークであるPowerShell Empireを、直感的かつ効率的に操作するための優れたGUIフロントエンドです。リスナーの管理からエージェントの操作、モジュールの実行、複数オペレーターでの連携まで、幅広い機能を視覚的なインターフェースで提供します。
コマンドライン操作に慣れていないユーザーや、複雑なオペレーションを効率化したい場合に特に有用です。ただし、その強力さゆえに、常に倫理的な利用とセキュリティリスクへの配慮が不可欠です。
このガイドが、StarkillerとEmpireを正しく理解し、セキュリティスキルの向上に役立てる一助となれば幸いです。🛡️ Happy (ethical) hacking! 😉
コメント