El módulo AD-BOF proporciona herramientas fundamentales para interactuar con Active Directory durante un engagement de pentesting autorizado. Incluye comandos de reconocimiento LDAP, extracción de credenciales vía DCSync, lectura de contraseñas LAPS y manipulación del servicio WebDAV.

Agentes compatibles: Beacon, Gopher, Kharon
Plataforma: Windows


adwssearch

Realiza una consulta de búsqueda a través de Active Directory Web Services (ADWS) en lugar de LDAP estándar.

Cuándo usarlo: Cuando el puerto LDAP (389/636) está bloqueado o filtrado, pero el servicio ADWS (puerto 9389) sigue disponible. ADWS es un servicio alternativo que expone la misma información del directorio.

adwssearch "(objectClass=user)"
adwssearch "(&(objectCategory=computer)(operatingSystem=*Server*))"
adwssearch "(memberOf=CN=Domain Admins,CN=Users,DC=corp,DC=local)"
ArgumentoRequeridoDescripción
queryConsulta en formato de filtro LDAP

badtakeover

Ejecuta la técnica BadSuccessor para comprometer el dominio de Active Directory explotando una vulnerabilidad en la delegación de confianza.

Cuándo usarlo: Cuando se identifica una relación de confianza explotable mediante la técnica BadSuccessor. Esta es una ruta de escalación de privilegios a nivel de dominio.

badtakeover DC01
ArgumentoRequeridoDescripción
targetObjetivo del ataque (nombre del DC o equipo)

Advertencia: Este ataque modifica objetos del directorio. Úsalo solo cuando tengas autorización explícita y comprendas el impacto.


dcsync

Replica credenciales de Active Directory simulando el comportamiento de un Domain Controller (ataque DCSync). Este comando utiliza el protocolo MS-DRSR (Directory Replication Service Remote Protocol).

Requisitos: El usuario o cuenta bajo la que se ejecuta debe tener los privilegios:

  • Replicating Directory Changes
  • Replicating Directory Changes All

Esto normalmente lo tienen los Domain Admins o cuentas a las que se les haya otorgado explícitamente estos permisos mediante ACLs.

dcsync single

Extrae los secretos (hash NTLM, claves Kerberos) de un usuario específico.

dcsync single CORP\krbtgt
dcsync single CORP\Administrator
dcsync single CORP\Administrator --dc DC01.corp.local
ArgumentoRequeridoDescripción
domain\usernameUsuario objetivo en formato DOMINIO\usuario
--dcNoHostname o IP del Domain Controller

dcsync all

Extrae los secretos de todos los usuarios del dominio.

dcsync all
dcsync all --dc DC01.corp.local
ArgumentoRequeridoDescripción
--dcNoHostname o IP del Domain Controller

Advertencia: dcsync all genera un volumen masivo de tráfico de replicación. Es extremadamente ruidoso y fácilmente detectable por sistemas de monitoreo como Microsoft Defender for Identity (MDI) o soluciones SIEM. Usa dcsync single cuando solo necesites un usuario específico.

Cuándo usarlo: DCSync es el objetivo final en la cadena de compromiso de un dominio. Una vez que tienes el hash de krbtgt, puedes crear Golden Tickets. Usa dcsync single CORP\krbtgt primero para obtener persistencia, luego extrae cuentas específicas según sea necesario.

Las credenciales extraídas se agregan automáticamente al panel de Credenciales del cliente.


ldapsearch

Ejecuta una consulta LDAP directa contra el directorio con control total sobre el filtro y los atributos retornados.

Cuándo usarlo: Para consultas LDAP personalizadas que no están cubiertas por otros comandos. Es la herramienta de nivel más bajo para consultar el directorio.

ldapsearch "(objectClass=user)" sAMAccountName,description
ldapsearch "(&(objectCategory=person)(adminCount=1))" distinguishedName
ldapsearch "(servicePrincipalName=*)" sAMAccountName,servicePrincipalName --base "DC=corp,DC=local"
ArgumentoRequeridoDescripción
filterFiltro LDAP (e.g., (objectClass=user))
attributesNoLista de atributos separados por coma
--baseNoDN base de búsqueda

ldapq computers

Consulta los objetos de tipo computadora del dominio y los registra automáticamente en el panel de Targets del cliente.

Cuándo usarlo: Al inicio de un engagement, para poblar la lista de objetivos con todos los equipos del dominio. Es la forma más rápida de obtener un inventario de máquinas para luego planificar movimiento lateral.

ldapq computers

No requiere argumentos adicionales.


readlaps

Lee las contraseñas de administrador local almacenadas por LAPS (Local Administrator Password Solution) o Windows LAPS.

Cuándo usarlo: Cuando LAPS está desplegado en el entorno. Si tienes permisos de lectura sobre el atributo ms-Mcs-AdmPwd (LAPS v1) o msLAPS-Password (Windows LAPS), puedes obtener la contraseña de administrador local en texto plano.

readlaps WORKSTATION01
readlaps SERVER-DB01
ArgumentoRequeridoDescripción
computerNombre del equipo (sAMAccountName sin el $)

Las credenciales obtenidas se extraen automáticamente al panel de Credenciales.

Nota: Los permisos de lectura de LAPS se delegan normalmente a grupos específicos (e.g., “Desktop Support”, “Server Admins”). Verifica los ACLs del atributo si no puedes leer la contraseña.


webdav

Controla el servicio WebClient (WebDAV redirector) en el equipo comprometido.

webdav enable

Inicia el servicio WebClient en la máquina objetivo.

webdav enable

Cuándo usarlo: Para habilitar ataques de coerción basados en WebDAV. Cuando WebClient está activo, se puede forzar autenticación HTTP en lugar de SMB, lo cual permite relay a servicios que no soportan SMB (como LDAP o ADCS HTTP endpoints). Es un paso previo esencial para cadenas de ataque como:

  1. PetitPotam → ADCS relay: Coerces autenticación WebDAV → relay HTTP a ADCS para solicitar certificado
  2. RBCD attack chain: Coerces autenticación → relay a LDAP para configurar delegación

webdav status

Consulta el estado actual del servicio WebClient.

webdav status

Retorna si el servicio está iniciado, detenido o deshabilitado.


Flujo de trabajo recomendado

1. ldapq computers              → Poblar panel de Targets
2. ldapsearch "(...)" ...       → Reconocimiento detallado del directorio
3. readlaps WORKSTATION01       → Intentar obtener credenciales LAPS
4. webdav enable                → Preparar para ataques de coerción
5. dcsync single CORP\krbtgt    → Objetivo final: obtener hash de krbtgt