
Toolkit PowerShell per verificare, rafforzare e cercare l’uso insicuro di NTLM/SMB, affrontando i rischi di perdita di credenziali CVE-2025-50154 con analisi dei log eventi e query di rilevamento.
Autore: w01f
Versione: 1.0
Scopo: Eseguire audit, hardening e caccia per l'uso insicuro di NTLM/SMB al fine di mitigare rischi come CVE-2025-50154.
Gravità: Alta
Tipo: Perdita di credenziali NTLM + Bypass della patch (Zero-Click)
Interessati: Windows 10/11, Windows Server
Sommario:
CVE-2025-50154 è un bypass della patch precedente di Microsoft per CVE-2025-24054. Anche con la mitigazione precedente, un file o un percorso UNC appositamente predisposto può indurre Windows Explorer a recuperare una risorsa remota e avviare l'autenticazione NTLM senza alcuna interazione da parte dell'utente (zero-click).
Ciò può portare a:
Perché è importante: Questo bypass dimostra che gli attaccanti possono ancora sfruttare percorsi di autenticazione legacy attraverso la gestione delle risorse di Explorer. È fondamentale indurire il comportamento di NTLM e del client SMB, oltre a monitorare connessioni sospette avviate da Explorer.
.\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
Di seguito sono riportate query di rilevamento pronte all'uso per identificare utilizzi sospetti di NTLM/SMB potenzialmente correlati ai pattern di sfruttamento di 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 verso TCP 445/139 al di fuori della lista consentita..lnk sui desktop degli utenti.Questo toolkit è fornito esclusivamente a scopo di sicurezza educativa e difensiva.
Non utilizzare in ambienti di produzione senza controllo delle modifiche e test.