Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2025-47981 — Script di valutazione PowerShell che controlla i sistemi Windows per CVE-2025-47981 (heap overflow SPNEGO NEGOEX) verificando la versione del kernel, la chiave di registro PKU2U e le porte SPNEGO esposte. Fornisce passaggi di remediation e indicazioni per il rilevamento. | Kitploit
Strumenti/GitHubGitHub/hkenzokimura/cve-2025-47981
Scanner di VulnerabilitàAudit di ConfigurazioneSicurezza di ReteApprendimento e FormazioneRisposta agli Incidenti
GitHubhkenzokimura/cve-2025-47981

CVE-2025-47981

Script di valutazione PowerShell che controlla i sistemi Windows per CVE-2025-47981 (heap overflow SPNEGO NEGOEX) verificando la versione del kernel, la chiave di registro PKU2U e le porte SPNEGO esposte. Fornisce passaggi di remediation e indicazioni per il rilevamento.

Vedi Repository
15h 16m faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

🔵 CVE-2025-47981 — Script di Valutazione della Vulnerabilità SPNEGO NEGOEX di Windows

Tipo: Valutazione della Vulnerabilità — Rilevamento / Verifica di Conformità CVE: CVE-2025-47981 CVSS: 9.8 Critico (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H) CWE: CWE-122 — Heap-based Buffer Overflow Alias: "SPNEGO Nightmare" / "Windows Authentication Wormable RCE" Patch: KB5062560 | Luglio 2025 Patch Tuesday

Script PowerShell di assessment che verifica se un sistema Windows è vulnerabile al CVE-2025-47981 — heap-based buffer overflow nel meccanismo SPNEGO Extended Negotiation (NEGOEX) che consente RCE senza autenticazione. Non esegue exploit — valuta solo l'esposizione e lo stato della patch.

Developed by: HKK


$ cat ./vulnerability_summary.txt

CVE-2025-47981 è un heap-based buffer overflow nel protocollo NEGOEX — il livello di estensione interno del meccanismo di autenticazione SPNEGO di Windows. La vulnerabilità consente ad attaccanti non autenticati di eseguire codice remoto arbitrario, ottenendo potenzialmente il controllo totale del sistema.

Gli analisti hanno già descritto la CVE come avente "le sfortunate caratteristiche di diventare un problema significativo", con potenziale wormable — capace di propagarsi automaticamente tra sistemi vulnerabili senza interazione dell'utente.

La vulnerabilità colpisce Windows 10 (versione 1607 in poi) e tutti i Windows Server dal 2008 R2 fino al Server 2025, incluse le varianti Server Core — più di 33 configurazioni distinte di Windows e Server confermate vulnerabili su architetture x64, x86 e ARM64.


$ cat ./technical_background.txt

Cos'è SPNEGO e perché è nel kernel?

SPNEGO (Simple and Protected GSSAPI Negotiation Mechanism) è il livello di handshake di autenticazione che Windows usa prima di ogni sessione autenticata. Le applicazioni spesso necessitano di autenticazione senza fissare un protocollo — Windows può usare Kerberos in un ambiente, NTLM in un altro, o un meccanismo di autenticazione esteso in un modello di trust diverso. SPNEGO è il meccanismo di negoziazione che decide quale protocollo di autenticazione usare.

root@kitploit:~
Cliente                          Servidor
  │                                │
  │──── SPNEGO Negotiation ────────►│
  │     MechTypeList:               │
  │     [Kerberos, NTLM, NEGOEX]    │
  │                                │
  │◄─── Selected Mechanism ─────────│
  │                                │
  │──── Auth Exchange ─────────────►│  ← overflow qui nel NEGOEX

NEGOEX è il meccanismo di estensione all'interno di SPNEGO — consente che autenticazioni PKU2U (peer-to-peer) e altri meccanismi personalizzati vengano negoziati. La vulnerabilità risiede nella funzione ntoskrnl!SpnegoHandleExtended, che elabora strutture SPNEGO_TOKEN sovradimensionate inviate in più frammenti, causando overflow nell'heap del kernel.

Perché PKU2U amplifica il rischio?

Il rischio è elevato nei sistemi in cui la Group Policy "Network security: Allow PKU2U authentication requests to this computer to use online identities" è abilitata. Questa configurazione, abilitata per impostazione predefinita in molte distribuzioni di Windows, amplifica la superficie di attacco di NEGOEX consentendo l'autenticazione peer-to-peer che attiva il percorso di codice vulnerabile di NEGOEX su endpoint che altrimenti non lo esporrebbero.


$ cat ./architecture.txt

