
CVE-2020-1472
CVE-2020-1472 - Implementação em Python da vulnerabilidade Zero Logon
Descrição
- Um script em Python que utiliza a biblioteca Impacket para testar a vulnerabilidade CVE-2020-1472 - Zerologon (créditos à pesquisa da Secura).
- A falha decorre do Netlogon Remote Protocol, disponível em controladores de domínio Windows, que é usado para várias tarefas relacionadas à autenticação de utilizadores e máquinas.
- Especificamente, o problema existe no uso da encriptação AES-CFB8 para sessões Netlogon. O padrão AES-CFB8 exige que cada "byte" de texto simples tenha um vetor de inicialização (IV) aleatório, impedindo que atacantes adivinhem palavras-passe. No entanto, a função ComputeNetlogonCredential do Netlogon define o IV como um valor fixo de 16 bits – não aleatório – o que significa que um atacante poderia controlar o texto decifrado.
- "Devido ao uso incorreto de um modo de operação AES, é possível falsificar a identidade de qualquer conta de computador (incluindo a do próprio [Controlador de Domínio]) e definir uma palavra-passe vazia para essa conta no domínio", segundo os investigadores da Secura.

- O script tenta realizar a bypass de autenticação Netlogon. O script termina quando a bypass é bem-sucedida.
- Quando um controlador de domínio está corrigido, o script para após enviar 2000 pares de chamadas RPC (o alvo não é vulnerável com uma probabilidade de falso negativo de 0,04%).
- Note que, por predefinição, isto altera a palavra-passe da conta do controlador de domínio. Isto permite DCSync, mas também quebra a comunicação com outros DCs.
- Mais informações e pesquisa original aqui
Pré-requisitos
pip install impacket
ou Descarregue a versão do impacket aqui. Descompacte-a e, no diretório onde a colocou, execute:
pip install .
Utilização
Dado um controlador de domínio com o nome DC-NAME e endereço IP X.X.X.X, execute o script da seguinte forma:
python cve-2020-1472.py DC-NAME X.X.X.X
O nome do DC é o nome NetBIOS do computador. Se este nome não estiver correto, o script falhará com um erro
STATUS_INVALID_COMPUTER_NAME.