Havoc

Havoc – El framework C2 moderno y maleable que combina una UI elegante con técnicas avanzadas de evasión

Descripción del programa Havoc

Havoc es un framework de post-explotación y Comando y Control (C2) de código abierto, diseñado para ser moderno, maleable y altamente personalizable. Fue lanzado por primera vez en GitHub en octubre de 2022 por el desarrollador C5pider (Paul Ungur), quien continúa manteniéndolo y desarrollándolo activamente con contribuciones de la comunidad.

A diferencia de otros frameworks C2 que priorizan la estabilidad sobre la personalización, Havoc está construido desde sus cimientos para ser maleable por diseño. El framework no ha sido desarrollado principalmente para ser evasivo «de fábrica», sino para ser lo más modular y adaptable posible, otorgando al operador la capacidad de añadir características personalizadas o módulos que evadan los sistemas de detección de sus objetivos específicos.

Havoc está escrito en una combinación de lenguajes: el Teamserver está desarrollado en Golang, el cliente en C++ y Qt, y el agente principal (Demon) en C y Assembly. Esta arquitectura híbrida le permite ofrecer un cliente multiplataforma con una interfaz moderna (tema oscuro basado en Dracula), un servidor eficiente y un agente de alto rendimiento con capacidades avanzadas de evasión.

Havoc ha sido adoptado tanto por equipos rojos (Red Teams) legítimos para pruebas de seguridad autorizadas como por actores de amenazas en campañas reales. Según informes de Spamhaus, hubo un 22% de aumento en el uso de Havoc como backdoor durante el cuarto trimestre de 2023.

También se ha observado en campañas de phishing dirigidas a infraestructura crítica, donde los atacantes utilizan versiones modificadas del agente Demon que se comunican a través de APIs de Microsoft Graph para ocultar el tráfico C2 dentro de servicios legítimos.

¿Necesitas un framework C2 moderno, gratuito y altamente personalizable para tus operaciones de Red Team, con una interfaz elegante y técnicas de evasión avanzadas?

Características clave de Havoc

1. Arquitectura de tres componentes: Teamserver, Cliente y Demon

Havoc se divide en tres componentes principales que trabajan en conjunto:

  • Teamserver (Golang): El componente central que gestiona los listeners, la autenticación de operadores, el almacenamiento de datos (SQLite) y la generación de payloads. Soporta múltiples operadores simultáneos (multiplayer) y puede ejecutarse en sistemas Linux.
  • Cliente (C++/Qt): La interfaz gráfica multiplataforma que los operadores utilizan para interactuar con el framework. Presenta un diseño moderno con tema oscuro basado en Dracula y proporciona una experiencia de usuario similar a la de Cobalt Strike.
  • Demon (C/ASM): El agente principal de Havoc, escrito en C y Assembly. Es responsable de ejecutar comandos en los sistemas comprometidos y comunicarse con el Teamserver.

2. El agente Demon con técnicas avanzadas de evasión

El Demon es el agente estrella de Havoc e incorpora múltiples técnicas de evasión diseñadas para dificultar la detección por parte de soluciones EDR:

TécnicaDescripción
Sleep ObfuscationOfrece tres técnicas para ocultar el agente en memoria durante los períodos de inactividad: WaitForSingleObjectEx (sin ofuscación), FOLIAGE y Ekko (ambas utilizan técnicas avanzadas de cifrado ROP para ocultar el payload en memoria)
Indirect SyscallsRealiza llamadas indirectas al sistema para muchas APIs Nt*, evadiendo los hooks de EDR que monitorean las llamadas a la API de usuario
Return Address SpoofingEnmascara la dirección de retorno en las llamadas al sistema para evitar el rastreo basado en la pila
x64 Syscall StubsLos stubs de syscall se construyen dinámicamente desde ntdll.dll en disco y se modifican para que la dirección de retorno apunte a NtAddBootEntry dentro del módulo ntdll.dll
Patching AMSI/ETWPuede parchear AMSI y ETW utilizando breakpoints de hardware para evitar la detección basada en scripts
Proxy Library LoadingCarga bibliotecas a través de un proxy para evadir la detección basada en la carga de módulos
Stack DuplicationDuplica la pila durante los períodos de sueño para complicar el análisis forense

3. Soporte de comunicación multicanal (HTTP/S, SMB)

Havoc soporta múltiples protocolos de comunicación entre el Demon y el Teamserver:

