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

Уязвимость BDU:2021-05532 (CVE-2021-42278) Active Directory Windows

Уязвимость BDU:2021-05532 (CVE-2021-42278), также известная как Active Directory Elevation of Privilege, связана с некорректной обработкой имен машинных учетных записей в службе Kerberos. Злоумышленник может создать временную машинную учетную запись без символа $, получить для нее TGT (Ticket Granting Ticket), затем переименовать аккаунт и запросить TGS (Ticket Granting Service) для доменного контроллера. Это позволяет эскалировать привилегии до уровня администратора домена.

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

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

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

  • AC:H (Сложность эксплуатации) – Высокая: требуется точная последовательность действий.

  • PR:L (Уровень привилегий) – Низкий: нужна базовая аутентификация в домене.

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

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

  • C:H/I:H/A:H (Последствия) – Полный компромисс конфиденциальности, целостности и доступности.


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

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

  2. Учетные данные: требуется учетная запись с правами добавления новых компьютеров в домен (по умолчанию это разрешено аутентифицированным пользователям).

  3. Уязвимые версии: Windows Server 2008–2022 (включая Server Core), если не установлены патчи ноября 2021 года.


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

Общедоступный эксплоит на Python использует библиотеку Impacket для взаимодействия с протоколами Kerberos, SMB и LDAP. Рассмотрим ключевые этапы кода эксплоита для понимания работы вектора атаки с использованием уязвимости BDU:2021-05532 (CVE-2021-42278).

1. Создание машинной учетной записи

Эксплоит добавляет новую машинную учетную запись через SAMR или LDAPS. Имя аккаунта совпадает с именем доменного контроллера, но без символа $ (например, DC вместо DC$):

# Генерация имени компьютера  
def generateComputerName(self):  
    return "DESKTOP-" + random.choice(string.ascii_uppercase + string.digits) * 8 + "$"  

# Добавление через SAMR  
samr.hSamrCreateUser2InDomain(dce, domainHandle, self.computerName, ...)  

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

Используется метод getKerberosTGT из Impacket для запроса билета TGT:

tgt, cipher, oldSessionKey, sessionKey = getKerberosTGT(  
    userName, ma.computerPassword, ma.domain, "", "", kdcHost=ma.kdcHost  
)  

3. Переименование учетной записи

Аккаунт переименовывается, чтобы освободить исходное имя (например, в DESKTOP-XXXXXXX$):

def rename(self):  
    self.action = "rename"  
    self.run()  # Вызов SAMR/LDAPS для изменения sAMAccountName  

4. Запрос TGS через S4U2Self

Эксплоит использует расширение S4U2Self для получения TGS от имени администратора:

tgs, cipher, oldSessionKey, sessionKey = S4U2Self(  
    tgt, ma.computerName, ma.domain, options.spn,  
    options.impersonate, cipher, sessionKey, options.dc_ip  
)  

При этом KDC, не найдя аккаунт DC, автоматически добавляет $ и выдает тикет для доменного контроллера DC$.


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

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

  2. Ограничение прав:

    • Удалить право Authenticated Users на добавление компьютеров в домен.

    • Использовать GPO для запрета создания машинных аккаунтов без символа $.

  3. Мониторинг событий:

    • События 4741 (создание компьютера) и 4781 (переименование аккаунта) в журналах Active Directory.

  4. LAPS: Локальное хранение паролей администратора с помощью Local Administrator Password Solution.

  5. Сегментация сети: Ограничение доступа к доменному контроллеру с помощью брандмауэров.

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