Sobre OFFCEPT
Construida por operadores que dedicaron años a entrar en redes antes de crear una empresa alrededor de ello.
Saber Más
← Volver
Investigación Técnica18 de mayo de 20268 min de lectura

ACL Abuse Havoc, un toolkit de BOFs para explotación de ACLs de AD vía Havoc C2

Los entornos de Active Directory están plagados de malas configuraciones de ACL. GenericAll sobre una cuenta de usuario, WriteDacl sobre un grupo, GenericWrite sobre un objeto computer: son las rutas que convierten un foothold de bajos privilegios en domain admin. Herramientas como BloodHound mapean estas relaciones, pero explotarlas desde un beacon de C2 siempre ha requerido dejar binarios en disco o correr tooling externo que rompe el opsec.

No existía un toolkit nativo de abuso de ACL para Havoc C2, así que construimos uno. acl-abuse-havoc es un toolkit de BOFs (Beacon Object Files) que corre ocho primitivas comunes de abuso de ACL enteramente en memoria, sin tocar disco y sin dependencias externas.

Qué contiene

El toolkit cubre las rutas de abuso de ACL que encontramos con más frecuencia en proyectos:

  • acl-shadow - Cadena de ataque Shadow Credentials (GenericWrite/GenericAll). Generación de par de claves RSA, escritura de KeyCredential, PKINIT, extracción del hash NT, limpieza. Corre en menos de 5 segundos.
  • acl-fcp - ForceChangePassword vía LDAPS.
  • acl-addmember - Añadir un usuario a un grupo (WriteMembers/GenericAll).
  • acl-owner - Tomar propiedad de un objeto vía WriteOwner sobre LDAPS.
  • acl-rbcd - Abuso de Resource-Based Constrained Delegation (GenericWrite sobre computer).
  • acl-dcsync - DCSync vía WriteDacl sobre el objeto de dominio. Concede DS-Replication-Get-Changes y DS-Replication-Get-Changes-All de una sola vez.
  • acl-genericall - Abuso de GenericAll vía modificación de WriteDacl.
  • acl-ace - Escribir un ACE custom con access mask, tipo y flags arbitrarios.

acl-shadow

Shadow Credentials es una de las rutas de escalada de privilegios más fiables en entornos AD que corren AD CS. La cadena consiste en escribir un KeyCredential en un objeto objetivo, autenticarse vía PKINIT para obtener un TGT y extraer el hash NT del PAC. Herramientas existentes como Rubeus y Certipy lo hacen bien, pero ninguna corre como BOF nativo dentro de Havoc. acl-shadow llena ese hueco.

La cadena completa corre como un único BOF:

  • Búsqueda LDAP para resolver el DN y el objectSid del objetivo.
  • Generación de par de claves RSA de 2048 bits in-process.
  • Certificado self-signed con UPN SAN y SID URL (compliance con KB5014754).
  • Construcción del blob msDS-KeyCredentialLink según MS-ADTS sección 2.2.20.
  • Escritura LDAP para añadir el KeyCredential al objeto objetivo.
  • PKINIT AS-REQ con PA-PK-AS-REQ e intercambio de claves DH (MODP Group 2).
  • Derivación de la reply key del AS-REP vía kTruncate (RFC 4556 sección 3.2.3.1).
  • U2U TGS-REQ para obtener un service ticket cifrado con la session key.
  • Descifrado del PAC_CREDENTIAL_INFO para extraer el hash NT.
  • Limpieza: elimina el KeyCredential de msDS-KeyCredentialLink.

De la escritura a la limpieza tarda menos de 5 segundos. La negociación del tipo de cifrado maneja AES256-CTS-HMAC-SHA1-96, AES128-CTS-HMAC-SHA1-96 y RC4-HMAC automáticamente. Requisitos del objetivo: DC Windows Server 2016+ y AD CS con la plantilla de certificado Kerberos Authentication.

Consideraciones de opsec

acl-shadow toca dos protocolos: LDAP para la escritura/eliminación del KeyCredential y Kerberos para el intercambio PKINIT + U2U. La escritura LDAP genera el Evento 5136 (objeto de directorio modificado) en el atributo msDS-KeyCredentialLink del objetivo. La autenticación PKINIT genera el Evento 4768 con información del certificado. La limpieza elimina el valor del atributo, pero el 5136 de la escritura inicial ya quedó registrado.

La ventana corta entre escritura y limpieza dificulta la detección en tiempo real, pero el análisis forense seguirá viendo ambos eventos. No se escribe nada en disco: el par de claves RSA, el certificado y el PFX viven en la memoria del proceso durante la ejecución del BOF.

Cómo empezar

Compilar requiere mingw-w64 (solo x64). Clona el repo, corre make y carga acl-abuse.py vía Script Manager en el cliente de Havoc. Todos los comandos aceptan un argumento opcional de DC: si lo omites, el DC se descubre automáticamente vía DsGetDcNameW.

El proyecto es open-source y está disponible en github.com/OFFCEPT/acl-abuse-havoc.

Demostración