ProtocoloCaracterísticasCaso de uso
HTTP/HTTPSEscucha en puertos configurables (80/443). Permite personalizar cabeceras, User-Agent, URIs y respuestas del servidor. Soporta cifrado AES-256-CTR para el contenido de los mensajes
SMBUtiliza pipes nombrados (named pipes) para la comunicación dentro de redes Windows. Permite el movimiento lateral a través de un Demon padre

4. Perfiles C2 maleables (yaotl)

Havoc utiliza perfiles de configuración en formato yaotl (una sintaxis personalizada construida sobre HCL) que permiten personalizar casi todos los aspectos del Teamserver y los listeners:

Teamserver {
    Host = "0.0.0.0"
    Port = 40056
}

Operators {
    user "5pider" {
        Password = "password1234"
    }
}

Listeners {
    Http {
        Name        = "HTTPS Listener"
        Host        = "10.0.0.10"
        Port        = 443
        Secure      = true
        UserAgent   = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36"
        Uris        = ["/funny_cat.gif", "/index.php"]
        Headers     = ["X-Havoc: true"]
    }
}

Esta flexibilidad permite a los operadores hacer que el tráfico C2 parezca legítimo, imitando las cabeceras y comportamientos de servicios como Slack.

5. Múltiples formatos de payload y generación modular

Havoc puede generar payloads en varios formatos a través de su interfaz (Attack → Payload):

  • EXE (ejecutable Windows de 64 bits)
  • DLL (biblioteca de enlace dinámico)
  • Shellcode (código independiente de posición, compatible con el cargador reflectivo KaynLdr)

6. Capacidades de post-explotación completas

Havoc incluye un amplio conjunto de comandos de post-explotación integrados:

CategoríaComandos/Capacidades
Descubrimientowhoami (usuario actual), enumeración de procesos, descubrimiento de cuentas privilegiadas, información del sistema (hostname, dominio, SO)
Gestión de tokensToken vault con capacidad de impersonación de tokens
CapturaCaptura de pantalla, descarga de archivos
InyecciónInyección de DLL y PE, migración de procesos
PivotingCapacidad de enrutar comunicaciones HTTP/S a través de proxies designados
BOFsSoporte para ejecutar Beacon Object Files (BOFs) en memoria, permitiendo ampliar funcionalidades sin actualizar el Demon

7. Multiplayer mode y colaboración en tiempo real

Havoc permite que múltiples operadores se conecten simultáneamente al mismo Teamserver, facilitando la colaboración en ejercicios de Red Team complejos. El Teamserver autentica a los operadores mediante contraseñas definidas en el perfil y gestiona todas las sesiones activas.

8. Integración con External C2 y API

Havoc soporta External C2, lo que permite integrar canales de comunicación personalizados o conectar el framework con otras herramientas. También expone una API en Python que facilita la automatización y extensión de funcionalidades.

9. Community y soporte

Havoc cuenta con una comunidad activa en Discord y los desarrolladores aceptan contribuciones a través de GitHub. El proyecto también tiene un programa de sponsors (Patreon/GitHub Sponsors) que ofrece características adicionales planificadas para los patrocinadores.

Explicación detallada del funcionamiento

La arquitectura de Havoc sigue un modelo cliente-servidor moderno con un diseño de tres capas:

1. Teamserver (Golang)
El Teamserver es el núcleo del framework. Se ejecuta en un servidor Linux (recomendado) y es responsable de:

  • Gestionar la autenticación de los operadores (definidos en el perfil yaotl)
  • Almacenar datos de sesiones, tareas y archivos descargados en una base de datos SQLite
  • Escuchar las conexiones entrantes de los agentes Demon a través de los listeners configurados (HTTP/S, SMB)
  • Recibir y procesar los callbacks de los agentes
  • Encolar comandos para que los agentes los ejecuten en su próximo «latido»
  • Generar payloads personalizados bajo demanda

2. Cliente (C++/Qt)
El Cliente es la interfaz gráfica que los operadores utilizan para interactuar con el Teamserver. Se conecta al Teamserver a través del puerto de administración (40056 por defecto) y permite:

  • Ver y gestionar todas las sesiones activas (callbacks)
  • Enviar comandos a los agentes individuales
  • Visualizar la salida de los comandos en tiempo real
  • Configurar nuevos listeners
  • Generar payloads personalizados
  • Gestionar el loot (archivos descargados, capturas de pantalla)

