Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2025-47981 — PowerShell-Bewertungsskript, das Windows-Systeme auf CVE-2025-47981 (SPNEGO-NEGOEX-Heap-Überlauf) prüft, indem es die Kernel-Version, den PKU2U-Registrierungsschlüssel und exponierte SPNEGO-Ports verifiziert. Bietet Behebungsmaßnahmen und Erkennungsanleitung. | Kitploit
Tools/GitHubGitHub/hkenzokimura/cve-2025-47981
SchwachstellenscannerKonfigurationsprüfungNetzwerksicherheitLernen & BildungIncident Response
GitHubhkenzokimura/cve-2025-47981

CVE-2025-47981

PowerShell-Bewertungsskript, das Windows-Systeme auf CVE-2025-47981 (SPNEGO-NEGOEX-Heap-Überlauf) prüft, indem es die Kernel-Version, den PKU2U-Registrierungsschlüssel und exponierte SPNEGO-Ports verifiziert. Bietet Behebungsmaßnahmen und Erkennungsanleitung.

Repository anzeigen
vor 15h 16mNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

🔵 CVE-2025-47981 — Windows SPNEGO NEGOEX Vulnerability Assessment Script

Typ: Vulnerability Assessment — Erkennung / Compliance-Prüfung CVE: CVE-2025-47981 CVSS: 9.8 Critical (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 | July 2025 Patch Tuesday

PowerShell-Assessment-Skript, das prüft, ob ein Windows-System anfällig für CVE-2025-47981 ist — ein Heap-basierter Pufferüberlauf im SPNEGO Extended Negotiation (NEGOEX)-Mechanismus, der RCE ohne Authentifizierung ermöglicht. Führt keinen Exploit aus — bewertet nur die Exposition und den Patch-Status.

Entwickelt von: HKK


$ cat ./vulnerability_summary.txt

CVE-2025-47981 ist ein Heap-basierter Pufferüberlauf im NEGOEX-Protokoll — der internen Erweiterungsschicht des Windows-SPNEGO-Authentifizierungsmechanismus. Die Schwachstelle ermöglicht es nicht authentifizierten Angreifern, beliebigen Remote-Code auszuführen und möglicherweise die vollständige Kontrolle über das System zu erlangen.

Analysten haben die CVE bereits als mit „den unglücklichen Merkmalen, ein bedeutendes Problem zu werden" beschrieben, mit Wurm-Potenzial — fähig, sich automatisch zwischen anfälligen Systemen ohne Benutzerinteraktion zu verbreiten.

Die Schwachstelle betrifft Windows 10 (Version 1607 und höher) und alle Windows Server von 2008 R2 bis Server 2025, einschließlich Server-Core-Varianten — mehr als 33 verschiedene Windows- und Server-Konfigurationen wurden als anfällig auf x64-, x86- und ARM64-Architekturen bestätigt.


$ cat ./technical_background.txt

Was ist SPNEGO und warum ist es im Kernel?

SPNEGO (Simple and Protected GSSAPI Negotiation Mechanism) ist die Authentifizierungs-Handshake-Schicht, die Windows vor jeder authentifizierten Sitzung verwendet. Anwendungen benötigen häufig Authentifizierung, ohne ein Protokoll festzulegen — Windows kann in einer Umgebung Kerberos, in einer anderen NTLM oder einen erweiterten Authentifizierungsmechanismus in einem anderen Vertrauensmodell verwenden. SPNEGO ist der Aushandlungsmechanismus, der entscheidet, welches Authentifizierungsprotokoll verwendet wird.

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

NEGOEX ist der Erweiterungsmechanismus innerhalb von SPNEGO — er ermöglicht die Aushandlung von PKU2U-Authentifizierungen (Peer-to-Peer) und anderen benutzerdefinierten Mechanismen. Die Schwachstelle liegt in der Funktion ntoskrnl!SpnegoHandleExtended, die überdimensionierte SPNEGO_TOKEN-Strukturen verarbeitet, die in mehreren Fragmenten gesendet werden, was einen Heap-Überlauf im Kernel verursacht.

Warum verstärkt PKU2U das Risiko?

Das Risiko ist auf Systemen erhöht, auf denen die Gruppenrichtlinie „Netzwerksicherheit: PKU2U-Authentifizierungsanforderungen an diesen Computer für die Verwendung von Online-Identitäten zulassen" aktiviert ist. Diese Konfiguration, die in vielen Windows-Bereitstellungen standardmäßig aktiviert ist, erweitert die Angriffsfläche von NEGOEX, indem sie Peer-to-Peer-Authentifizierung zulässt, die den anfälligen NEGOEX-Codepfad auf Endpunkten aktiviert, die ihn andernfalls nicht exponieren würden.


$ cat ./architecture.txt

root@kitploit:~
┌─────────────────────────────────────────────────────────────────────────┐
│            CVE-2025-47981 ASSESSMENT SCRIPT — FLOW                      │
│                                                                         │
│  ┌──────────────────────────────────────────────────────────────────┐  │
│  │  CHECK 1: Windows Version                                        │  │
│  │  Get-CimInstance Win32_OperatingSystem → .Version               │  │
│  │  Contexto: identifica o build exato para correlação com patch   │  │
│  └──────────────────────────────────────────────────────────────────┘  │
│                              │                                          │
│  ┌──────────────────────────────────────────────────────────────────┐  │
│  │  CHECK 2: ntoskrnl.exe Version                                   │  │
│  │  Get-Item C:\Windows\System32\ntoskrnl.exe                      │  │
│  │  Compare: installed < 10.0.14393.8246 → VULNERÁVEL              │  │
│  │  Compare: installed ≥ 10.0.14393.8246 → KB5062560 aplicado      │  │
│  └──────────────────────────────────────────────────────────────────┘  │
│                              │                                          │
│  ┌──────────────────────────────────────────────────────────────────┐  │
│  │  CHECK 3: PKU2U Registry Key                                     │  │
│  │  HKLM:\SYSTEM\...\Lsa\pku2u\AllowOnlineID                      │  │
│  │  1 → PKU2U habilitado → superfície de ataque ampliada          │  │
│  │  0 → PKU2U desabilitado → vetor PKU2U mitigado                 │  │
│  │  Não existe → configuração padrão (avaliar via GPO)            │  │
│  └──────────────────────────────────────────────────────────────────┘  │
│                              │                                          │
│  ┌──────────────────────────────────────────────────────────────────┐  │
│  │  CHECK 4: Portas SPNEGO Expostas                                 │  │
│  │  Get-NetTCPConnection → 135, 445, 5985, 3389, 80, 443, 25      │  │
│  │  Cada porta aberta = um vetor de entrega do exploit             │  │
│  └──────────────────────────────────────────────────────────────────┘  │
│                              │                                          │
│                    Format-Table -AutoSize                               │
│                    (output legível para relatório de pentest)           │
└─────────────────────────────────────────────────────────────────────────┘

$ cat ./design_decisions.md

1. Versionsprüfung über 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) {
    "Vulnerável - Patch ausente ($missingKB)"
}

