
Prueba de concepto educativa para la vulnerabilidad CVE-2022-30190 (Follina).
Desarrollo, Explotación, Análisis y Mitigación de Malware con Fines Educativos
Una prueba de concepto totalmente documentada que demuestra la vulnerabilidad Follina: desde la entrega mediante ingeniería social hasta la explotación, el análisis forense y el desarrollo del parche.
⚠️ Solo con fines educativos. Todas las actividades de este repositorio se llevaron a cabo exclusivamente en un entorno de laboratorio aislado con máquinas virtuales, como parte del módulo IE4012 Offensive Hacking Tactics & Strategies de SLIIT. Nada de lo aquí contenido debe usarse fuera de un laboratorio controlado. No pruebe contra sistemas o redes reales.
CVE-2022-30190, apodada Follina, es una vulnerabilidad de ejecución remota de código en la herramienta de diagnóstico y soporte de Microsoft (MSDT). Fue divulgada públicamente el 30 de mayo de 2022 y se le asignó una puntuación CVSS de 7.8 (Alta). El exploit se activa cuando una víctima abre un documento de Microsoft Office especialmente manipulado: no se requieren macros. El documento obtiene una carga útil HTML de un servidor HTTP controlado por el atacante, que invoca el manejador de protocolo URI ms-msdt: y pasa comandos arbitrarios al sistema mediante el argumento PCWDiagnostic.
SourceCode.zip/
├── PoC.py # Script principal del exploit
├── patch.py # Script del parche de mitigación
├── Invoice_FS-2026-8821_OVERDUE.docx # Documento de Word malicioso generado
└── doc/ # Archivos XML internos extraídos del docx
├── word/
│ ├── document.xml # Cuerpo principal del documento
│ └── _rels/
│ └── document.xml.rels # Referencia OLE externa que apunta al servidor del atacante
└── [Content_Types].xml
El señuelo es un correo de phishing que suplanta a una plataforma de facturación llamada FinanceSync y afirma que una factura está vencida. El adjunto es un archivo zip protegido con contraseña (Invoice.zip) que contiene el documento de Word malicioso. El uso de un archivo cifrado evita la mayoría de los escáneres de puerta de enlace de correo, ya que el contenido no puede inspeccionarse.
Invoice_FS-2026-8821_OVERDUE.docx e inicia un servidor HTTP en el puerto 8000word/_rels/document.xml.rels que apunta a http://<attacker_ip>:8000/index.html2026-03-25). Si la condición de fecha no se cumple, no se ejecuta nadams-msdt: con un argumento PCWDiagnostic que contiene un comando de cmd.exeWINWORD.EXE → msdt.exe → cmd.exe se ejecuta y escribe sys_cache.dat en C:\Users\Public\ como prueba de compromisopatch.py elimina el manejador de protocolo URI ms-msdt del registro de Windows, rompiendo la cadena de explotación en la etapa de resolución de la URI, antes de que ningún argumento controlado por el atacante pueda llegar a MSDT.
Máquina atacante (Kali Linux)
Máquina víctima (Windows 10)
ms-msdt presente en HKEY_CLASSES_ROOT2026-03-25 o posterior# En la máquina atacante
python3 PoC.py
El script genera el documento de Word e inicia el servidor HTTP. Transfiera el documento a la VM víctima y ábralo. La terminal del atacante registrará la solicitud entrante de Word.
El script del parche debe ejecutarse como Administrador en la VM víctima con Windows.
# Comprobar el estado actual
python patch.py --status
# Aplicar el parche (elimina la clave de registro ms-msdt)
python patch.py --apply
# Revertir al estado vulnerable (para volver a probar)
python patch.py --rollback
| Máquina | Función | Dirección IP |
|---|---|---|
| VM Kali Linux | Atacante: ejecuta PoC.py | 192.168.56.10 |
| VM Windows 10 | Víctima: abre el documento | 192.168.56.20 |
Ambas VM estaban conectadas mediante una red solo-anfitrión de VirtualBox sin acceso a internet.
| Campo | Detalle |
|---|
| ID de CVE | CVE-2022-30190 |
| Nombre común | Follina |
| Puntuación CVSS | 7.8 (Alta) |
| Vector CVSS | AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H |
| Componente | Herramienta de diagnóstico y soporte de Microsoft (MSDT) |
| Versiones afectadas | Windows 7 - 11 / Server 2008 R2 - 2022 |
| Divulgada | 30 de mayo de 2022 |
| Parche oficial | KB5014697 (Patch Tuesday de junio de 2022) |
| Prueba | Antes del parche | Después del parche |
|---|
| Clave de registro ms-msdt presente | Sí (VULNERABLE) | No (MITIGADO) |
| Solicitud HTTP realizada por Word | Sí | Sí (sin cambios) |
| msdt.exe iniciado | Sí | No |
| cmd.exe iniciado | Sí | No |
| sys_cache.dat creado | Sí | No |
| Exploit exitoso | Sí | No |