3. Agente Demon (C/ASM)
El Demon es el payload que se ejecuta en los sistemas comprometidos. Su flujo de trabajo típico es:

  • Al ejecutarse, establece una conexión con el Teamserver utilizando el listener configurado (HTTP/S o SMB)
  • Envía un paquete de «check-in» que contiene información del sistema (hostname, nombre de usuario, dominio, IP, detalles del proceso, información del SO, estado de elevación de privilegios) cifrado con AES-256-CTR
  • Entra en un bucle de «beaconing», durmiendo durante un intervalo configurable (por defecto 2 segundos) y despertándose para comprobar si hay nuevos comandos
  • Durante el sueño, puede aplicar técnicas de ofuscación (FOLIAGE/Ekko) para ocultar su presencia en memoria
  • Cuando recibe un comando, lo ejecuta y envía la salida de vuelta al Teamserver en el siguiente latido

El flujo de comunicación típico es el siguiente:

  1. El Demon realiza una solicitud POST al Teamserver con el primer byte 0xDEADBEEF (magic byte), la longitud del agente y el AgentID, junto con las claves de cifrado (AES-256-CTR)
  2. El Teamserver responde con una tarea (comando) cifrada
  3. El Demon ejecuta la tarea (ej. whoami, captura de pantalla, inyección de DLL)
  4. El Demon envía la salida cifrada de vuelta al Teamserver en la siguiente solicitud POST
  5. El Teamserver descifra la salida, la almacena en la base de datos y la muestra en el Cliente

Este patrón de comunicación continúa hasta que el operador termina la sesión o el Demon es detectado y eliminado.

Descarga e instalación de Havoc

  • Desarrollador: C5pider (Paul Ungur) con contribuciones de la comunidad
  • Página oficial: https://github.com/HavocFramework/Havoc
  • Documentación: Wiki oficial en el repositorio de GitHub
  • Versión actual: En desarrollo activo (lanzado en octubre de 2022)
  • Tamaño: Variable (depende de las dependencias compiladas)
  • Sistemas operativos compatibles:
  • Teamserver: Linux (Debian 10/11, Ubuntu 20.04/22.04, Kali Linux, Arch Linux)
  • Cliente: Linux, macOS, Windows
  • Agente (Demon): Windows (64 bits), macOS, Linux
  • Requisitos previos:
  • Python 3.10.x
  • Qt moderno (Qt6 recomendado)
  • Golang
  • build-essential, cmake, nasm, mingw-w64
  • Licencia: Código abierto (sin especificación explícita de licencia en el repositorio)
  • Idioma: Interfaz en inglés
  • Soporte técnico: Discord oficial, GitHub Issues

Instalación paso a paso:

# 1. Instalar dependencias
sudo apt install -y git build-essential apt-utils cmake libfontconfig1 libglu1-mesa-dev libgtest-dev libspdlog-dev libboost-all-dev libncurses5-dev libgdbm-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev libbz2-dev mesa-common-dev qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools libqt5websockets5 libqt5websockets5-dev qtdeclarative5-dev golang-go qtbase5-dev libqt5websockets5-dev libspdlog-dev python3-dev libboost-all-dev mingw-w64 nasm

# 2. Instalar Python 3.10 (para Ubuntu 20.04)
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.10 python3.10-dev

# 3. Clonar el repositorio
git clone https://github.com/HavocFramework/Havoc.git
cd Havoc

# 4. Compilar el Teamserver
cd Teamserver
make
cd..

# 5. Compilar el Cliente
cd Client./Havoc.sh

Cómo usar Havoc

Advertencia de seguridad: Havoc es una herramienta de prueba de penetración. Debe utilizarse únicamente en entornos autorizados y con permiso explícito del propietario del sistema.

Paso 1: Configurar el perfil del Teamserver
Edita el archivo de perfil en Teamserver/profiles/havoc.yaotl:

Teamserver {
    Host = "0.0.0.0"
    Port = 40056
}

Operators {
    user "operador" {
        Password = "contraseña_segura"
    }
}

Paso 2: Iniciar el Teamserver

cd Teamserver./teamserver server --profile profiles/havoc.yaotl -v

Paso 3: Iniciar el Cliente

cd Client./Havoc.sh

Paso 4: Conectar el Cliente al Teamserver
En la ventana de perfil del Cliente, introduce:

  • Profile Name: Cualquier nombre descriptivo
  • Host: IP del Teamserver
  • Port: 40056 (o el configurado)
  • User: El nombre del operador definido en el perfil
  • Password: La contraseña correspondiente

Paso 5: Configurar un listener

  1. En la interfaz del Cliente, navega a Attack → Listeners
  2. Selecciona el tipo (HTTP/HTTPS)
  3. Configura la IP, puerto y opciones de personalización (User-Agent, URIs, cabeceras)
  4. Haz clic en «Save»