Warum ntoskrnl.exe und nicht Get-HotFix?

Get-HotFix listet installierte KBs auf, hat aber bekannte Einschränkungen:

  • Erkennt keine KBs, die über DISM oder Windows Update im stillen Modus angewendet wurden
  • Kann in einigen Szenarien deinstallierte KBs als vorhanden anzeigen
  • Spiegelt nicht den tatsächlichen Zustand der ausgeführten Binärdatei wider

Die direkte Überprüfung der Version von ntoskrnl.exe ist zuverlässiger — die Datei erhält nur dann die gepatchte Version, wenn das KB tatsächlich angewendet und das System neu gestartet wurde. Ein System mit ausstehendem Reboot nach KB-Installation hat weiterhin die alte Kernel-Version im Speicher.

[version]-Cast: PowerShell vergleicht Zeichenfolgen standardmäßig lexikografisch — "10.0.14393.8246" -lt "10.0.14393.800" wäre $false (falsch). Der Cast auf [version] gewährleistet einen korrekten numerischen Vergleich pro Oktett.

[System.IO.Path]::Combine($env:SystemRoot, ...): verwendet SystemRoot anstelle von hartcodiertem C:\Windows — portabel für Systeme mit Windows auf anderen Laufwerken.


2. Referenzversion 10.0.14393.8246

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

Warum genau dieser Build?

Windows Server 2016 (Basis-Build 14393) ist eine der kritischsten Umgebungen für Patches — weit verbreitet in DCs, Dateiservern und internen Unternehmensdiensten. Version 8246 entspricht dem Kernel-Build nach Anwendung von KB5062560 (Juli 2025).

Für andere Betriebssysteme ist die erforderliche Mindest-Build-Nummer unterschiedlich — das Skript kann um eine Versions-Tabelle pro Betriebssystem erweitert werden.


3. PKU2U-Registry — AllowOnlineID

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

Was steuert dieser Schlüssel?

Die Schwachstelle betrifft hauptsächlich Systeme, auf denen die Gruppenrichtlinie „PKU2U-Authentifizierungsanforderungen an diesen Computer für die Verwendung von Online-Identitäten zulassen" standardmäßig aktiviert ist, was für Windows 10 Version 1607 und höher der Fall ist.

