Explotación de CVE-2024-21413 (Outlook)
Estado del proyecto: En pausa (práctica incompleta; no se logró capturar hashes NTLM)
Objetivos
Intentar explotar la vulnerabilidad CVE-2024-21413, que permite la fuga de hashes NTLM en Outlook al interactuar con enlaces maliciosos.
El objetivo de la práctica no era construir desde cero todas las herramientas utilizadas en el ataque, sino comprender a fondo su funcionamiento central y experimentar con los errores reales al montar una infraestructura propia.
He utilizado códigos de exploits y servidores SMTP/POP3 desarrollados por terceros, publicados por la comunidad, a la cual agradezco profundamente.
Contenido
- Requisitos
- Máquinas virtuales
- Instalación
- Flujo de la explotación
- Pruebas y resultados
- Lecciones aprendidas
Requisitos
- Python 3.10+
- Outlook 2016
- Kali linux
- Servidores propios SMTP/POP3
- Exploit
- Maquinas virtuales
Máquinas virtuales
Máquina víctima (Windows)
- SO: Windows 10 Home (x32)
- Outlook: Microsoft Outlook 2016 (versión 16.0.4266.1001)
- Red: Adaptador 1: NAT, Adaptador 2: Red interna
Máquina atacante (Kali)
- SO: Kali Linux 2025.1
- Herramientas y bibliotecas instaladas:
- Python 3.10+
- smtplib
- email
- socket
- threading
- os
- aiosmtpd
- servidor-smtp.py
- servidor-pop3.py
- exploit.py
- Red: Adaptador 1: NAT, Adaptador 2: Red interna
Infraestructura
- Se montaron los servidores SMTP y POP3 en la máquina atacante (Kali) manualmente usando scripts en Python.
Las máquinas fueron ejecutadas en VirtualBox.
Instalación
Instalación (Kali)
Instalación servidor SMTP
- Venv: Entorno virtual con Python 3
- Paso 1: Crear un directorio para el servidor y el entorno virtual (mkdir smtp-lab) y accede a él (cd smtp-lab)
- Paso 2: Crea un entorno virtual dentro del directorio (python3 -m venv venv)
- Paso 3: Activa el entorno virtual (source venv/bin/activate)
- Paso 4: Instalar aiosmtpd dentro del entorno virtual (pip install aiosmtpd)
- Paso 5: Crear el codigo del servidor (nano servidor-smtp.py)
- Paso 6: Ejecutar el servidor (python3 servidor-smtp.py)
Código del servidor SMTP
El código del servidor SMTP se encuentra en el archivo src/servidor-smtp.py.
Instalación servidor POP3:
- Paso 1: Crear un directorio para el servidor (mkdir pop3-server) y acceder a él (cd pop3-server)
- Paso 2: Crear el código del servidor (nano server-pop3.py)
- Paso 3: Ejecutar el servidor (python3 server-pop3.py)
Código del servidor POP3
El código del servidor POP3 se encuentra en el archivo src/servidor-pop3.py.
Instalación exploit
- Paso 1: Crear el código, este código lo he extraído de CMNatic, pero ha sido adaptado para mi infraestructura (nano exploit.py)
Código del exploit
El código del exploit se encuentra en el archivo src/exploit.py.
Instalación (Windows 10)
- Paso 1: Instalar ISO Microsoft Office 2016, yo use la página archive.org e instale la versión de Microsoft Office 2016 Professional Plus x86
- Paso 2: Una vez instalada la ISO descargar Microsoft office y acceder a Outlook 2016
- Paso 3: Configurar correctamente Outlook
Configuración de Outlook 2016
Aquí se muestra cómo configurar Outlook para que funcione con el servidor SMTP y POP3 de prueba.
- Tanto en el punto de "Incoming mail server" como "Outgoing mail server(SMTP)" se debe de poner la ip de la interfaz de red interna de la máquina atacante (Kali).
- La contraseña es irrelevante para el ataque, se puede elegir cualquiera.

Flujo de explotación
El objetivo del exploit para CVE-2024-21413 es lograr que Outlook haga una solicitud automática de tipo SMB a un recurso controlado por el atacante, lo que resulta en el envío del hash NTLM de la víctima, que puede ser capturado offline para crackeo.
Preparación del entorno
- La máquina atacante (Kali) lanza un servidor SMTP y POP3 personalizado.
- Outlook en la máquina víctima (Windows 10) está configurado para recibir correos desde ese servidor.
- La máquina atacante (Kali) levanta un servidor SMB falso (En mi caso utilicé responder)
Envío del correo malicioso
- Se envía un correo a la víctima desde el SMTP del atacante.
- El cuerpo del mensaje contiene un enlace UNC malicioso.
- La ruta está diseñada para activar una conexión SMB automática si el usuario interactúa con el enlace.
Interacción del usuario
- La víctima abre Outlook y ve el mensaje.
- Se espera que haga clic en el enlace.
- Si Outlook intenta resolver la ruta UNC, se genera una petición SMB al servidor del atacante.
- A continuación, se muestra cómo se vería el correo malicioso en Outlook desde la perspectiva de la víctima:

Captura del hash
- El servidor SMB del atacante recibe la conexión.
- Outlook, al intentar autenticar, envía automáticamente el hash NTLM del usuario.
- El atacante puede guardar ese hash para un ataque tipo hashcat.
Notas
- En mi caso, el correo llegaba correctamente a Outlook.
- Sin embargo, al hacer clic en el enlace UNC, no se generaba la conexión SMB esperada.
- Aún desconozco la causa del fallo, aunque sospecho que puede estar relacionado con la configuración de red, la versión de Outlook o un problema de accesibilidad o respuesta del servidor SMB.
Pruebas y resultados
Funcionalidades que sí funcionaron
- SMTP y POP3 configurados correctamente, Outlook sincronizó con ellos sin errores.
- El correo malicioso fue recibido por Outlook.
- El mensaje mostraba el enlace UNC sin ser bloqueado.
- El entorno SMB del atacante estaba levantado y en escucha.
Lo que no funcionó
- Al hacer clic en el enlace UNC desde Outlook, no se produjo tráfico SMB visible en Wireshark.
- No se generó ningún intento de autenticación NTLM desde la máquina víctima
- No se registraron conexiones en el servidor SMB.
Análisis con Wireshark
- Capturas tomadas en la interfaz de Kali (eth1).
- Se observó el tráfico SMTP y POP3, pero ningún paquete TCP 445 ni UDP 137/138 al hacer clic en el enlace.
- También se intentó con Outlook ejecutado como administrador: sin cambios.
Lecciones aprendidas
Conocimientos adquiridos
- Cómo funcionan SMTP y POP3 desde nivel bajo.
- Qué espera exactamente Outlook al sincronizar cuentas.
- Cómo Outlook interpreta enlaces UNC y qué condiciones deben cumplirse para que los abra automáticamente.
- El valor de Wireshark y logs como herramientas de depuración en laboratorios complejos.
Por qué decidí cerrarlo aquí
- Tras múltiples intentos, el exploit no llegó a la etapa de captura de hash, que era el objetivo final.
- Documenté toda la infraestructura, pruebas y resultados, lo cual sigue siendo valioso como laboratorio educativo.
- Aunque no se logró el objetivo final, el proceso me permitió adquirir un conocimiento profundo de cada componente técnico involucrado. Se puede retomar en el futuro.
Créditos
El código de este exploit está basado en el trabajo de CMNatic de https://github.com/CMNatic/CVE-2024-21413. He realizado modificaciones para adaptarlo a mi entorno.# CVE-2024-21413(Outlook)漏洞利用
项目状态:暂停(实践未完成;未能捕获 NTLM 哈希)
目标
尝试利用 CVE-2024-21413 漏洞,该漏洞允许在与恶意链接交互时泄漏 Outlook 中的 NTLM 哈希。
本次实践的目标并非从头构建攻击所用的所有工具,而是深入理解其核心原理,并亲身体验搭建自有基础设施时遇到的真实错误。
我使用了社区发布的第三方漏洞利用代码及 SMTP/POP3 服务器,在此深表感谢。
内容
- 要求
- 虚拟机
- 安装
- 利用流程
- 测试与结果
- 经验教训
要求
- Python 3.10+
- Outlook 2016
- Kali Linux
- 自建 SMTP/POP3 服务器
- 漏洞利用代码
- 虚拟机
虚拟机
受害者虚拟机(Windows)
- 系统:Windows 10 家庭版(x32)
- Outlook:Microsoft Outlook 2016(版本 16.0.4266.1001)
- 网络:适配器 1:NAT,适配器 2:内部网络
攻击者虚拟机(Kali)
- 系统:Kali Linux 2025.1
- 已安装的工具和库:
- Python 3.10+
- smtplib
- email
- socket
- threading
- os
- aiosmtpd
- servidor-smtp.py
- servidor-pop3.py
- exploit.py
- 网络:适配器 1:NAT,适配器 2:内部网络
基础设施
- 在攻击者虚拟机(Kali)上使用 Python 脚本手动搭建了 SMTP 和 POP3 服务器。
虚拟机在 VirtualBox 中运行。
安装
在 Kali 上安装
SMTP 服务器安装
- Venv:使用 Python 3 的虚拟环境
- 步骤 1:为服务器和虚拟环境创建目录(mkdir smtp-lab)并进入(cd smtp-lab)
- 步骤 2:在目录内创建虚拟环境(python3 -m venv venv)
- 步骤 3:激活虚拟环境(source venv/bin/activate)
- 步骤 4:在虚拟环境中安装 aiosmtpd(pip install aiosmtpd)
- 步骤 5:编写服务器代码(nano servidor-smtp.py)
- 步骤 6:运行服务器(python3 servidor-smtp.py)
SMTP 服务器代码
SMTP 服务器代码位于文件 src/servidor-smtp.py。
POP3 服务器安装:
- 步骤 1:创建服务器目录(mkdir pop3-server)并进入(cd pop3-server)
- 步骤 2:编写服务器代码(nano server-pop3.py)
- 步骤 3:运行服务器(python3 server-pop3.py)
POP3 服务器代码
POP3 服务器代码位于文件 src/servidor-pop3.py。
漏洞利用代码安装
- 步骤 1:编写代码,此代码提取自 CMNatic,但已针对我的基础设施进行了调整(nano exploit.py)
漏洞利用代码
漏洞利用代码位于文件 src/exploit.py。
在 Windows 10 上安装
- 步骤 1:安装 Microsoft Office 2016 ISO,我使用了 archive.org 页面并安装了 Microsoft Office 2016 Professional Plus x86 版本
- 步骤 2:ISO 安装完成后下载 Microsoft Office 并启动 Outlook 2016
- 步骤 3:正确配置 Outlook
Outlook 2016 配置
此处展示如何配置 Outlook 以使其与测试用的 SMTP 和 POP3 服务器协同工作。
- 在“传入邮件服务器”和“传出邮件服务器 (SMTP)”均需填写攻击者虚拟机(Kali)内部网络接口的 IP 地址。
- 密码对攻击而言无关紧要,可任意选择。