Paso 6: Generar un payload

  1. Navega a Attack → Payload
  2. Selecciona el listener configurado
  3. Elige el formato (EXE, DLL, Shellcode)
  4. Configura opciones como Sleep, Jitter, y técnica de Sleep Mask
  5. Haz clic en «Generate» y descarga el payload

Paso 7: Ejecutar el payload y establecer una sesión
Transfiere el payload al sistema objetivo y ejecútalo. Cuando se conecte, aparecerá un nuevo callback en la interfaz del Cliente. Haz clic derecho sobre él para abrir un menú de interacción.

Paso 8: Comandos de post-explotación
Una vez en la sesión, puedes ejecutar comandos como:

  • help – Muestra los comandos disponibles
  • shell <comando> – Ejecuta un comando en la shell del sistema
  • screenshot – Captura la pantalla
  • download <ruta> – Descarga un archivo
  • upload <ruta> – Sube un archivo
  • ps – Lista los procesos
  • inject <PID> <payload> – Inyecta payload en un proceso
  • mimikatz – Ejecuta comandos de Mimikatz (si está disponible)

Observaciones sobre el programa Havoc

El auge de Havoc en el panorama de amenazas
Havoc ha experimentado un crecimiento significativo en popularidad desde su lanzamiento en 2022. Según informes de Spamhaus, el uso de Havoc como backdoor aumentó un 22% durante el cuarto trimestre de 2023. Su adopción por parte de actores de amenazas se debe a varias razones:

  • Es gratuito y de código abierto, a diferencia de Cobalt Strike que requiere costosas licencias
  • Su arquitectura maleable permite personalizarlo para evadir detecciones específicas
  • Las firmas de detección son menos maduras que para Cobalt Strike, ya que es más reciente
  • La interfaz moderna y fácil de usar reduce la curva de aprendizaje
  • Las técnicas de evasión integradas (Indirect Syscalls, Sleep Obfuscation) son muy efectivas

Havoc vs. Cobalt Strike vs. Sliver vs. Mythic

