Skip to content

Active Directory LDAP — Getting Started

¿Por qué enumerar AD?

AD es esencialmente una base de datos grande accesible para todos los usuarios del dominio sin importar su nivel de privilegio. Una cuenta básica sin privilegios adicionales puede enumerar la mayoría de objetos en AD, lo que lo convierte en una fuente enorme de información para un atacante.

Los cambios constantes en entornos corporativos (nuevos empleados, software, GPOs) introducen configuraciones incorrectas que pueden pasar desapercibidas por años. La enumeración es el proceso de encontrar esas fallas antes de intentar explotarlas.


Qué recolectar al obtener un foothold en AD

Esta es la lista base de información que debes obtener apenas tengas acceso a un entorno AD, ya que informará todos los ataques posteriores:

Domain functional level, porque determina qué características de Kerberos y seguridad están disponibles en el dominio.

Password policy, para saber los límites antes de hacer password spraying sin bloquear cuentas.

Inventario completo de usuarios de AD, para identificar cuentas privilegiadas, cuentas de servicio con SPNs, y cuentas con configuraciones débiles como PASSWD_NOTREQD o DONT_REQ_PREAUTH.

Inventario completo de computadoras de AD, para mapear la superficie de ataque y encontrar hosts con configuraciones interesantes como Unconstrained Delegation.

Inventario completo de grupos y membresías, para identificar quién tiene privilegios elevados y si algún grupo tiene miembros inesperados.

Domain trust relationships, para descubrir rutas de ataque hacia otros dominios o bosques como se vio en secciones anteriores.

Object ACLs, para identificar permisos mal configurados sobre objetos de AD que permitan escalar privilegios.

GPO information, para encontrar GPOs con contraseñas, configuraciones débiles, o GPOs sobre las que tenemos control de escritura.

Remote access rights, para identificar si el usuario actual o grupos como Domain Users tienen RDP o acceso de administrador local en algún host, lo que es común en entornos grandes por mal uso de jump hosts o configuraciones incorrectas de Citrix RDS.


Qué verificar sobre tu usuario actual

Una vez dentro del dominio, antes de enumerar todo el entorno, vale revisar qué tienes disponible directamente:

¿El usuario actual o el grupo Domain Users tiene RDP o acceso de administrador local en algún host? ¿El usuario es miembro de algún grupo privilegiado? ¿Tiene derechos especiales delegados? ¿Tiene control sobre algún otro objeto de AD como un usuario, computadora o GPO?


Estructura de AD (referencia rápida)

Forest es el límite de seguridad superior. Todo lo que está dentro comparte administración.

Domain es la estructura que contiene los objetos (usuarios, computadoras, grupos). Dentro de un forest puede haber múltiples dominios.

Organizational Units (OUs) son contenedores dentro de un dominio que agrupan objetos y permiten aplicar GPOs de forma granular.

Objects son la unidad más básica de datos en AD. Un usuario, una computadora, un grupo son todos objetos.

Rights and Privileges in AD

Grupos privilegiados de alto valor

Estos son los grupos más importantes a buscar durante la enumeración porque sus miembros tienen acceso que puede llevar a comprometer el dominio.

Default Administrators agrupa a Domain Admins y Enterprise Admins. Control total del dominio y el bosque.

Server Operators puede modificar servicios, acceder a shares SMB y hacer backup de archivos en DCs.

Backup Operators puede iniciar sesión localmente en DCs, hacer shadow copies de la SAM y la base de datos NTDS, leer el registro remotamente y acceder al sistema de archivos del DC via SMB. Deben tratarse como Domain Admins efectivos.

Print Operators puede iniciar sesión localmente en DCs y engañar a Windows para cargar un driver malicioso.

Hyper-V Administrators debe tratarse como Domain Admins si existen DCs virtualizados, ya que tiene control sobre las VMs que los alojan.

Account Operators puede modificar cuentas y grupos no protegidos en el dominio.

Remote Desktop Users normalmente no tiene permisos útiles por defecto pero frecuentemente se le otorga acceso RDP adicional, permitiendo movimiento lateral.

