
Уязвимость BDU:2020-04016 (CVE-2020-1472) MS-NRPC ОС Windows
Уязвимость BDU:2020-04016 (CVE-2020-1472), также известная как Zerologon, затрагивает протокол Netlogon Remote Protocol (MS-NRPC) в Windows. Её критичность (CVSS 10.0) обусловлена возможностью сброса пароля контроллера домена без аутентификации.
Технический анализ уязвимости
Уровень опасности: 10.0 (Критический)
Вектор атаки: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
-
AV:N (Вектор атаки: Сетевой) – Удалённая эксплуатация через интернет.
-
AC:L (Сложность атаки: Низкая) – Простая реализация без сложных условий.
-
PR:N (Привилегии: Нет) – Доступ к системе не требуется.
-
UI:N (Взаимодействие: Нет) – Участие пользователя не нужно.
-
S:C (Область: Изменённая) – Влияет на другие системы/компоненты.
-
C:H (Конфиденциальность: Высокое) – Полная компрометация данных.
-
I:H (Целостность: Высокое) – Возможность полного изменения данных.
-
A:H (Доступность: Высокое) – Критическое нарушение работы системы.
Интерпретация: Критическая уязвимость (10.0) позволяет удалённо без прав и участия пользователя нарушить конфиденциальность, целостность и доступность системы, затрагивая другие компоненты (S:C). Максимальный риск из-за сетевого вектора, низкой сложности эксплуатации и полного контроля над уязвимыми системами.
Условия эксплуатации
-
Доступ к внутренней сети: Атакующий должен находиться в той же сети, что и контроллер домена (DC).
-
Порт 445/TCP: Требуется доступ к Netlogon через RPC (часто открыт по умолчанию).
-
Уязвимые версии: Windows Server 2008-2019, некоторые версии Linux (через Samba).
Криптографическая ошибка
Уязвимость BDU:2020-04016 возникает из-за некорректной реализации AES-CFB8 в процессе аутентификации Netlogon. При использовании нулевого вектора инициализации (IV) и нулевого ключа, хеш-значение ClientCredential
становится предсказуемым. Это позволяет атакующему подделать аутентификацию.
Анализ общедоступных эксплоитов
Обзор скрипта cve-2020-1472-exploit.py
Рассмотрим код для понимания вектора атаки:
1. Установка соединения с Netlogon
binding = epm.hept_map(dc_ip, nrpc.MSRPC_UUID_NRPC, protocol='ncacn_ip_tcp') rpc_con = transport.DCERPCTransportFactory(binding).get_dce_rpc() rpc_con.connect() rpc_con.bind(nrpc.MSRPC_UUID_NRPC)
Используется библиотека Impacket для создания RPC-соединения с DC.
2. Подделка аутентификации
nrpc.hNetrServerReqChallenge(rpc_con, dc_handle + '\x00', target_computer + '\x00', plaintext) server_auth = nrpc.hNetrServerAuthenticate3(...)
Функция hNetrServerAuthenticate3
принимает нулевой ClientCredential
, что приводит к успешной аутентификации.
3. Сброс пароля DC
request = nrpc.NetrServerPasswordSet2() request['ClearNewPassword'] = b'\x00' * 516
Устанавливает пароль машины DC в пустую строку, используя уязвимый RPC-метод.
Восстановление пароля (restorepassword.py
)
После эксплуатации важно восстановить оригинальный пароль, чтобы избежать проблем с репликацией:
encpassword = nrpc.ComputeNetlogonCredentialAES(self.__password, self.sessionKey) request['ClearNewPassword'] = ... # Оригинальный пароль в зашифрованном виде
Скрипт использует DCSync через Impacket для получения хешей и восстановления состояния.
Условия успешной атаки
-
Отсутствие патчей: DC не обновлен до версий с исправлением (например, август 2020).
-
Доступ к Netlogon: Открытые порты 445/TCP или 135/TCP.
-
Знание NetBIOS-имени DC: Требуется для таргетирования атаки.
Методы защиты
1. Установка обновлений
-
Microsoft: Патчи от августа 2020 и февраля 2021.
-
Samba: Обновление до версий 4.10+, 4.11+.
2. Режим Enforcement
Активация принудительной проверки подлинности Netlogon:
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters" -Name "FullSecureChannelProtection" -Value 1
3. Сетевые ограничения
-
Блокировка RPC-портов (135, 445) для несанкционированных устройств.
-
Использование сегментации сети (VLAN, firewall rules).
4. Мониторинг аномалий
Пример детектирования атаки в SIEM:
EventID: 4742 (Смена пароля учетной записи компьютера) Account Name: DC_NAME$ New Password: (пустое значение)
Библиотека Impacket и её роль
Impacket — фреймворк для работы с сетевыми протоколами, используемый в пентест-инструментах:
-
SecretsDump: Извлечение хешей из DC (используется в связке с Zerologon).
-
ntlmrelayx: Релей атак через NTLM.
