
CVE-2020-1472
CVE-2020-1472 — реализация уязвимости Zero Logon на Python
Описание
- Скрипт на Python, использующий библиотеку Impacket для проверки CVE-2020-1472 — уязвимости Zerologon (за авторством исследования Secura).
- Проблема связана с протоколом Netlogon Remote Protocol, доступным на контроллерах домена Windows и используемым для различных задач, связанных с аутентификацией пользователей и машин.
- В частности, неисправность заключается в использовании шифрования AES-CFB8 для сеансов Netlogon. Стандарт AES-CFB8 требует, чтобы каждый «байт» открытого текста имел рандомизированный вектор инициализации (IV), что предотвращает угадывание паролей злоумышленниками. Однако функция ComputeNetlogonCredential в Netlogon устанавливает IV в фиксированные 16 бит — не рандомизированные — то есть злоумышленник может контролировать расшифрованный текст.
- «Из-за некорректного использования режима AES можно подделать личность любой учетной записи компьютера (включая [контроллер домена]) и установить пустой пароль для этой учетной записи в домене», — отмечают исследователи Secura.

- Скрипт пытается выполнить обход аутентификации Netlogon. Скрипт завершится при успешном выполнении обхода.
- Если контроллер домена исправлен, скрипт остановится после отправки 2000 пар RPC-вызовов (цель не уязвима с вероятностью ложного отрицательного результата 0,04%).
- Обратите внимание, что по умолчанию это меняет пароль учетной записи контроллера домена. Это позволяет выполнить DCSync, но также нарушает связь с другими контроллерами домена.
- Дополнительная информация и оригинальное исследование здесь
Предварительные требования
или скачайте релиз impacket здесь. Распакуйте его и в каталоге, куда вы его поместили, выполните:
Использование
Учитывая контроллер домена с именем DC-NAME и IP-адресом X.X.X.X, запустите скрипт следующим образом:
python cve-2020-1472.py DC-NAME X.X.X.X
Имя DC — это сетевое имя NetBIOS. Если это имя неверно, скрипт завершится с ошибкой
STATUS_INVALID_COMPUTER_NAME.