Remote Management Users puede iniciar sesión en DCs via PSRemoting. A veces se agrega al grupo local de remote management en hosts que no son DCs.

Group Policy Creator Owners puede crear nuevas GPOs pero necesita permisos adicionales delegados para vincularlas a contenedores.

Schema Admins puede modificar el esquema de AD y hacer backdoor a futuros objetos agregando una cuenta comprometida al ACL por defecto de objetos nuevos.

DNS Admins puede cargar una DLL en un DC pero no tiene permisos para reiniciar el servicio DNS directamente. Se puede usar para persistencia cargando una DLL maliciosa y esperando un reinicio. Una forma más confiable de abusar de este grupo es crear un registro WPAD malicioso.


Verificar privilegios del usuario actual

c
whoami /priv

Los privilegios clave que indican posibilidades de escalada o acceso elevado son los siguientes.

SeDebugPrivilege permite interactuar con procesos de otros usuarios, incluyendo LSASS. Necesario para que Mimikatz funcione correctamente.

SeImpersonatePrivilege permite impersonar a otro usuario después de autenticación. Base para ataques tipo Potato (JuicyPotato, PrintSpoofer, GodPotato).

SeBackupPrivilege permite leer cualquier archivo del sistema ignorando los permisos. Se puede usar para copiar la SAM, SYSTEM y NTDS.dit directamente.

SeRestorePrivilege permite escribir en cualquier archivo del sistema. Puede usarse para reemplazar binarios del sistema.

SeTakeOwnershipPrivilege permite tomar propiedad de objetos del sistema sin tener acceso explícito.

SeLoadDriverPrivilege permite cargar y descargar drivers del kernel. Puede usarse para cargar drivers maliciosos.

Importante: algunos privilegios solo aparecen en su lista completa cuando la consola está elevada. En una consola sin elevar, un admin local verá muy pocos privilegios aunque los tenga disponibles. Siempre comparar el output de whoami /priv en sesión normal vs elevada.


Enumerar miembros de grupos privilegiados

  • Listar todos los grupos:
c
Get-ADGroup -Filter * | Select-Object Name, GroupCategory, GroupScope, DistinguishedName
--
Get-ADGroup -Identity "Help Desk" -Properties Members, DistinguishedName |  Select-Object DistinguishedName, @{Name="Members";Expression={$_.Members -join "`n"}}
  • Listar grupos con PowerView
c
# Listar todos los grupos del dominio
Get-DomainGroup | Select-Object Name, GroupCategory, GroupScope

# Con más detalles
Get-DomainGroup -Properties Name, GroupCategory, GroupScope, Members

Get-DomainGroup -Identity "Help Desk" -Properties Members, DistinguishedName | Select-Object DistinguishedName, @{Name="Members";Expression={$_.Members -join "`n"}}

Get-DomainGroup -Identity "Help Desk"
c
Get-ADGroup -Identity "Schema Admins" -Properties *

Devuelve toda la información del grupo incluyendo sus miembros actuales. Reemplaza Schema Admins por cualquier grupo de la lista anterior para auditarlos todos.

c
Get-ADGroupMember -Identity "Backup Operators"

Lista solo los miembros del grupo de forma más limpia.

c
Get-ADGroupMember -Identity "DNS Admins"

Es común encontrar usuarios de bajo perfil en grupos como DNS Admins o Backup Operators que pasaron desapercibidos durante años y representan una ruta directa a comprometer el DC.


Nota sobre UAC

UAC restringe los privilegios disponibles en sesiones no elevadas aunque el usuario sea administrador local. Un usuario en el grupo Backup Operators mostrará muy pocos privilegios en una consola normal, pero al elevar la consola aparecerán SeBackupPrivilege y SeRestorePrivilege completos. Siempre intentar elevar antes de concluir que un usuario no tiene privilegios útiles.

Microsoft Remote Server Administration Tools (RSAT)

¿Qué es RSAT?

