
CVE-2017-0144

"Un exploit. Dozzine di famiglie malware. Miliardi di danni."
CVE-2017-0144 è una vulnerabilità critica di esecuzione di codice remoto nell'implementazione del server SMBv1 in Microsoft Windows. L'exploit noto come EternalBlue ha sfruttato questa falla ed è stato utilizzato in attacchi ad alto impatto (in particolare WannaCry).
| # | Malware | Tipo | Prima apparizione | Attore | Danni | Note |
|---|---|---|---|---|---|---|
| 1 | WannaCry | Ransomware | 12 maggio 2017 | Lazarus Group (DPRK) | $4–8B | Killswitch: iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea.com |
| 2 | NotPetya | Wiper (spacciato per ransomware) | 27 giugno 2017 | Sandworm (Russia) | $10B+ | Usato Mimikatz + EternalBlue + PSEXEC |
| 3 | Bad Rabbit | Ransomware | 24 ottobre 2017 | Indrik Spider | Regionale | Drive-by tramite falso aggiornamento Flash |
| 4 | Uiwix | Ransomware | Maggio 2017 | Sconosciuto | Basso | Nessun killswitch, più stealth di WannaCry |
| 5 | EternalRocks | Worm | Maggio 2017 | Sconosciuto | Medio | 7 strumenti NSA (incl. DoublePulsar) |
| 6 | Adylkuzz | Crypto-miner | Maggio 2017 | Sconosciuto | Alto (silenzioso) | Minava Monero prima di WannaCry |
| 7 | Retefe | Trojan bancario | 2017–2018 | Sconosciuto | Banche UE | Usato EternalBlue per il movimento laterale |
| 8 | TrickBot | Malware modulare | 2017–2021 | Wizard Spider | Globale | Distribuiva Ryuk tramite EternalBlue |
| 9 | Emotet | Loader | 2017–2021 | TA542 | Globale | Usato come punto di ingresso per Cobalt Strike |
| 10 | Clop / Dridex | Ransomware | 2019–2025 | TA505 | Sanità, Governo | Ancora attivo nel 2025 |
| Strumento | Rilascio | Funzionalità |
|---|---|---|
| EternalBlue (Originale) | Apr 2017 (Shadow Brokers) | RCE su SMBv1 |
| DoublePulsar | Apr 2017 | Impianto backdoor (ring0) |
| EternalRomance | Apr 2017 | Variante SMBv3 |
| EternalChampion | Apr 2017 | Percorso SMB alternativo |
| Modulo Metasploit | Maggio 2017 | exploit/windows/smb/ms17_010_eternalblue |
| FuzzBunch | Apr 2017 | Framework di exploit NSA |
| Impacket + PSEXEC | 2017–2025 | Sfruttamento SMB in Python |
"Un pacchetto malformato. Accesso SYSTEM completo. Nessun login. Nessun clic."
[Attacker]
│
├──▶ Sends crafted SMBv1 **Trans2** request
│ → Triggers **heap overflow** in `srv!SrvOS2FeaListSizeToNt`
│
├──▶ Overwrites function pointers → **kernel shellcode**
│
└──▶ Executes **DoublePulsar** backdoor → **Ring-0 payload**
(e.g., WannaCry `mssecsvc.exe`)
| Requisito | Dettagli |
|---|---|
| Bersaglio | Windows con SMBv1 abilitato (predefinito prima di Win10) |
| Porta aperta | 445/TCP (o 139/TCP via NetBIOS) |
| Nessuna autenticazione | Non autenticato — nessun nome utente/password richiesti |
| Architettura | x86 o x64 (entrambe supportate) |
| Stato patch | Non patchato (pre-MS17-010) |
SMB_COM_NEGOTIATE → Client sends dialect list
Server responds: SMBv1 supported → Proceed
Perché? Conferma che SMBv1 è attivo.
\\TARGET\IPC$ → Anonymous share for SMB pipes
Scopo: Stabilisce una sessione per inviare richieste di transazione.
SESSION_SETUPFEALIST {
SizeOfListInBytes = 0xFFFF (or large value)
...
}
Attivazione del bug:
SrvOS2FeaListSizeToNt()si fida di questa dimensione senza alcun controllo dei limiti.
FEA {
AttributeNameLength = 0x00
AttributeName = "A" * 0x1000 → Overflow buffer
}
Heap Spray: Alloca grandi blocchi per controllare il layout della memoria.
srv!SrvOS2FeaListSizeToNt(
PFEALIST FeaList, // attacker-controlled
PULONG pNtFeaListSize // output pointer
)
{
// No validation of FeaList->SizeOfListInBytes
memcpy(dest, src, FeaList->SizeOfListInBytes); // BOOM
}
Free)KeUserModeCallback)mssecsvc.exe)
0x00120034)Ping: 0x0002C001Exec: 0x0002C002 + payloadEsempio WannaCry:
EternalBlue → DoublePulsar → mssecsvc.exe → tasksche.exe → Encrypts files
SMB Header
└── Command: 0x32 (TRANSACTION2)
└── Setup: 0x000E (SESSION_SETUP)
└── Parameter: TotalDataCount = 0x1000
└── Data:
[FEALIST]
SizeOfListInBytes = 0x1100
[FEA #1] NameLen=0, Name="A"*0x1000
[FEA #2] ...
[GROOM x100] → Spray heap
[OVERFLOW] → Overwrite pool
[SHELLCODE] → x64 ring0
| Strumento | Linguaggio | Modulo |
|---|---|---|
| Metasploit | Ruby | exploit/windows/smb/ms17_010_eternalblue |
| Impacket | Python | smbclient.py, psexec.py |
| FuzzBunch | Python (NSA) | EternalBlue-2.2.0 |
| C2 personalizzato | C/C++ | WannaCry, NotPetya |