
Kit de ferramentas PowerShell para auditar, endurecer e caçar uso inseguro de NTLM/SMB, abordando riscos de vazamento de credenciais CVE-2025-50154 com análise de logs de eventos e consultas de detecção.
Autor: w01f
Versão: 1.0
Propósito: Auditar, endurecer (hardening) e caçar usos inseguros de NTLM/SMB para mitigar riscos como CVE-2025-50154.
Severidade: Alta
Tipo: Vazamento de Credenciais NTLM + Bypass de Patch (Zero-Click)
Afetados: Windows 10/11, Windows Server
Resumo:
CVE-2025-50154 é um bypass da correção anterior da Microsoft para a CVE-2025-24054. Mesmo com a mitigação anterior, um arquivo ou caminho UNC malicioso pode fazer com que o Windows Explorer busque um recurso remoto e inicie a autenticação NTLM sem qualquer interação do usuário (zero-click). Isso pode levar a:
Por que isso importa: Esse bypass mostra que atacantes ainda podem explorar caminhos de autenticação legados através do manuseio de recursos do Explorer. Endurecer (hardening) o comportamento do NTLM e do cliente SMB, além de monitorar conexões suspeitas iniciadas pelo Explorer, é fundamental.
.\NTLM_SMB_HardeningToolkit.ps1 -Mode Audit -AllowlistCIDRs "10.0.0.0/8,192.168.0.0/16" -HoursBack 24 -ExportJson .\ntlm_audit.json
.\NTLM_SMB_HardeningToolkit.ps1 -Mode Harden -AllowlistCIDRs "10.0.0.0/8,192.168.0.0/16" -SampleHosts "filesrv01.corp,10.0.5.20"
.\NTLM_SMB_HardeningToolkit.ps1 -Mode Revert
Abaixo estão consultas de detecção prontas para identificar uso suspeito de NTLM/SMB potencialmente relacionado a padrões de exploração da CVE-2025-50154.
DeviceNetworkEvents
| where InitiatingProcessFileName =~ "explorer.exe"
| where RemotePort in (445, 139)
| where not(RemoteIP in ("10.0.0.0/8","172.16.0.0/12","192.168.0.0/16"))
| project Timestamp, DeviceName, RemoteIP, RemotePort, InitiatingProcessFileName
let lnk = DeviceFileEvents
| where FileName endswith ".lnk"
| where FolderPath has @"\Users\" and FolderPath has @"\Desktop";
let smb = DeviceNetworkEvents
| where RemotePort in (445,139)
| where InitiatingProcessFileName =~ "explorer.exe";
lnk
| join kind=innerunique (smb) on DeviceId
| where smb.Timestamp between (lnk.Timestamp .. lnk.Timestamp + 5m)
| project DeviceName, lnk.Timestamp, smb.Timestamp, FolderPath, RemoteIP
DeviceLogonEvents
| where LogonType == "Network"
| where AuthenticationPackage =~ "NTLM"
| summarize count() by DeviceName, RemoteIP, AccountUpn, bin(Timestamp, 10m)
| order by count_ desc
explorer.exe para TCP 445/139 fora da lista de permissões..lnk em áreas de trabalho de usuários.Este kit é fornecido apenas para fins educacionais e de segurança defensiva.
Não utilize em ambientes de produção sem controle de mudanças e testes.