利用流程
CVE-2024-21413 漏洞利用的目标是使 Outlook 自动向攻击者控制的资源发起 SMB 请求,从而导致受害者的 NTLM 哈希被发送,攻击者可离线捕获该哈希用于破解。
环境准备
- 攻击者虚拟机(Kali)启动自定义 SMTP 和 POP3 服务器。
- 受害者虚拟机(Windows 10)上的 Outlook 配置为从该服务器接收邮件。
- 攻击者虚拟机(Kali)启动一个虚假的 SMB 服务器(本例中使用 Responder)。
发送恶意邮件
- 从攻击者的 SMTP 向受害者发送一封邮件。
- 邮件正文包含一个恶意 UNC 链接。
- 该路径旨在当用户与链接交互时触发自动 SMB 连接。
用户交互
- 受害者打开 Outlook 并查看邮件。
- 预期用户会点击该链接。
- 如果 Outlook 尝试解析 UNC 路径,则会向攻击者的服务器生成 SMB 请求。
- 以下展示从受害者视角在 Outlook 中看到的恶意邮件样式:

哈希捕获
- 攻击者的 SMB 服务器接收连接。
- Outlook 在尝试身份验证时自动发送用户的 NTLM 哈希。
- 攻击者可保存该哈希用于 hashcat 等破解工具。
备注
- 就我而言,邮件能正常到达 Outlook。
- 然而,点击 UNC 链接后并未生成预期的 SMB 连接。
- 我仍不确定失败原因,怀疑可能与网络配置、Outlook 版本或 SMB 服务器的可访问性/响应问题有关。
测试与结果
成功功能
- SMTP 和 POP3 配置正确,Outlook 成功同步,无错误。
- 恶意邮件被 Outlook 接收。
- 邮件中显示的 UNC 链接未被拦截。
- 攻击者的 SMB 环境已启动并处于监听状态。
失败之处
- 在 Outlook 中点击 UNC 链接后,Wireshark 中未观察到 SMB 流量。
- 受害者虚拟机未产生任何 NTLM 身份验证尝试。
- SMB 服务器未记录任何连接。
Wireshark 分析
- 在 Kali 的接口(eth1)上抓包。
- 观察到 SMTP 和 POP3 流量,但点击链接时没有出现 TCP 445 或 UDP 137/138 数据包。
- 也曾尝试以管理员身份运行 Outlook:结果不变。
经验教训
学到的知识
- SMTP 和 POP3 在底层的工作原理。
- Outlook 在同步账户时具体期望什么。
- Outlook 如何解释 UNC 链接以及自动打开这些链接所需满足的条件。
- Wireshark 和日志作为复杂实验室调试工具的价值。
为何决定在此停止
- 经过多次尝试,漏洞利用未能达到哈希捕获阶段,而这本是最终目标。
- 我记录了全部基础设施、测试和结果,这作为教育实验室仍然具有价值。
- 虽未达成最终目标,但此过程使我深入理解了涉及的每个技术组件。未来可以继续推进。
致谢
此漏洞利用代码基于 CMNatic 的工作 https://github.com/CMNatic/CVE-2024-21413。我对其进行了修改以适配我的环境。