CaracterísticaHavocCobalt StrikeSliverMythic
CódigoOpen sourceComercial (cerrado)Open sourceOpen source
Lanzamiento inicial2022201220202019
ClienteC++/Qt (multi-platform)Java SwingCLI + WebWeb (React)
TeamserverGolangJavaGoDocker (Go)
Agente principalDemon (C/ASM)Beacon (C/Java)Sliver (Go)Apollo (C#) y otros
Sleep ObfuscationSí (Ekko, FOLIAGE)Sí (a través de kits)LimitadoLimitado
Indirect SyscallsLimitadoNoNo
MultiplayerSí (nativo)
Perfiles C2yaotl (HCL)Malleable C2JSONPython
BOF executionLimitado
Facilidad de usoAlta (UI moderna)MediaBaja (CLI)Media
MadurezMediaMuy altaMediaMedia

Detección y defensa contra Havoc
A pesar de sus capacidades de evasión, Havoc puede ser detectado mediante:

  • Análisis de tráfico de red: El patrón de «beaconing» con intervalos regulares (por defecto 2 segundos) es característico. El primer byte 0xDEADBEEF en las solicitudes POST también es un indicador.
  • Extracción de claves de cifrado: Las claves AES-256-CTR se almacenan en la base de datos SQLite del Teamserver (teamserver.db) y pueden extraerse con la consulta SELECT Key, IV FROM agents.
  • Análisis de memoria: Las claves de cifrado también pueden extraerse de volcados de memoria utilizando Volatility.
  • Comportamiento de procesos: La inyección de procesos y el uso de técnicas de ofuscación de sueño (sleep obfuscation) pueden ser detectados por soluciones EDR modernas.

Casos de uso documentados en campañas reales
Havoc ha sido observado en múltiples campañas maliciosas:

  • Campañas de phishing con ClickFix: Los atacantes utilizan correos de phishing con archivos HTML adjuntos que simulan errores y engañan a los usuarios para que copien y peguen comandos PowerShell maliciosos. El ataque descarga un script Python que actúa como cargador de shellcode y finalmente despliega el agente Demon de Havoc.
  • Uso de SharePoint y Microsoft Graph API: En campañas recientes, los atacantes han modificado Havoc Demon para utilizar la API de Microsoft Graph, ocultando las comunicaciones C2 dentro de SharePoint, un servicio legítimo y confiable.
  • Objetivos de infraestructura crítica: El framework se ha utilizado en ataques a infraestructura crítica nacional en el Medio Oriente.

El desarrollo de Havoc es muy activo
El proyecto tiene cientos de commits en GitHub y recibe contribuciones regulares de la comunidad. El desarrollador principal (C5pider) mantiene una presencia activa en Discord y acepta pull requests. El framework se actualiza frecuentemente, aunque el desarrollador advierte que «Havoc está en una fase temprana de lanzamiento» y que «pueden realizarse cambios importantes en las APIs/estructuras principales a medida que el framework madura».

Limitaciones importantes

  • Estado de desarrollo temprano: Havoc está en una fase temprana de lanzamiento. Pueden realizarse cambios importantes en las APIs y estructuras principales a medida que el framework madura.
  • No es inherentemente evasivo: El framework no ha sido desarrollado principalmente para ser evasivo. En cambio, está diseñado para ser maleable y modular, dando al operador la capacidad de añadir sus propias características de evasión.
  • Soporte limitado de protocolos: Actualmente, solo HTTP/S y SMB son compatibles como protocolos de comunicación para los agentes (aunque se planean más).
  • Ecosistema menos maduro que Cobalt Strike: Aunque está creciendo rápidamente, el número de agentes, BOFs y scripts disponibles es menor que para Cobalt Strike.
  • Curva de aprendizaje moderada: La configuración de perfiles yaotl y la personalización de payloads requieren cierta familiaridad con la estructura del framework.

Alternativa recomendada

Si buscas alternativas a Havoc para operaciones de Red Team o pruebas de penetración, considera las siguientes opciones:

Cobalt Strike (comercial): Sigue siendo el estándar de oro para Red Teams profesionales, con un ecosistema maduro, excelente evasión de EDR y soporte empresarial. Ideal para operaciones de larga duración.

Sliver (open source): Framework de post-explotación escrito en Go, desarrollado por BishopFox. Es más ligero que Havoc y más fácil de desplegar, pero con una interfaz menos pulida (principalmente CLI).

Mythic (open source): Framework C2 con arquitectura de microservicios Docker y soporte para múltiples lenguajes de agente. Tiene una interfaz web React y es altamente extensible, pero más complejo de desplegar.

Metasploit Framework (open source): Mejor para la fase de explotación inicial que para post-explotación prolongada. Su payload Meterpreter es potente pero más detectable.

Havoc es el framework C2 de código abierto más prometedor para operadores que buscan una experiencia de usuario moderna combinada con técnicas de evasión avanzadas. Su interfaz elegante (similar a Cobalt Strike), sus capacidades de personalización y su comunidad activa lo convierten en una herramienta ideal para equipos rojos con presupuesto limitado o para profesionales de seguridad que desean estudiar las técnicas modernas de post-explotación.

Sección FAQ

¿Havoc es gratis o de pago?

Havoc es completamente gratuito y de código abierto. No tiene versiones de pago ni funcionalidades bloqueadas. El desarrollador acepta donaciones a través de Patreon/GitHub Sponsors para apoyar el desarrollo continuo.

¿Funciona en Linux, macOS, Windows 10 y Windows 11?

El Teamserver funciona mejor en Linux (Ubuntu, Debian, Kali, Arch). El Cliente es multiplataforma y funciona en Windows, macOS y Linux. El agente Demon puede ejecutarse en Windows (64 bits), macOS y Linux.

¿Qué diferencia a Havoc de Sliver?

La principal diferencia es la interfaz de usuario y la filosofía de diseño. Havoc tiene un cliente gráfico moderno (C++/Qt) similar a Cobalt Strike, con una curva de aprendizaje más suave. Sliver tiene una interfaz principalmente CLI (aunque también ofrece una web básica) y está escrito completamente en Go, lo que lo hace más ligero pero menos pulido visualmente.

¿Por qué los actores de amenazas usan Havoc?

Los actores de amenazas usan Havoc porque es gratuito, moderno y efectivo. Ofrece funcionalidades similares a Cobalt Strike (beaconing, cifrado, múltiples protocolos) sin el coste de la licencia, y su código abierto permite personalizarlo para evadir detecciones específicas. Además, al ser más reciente, las firmas de detección son menos maduras.

¿Qué ha pasado con el desarrollo de Havoc?

El desarrollo de Havoc es muy activo. El proyecto fue lanzado en octubre de 2022 y ha recibido cientos de commits desde entonces. El desarrollador principal (C5pider) mantiene una comunidad activa en Discord y acepta contribuciones de la comunidad. El framework sigue en «estado temprano de lanzamiento», lo que significa que se esperan cambios importantes en las APIs y estructuras a medida que madura.