Skip to content

Configuración de un beacon de Cobalt Strike: qué revela

Extraer estáticamente la configuración de un beacon de Cobalt Strike y convertir cada campo — C2, sleep, pipes, spawn-to, watermark, clave pública — en una búsqueda.

Publicado el 5 min de lectura

En resumen. Un beacon de Cobalt Strike lleva toda su configuración dentro del binario: adónde se conecta, con qué frecuencia, cómo se oculta, en qué proceso se inyecta. Decodificarla estáticamente convierte una muestra en una lista de búsquedas concretas en los registros del proxy, la telemetría EDR y otros equipos. El PE Parser la decodifica en el navegador y la muestra en una pestaña Config.

Por qué importa la configuración

Cuando aparece un beacon durante una investigación, el binario es lo menos interesante: es un implante genérico. Lo que lo convierte en esta intrusión es la configuración que eligió el operador — dominios C2, URI, user-agent, tuberías con nombre, el proceso usado para las tareas de post-explotación. Cada uno de esos valores se puede buscar en otros sitios, y ninguno requiere ejecutar la muestra.

Dónde está la configuración

El beacon guarda sus ajustes en una tabla de entradas numeradas (tipo, longitud, valor), codificada con un XOR de un solo byte: 0x69 en versiones antiguas y 0x2e en 4.x. Los cargadores suelen añadir una capa — la DLL del beacon codificada con XOR de clave de cuatro bytes dentro de un stager, o comprimida en un overlay. El PE Parser busca la tabla en el propio archivo, en las capas que desempaqueta (UPX) y en los ejecutables que extrae del archivo, así que la configuración aparece esté donde esté el beacon.

Los stagers pequeños son distintos: no contienen el beacon, solo el shellcode que lo descarga. Para ellos la herramienta indica el tipo de stager (reverse_http, reverse_https, reverse_tcp) y lo que puede leer del shellcode: host, puerto, URI y user-agent.

Leer los campos

CampoQué significaDónde buscar
Tipo de beaconHTTP, HTTPS, DNS, SMB (tubería con nombre) o TCPQué registros revisar primero
Servidores C2Nombres de host y URI que contactaRegistros de proxy, DNS y cortafuegos; DNS pasivo
PuertoPuerto del listener C2Cortafuegos y netflow
Sleep / jitterIntervalo de conexión y su variación aleatoriaDetección de beaconing en registros de red
User-agent, URI POSTCómo son las peticionesRegistros de proxy, a menudo muy distintivos
Nombre de pipeTubería con nombre de los beacons SMB y tareas post-exEventos de tuberías con nombre en los equipos (por ejemplo Sysmon 17 y 18)
Spawn to (x86 / x64)Proceso lanzado para la post-explotaciónCreación de procesos: ese proceso sin argumentos, lanzado por un padre inusual
WatermarkNúmero ligado a la licencia que generó el beaconAgrupar muestras entre incidentes
Clave pública (SHA-256)Hash de la clave del team serverAgrupar beacons servidos por el mismo team server

Algunas notas prácticas:

  • El proceso spawn-to es una de las mejores búsquedas en el equipo. Por defecto es rundll32.exe; un rundll32.exe iniciado sin una DLL como argumento rara vez es legítimo.
  • Sleep y jitter describen el beaconing en la red: un sleep de 60 segundos con un 20 % de jitter da una conexión cada 48 a 72 segundos.
  • El watermark vincula muestras generadas desde la misma instalación. Las copias filtradas y crackeadas comparten algunos valores comunes: un watermark igual es una pista, no una atribución.
  • El hash de la clave pública suele ser mejor clave de agrupación que el watermark: los beacons generados por el mismo team server lo comparten.

Extraerla con el PE Parser

  1. Suelte el archivo (o un ZIP de la recolección) en el PE Parser. No se sube ni se ejecuta nada.
  2. Si se encuentra una configuración, el archivo recibe un indicador de severidad alta, Configuración maliciosa decodificada, y aparece una pestaña Config.
  3. La pestaña lista primero las entradas C2 y luego cada ajuste decodificado, con el offset donde está la tabla — haga clic para abrir la vista hexadecimal en esos bytes.
  4. La pestaña IOC recoge las URL y nombres de host C2, el user-agent y el nombre de pipe, listos para exportar como CSV, evento MISP o bundle STIX 2.1 (exportar IOC).

La misma pestaña cubre algunas otras familias cuya configuración se lee estáticamente: AsyncRAT y sus derivados (DcRat, VenomRAT), QuasarRAT, njRAT y Remcos.

Límites

  • Cargadores empaquetados o cifrados. Si el beacon va dentro de un crypter propio, la configuración solo aparece al quitar esa capa, normalmente de forma dinámica en un sandbox. UPX y las capas simples (XOR, compresión) se gestionan; los crypters propios no.
  • Cambios de formato. El formato ha cambiado entre versiones y los generadores pueden modificarse. El extractor comprueba estrictamente la estructura de la tabla para no inventar campos; una versión inusual puede simplemente no decodificarse.
  • Señuelos. Los operadores a veces dejan valores engañosos (hosts falsos, un watermark crackeado). Confírmelo con evidencia de red antes de actuar sobre un solo campo.
  • No es prueba de malicia por sí sola. Los red teams usan Cobalt Strike legítimamente. Una configuración decodificada dice qué es el binario, no quién lo ejecutó — consulte con su red team antes de escalar.

Artículos relacionados

Triaje estático paso a paso de ejecutables de Windows con PE Parser, gratuito: cargue archivos o un ZIP, lea los indicadores, compare y exporte.
Localice y copie archivos EXE, DLL y SYS sospechosos de un equipo Windows o de una imagen sin ejecutarlos: PowerShell, Velociraptor, imágenes y trampas.
Lo que importa de un archivo PE al analizar un EXE, una DLL o un driver sospechoso: cabeceras, secciones, importaciones, recursos, firma y overlay.