C2フレームワークの比較・検証

このブログは、最近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等のカスタマイズは可能であることに驚きました。 そのため、攻撃に使用された際は、変更可能であることを考慮して、他の特徴等も確認の上調査をする必要があります。