Conjunto de herramientas que permite administrar roles y features de Windows Server remotamente desde una workstation. Solo se puede instalar en ediciones Professional o Enterprise de Windows. Lo más útil desde el punto de vista ofensivo es el módulo de PowerShell para Active Directory que viene incluido.


Comandos de instalación

Ver qué herramientas RSAT están instaladas

c
Get-WindowsCapability -Name RSAT* -Online | Select-Object -Property Name, State

Instalar todas las herramientas RSAT disponibles

c
Get-WindowsCapability -Name RSAT* -Online | Add-WindowsCapability -Online

Instalar solo una herramienta específica

c
Add-WindowsCapability -Name Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0 -Online

Cambiar contexto de usuario para enumerar

Muchas herramientas de RSAT toman el contexto del usuario actual de la sesión de Windows. Si tienes credenciales de otro usuario (contraseña o hash) puedes cambiar el contexto de las siguientes formas:

Abrir PowerShell en contexto de otro usuario con runas

c
runas /netonly /user:htb.local\jackie.may powershell

El flag /netonly hace que las credenciales solo se usen para autenticación de red, no localmente. Útil cuando estás en un host que no es parte del dominio pero puedes alcanzar el DC por red.

Abrir MMC en contexto de un usuario de dominio desde un host no unido al dominio

c
runas /netonly /user:Domain_Name\Domain_USER mmc

Desde el MMC puedes agregar los snap-ins de RSAT (Active Directory Users and Computers, ADSI Edit, etc.) y luego hacer clic derecho en el snap-in y elegir Change Domain para apuntar al dominio objetivo.

Pass-the-Hash con Rubeus para obtener un TGT

c
rubeus.exe asktgt /user:jackie.may /domain:htb.local /dc:10.10.110.100 /rc4:ad11e823e1638def97afa7cb08156a94

Pass-the-Hash con Mimikatz

c
mimikatz.exe sekurlsa::pth /domain:htb.local /user:jackie.may /rc4:ad11e823e1638def97afa7cb08156a94

Cuándo usar RSAT vs otras herramientas

RSAT es útil cuando estás en un host unido al dominio o cuando tienes acceso a una workstation del cliente durante un assessment interno. Las herramientas gráficas como ADUC y ADSI Edit son fáciles de usar pero ineficientes para dominios grandes. Para enumeración a escala se usa el módulo de PowerShell para AD o herramientas como PowerView y BloodHound.

The Power of NT AUTHORITY\SYSTEM

¿Por qué es tan valioso?

La cuenta NT AUTHORITY\SYSTEM es la cuenta de mayor privilegio en un sistema Windows, por encima incluso del administrador local. Tiene SeDebugPrivilege y SeImpersonatePrivilege habilitados por defecto, entre otros.

En un host unido al dominio, SYSTEM puede enumerar AD impersonando la cuenta de computadora del host, que es esencialmente una cuenta de usuario especial en el dominio. Esto significa que tener SYSTEM en un host del dominio es casi equivalente a tener una cuenta de usuario de dominio válida.

La única limitación real es que no puedes realizar ataques Kerberos cross-trust como Kerberoasting contra otros dominios.


Formas de obtener SYSTEM

Exploits remotos de Windows como EternalBlue o BlueKeep.

Abusar de un servicio que corre en el contexto de SYSTEM.

Abusar de SeImpersonatePrivilege con:

Vulnerabilidades locales de escalada de privilegios en Windows como el Windows 10 Task Scheduler 0day.

PsExec con el flag -s:

c
PsExec.exe -s cmd.exe

Qué puedes hacer con SYSTEM en un host del dominio

Enumerar el dominio completo con BloodHound, PowerView o SharpView obteniendo usuarios, grupos, acceso de administrador local, trusts, ACLs y propiedades de objetos.

Realizar ataques de Kerberoasting y ASREPRoasting contra cuentas del dominio.

Correr herramientas como Inveigh para capturar hashes Net-NTLM-v2 o realizar relay attacks.

Realizar token impersonation para secuestrar la sesión de un usuario de dominio privilegiado que esté autenticado en el host.

Ejecutar ataques de ACL contra objetos del dominio.