root@kitploit:~
┌─────────────────────────────────────────────────────────────────────────┐
│            CVE-2025-47981 ASSESSMENT SCRIPT — FLOW                      │
│                                                                         │
│  ┌──────────────────────────────────────────────────────────────────┐  │
│  │  CHECK 1: Windows Version                                        │  │
│  │  Get-CimInstance Win32_OperatingSystem → .Version               │  │
│  │  Contesto: identifica la build esatta per correlazione con patch│  │
│  └──────────────────────────────────────────────────────────────────┘  │
│                              │                                          │
│  ┌──────────────────────────────────────────────────────────────────┐  │
│  │  CHECK 2: ntoskrnl.exe Version                                   │  │
│  │  Get-Item C:\Windows\System32\ntoskrnl.exe                      │  │
│  │  Confronto: installata < 10.0.14393.8246 → VULNERABILE          │  │
│  │  Confronto: installata ≥ 10.0.14393.8246 → KB5062560 applicato  │  │
│  └──────────────────────────────────────────────────────────────────┘  │
│                              │                                          │
│  ┌──────────────────────────────────────────────────────────────────┐  │
│  │  CHECK 3: PKU2U Registry Key                                     │  │
│  │  HKLM:\SYSTEM\...\Lsa\pku2u\AllowOnlineID                      │  │
│  │  1 → PKU2U abilitato → superficie di attacco ampliata          │  │
│  │  0 → PKU2U disabilitato → vettore PKU2U mitigato               │  │
│  │  Non esiste → configurazione predefinita (valutare tramite GPO) │  │
│  └──────────────────────────────────────────────────────────────────┘  │
│                              │                                          │
│  ┌──────────────────────────────────────────────────────────────────┐  │
│  │  CHECK 4: Porte SPNEGO Esposte                                   │  │
│  │  Get-NetTCPConnection → 135, 445, 5985, 3389, 80, 443, 25      │  │
│  │  Ogni porta aperta = un vettore di consegna dell'exploit        │  │
│  └──────────────────────────────────────────────────────────────────┘  │
│                              │                                          │
│                    Format-Table -AutoSize                               │
│                    (output leggibile per report di pentest)            │
└─────────────────────────────────────────────────────────────────────────┘

$ cat ./design_decisions.md

1. Verifica della Versione tramite ntoskrnl.exe

root@kitploit:~
$kernelPath = [System.IO.Path]::Combine($env:SystemRoot, "System32\ntoskrnl.exe")
$requiredVersion = "10.0.14393.8246"

$installedVersion = (Get-Item $kernelPath).VersionInfo.FileVersion

if ([version]$installedVersion -lt [version]$requiredVersion) {
    "Vulnerabile - Patch mancante ($missingKB)"
}

Perché ntoskrnl.exe e non Get-HotFix?

Get-HotFix elenca i KB installati, ma ha limitazioni note:

  • Non rileva i KB applicati tramite DISM o Windows Update in modalità silenziosa
  • Può mostrare KB disinstallati come presenti in alcuni scenari
  • Non riflette lo stato reale del binario in esecuzione

Verificare la versione di ntoskrnl.exe direttamente è più affidabile — il file riceve la versione patchata solo quando il KB è stato effettivamente applicato e il sistema riavviato. Un sistema con KB in attesa di riavvio avrà ancora la vecchia versione del kernel in memoria.

Cast [version]: PowerShell confronta le stringhe lessicograficamente per impostazione predefinita — "10.0.14393.8246" -lt "10.0.14393.800" sarebbe $false (errato). Il cast a [version] garantisce un confronto numerico corretto per ottetto.

[System.IO.Path]::Combine($env:SystemRoot, ...): usa SystemRoot invece di C:\Windows hardcoded — portabile per sistemi con Windows installato su unità diverse.


2. Versione di Riferimento 10.0.14393.8246

root@kitploit:~
10.0.14393.xxxx  →  Windows 10 version 1607 / Windows Server 2016
         │
         └─ 8246 = build con KB5062560 applicato

Perché questa build specifica?

Windows Server 2016 (build base 14393) è uno degli ambienti più critici per le patch — ampiamente utilizzato in DC, file server e servizi interni aziendali. La versione 8246 corrisponde alla build del kernel dopo l'applicazione del KB5062560 (Luglio 2025).

Per altri sistemi operativi, il numero di build minimo richiesto è diverso — lo script può essere esteso con una tabella di versioni per OS.


3. PKU2U Registry — AllowOnlineID

root@kitploit:~
$regPath = "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\pku2u"
$regName = "AllowOnlineID"

Cosa controlla questa chiave?

La vulnerabilità colpisce principalmente i sistemi in cui la Group Policy "Allow PKU2U authentication requests to this computer to use online identities" è abilitata per impostazione predefinita, che è il caso per Windows 10 versione 1607 in poi.

La chiave AllowOnlineID è la rappresentazione nel registry di questa Group Policy. Quando abilitata (= 1), il sistema accetta autenticazioni PKU2U — attivando il percorso di codice di NEGOEX che contiene l'overflow.