Der Schlüssel AllowOnlineID ist die Registry-Repräsentation dieser Gruppenrichtlinie. Wenn aktiviert (= 1), akzeptiert das System PKU2U-Authentifizierungen — wodurch der NEGOEX-Codepfad aktiviert wird, der den Überlauf enthält.

WertStatusRisiko
1PKU2U aktiviertHOCH — NEGOEX-Vektor aktiviert
0PKU2U deaktiviertNIEDRIG — Vektor entschärft (Patch weiterhin erforderlich)
Nicht vorhandenSystemstandardHängt von der GPO ab — über gpresult /r prüfen

-ErrorAction SilentlyContinue: Der Schlüssel ist möglicherweise nicht auf allen Systemen vorhanden — das Skript behandelt das Fehlen ordnungsgemäß, ohne einen Fehler zu erzeugen.


4. SPNEGO-Ports — Angriffsfläche

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

Angreifer können die Schwachstelle remote ohne Authentifizierung ausnutzen, indem sie bösartige Pakete an anfällige Dienste wie SMB (Port 445/TCP), RDP (Port 3389/TCP), HTTP/S (Ports 80, 443/TCP) und SMTP (Port 25/TCP) senden, die SPNEGO-Authentifizierung verwenden.

PortProtokollSPNEGO verwendet für
135RPC Endpoint MapperAushandlung der RPC-Authentifizierung
445SMBAuthentifizierung von Dateifreigaben, Named Pipes
5985WinRM (HTTP)PowerShell-Remoting, Verwaltung
3389RDPRemote-Desktop-Authentifizierung
80HTTPIIS Windows-Authentifizierung (Negotiate)
443HTTPSIIS Windows-Authentifizierung über TLS
25SMTPExchange Extended Protection

Get-NetTCPConnection -LocalPort $port prüft, ob der Port auf dem lokalen System im Status LISTEN ist — jeder offene Port stellt einen unabhängigen Zustellvektor für den Exploit dar.


$ cat ./mitre_mapping.yml

root@kitploit:~
# Perspectiva do ATACANTE (o que o script detecta/previne)

tactic: Initial Access
  - T1190   # Exploit Public-Facing Application
            # RCE via SPNEGO heap overflow sem autenticação
            # Vetor: qualquer porta com Negotiate auth (445, 5985, 3389...)

tactic: Execution
  - T1203   # Exploitation for Client Execution
            # Heap overflow em ntoskrnl!SpnegoHandleExtended
            # Controle de RIP/EIP via kernel heap corruption

tactic: Lateral Movement
  - T1210   # Exploitation of Remote Services
            # Wormable: explora outros hosts via SMB/RPC sem credenciais

  - T1550.002 # Pass-the-Hash
              # Pós-RCE: acesso SYSTEM permite extração de hashes LSASS

tactic: Privilege Escalation
  - T1068   # Exploitation for Privilege Escalation
            # Buffer overflow em contexto do kernel → ring 0 imediato

# Perspectiva do DEFENSOR (o que o script assessment executa)

tactic: Discovery (Blue Team)
  - T1082   # System Information Discovery
            # Coleta versão do OS e ntoskrnl.exe para avaliação de patch

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

  - T1049   # System Network Connections Discovery
            # Get-NetTCPConnection para mapear portas SPNEGO expostas

$ cat ./detection_opportunities.md

Erkennung von Exploit-Versuchen

root@kitploit:~
# Anomalia de autenticação NEGOEX — pacotes SPNEGO oversized
# Fonte: Windows Security Event Log / ETW

EventID: 4625 (Logon Failure) com SubStatus 0xC000006D
  + Origem: hosts externos
  + Frequência: alta (scan/exploit tentatives)
  + TargetUserName: ANONYMOUS LOGON OU vazio

# Alternativa: Sysmon Event 3 (Network Connection)
EventID: 3
Condição:
  DestinationPort: 445 OU 5985 OU 135
  Initiated: false (conexão inbound)
  Image: System OU lsass.exe
root@kitploit:~
# Crash do kernel pós-exploit malsucedido
# Fonte: Windows Event Log → System

EventID: 1001 (BugCheck)
  BugCheckCode: 0x00000050 (PAGE_FAULT_IN_NONPAGED_AREA)
  OU
  BugCheckCode: 0x0000007E (SYSTEM_THREAD_EXCEPTION_NOT_HANDLED)
  Context: Crash em ntoskrnl.exe → possível exploit attempt

Erkennung auf Netzwerkebene

