
Introdução de laboratório ao ZeroLogon
Uma configuração de laboratório para testar uma vulnerabilidade do exploit ZeroLogon (CVE-2020-1472). Contém um script Python que utiliza a biblioteca Impacket para testar a vulnerabilidade e uma Máquina Virtual (VM) com Windows Server 2019 configurada como Controlador de Domínio (DC).
O script tenta realizar a bypass de autenticação do Netlogon. Ele será encerrado imediatamente quando a bypass for bem-sucedida, sem realizar quaisquer operações Netlogon. Quando o DC está corrigido, o script de detecção desistirá após enviar um número de pares de chamadas RPC e concluirá que o alvo não é vulnerável (com uma chance de falso negativo de 0,04%).
Opcional
Basta digitar vagrant up para carregar uma compilação vulnerável do Windows Server 2019 como VM.
Em seguida, configure a VM como Controlador de Domínio seguindo este tutorial.
Por fim, lance o ataque no DC (zerologon_tester.py).
Recomenda-se usar a versão Dockerizada deste ataque ou em um ambiente virtual.
Docker option. Run:
# NOTE: On Windows, you may need to enable the `Hyper-V` Wiwndows feature.
# NOTE2: On Windows, you may need to switch to `Linux Containers`.
$ docker build -f Dockerfile . -t zerologon
# This command run the zerologon test on the DC with domain VAGRANT in the address 192.168.33.10
$ docker run zerologon VAGRANT 192.168.33.10
VirtualEnv option. Run:
$ python3 -m virtualenv zerologon
$ zerologon/Scripts/Activate.ps1
# NOTE: This may give you some issues with your firewall!!
$ pip install git+https://github.com/SecureAuthCorp/impacket
$ pip install -r requirements.txt
$ python zerologon_tester.py VAGRANT 192.168.33.10
A saída deste ataque deve se parecer com algo assim:

Este script destina-se apenas a testar a viabilidade do ataque, não explora o servidor de nenhuma outra forma. O script não realiza nenhuma alteração no DC. Se você está curioso sobre como implementar um ataque PoC, confira este artigo ou um similar.
Os alvos do script podem ser usados para atacar um DC ou DC de backup. Provavelmente também funciona contra um DC somente leitura, mas isso não foi testado. O nome do DC deve ser seu nome de computador NetBIOS. Se este nome não estiver correto, o script provavelmente falhará com um erro STATUS_INVALID_COMPUTER_NAME. Um whitepaper sobre esta vulnerabilidade será publicado aqui.
NOTA: Se algo der errado e você receber um erro
STATUS_INVALID_COMPUTER_NAME, executenbtstat -A 192.168.33.10, isso lhe dará uma visão sobre o que está acontecendo naquele endereço. Caso contrário, você sempre pode testar se a máquina está acessível a partir do seu host executando ping (ping 192.168.33.10).NOTA2: Se o ataque falhar, pode ser que a máquina tenha sido atualizada com patches de segurança. Verifique as atualizações e remova qualquer coisa que pareça
Security Patchesa partir de 2020 em diante.