Lab 10.2: Explotación de los Servicios IPC
Objetivos de Aprendizaje
Al final de este laboratorio, usted será capaz de:
- Comprender las vulnerabilidades relacionadas con los IPC de Windows
- Identificar los servicios IPC mal configurados
- Comprender los ataques tipo "Potato"
- Analizar los riesgos de suplantación de token
- Implementar defensas apropiadas
Duración Estimada
50 minutos
Prerrequisitos
- Lab 10.1 completado
- VM Windows 10/11
- Derechos de administrador
- Conocimientos básicos sobre los tokens de Windows
Contexto Profesional
Las vulnerabilidades IPC son explotadas en:
- 70% de las escaladas de privilegios en Windows
- Ataques tipo Potato (JuicyPotato, PrintSpoofer, etc.)
- Movimiento lateral en entornos Active Directory
- Malware avanzado y APT
ADVERTENCIA ÉTICA Y LEGAL
Este laboratorio es estrictamente educativo.
Las técnicas presentadas son utilizadas por:
- Pentesters durante pruebas autorizadas
- Red Teams para simulaciones de ataques
- Equipos de seguridad para comprender las amenazas
PROHIBIDO sin autorización explícita:
- En sistemas de producción
- En máquinas que no le pertenecen
- Con fines maliciosos
Parte 1: Comprender los Tokens de Windows
Paso 1.1: Tipos de tokens
Windows utiliza tokens para gestionar la identidad y los privilegios:
| Tipo | Descripción | Uso |
|---|---|---|
| Primary Token | Token principal del proceso | Identidad del proceso |
| Impersonation Token | Token temporal | Actuar en nombre de otro usuario |
Niveles de suplantación:
SecurityAnonymous: Sin información sobre el clienteSecurityIdentification: Puede identificar pero no actuarSecurityImpersonation: Puede actuar localmenteSecurityDelegation: Puede actuar en la red
Paso 1.2: Ver su token actual
# Información sobre el token actual
whoami /all
# Privilegios del token
whoami /priv
Preguntas:
- ¿Qué privilegios tiene usted?
- ¿Está presente el privilegio
SeImpersonatePrivilege?
Paso 1.3: ¿Quién tiene SeImpersonatePrivilege?
Por defecto, este privilegio se concede a:
LOCAL SERVICENETWORK SERVICEAdministrators- Servicios de Windows
# Verificar si tiene el privilegio
(whoami /priv) | Select-String "SeImpersonate"
Parte 2: Vulnerabilidad de Suplantación vía Pipes
Paso 2.1: El concepto del ataque
1. El atacante crea un named pipe con permisos débiles
2. Un proceso privilegiado (SYSTEM) se conecta al pipe
3. El atacante "suplanta" el token SYSTEM
4. El atacante ejecuta código como SYSTEM
Paso 2.2: Condiciones necesarias
Para explotar esta vulnerabilidad:
- Tener
SeImpersonatePrivilegeoSeAssignPrimaryTokenPrivilege - Poder crear un named pipe
- Poder forzar que un proceso privilegiado se conecte a él
Paso 2.3: Servicios vulnerables históricos
| Servicio | Vulnerabilidad | CVE |
|---|---|---|
| Print Spooler | SpoolFool, PrintNightmare | CVE-2021-1675 |
| BITS | Suplantación de token | Múltiples |
| WMI | Activación DCOM | Múltiples |
| MSDTC | Suplantación de token | Múltiples |
Parte 3: Familia de Ataques "Potato"
Paso 3.1: Visión general
Los ataques "Potato" explotan los IPC para la escalada de privilegios:
| Nombre | Año | Método |
|---|---|---|
| Hot Potato | 2016 | NBNS + WPAD spoofing |
| Rotten Potato | 2016 | DCOM + NTLM relay |
| Juicy Potato | 2018 | Abuso de DCOM CLSID |
| Rogue Potato | 2020 | Fake OXID resolver |
| Sweet Potato | 2020 | Combinación de técnicas |
| PrintSpoofer | 2020 | Print Spooler pipe |
| GodPotato | 2022 | Nueva técnica DCOM |
Paso 3.2: Funcionamiento general
[Servicio con SeImpersonate]
|
v
[Crea un pipe o listener]
|
v
[Fuerza a SYSTEM a conectarse vía DCOM/Spooler/etc.]
|
v
[Captura el token SYSTEM]
|
v
[Ejecuta comando como SYSTEM]
Paso 3.3: PrintSpoofer - Ejemplo conceptual
PrintSpoofer explota el servicio Print Spooler:
- El spooler tiene una funcionalidad que se conecta a pipes
- Se crea un pipe con un nombre específico
- Se desencadena la conexión del spooler
- Se suplanta el token SYSTEM del spooler
Nota: No ejecutamos el exploit, solo comprendemos el mecanismo.
Parte 4: Detección de Ataques IPC
Paso 4.1: Indicadores de compromiso (IOC)
Pipes sospechosos:
# Buscar pipes con nombres inusuales
Get-ChildItem \\.\pipe\ | Where-Object {
$_.Name -match "(spoof|potato|pipe[0-9]|test)"
}
Procesos sospechosos:
# Procesos con SeImpersonatePrivilege que no deberían tenerlo
Get-Process | ForEach-Object {
$proc = $_
try {
$token = [System.Security.Principal.WindowsIdentity]::GetCurrent()
# Análisis de privilegios...
} catch {}
}
Paso 4.2: Eventos Sysmon
# Event ID 17: Pipe Created
Get-WinEvent -FilterHashtable @{
LogName = 'Microsoft-Windows-Sysmon/Operational'
ID = 17
} -MaxEvents 50 | Where-Object {
$_.Message -match "(spoof|potato)"
} | Format-Table TimeCreated, Message -Wrap
# Event ID 18: Pipe Connected
Get-WinEvent -FilterHashtable @{
LogName = 'Microsoft-Windows-Sysmon/Operational'
ID = 18
} -MaxEvents 50 | Format-Table TimeCreated, Message -Wrap
Paso 4.3: Eventos Security Log
# Event ID 4688: Creación de proceso con suplantación
Get-WinEvent -FilterHashtable @{
LogName = 'Security'
ID = 4688
} -MaxEvents 100 | Where-Object {
$_.Message -match "Impersonation"
}
Preguntas: 3. ¿Qué eventos ha encontrado? 4. ¿Cómo detectaría usted un ataque Potato?
Parte 5: Defensas y Endurecimiento
Paso 5.1: Reducir la superficie de ataque
Desactivar los servicios no necesarios:
# Verificar el estado del Print Spooler
Get-Service Spooler
# Desactivar si no es necesario (¡ATENCIÓN en producción!)
# Stop-Service Spooler
# Set-Service Spooler -StartupType Disabled
Paso 5.2: Restringir SeImpersonatePrivilege
A través de la Política de Seguridad Local:
secpol.msc- Políticas Locales > Asignación de derechos de usuario
- "Impersonate a client after authentication"
- Retirar los grupos no necesarios
Paso 5.3: Activar las protecciones
Windows Defender Credential Guard:
# Verificar si Credential Guard está activo
Get-CimInstance -ClassName Win32_DeviceGuard -Namespace root\Microsoft\Windows\DeviceGuard
Protección LSA:
# Verificar LSA Protection
Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" -Name "RunAsPPL"
Paso 5.4: Script de verificación de seguridad
# Script de verificación de la configuración IPC
Write-Host "=== VERIFICACIÓN DE SEGURIDAD IPC ===" -ForegroundColor Cyan
# 1. Print Spooler
$spooler = Get-Service Spooler -ErrorAction SilentlyContinue
if ($spooler.Status -eq "Running") {
Write-Host "[!] Print Spooler está activo" -ForegroundColor Yellow
} else {
Write-Host "[OK] Print Spooler está inactivo" -ForegroundColor Green
}
# 2. Pipes inusuales
$suspectPipes = Get-ChildItem \\.\pipe\ | Where-Object {
$_.Name -match "(spoof|potato|test[0-9])"
}
if ($suspectPipes) {
Write-Host "[!] Pipes sospechosos detectados:" -ForegroundColor Red
$suspectPipes | ForEach-Object { Write-Host " $_" }
} else {
Write-Host "[OK] No hay pipes sospechosos" -ForegroundColor Green
}
# 3. SeImpersonatePrivilege
if ((whoami /priv) -match "SeImpersonate.*Enabled") {
Write-Host "[INFO] SeImpersonatePrivilege está activo" -ForegroundColor Yellow
}
Write-Host "`n=== FIN DE LA VERIFICACIÓN ===" -ForegroundColor Cyan
Preguntas: 5. ¿Su sistema es vulnerable a los ataques Potato? 6. ¿Qué medidas implementaría usted?
Parte 6: Ejercicio Práctico
Paso 6.1: Auditoría completa
Realice una auditoría de su VM:
- Liste todos los servicios con SeImpersonatePrivilege
- Identifique los pipes activos y su propietario
- Verifique el estado de los servicios de riesgo (Spooler, BITS, etc.)
- Analice los logs para conexiones sospechosas a pipes
Paso 6.2: Informe de auditoría
Cree un informe que incluya:
- Estado actual de la seguridad IPC
- Riesgos identificados
- Recomendaciones de remediación
Entregables
-
Informe de auditoría (2-3 páginas):
- Inventario de servicios de riesgo
- Análisis de privilegios
- Recomendaciones
-
Capturas de pantalla:
- whoami /priv
- Lista de pipes
- Script de verificación ejecutado
-
Respuestas a las 6 preguntas
Criterios de Evaluación
| Criterio | Puntos |
|---|---|
| Comprensión de los tokens | 20% |
| Análisis de los ataques Potato | 25% |
| Detección implementada | 25% |
| Recomendaciones de seguridad | 30% |
Comandos de Referencia
# Privilegios
whoami /priv
whoami /all
# Servicios
Get-Service Spooler, BITS, WMI
# Pipes
Get-ChildItem \\.\pipe\
# Eventos
Get-WinEvent -FilterHashtable @{LogName='Security';ID=4688}
Get-WinEvent -FilterHashtable @{LogName='Microsoft-Windows-Sysmon/Operational';ID=17,18}
# Configuración
Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa"
Recursos Adicionales
Laboratorio desarrollado en el marco del curso Sistemas Operativos - MÓDULO 10