root@kitploit:~
# Snort/Suricata — SPNEGO token oversized (conceitual)
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;              # tokens legítimos raramente excedem 4KB
  threshold:type both, track by_src, count 3, seconds 10;
  sid:2025479810;
)

$ cat ./remediation.md

root@kitploit:~
PRIORIDADE: CRÍTICA — Patch imediato (CVSS 9.8, wormable)

1. PATCH (ação principal):
   Windows Update → KB5062560 (Julho 2025 Patch Tuesday)
   WSUS: aprovar KB5062560 para todos os sistemas Windows 10 1607+
   REINICIAR após o patch — ntoskrnl.exe só é substituído após reboot

2. VERIFICAÇÃO PÓS-PATCH:
   Executar este script novamente
   Resultado esperado:
     ntoskrnl.exe Installed Version: 10.0.14393.8246 (ou maior)
     Vulnerability Result: Seguro - Patch aplicado

3. MITIGAÇÃO TEMPORÁRIA (se patch imediato for inviável):
   Desabilitar PKU2U via Group Policy:
     Computer Configuration → Windows Settings → Security Settings →
     Local Policies → Security Options →
     "Network security: Allow PKU2U authentication requests..." → DISABLED
   
   OU via registry:
     Set-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa\pku2u"
       -Name AllowOnlineID -Value 0

4. BLOQUEIO DE REDE (defense-in-depth):
   Firewall: restringir inbound 135, 445, 5985 a hosts autorizados
   Segmentar DCs e servidores críticos em VLANs com ACLs rígidas

5. PRIORIDADE ESPECIAL — Domain Controllers:
   DCs expõem todas as portas listadas (RPC, SMB, LDAP)
   Wormable + DC comprometido = comprometimento completo do domínio AD
   Patch DCs na primeira janela disponível

$ cat ./usage.sh

root@kitploit:~
# Executar o script de assessment (não requer privilégios de admin para leitura básica,
# mas alguns checks de registry podem precisar de elevação)
powershell.exe -ExecutionPolicy Bypass -File cve_2025_47981_check.ps1
root@kitploit:~
# Output esperado em sistema VULNERÁVEL:
Name                              Value
----                              -----
ntoskrnl.exe Installed Version    10.0.14393.7906
ntoskrnl.exe Required Version     10.0.14393.8246
PKU2U AllowOnlineID               1
Portas SPNEGO abertas             {135, 445, 5985, 3389}
Vulnerability Result              Vulnerável - Patch ausente (KB5062560)
Windows Version                   10.0.14393.7906

# Output esperado em sistema PATCHADO:
Vulnerability Result              Seguro - Patch aplicado
PKU2U AllowOnlineID               0

$ cat ./affected_versions.txt

root@kitploit:~
AFETADOS (33+ configurações):
  Windows 10:      1607, 1809, 21H2, 22H2
  Windows 11:      22H2, 23H2, 24H2
  Windows Server:  2008 R2, 2012, 2012 R2, 2016, 2019, 2022, 2025
  Arquiteturas:    x64, x86, ARM64
  Server Core:     Sim (todas as versões acima)

FATOR DE RISCO ELEVADO:
  PKU2U GPO habilitada (padrão em Win10 1607+)
  Portas 135/445/5985 acessíveis de redes externas ou não confiáveis

PATCH:
  KB5062560  →  July 2025 Patch Tuesday
  ntoskrnl.exe mínimo → 10.0.14393.8246 (Windows Server 2016)
  Verificar builds específicos por versão em: msrc.microsoft.com

$ cat ./lessons_learned.txt

root@kitploit:~
[+] Comparar [version] em vez de string evita falsos negativos em comparações de build
[+] ntoskrnl.exe é fonte primária de verdade para estado de patch — mais confiável que Get-HotFix
[+] PKU2U AllowOnlineID é o amplificador do risco — sistemas sem ele têm superfície reduzida
[+] Get-NetTCPConnection mapeia rapidamente a superfície de ataque exposta localmente
[+] Format-Table -AutoSize gera output pronto para copiar em relatório de pentest
[-] Script verifica apenas Windows Server 2016 (14393) — estender para outros builds é necessário
[-] Não verifica estado da GPO via gpresult — registry pode divergir da política efetiva
[-] Não testa conectividade remota — apenas verifica se as portas estão abertas localmente
[-] Sem output em JSON/CSV — difícil integrar em pipelines de compliance automatizados
[→] Melhorias: tabela de versões por OS, output em JSON, verificação remota via Invoke-Command,
    integração com Qualys/Tenable para correlação de vulnerabilidade

CVE Assessment · CVSS 9.8 · Wormable · July 2025 Patch Tuesday · Detection only · No exploit

Tool herunterladen