ValoreStatoRischio
1PKU2U abilitatoALTO — vettore NEGOEX attivato
0PKU2U disabilitatoBASSO — vettore mitigato (patch comunque necessaria)
Non esistePredefinito del sistemaDipende dalla GPO — verificare tramite gpresult /r

-ErrorAction SilentlyContinue: la chiave potrebbe non esistere su tutti i sistemi — lo script gestisce con garbo l'assenza senza generare errori.


4. Porte SPNEGO — Superficie di Attacco

root@kitploit:~
$ports = @(135, 445, 5985, 3389, 80, 443, 25)

Gli attaccanti possono sfruttare la falla da remoto senza autenticazione inviando pacchetti dannosi a servizi vulnerabili come SMB (porta 445/TCP), RDP (porta 3389/TCP), HTTP/S (porte 80, 443/TCP) e SMTP (porta 25/TCP) che utilizzano l'autenticazione SPNEGO.

PortaProtocolloSPNEGO usato per
135RPC Endpoint MapperNegoziazione dell'autenticazione RPC
445SMBAutenticazione di file share, named pipes
5985WinRM (HTTP)PowerShell remoting, gestione
3389RDPAutenticazione Remote Desktop
80HTTPIIS Windows Authentication (Negotiate)
443HTTPSIIS Windows Authentication tramite TLS
25SMTPExchange Extended Protection

Get-NetTCPConnection -LocalPort $port verifica se la porta è in LISTEN sul sistema locale — ogni porta aperta rappresenta un vettore di consegna indipendente per l'exploit.


$ cat ./mitre_mapping.yml

root@kitploit:~
# Prospettiva dell'ATTACCANTE (cosa lo script rileva/previene)

tactic: Initial Access
  - T1190   # Exploit Public-Facing Application
            # RCE tramite SPNEGO heap overflow senza autenticazione
            # Vettore: qualsiasi porta con auth Negotiate (445, 5985, 3389...)

tactic: Execution
  - T1203   # Exploitation for Client Execution
            # Heap overflow in ntoskrnl!SpnegoHandleExtended
            # Controllo di RIP/EIP tramite corruzione dell'heap del kernel

tactic: Lateral Movement
  - T1210   # Exploitation of Remote Services
            # Wormable: sfrutta altri host tramite SMB/RPC senza credenziali

  - T1550.002 # Pass-the-Hash
              # Post-RCE: accesso SYSTEM consente l'estrazione di hash LSASS

tactic: Privilege Escalation
  - T1068   # Exploitation for Privilege Escalation
            # Buffer overflow in contesto del kernel → ring 0 immediato

# Prospettiva del DIFENSORE (cosa lo script di assessment esegue)

tactic: Discovery (Blue Team)
  - T1082   # System Information Discovery
            # Raccoglie versione del OS e di ntoskrnl.exe per valutazione patch

  - T1012   # Query Registry
            # Verifica HKLM:\...\pku2u\AllowOnlineID

  - T1049   # System Network Connections Discovery
            # Get-NetTCPConnection per mappare le porte SPNEGO esposte

$ cat ./detection_opportunities.md

Rilevamento del Tentativo di Exploit

root@kitploit:~
# Anomalia di autenticazione NEGOEX — pacchetti SPNEGO sovradimensionati
# Fonte: Windows Security Event Log / ETW

EventID: 4625 (Logon Failure) con SubStatus 0xC000006D
  + Origine: host esterni
  + Frequenza: alta (tentativi di scan/exploit)
  + TargetUserName: ANONYMOUS LOGON OPPURE vuoto

# Alternativa: Sysmon Event 3 (Network Connection)
EventID: 3
Condizione:
  DestinationPort: 445 OPPURE 5985 OPPURE 135
  Initiated: false (connessione in entrata)
  Image: System OPPURE lsass.exe
root@kitploit:~
# Crash del kernel post-exploit non riuscito
# Fonte: Windows Event Log → System

EventID: 1001 (BugCheck)
  BugCheckCode: 0x00000050 (PAGE_FAULT_IN_NONPAGED_AREA)
  OPPURE
  BugCheckCode: 0x0000007E (SYSTEM_THREAD_EXCEPTION_NOT_HANDLED)
  Contesto: Crash in ntoskrnl.exe → possibile tentativo di exploit

Rilevamento a Livello di Rete

root@kitploit:~
# Snort/Suricata — token SPNEGO sovradimensionato (concettuale)
alert tcp any any -> $HOME_NET [445,5985,3389] (
  msg:"CVE-2025-47981 SPNEGO NEGOEX oversized token";
  content:"|60|";           # SPNEGO OID marker
  content:"|a0|";           # MechTypeList marker
  dsize:>4096;              # i token legittimi raramente superano i 4KB
  threshold:type both, track by_src, count 3, seconds 10;
  sid:2025479810;
)

