Saltearse al contenido

Enumeración de Windows

Tras conseguir ejecución en un host Windows (shell, sesión de usuario), el primer trabajo no es escalar: es entender dónde estás. Quién eres, qué privilegios tienes, qué corre en la máquina, a qué red llegas y si el host está unido a un dominio. Una enumeración ordenada evita disparos a ciegas y suele revelar el camino de escalada antes de tocar ningún exploit.

El atacante parte de un acceso de bajo privilegio y quiere convertirlo en SYSTEM local o en un pivote hacia el dominio. Casi toda la información que necesita está disponible sin privilegios: el propio Windows es locuaz. El defensor, por su parte, ve esta fase como ruido de comandos de reconocimiento (whoami, net, systeminfo) que, correlados, delatan a un intruso en fase post-explotación.

El objetivo es responder, en orden: ¿quién soy y qué puedo? → ¿qué hay de explotable local? → ¿estoy en dominio y qué alcanzo?

whoami /all # usuario, grupos, y PRIVILEGIOS (clave para privesc)
whoami /priv # SeImpersonate, SeBackup, SeDebug... = vías directas
echo %USERNAME% & echo %USERDOMAIN%
net user %USERNAME% # grupos locales del usuario
net localgroup administrators

whoami /priv es la primera parada: SeImpersonatePrivilege → Potato; SeBackupPrivilege → leer SAM/NTDS; SeDebugPrivilege → volcar LSASS.

systeminfo # versión, build, hotfixes (para exploits de kernel)
wmic qfe get HotFixID # parches instalados
[System.Environment]::OSVersion.Version # PowerShell

Cruza build + hotfixes con Watson/wesng para kernel exploits conocidos (PrintNightmare, etc.).

wmic product get name,version # software instalado (lento)
tasklist /v # procesos y usuario que los corre
sc query # servicios
wmic service get name,pathname,startmode,startname # rutas y cuenta de servicio
netstat -ano # puertos y PIDs (servicios internos)

Busca servicios corriendo como SYSTEM con binarios/rutas débiles (ver Escalada de privilegios en Windows: unquoted paths, permisos).

ipconfig /all
route print
arp -a # hosts vistos en la LAN
netstat -ano -p tcp
nslookup -type=srv _ldap._tcp.dc._msdcs.<dominio> # localizar DCs
systeminfo | findstr /i domain
net config workstation
nltest /dsgetdc:<dominio>
echo %LOGONSERVER% # DC que autenticó

Si hay dominio, la enumeración salta a AD (ver Enumeración de Active Directory).

# ficheros de despliegue y configs con secretos
findstr /si password *.xml *.ini *.txt *.config
dir /s /b *unattend* *sysprep* web.config
# credenciales guardadas
cmdkey /list
reg query HKLM /f password /t REG_SZ /s
# autologon, VNC, PuTTY en registro
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"
  • winPEAS — el enumerador todo-en-uno de referencia (privesc + credenciales + configs).
  • Seatbelt — recolección exhaustiva orientada a host (C#).
  • PowerUp (Invoke-AllChecks) — vectores de privesc en PowerShell.
  • JAWS, Watson/wesng — enum básica y mapeo de kernel exploits.
  • Snaffler — barrido de shares en busca de secretos.

La enumeración no explota, pero selecciona el exploit: de aquí sale el vector de privesc local y la decisión de pivotar al dominio. Omitirla lleva a quemar exploits ruidosos sin necesidad.

  • Ráfagas de whoami /all, net user/group, systeminfo, wmic, nltest desde una cuenta de usuario normal → patrón de recon post-explotación.
  • Ejecución de winPEAS/Seatbelt (hashes y comportamiento conocidos; picos de lecturas de registro/FS).
  • Lecturas masivas del registro buscando “password”.
  • Sysmon (event 1 process create, 10 process access, 11 file create) + línea de comandos.
  • Auditoría de PowerShell: Script Block Logging (4104), Module Logging (4103), transcription.
  • Logs de proceso 4688 con command line habilitado.
  • Reduce la locuacidad: quita herramientas innecesarias, limita wmic/cscript, aplica AppLocker/WDAC.
  • Elimina credenciales en claro en configs, GPP, scripts de despliegue; usa gMSA/LAPS.
  • Principio de mínimo privilegio: que whoami /priv de un usuario normal no tenga nada jugoso.
  • EDR que alerte sobre cadenas de recon y ejecución de enumeradores conocidos.

Aísla el host, identifica la cuenta comprometida, rota sus credenciales y revisa qué se enumeró (shares, DCs, secretos encontrados) para anticipar el siguiente paso del atacante.

  • La enumeración en sí no es un CVE, pero habilita la elección de exploits de kernel como PrintNightmare (CVE-2021-34527), CVE-2021-1675, HiveNightmare/SeriousSAM (CVE-2021-36934).
  • winPEAS/Seatbelt/PowerUp son estándar en informes de pentest y en TTPs de actores reales (MITRE ATT&CK T1082, T1087, T1057).
  • Innumerables brechas empezaron por credenciales en claro en unattend.xml/GPP (cpassword, MS14-025).
  • whoami /all y whoami /priv — ¿privilegios peligrosos (SeImpersonate/Backup/Debug)?
  • systeminfo + hotfixes — ¿build sin parchear mapeable a kernel exploit?
  • Servicios/procesos como SYSTEM con rutas o permisos débiles
  • ¿Credenciales en configs, registro, cmdkey, autologon?
  • ¿Host unido a dominio? ¿DCs localizados?
  • Puertos internos y servicios no expuestos (netstat -ano)
  • Shares accesibles con secretos (Snaffler)
  • ¿winPEAS marca algún vector obvio?