Уязвимость реализации протокола Netlogon Remote Protocol (MS-NRPC)
Уязвимость реализации протокола Netlogon Remote Protocol (MS-NRPC)
Категория: Программы Теги: Уязвимости Опубликовано: 15 мая 2025

Уязвимость 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

  1. AV:N (Вектор атаки: Сетевой) – Удалённая эксплуатация через интернет.

  2. AC:L (Сложность атаки: Низкая) – Простая реализация без сложных условий.

  3. PR:N (Привилегии: Нет) – Доступ к системе не требуется.

  4. UI:N (Взаимодействие: Нет) – Участие пользователя не нужно.

  5. S:C (Область: Изменённая) – Влияет на другие системы/компоненты.

  6. C:H (Конфиденциальность: Высокое) – Полная компрометация данных.

  7. I:H (Целостность: Высокое) – Возможность полного изменения данных.

  8. 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 для получения хешей и восстановления состояния.


Условия успешной атаки

  1. Отсутствие патчей: DC не обновлен до версий с исправлением (например, август 2020).

  2. Доступ к Netlogon: Открытые порты 445/TCP или 135/TCP.

  3. Знание 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.

Алексей Черемных Алексей Черемных
69