このブログは、最近AWSと格闘しているアルバイトのseigo2016が書いています。 あるもりすぶろぐの内容は個人の意見です。
はじめに
検証には自身で管理する環境を使用し、自己責任でお願いします。また、この情報を悪用することは絶対に行わないでください。
今回はペネトレーションテスト等で用いられる各種C2フレームワーク6種について、ネットワーク特徴等を中心に検証および比較を行ってみました。フレームワークの検証は有名なものを中心に取り扱っています。
概要
項目比較
C2フレームワーク | 検証時の最新バージョン | 開発言語(Server) | 開発言語(Agent) | ライセンス | Payloadの対応OS | UI | 対応プロトコル | URL |
---|---|---|---|---|---|---|---|---|
Metasploit | 6.3.29 | Ruby | C/Java/PHP/Python | BSD | Windows/macOS/Linux(TCP) / Windows(HTTPS) | CLI | TCP/HTTP/SMB | GitHub / HP |
DeimosC2 | v1.1(beta) | Go | Go | MIT | Windows/macOS/Linux | Web | TCP/HTTPS/DNS over HTTPS/QUIC/Pivot over TCP | GitHub |
Empire | v5.5.4 | Python/PowerShell | PowerShell Python C# | BSD-3-Clause License | Windows/macOS/Linux | CLI/Web | HTTP/S | GitHub / Wiki |
Merlin | 1.5.1 | Go | Go | GPL-3.0 | Windows/macOS/Linux | CLI | HTTP/2/3/ | GitHub / Docs |
Sliver | 1.5.41 | Go | Go | GPL-3.0 | Windows/macOS/Linux | CLI | HTTP/S/DNS | GitHub / Wiki |
Covenant | v0.6 | C#(.NET Core) | C#(.NET Core) | GPL-3.0 | Windows | Web | HTTP/SMB | GitHub / Wiki |
WireSharkによるC2通信の確認
環境
それぞれのフレームワークを用いて、Kali上にC2サーバーを構築しました。 また、LAN内のWindows上に対応するAgentを設置し、起動しました。
その後、AgentがC2サーバーと通信し、サーバーからAgentにnetstat
コマンドを送信し、結果を表示するところまでの通信をWiresharkでキャプチャ・確認しました。
その調査結果を以下にまとめました。
C2サーバーとAgentの通信の特徴
プロキシ
C2フレームワーク | 使用プロトコル | Proxy対応 | 備考 |
---|---|---|---|
Metasploit | HTTPS | 対応 | |
DeimosC2 | HTTPS | 非対応 | 現状の検証の範囲では対応していなかった。 |
Empire | HTTP | 対応 | デフォルトでシステムのプロキシ設定を利用。オプションで指定も可能。 |
Merlin | HTTP | 対応 | HTTP/1.1での通信時に対応。Agent作成時に-proxy オプションで指定可能。 |
Sliver | HTTP | 対応 | Windows/macOS/Linuxのシステムプロキシを自動検出する。 |
Covenant | HTTP | 対応 | Windowsのシステムプロキシを自動検出する。 |
接続先
C2フレームワーク | 使用プロトコル | エンドポイント | エンドポイントの変更 |
---|---|---|---|
Metasploit | HTTPS | - | 不可 |
DeimosC2 | HTTPS | /login /index /settings /profile |
可 |
Empire | HTTP | GET /admin/get.php GET /login/process.php GET /news.php POST /admin/get.php POST /login/process.php |
可 |
Merlin | HTTP | POST / |
可 |
Sliver | HTTP | POST /sign-up.php |
可 |
Covenant | HTTP | GET /en-us/test.html?message=&v=1 POST /en-us/docs.html?type=55317a8198&v=1 |
可 |
ユーザーエージェント
C2フレームワーク | Raw UserAgent | UserAgent | UserAgentの変更 |
---|---|---|---|
Metasploit | Mozilla/5.0 (Macintosh; Intel Mac OS X 13.1; rv:108.0) Gecko/20100101 Firefox/108.0 |
Firefox 108 on macOS (Ventura) | 可 |
DeimosC2 | なし | - | - |
Empire | Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko |
Internet Explorer 11 on Windows 7 | 可 |
Merlin | Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.85 Safari/537.36 |
Chrome 40 on Windows 7 | 可 |
Sliver | Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.2399.821 Safari/537.36 |
Chrome 102 on Windows 10 | 可 |
Covenant | Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36 |
Chrome 41 on Windows 7 | 不可 |
最後に
各C2フレームワーク毎にプロキシ使用する機能の有無や通信先の特徴があることがわかりました。
Web UIで簡単に操作ができるC2フレームワークであっても、User-AgentやProxy、URL等のカスタマイズは可能であることに驚きました。
そのため、攻撃に使用された際は、変更可能であることを考慮して、他の特徴等も確認の上調査をする必要があります。