Saltar al contenido principal

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

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:

TipoDescripciónUso
Primary TokenToken principal del procesoIdentidad del proceso
Impersonation TokenToken temporalActuar en nombre de otro usuario

Niveles de suplantación:

  • SecurityAnonymous: Sin información sobre el cliente
  • SecurityIdentification: Puede identificar pero no actuar
  • SecurityImpersonation: Puede actuar localmente
  • SecurityDelegation: 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:

  1. ¿Qué privilegios tiene usted?
  2. ¿Está presente el privilegio SeImpersonatePrivilege?

Paso 1.3: ¿Quién tiene SeImpersonatePrivilege?​

Por defecto, este privilegio se concede a:

  • LOCAL SERVICE
  • NETWORK SERVICE
  • Administrators
  • 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 SeImpersonatePrivilege o SeAssignPrimaryTokenPrivilege
  • Poder crear un named pipe
  • Poder forzar que un proceso privilegiado se conecte a él

Paso 2.3: Servicios vulnerables históricos​

ServicioVulnerabilidadCVE
Print SpoolerSpoolFool, PrintNightmareCVE-2021-1675
BITSSuplantación de tokenMúltiples
WMIActivación DCOMMúltiples
MSDTCSuplantación de tokenMúltiples

Parte 3: Familia de Ataques "Potato"​

Paso 3.1: Visión general​

Los ataques "Potato" explotan los IPC para la escalada de privilegios:

NombreAñoMétodo
Hot Potato2016NBNS + WPAD spoofing
Rotten Potato2016DCOM + NTLM relay
Juicy Potato2018Abuso de DCOM CLSID
Rogue Potato2020Fake OXID resolver
Sweet Potato2020Combinación de técnicas
PrintSpoofer2020Print Spooler pipe
GodPotato2022Nueva 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:

  1. El spooler tiene una funcionalidad que se conecta a pipes
  2. Se crea un pipe con un nombre específico
  3. Se desencadena la conexión del spooler
  4. 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:

  1. secpol.msc
  2. Políticas Locales > Asignación de derechos de usuario
  3. "Impersonate a client after authentication"
  4. 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:

  1. Liste todos los servicios con SeImpersonatePrivilege
  2. Identifique los pipes activos y su propietario
  3. Verifique el estado de los servicios de riesgo (Spooler, BITS, etc.)
  4. 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​

  1. Informe de auditoría (2-3 páginas):

    • Inventario de servicios de riesgo
    • Análisis de privilegios
    • Recomendaciones
  2. Capturas de pantalla:

    • whoami /priv
    • Lista de pipes
    • Script de verificación ejecutado
  3. Respuestas a las 6 preguntas


Criterios de Evaluación​

CriterioPuntos
Comprensión de los tokens20%
Análisis de los ataques Potato25%
Detección implementada25%
Recomendaciones de seguridad30%

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