MS17-010
Este repositório é para o meu trabalho público sobre o MS17-010. Não tenho planos de oferecer suporte. Todas as questões de suporte não receberão resposta minha.
Ficheiros
- BUG.txt Detalhes do bug do MS17-010 e alguma análise
- checker.py Script para encontrar named pipe acessível
- eternalblue_exploit7.py Exploit Eternalblue para Windows 7/2008
- eternalblue_exploit8.py Exploit Eternalblue para Windows 8/2012 x64
- eternalblue_poc.py PoC do Eternalblue para o bug de buffer overflow
- eternalblue_kshellcode_x64.asm Shellcode de kernel x64 para o meu exploit Eternalblue. Este shellcode deve funcionar no Windows Vista e posteriores
- eternalblue_kshellcode_x86.asm Shellcode de kernel x86 para o meu exploit Eternalblue. Este shellcode deve funcionar no Windows Vista e posteriores
- eternalblue_sc_merge.py Script para mesclar shellcodes Eternalblue x86 e x64. O exploit Eternalblue, que suporta tanto x86 como x64, com shellcode mesclado não precisa de detetar a arquitetura do alvo
- eternalchampion_leak.py PoC do Eternalchampion para a parte de fuga de informação
- eternalchampion_poc.py PoC do Eternalchampion para controlar o RIP
- eternalchampion_poc2.py PoC do Eternalchampion para obter execução de código
- eternalromance_leak.py PoC do Eternalromance para a parte de fuga de informação
- eternalromance_poc.py PoC do Eternalromance para escrita fora dos limites (OOB)
- eternalromance_poc2.py PoC do Eternalromance para controlar uma transação que leva a leitura/escrita arbitrária
- eternalsynergy_leak.py PoC do Eternalsynergy para a parte de fuga de informação
- eternalsynergy_poc.py PoC do Eternalsynergy para demonstrar heap spraying com grande pool paginado
- infoleak_uninit.py PoC para fuga de informação a partir de um buffer de dados de transação não inicializado
- mysmb.py Classe SMB do Impacket estendida para explorar bugs do MS17-010 mais facilmente
- npp_control.py PoC para controlar a alocação de nonpaged pool com o comando session setup
- zzz_exploit.py Exploit para Windows 2000 e posteriores (requer acesso a named pipe)
Utilizador anónimo
O utilizador anónimo (null session) obtém mais restrições nas definições predefinidas das novas versões do Windows. Para explorar o SMB do Windows sem autenticação, o seguinte comportamento deve ser tido em conta.
- Desde o Windows Vista, as definições predefinidas não permitem que utilizadores anónimos acedam a qualquer named pipe
- Desde o Windows 8, as definições predefinidas não permitem que utilizadores anónimos acedam à partilha IPC$ (o IPC$ pode estar acessível, mas não se pode fazer muito)
Sobre os exploits da NSA
- Eternalblue requer apenas acesso ao IPC$ para explorar um alvo, enquanto outros exploits também requerem acesso a named pipe. Portanto, o exploit funciona sempre contra Windows < 8 em qualquer configuração (se a porta tcp 445 estiver acessível). No entanto, o Eternalblue tem maior probabilidade de causar a queda do alvo do que outros exploits.
- Eternalchampion requer acesso a named pipe. O exploit não tem hipótese de causar a queda do alvo.
- Eternalromance requer acesso a named pipe. O exploit pode atingir Windows < 8 porque o bug para fuga de informação foi corrigido no Windows 8. O exploit deve ter uma probabilidade de causar a queda do alvo menor do que o Eternalblue. Nunca testei a fiabilidade do exploit.
- Eternalsynergy requer acesso a named pipe. Acredito que este exploit foi modificado a partir do Eternalromance para atingir Windows 8 e posteriores. O Eternalsynergy usa outro bug para fuga de informação e faz alguns truques para encontrar memória executável (não sei como funciona porque li apenas o log de saída e o ficheiro pcap).