$ cat ./remediation.md

root@kitploit:~
PRIORITÀ: CRITICA — Patch immediata (CVSS 9.8, wormable)

1. PATCH (azione principale):
   Windows Update → KB5062560 (Luglio 2025 Patch Tuesday)
   WSUS: approvare KB5062560 per tutti i sistemi Windows 10 1607+
   RIAVVIARE dopo la patch — ntoskrnl.exe viene sostituito solo dopo il riavvio

2. VERIFICA POST-PATCH:
   Eseguire nuovamente questo script
   Risultato atteso:
     ntoskrnl.exe Installed Version: 10.0.14393.8246 (o superiore)
     Vulnerability Result: Sicuro - Patch applicata

3. MITIGAZIONE TEMPORANEA (se la patch immediata non è fattibile):
   Disabilitare PKU2U tramite Group Policy:
     Computer Configuration → Windows Settings → Security Settings →
     Local Policies → Security Options →
     "Network security: Allow PKU2U authentication requests..." → DISABLED
   
   OPPURE tramite registry:
     Set-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\pku2u"
       -Name AllowOnlineID -Value 0

4. BLOCCO DI RETE (defense-in-depth):
   Firewall: limitare le connessioni in entrata su 135, 445, 5985 a host autorizzati
   Segmentare DC e server critici in VLAN con ACL rigide

5. PRIORITÀ SPECIALE — Domain Controllers:
   I DC espongono tutte le porte elencate (RPC, SMB, LDAP)
   Wormable + DC compromesso = compromissione completa del dominio AD
   Applicare la patch ai DC nella prima finestra disponibile

$ cat ./usage.sh

root@kitploit:~
# Eseguire lo script di assessment (non richiede privilegi di admin per la lettura di base,
# ma alcuni controlli del registry potrebbero richiedere elevazione)
powershell.exe -ExecutionPolicy Bypass -File cve_2025_47981_check.ps1
root@kitploit:~
# Output atteso su sistema VULNERABILE:
Name                              Value
----                              -----
ntoskrnl.exe Installed Version    10.0.14393.7906
ntoskrnl.exe Required Version     10.0.14393.8246
PKU2U AllowOnlineID               1
Porte SPNEGO aperte               {135, 445, 5985, 3389}
Vulnerability Result              Vulnerabile - Patch mancante (KB5062560)
Windows Version                   10.0.14393.7906

# Output atteso su sistema PATCHATO:
Vulnerability Result              Sicuro - Patch applicata
PKU2U AllowOnlineID               0

$ cat ./affected_versions.txt

root@kitploit:~
COLPITI (33+ configurazioni):
  Windows 10:      1607, 1809, 21H2, 22H2
  Windows 11:      22H2, 23H2, 24H2
  Windows Server:  2008 R2, 2012, 2012 R2, 2016, 2019, 2022, 2025
  Architetture:    x64, x86, ARM64
  Server Core:     Sì (tutte le versioni sopra)

FATTORE DI RISCHIO ELEVATO:
  GPO PKU2U abilitata (predefinita in Win10 1607+)
  Porte 135/445/5985 accessibili da reti esterne o non affidabili

PATCH:
  KB5062560  →  Luglio 2025 Patch Tuesday
  ntoskrnl.exe minimo → 10.0.14393.8246 (Windows Server 2016)
  Verificare le build specifiche per versione su: msrc.microsoft.com

$ cat ./lessons_learned.txt

root@kitploit:~
[+] Confrontare [version] invece della stringa evita falsi negativi nei confronti delle build
[+] ntoskrnl.exe è la fonte primaria di verità per lo stato della patch — più affidabile di Get-HotFix
[+] PKU2U AllowOnlineID è l'amplificatore del rischio — i sistemi senza di esso hanno una superficie ridotta
[+] Get-NetTCPConnection mappa rapidamente la superficie di attacco esposta localmente
[+] Format-Table -AutoSize genera output pronto per essere copiato in un report di pentest
[-] Lo script verifica solo Windows Server 2016 (14393) — è necessario estenderlo ad altre build
[-] Non verifica lo stato della GPO tramite gpresult — il registry può divergere dalla policy effettiva
[-] Non testa la connettività remota — verifica solo se le porte sono aperte localmente
[-] Nessun output in JSON/CSV — difficile integrare in pipeline di compliance automatizzate
[→] Miglioramenti: tabella delle versioni per OS, output in JSON, verifica remota tramite Invoke-Command,
    integrazione con Qualys/Tenable per la correlazione delle vulnerabilità

CVE Assessment · CVSS 9.8 · Wormable · Luglio 2025 Patch Tuesday · Solo rilevamento · Nessun exploit

Scarica lo strumento