
CVE-2017-0144

"Um exploit. Dezenas de famílias de malware. Bilhões em danos."
CVE-2017-0144 é uma vulnerabilidade crítica de execução remota de código na implementação do servidor SMBv1 no Microsoft Windows. O exploit conhecido como EternalBlue abusou dessa falha e foi usado em ataques de alto impacto (notadamente WannaCry).
| # | Malware | Tipo | Primeira Aparição | Ator | Danos | Observações |
|---|---|---|---|---|---|---|
| 1 | WannaCry | Ransomware | 12 de maio de 2017 | Grupo Lazarus (Coreia do Norte) | US$ 4–8 bilhões | Killswitch: iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea.com |
| 2 | NotPetya | Wiper (disfarçado de Ransomware) | 27 de junho de 2017 | Sandworm (Rússia) | US$ 10+ bilhões | Usou Mimikatz + EternalBlue + PSEXEC |
| 3 | Bad Rabbit | Ransomware | 24 de outubro de 2017 | Indrik Spider | Regional | Fake Flash update drive-by |
| 4 | Uiwix | Ransomware | maio de 2017 | Desconhecido | Baixo | Sem killswitch, mais furtivo que WannaCry |
| 5 | EternalRocks | Worm | maio de 2017 | Desconhecido | Médio | 7 ferramentas da NSA (incluindo DoublePulsar) |
| 6 | Adylkuzz | Cryptominer | maio de 2017 | Desconhecido | Alto (silencioso) | Minerou Monero antes do WannaCry |
| 7 | Retefe | Trojan Bancário | 2017–2018 | Desconhecido | Bancos da UE | Usou EternalBlue para movimento lateral |
| 8 | TrickBot | Malware Modular | 2017–2021 | Wizard Spider | Global | Distribuiu Ryuk via EternalBlue |
| 9 | Emotet | Loader | 2017–2021 | TA542 | Global | Usado como porta de entrada para Cobalt Strike |
| 10 | Clop / Dridex | Ransomware | 2019–2025 | TA505 | Saúde, Governo | Ainda ativo em 2025 |
| Ferramenta | Lançamento | Recursos |
|---|---|---|
| EternalBlue (Original) | Abril de 2017 (Shadow Brokers) | RCE no SMBv1 |
| DoublePulsar | Abril de 2017 | Implantação de backdoor (ring0) |
| EternalRomance | Abril de 2017 | Variante para SMBv3 |
| EternalChampion | Abril de 2017 | Caminho alternativo SMB |
| Módulo Metasploit | Maio de 2017 | exploit/windows/smb/ms17_010_eternalblue |
| FuzzBunch | Abril de 2017 | Framework de exploits da NSA |
| Impacket + PSEXEC | 2017–2025 | Exploração SMB em Python |
"Um pacote malformado. Acesso total ao SYSTEM. Sem login. Sem clique."
[Atacante]
│
├──▶ Envia requisição **Trans2** SMBv1 manipulada
│ → Dispara **estouro de heap** em `srv!SrvOS2FeaListSizeToNt`
│
├──▶ Sobrescreve ponteiros de função → **shellcode no kernel**
│
└──▶ Executa backdoor **DoublePulsar** → **Payload em Ring-0**
(ex.: WannaCry `mssecsvc.exe`)
| Requisito | Detalhes |
|---|---|
| Alvo | Windows com SMBv1 habilitado (padrão pré-Win10) |
| Porta Aberta | 445/TCP (ou 139/TCP via NetBIOS) |
| Sem Autenticação | Não autenticado — sem necessidade de usuário/senha |
| Arquitetura | x86 ou x64 (ambos suportados) |
| Status do Patch | Sem patch (pré-MS17-010) |
SMB_COM_NEGOTIATE → Cliente envia lista de dialetos
Servidor responde: SMBv1 suportado → Prosseguir
Por quê? Confirma que o SMBv1 está ativo.
\\ALVO\IPC$ → Compartilhamento anônimo para pipes SMB
Propósito: Estabelece uma sessão para enviar requisições de transação.
SESSION_SETUPFEALIST {
SizeOfListInBytes = 0xFFFF (ou valor grande)
...
}
Gatilho do Bug:
SrvOS2FeaListSizeToNt()confia nesse tamanho sem verificação de limites.
FEA {
AttributeNameLength = 0x00
AttributeName = "A" * 0x1000 → Estoura o buffer
}
Heap Spray: Aloca grandes blocos para controlar o layout da memória.
srv!SrvOS2FeaListSizeToNt(
PFEALIST FeaList, // controlado pelo atacante
PULONG pNtFeaListSize // ponteiro de saída
)
{
// Sem validação de FeaList->SizeOfListInBytes
memcpy(dest, src, FeaList->SizeOfListInBytes); // BOOM
}
Free)KeUserModeCallback)mssecsvc.exe)
0x00120034)Ping: 0x0002C001Exec: 0x0002C002 + payloadExemplo do WannaCry:
EternalBlue → DoublePulsar → mssecsvc.exe → tasksche.exe → Criptografa arquivos
Cabeçalho SMB
└── Comando: 0x32 (TRANSACTION2)
└── Setup: 0x000E (SESSION_SETUP)
└── Parâmetro: TotalDataCount = 0x1000
└── Dados:
[FEALIST]
SizeOfListInBytes = 0x1100
[FEA #1] NameLen=0, Name="A"*0x1000
[FEA #2] ...
[GROOM x100] → Pulveriza heap
[OVERFLOW] → Sobrescreve pool
[SHELLCODE] → ring0 x64
| Ferramenta | Linguagem | Módulo |
|---|---|---|
| Metasploit | Ruby | exploit/windows/smb/ms17_010_eternalblue |
| Impacket | Python | smbclient.py, psexec.py |
| FuzzBunch | Python (NSA) | EternalBlue-2.2.0 |
| C2 Personalizado | C/C++ | WannaCry, NotPetya |