Exploração de CVE-2024-21413 (Outlook)
Estado do projeto: Em pausa (prática incompleta; não foi possível capturar hashes NTLM)
Objetivos
Tentar explorar a vulnerabilidade CVE-2024-21413, que permite o vazamento de hashes NTLM no Outlook ao interagir com links maliciosos.
O objetivo da prática não era construir do zero todas as ferramentas utilizadas no ataque, mas sim compreender a fundo seu funcionamento central e experimentar os erros reais ao montar uma infraestrutura própria.
Utilizei códigos de exploits e servidores SMTP/POP3 desenvolvidos por terceiros, publicados pela comunidade, à qual agradeço profundamente.
Conteúdo
- Requisitos
- Máquinas virtuais
- Instalação
- Fluxo da exploração
- Testes e resultados
- Lições aprendidas
Requisitos
- Python 3.10+
- Outlook 2016
- Kali linux
- Servidores próprios SMTP/POP3
- Exploit
- Máquinas virtuais
Máquinas virtuais
Máquina vítima (Windows)
- SO: Windows 10 Home (x32)
- Outlook: Microsoft Outlook 2016 (versão 16.0.4266.1001)
- Rede: Adaptador 1: NAT, Adaptador 2: Rede interna
Máquina atacante (Kali)
- SO: Kali Linux 2025.1
- Ferramentas e bibliotecas instaladas:
- Python 3.10+
- smtplib
- email
- socket
- threading
- os
- aiosmtpd
- servidor-smtp.py
- servidor-pop3.py
- exploit.py
- Rede: Adaptador 1: NAT, Adaptador 2: Rede interna
Infraestrutura
- Os servidores SMTP e POP3 foram montados na máquina atacante (Kali) manualmente usando scripts em Python.
As máquinas foram executadas no VirtualBox.
Instalação
Instalação (Kali)
Instalação do servidor SMTP
- Venv: Ambiente virtual com Python 3
- Passo 1: Criar um diretório para o servidor e o ambiente virtual (mkdir smtp-lab) e acessá-lo (cd smtp-lab)
- Passo 2: Criar um ambiente virtual dentro do diretório (python3 -m venv venv)
- Passo 3: Ativar o ambiente virtual (source venv/bin/activate)
- Passo 4: Instalar aiosmtpd dentro do ambiente virtual (pip install aiosmtpd)
- Passo 5: Criar o código do servidor (nano servidor-smtp.py)
- Passo 6: Executar o servidor (python3 servidor-smtp.py)
Código do servidor SMTP
O código do servidor SMTP está no arquivo src/servidor-smtp.py.
Instalação do servidor POP3:
- Passo 1: Criar um diretório para o servidor (mkdir pop3-server) e acessá-lo (cd pop3-server)
- Passo 2: Criar o código do servidor (nano server-pop3.py)
- Passo 3: Executar o servidor (python3 server-pop3.py)
Código do servidor POP3
O código do servidor POP3 está no arquivo src/servidor-pop3.py.
Instalação do exploit
- Passo 1: Criar o código; este código foi extraído de CMNatic, mas foi adaptado para minha infraestrutura (nano exploit.py)
Código do exploit
O código do exploit está no arquivo src/exploit.py.
Instalação (Windows 10)
- Passo 1: Instalar a ISO do Microsoft Office 2016; eu usei o site archive.org e instalei a versão do Microsoft Office 2016 Professional Plus x86
- Passo 2: Após instalar a ISO, baixar o Microsoft Office e acessar o Outlook 2016
- Passo 3: Configurar corretamente o Outlook
Configuração do Outlook 2016
Aqui é mostrado como configurar o Outlook para funcionar com o servidor SMTP e POP3 de teste.
- Tanto no campo "Incoming mail server" quanto em "Outgoing mail server(SMTP)" deve-se colocar o IP da interface de rede interna da máquina atacante (Kali).
- A senha é irrelevante para o ataque; pode-se escolher qualquer uma.

Fluxo da exploração
O objetivo do exploit para CVE-2024-21413 é fazer com que o Outlook faça uma solicitação automática do tipo SMB a um recurso controlado pelo atacante, resultando no envio do hash NTLM da vítima, que pode ser capturado offline para crackeamento.
Preparação do ambiente
- A máquina atacante (Kali) executa um servidor SMTP e POP3 personalizado.
- O Outlook na máquina vítima (Windows 10) está configurado para receber e-mails desse servidor.
- A máquina atacante (Kali) sobe um servidor SMB falso (No meu caso, utilizei responder)
Envio do e-mail malicioso
- Envia-se um e-mail para a vítima a partir do SMTP do atacante.
- O corpo da mensagem contém um link UNC malicioso.
- O caminho está projetado para ativar uma conexão SMB automática se o usuário interagir com o link.
Interação do usuário
- A vítima abre o Outlook e vê a mensagem.
- Espera-se que ela clique no link.
- Se o Outlook tentar resolver o caminho UNC, é gerada uma requisição SMB para o servidor do atacante.
- A seguir, é mostrado como o e-mail malicioso ficaria no Outlook sob a perspectiva da vítima:

Captura do hash
- O servidor SMB do atacante recebe a conexão.
- O Outlook, ao tentar autenticar, envia automaticamente o hash NTLM do usuário.
- O atacante pode salvar esse hash para um ataque do tipo hashcat.
Notas
- No meu caso, o e-mail chegava corretamente ao Outlook.
- No entanto, ao clicar no link UNC, a conexão SMB esperada não era gerada.
- Ainda desconheço a causa da falha, embora suspeite que possa estar relacionada à configuração de rede, à versão do Outlook ou a um problema de acessibilidade ou resposta do servidor SMB.
Testes e resultados
Funcionalidades que funcionaram
- SMTP e POP3 configurados corretamente; o Outlook sincronizou com eles sem erros.
- O e-mail malicioso foi recebido pelo Outlook.
- A mensagem mostrava o link UNC sem que ele fosse bloqueado.
- O ambiente SMB do atacante estava ativo e em escuta.
O que não funcionou
- Ao clicar no link UNC pelo Outlook, não houve tráfego SMB visível no Wireshark.
- Nenhuma tentativa de autenticação NTLM foi gerada a partir da máquina vítima.
- Nenhuma conexão foi registrada no servidor SMB.
- Capturas realizadas na interface do Kali (eth1).
- Foi observado tráfego SMTP e POP3, mas nenhum pacote TCP 445 nem UDP 137/138 ao clicar no link.
- Também foi tentado com o Outlook executado como administrador: sem mudanças.
Lições aprendidas
Conhecimentos adquiridos
- Como funcionam SMTP e POP3 em nível baixo.
- O que exatamente o Outlook espera ao sincronizar contas.
- Como o Outlook interpreta links UNC e quais condições devem ser atendidas para que ele os abra automaticamente.
- O valor do Wireshark e dos logs como ferramentas de depuração em laboratórios complexos.
Por que decidi encerrar aqui
- Após múltiplas tentativas, o exploit não chegou à etapa de captura de hash, que era o objetivo final.
- Documentei toda a infraestrutura, testes e resultados, o que continua sendo valioso como laboratório educacional.
- Embora o objetivo final não tenha sido alcançado, o processo me permitiu adquirir um conhecimento profundo de cada componente técnico envolvido. Pode ser retomado no futuro.
Créditos
O código deste exploit é baseado no trabalho de CMNatic de https://github.com/CMNatic/CVE-2024-21413. Fiz modificações para adaptá-lo ao meu ambiente.