Добавить в корзинуПозвонить
Найти в Дзене
SEBERD IT Base

Атака Kerberoasting в Active Directory: механика, обнаружение и защита

Дисклеймер Материал предназначен для специалистов по информационной безопасности, системных администраторов и разработчиков. Рассматриваются исключительно технологии и методики — принципы работы, архитектура, способы обнаружения и нейтрализации угроз. Статья носит образовательный характер, не содержит инструкций по созданию или распространению вредоносного ПО и не призывает к нарушению законодательства РФ. Ответственность за применение описанных методов лежит на читателе в рамках действующего законодательства. Атака Kerberoasting использует стандартный механизм запроса сервисных билетов в Active Directory. Злоумышленник, действуя под учетной записью обычного пользователя домена, запрашивает сервисный билет (TGS) для учетной записи с SPN и впоследствии может провести подбор пароля в офлайн-режиме. Защита требует выключения устаревших алгоритмов шифрования, внедрения управляемых сервисных учетных записей (GMSA) и непрерывного мониторинга событий 4769 в логах безопасности. В корпоративных
Оглавление

Атака Kerberoasting в Active Directory: механика, обнаружение и защита

Дисклеймер

Материал предназначен для специалистов по информационной безопасности, системных администраторов и разработчиков. Рассматриваются исключительно технологии и методики — принципы работы, архитектура, способы обнаружения и нейтрализации угроз. Статья носит образовательный характер, не содержит инструкций по созданию или распространению вредоносного ПО и не призывает к нарушению законодательства РФ. Ответственность за применение описанных методов лежит на читателе в рамках действующего законодательства.

Атака Kerberoasting использует стандартный механизм запроса сервисных билетов в Active Directory. Злоумышленник, действуя под учетной записью обычного пользователя домена, запрашивает сервисный билет (TGS) для учетной записи с SPN и впоследствии может провести подбор пароля в офлайн-режиме. Защита требует выключения устаревших алгоритмов шифрования, внедрения управляемых сервисных учетных записей (GMSA) и непрерывного мониторинга событий 4769 в логах безопасности.

В корпоративных сетях часто можно встретить ситуации, когда инфраструктура работает годами без существенных изменений. Сервисы настраиваются, учетные записи регистрируются и со временем забываются. Однако устаревшие и невостребованные службы и учетные записи нередко становятся точкой входа для атакующих внутри периметра.

Протокол Kerberos разработан для безопасной аутентификации в распределенных сетях. В реализации Windows любой пользователь домена может без ограничений запросить Kerberos-билет (TGS) для любого объекта с заполненным атрибутом servicePrincipalName. Такая механика не требует эскалированных прав и позволяет получить хеш пароля, зашифрованный сервисной учетной записью, — материал для последующего офлайн-взлома.

Словарь терминов

Active Directory (AD): служба каталогов Microsoft, хранящая сведения обо всех объектах корпоративной сети, включая пользователей, компьютеры, группы и политики. Является центром управления идентификацией для Windows-инфраструктур.

Kerberos: протокол аутентификации, реализующий схему с билетами, которые выдает контроллер домена. Аутентификация проходит без передачи пароля по сети.

KDC (Key Distribution Center): компонент на контроллере домена, выдающий Kerberos-билеты путем взаимодействия сервисов AS (Authentication Service) и TGS (Ticket Granting Service).

TGT (Ticket Granting Ticket): основной билет, выдаваемый пользователю при входе. Служит для получения сервисных билетов без повторной аутентификации.

TGS (Service Ticket): билет на доступ к конкретному сервису. Шифруется ключом сервисной учетной записи.

SPN (Service Principal Name): уникальное имя, привязывающее учетную запись к конкретному сетевому сервису. Например: MSSQLSvc/sql01.corp.local:1433. Kerberos не сможет обработать запрос к сервису без корректного SPN.

Kerberoasting: атака, при которой пользователь домена получает Kerberos-билеты сервисных учетных записей с SPN, затем осуществляет подбор пароля в офлайн-режиме.

RC4_HMAC_MD5: устаревший алгоритм симметричного шифрования. Использует NT-хеш пароля как ключ. Отличается уязвимостью к перебору.

AES256_HMAC_SHA1: современный алгоритм шифрования с использованием 256-битных ключей, получаемых через PBKDF2. Крайне устойчив к атаке перебором.

GMSA (Group Managed Service Account): управляемая сервисная учетная запись с автоматически генерируемым и ротируемым длинным паролем. Kerberoasting для GMSA практически невозможен из-за сложности пароля.

msDS-SupportedEncryptionTypes: атрибут объекта AD, указывающий поддерживаемые алгоритмы шифрования для Kerberos. Если не задан, используется политика домена по умолчанию, которая может включать RC4.

Аутентификация Kerberos начинается с получения пользователем TGT у контроллера домена. Для доступа к сервису (например, SQL Server), клиент отправляет запрос в KDC с указанием нужного SPN. KDC находит в AD учетную запись с соответствующим SPN, шифрует сервисный билет её ключом и возвращает билет клиенту. Дальнейшее взаимодействие с сервисом происходит по этому билету: сервис расшифровывает билет своим ключом и, в случае успеха, предоставляет доступ без передачи пароля по сети.

При отсутствии SPN в AD KDC не сможет определить целевую учетную запись и выдаст ошибку, либо система может переключиться на устаревший протокол NTLM. Неправильная или устаревшая регистрация SPN приводит к ошибкам аутентификации и рискам безопасности.

Сценарий атаки Kerberoasting

Злоумышленник оказывается внутри корпоративной сети с минимальными правами рядового пользователя домена. Но права на запрос атрибутов объектов AD (в т.ч. SPN) есть у любого аутентифицированного пользователя по умолчанию.

  • Шаг 1: Разведка. Сканирование объектов Active Directory на наличие учетных записей с заполненным SPN (легитимный LDAP-запрос).
  • Шаг 2: Запрос TGS-билета. Запрос Kerberos-билета на каждый найденный SPN через стандартный TGS-запрос.
  • Шаг 3: Извлечение хеша. Сохранение зашифрованной части билета (TGS), связанной с паролем сервисного аккаунта.
  • Шаг 4: Офлайн-взлом. Перебор пароля офлайн при помощи мощного оборудования (GPU), вне зоны действия сетевых средств защиты.
  • Шаг 5: Использование пароля. Компрометация сервисной учетной записи, часто с привилегиями администратора.

Проверка наличия SPN в Active Directory

Анализ конфигурации начинается с поиска учетных записей пользователей с SPN. Их пароли часто задаются вручную, редко меняются и обычно слабее автоматически сгенерированных.

Важно: Компьютерные учетные записи также имеют SPN и длинные случайные пароли, сменяемые автоматически каждые 30 дней. Риск взлома минимален. Главную угрозу представляют пользовательские сервисные учетные записи.

# Поиск пользовательских учетных записей с SPN Get-ADUser -Filter {servicePrincipalName -ne "$null"} ` -Properties servicePrincipalName, PasswordLastSet, MemberOf | Select-Object Name, servicePrincipalName, PasswordLastSet, MemberOf | Sort-Object PasswordLastSet

Результат содержит имена, SPN и дату смены пароля. Особое внимание стоит уделить учетным записям, у которых пароль давно не изменялся.

Для комплексного аудита дополнительно проверяются компьютерные учетные записи:

# Все объекты с SPN (включая компьютеры) Get-ADObject -Filter {servicePrincipalName -ne "$null"} ` -Properties servicePrincipalName, objectClass | Select-Object Name, objectClass, servicePrincipalName

Особенно опасно, если пользовательская сервисная учетная запись состоит в группе Domain Admins или другой привилегированной группе:

# Сервисные учетные записи с высокими привилегиями Get-ADUser -Filter {servicePrincipalName -ne "$null"} ` -Properties servicePrincipalName, MemberOf | Where-Object { $_.MemberOf -match "Domain Admins|Enterprise Admins|Schema Admins" } | Select-Object Name, servicePrincipalName, MemberOf

В ходе аудита часто обнаруживаются устаревшие или тестовые учетные записи. Их удаление значительно снижает поверхность атаки.

Устаревшее шифрование RC4: почему это риск

Kerberos поддерживает несколько алгоритмов шифрования, но RC4_HMAC_MD5 признан устаревшим из-за низкой криптостойкости, особенно перед современными мощностями GPU. Брутфорс проверенных словарей с использованием RC4 занимает считанные часы.

Значение атрибута msDS-SupportedEncryptionTypes определяет поддерживаемые алгоритмы для каждой учетной записи. Если он пуст или равен 0, используется политика по умолчанию, где RC4 обычно включен для совместимости. В новых Windows Server (2019+) по умолчанию выбран AES, но в доменах с историей миграции RC4 может оставаться активным.

Проверка атрибута шифрования для конкретной учетной записи:

Get-ADUser -Identity "ServiceAccount" -Properties msDS-SupportedEncryptionTypes | Select-Object Name, msDS-SupportedEncryptionTypes

Значения: 24 — только AES; 4 — только RC4; 0 или пусто — потребуется проверка политики домена.

Включить только AES для сервисного аккаунта:

# Обновление алгоритмов шифрования Set-ADUser -Identity "ServiceAccount" ` -Replace @{"msDS-SupportedEncryptionTypes" = 24}

Замечание: для обновления msDS-SupportedEncryptionTypes используйте только Set-ADUser или Set-ADComputer. Set-ADAccountControl не подходит для этой задачи.

Перед массовым внедрением — тестирование на одной учетной записи. Оценивать логи на ошибки Kerberos с кодом KDC_ERR_ETYPE_NOSUPP (Event ID 14 в журнале System).

Инструменты для получения тикетов и взлома паролей

Для Kerberoasting применяются специализированные open-source-инструменты. В большинстве случаев их используют как пентестеры, так и злоумышленники.

Rubeus

Современный инструмент на C#. Позволяет запрашивать Kerberos-билеты, экспортировать их для перебора и выполнять различные атаки на Kerberos.

Rubeus.exe kerberoast /outputfile:hashes.txt /format:hashcat

Для запроса билетов только с RC4-шифрованием:

Rubeus.exe kerberoast /rc4opsec /outputfile:hashes_rc4.txt

Impacket: GetUserSPNs.py

Набор Python-утилит, работающих с Linux. Скрипт GetUserSPNs.py позволяет получать Kerberos-билеты целевых учетных записей.

python3 GetUserSPNs.py -request -dc-ip 192.168.1.10 DOMAIN/user:password

Результаты сразу можно использовать для перебора в Hashcat/John the Ripper.

Hashcat

Популярный инструмент для перебора паролей по полученным хешам.

# Режим 13100 — Kerberos 5 TGS-REP RC4 hashcat -m 13100 hashes.txt wordlist.txt -r rules/best64.rule # Режим 19700 — Kerberos 5 TGS-REP AES128 hashcat -m 19700 hashes.txt wordlist.txt # Режим 19800 — Kerberos 5 TGS-REP AES256 hashcat -m 19800 hashes.txt wordlist.txt

BloodHound

Инструмент для анализа и визуализации связей и путей эскалации привилегий в AD. Позволяет строить графы доступа сервисных учетных записей и критических точек инфраструктуры.

Признаки компрометации через инструменты

Массированные запросы TGS-билетов к разным сервисам одномоментно с одной рабочей станции — подозрительны. Корреляция аномалий в поведении сервисных аккаунтов помогает выявить атаку на ранней стадии.

Настройка групповых политик для защиты

Для управления используемыми алгоритмами шифрования Kerberos рекомендуется применять групповые политики:

Путь: Computer Configuration → Windows Settings → Security Settings → Local Policies → Security Options → Network security: Configure encryption types allowed for Kerberos

Отключение DES и RC4, включение только AES128 и AES256 гарантирует отказ от устаревших схем шифрования на всем домене.

Этапы внедрения

  1. Аудит: Выгрузить список аккаунтов и проверить их msDS-SupportedEncryptionTypes. Выявить устаревшие системы (Windows Server 2012 и старше).
  2. Обновление клиентов: Исключить использование Windows XP/2003 и старых драйверов, не поддерживающих AES.
  3. Пилотный запуск GPO с аудитом: Включить расширенный аудит Kerberos, отслеживая попытки обращения к RC4.
  4. Мониторинг: Анализировать ошибки аутентификации и выявлять несовместимые системы.
  5. Перевод в enforcing: Запретить RC4.
  6. Реакция на инциденты: Локализовать и обновлять проблемные системы.
  7. Регулярный аудит: Автоматизированные проверки раз в две недели.

GMSA (Group Managed Service Accounts)

GMSA обеспечивает автоматическую смену длинных (120+) случайных паролей сервисных учетных записей — идеальное средство защиты от Kerberoasting.

Создание и внедрение GMSA:

# Настройка корня службы KDS Add-KdsRootKey -EffectiveImmediately # Создание учетной записи GMSA New-ADServiceAccount ` -Name "GMSA_SQLService" ` -DNSHostName "sql01.corp.local" ` -PrincipalsAllowedToRetrieveManagedPassword "SQL01$" ` -ServicePrincipalNames "MSSQLSvc/sql01.corp.local:1433" # Установка на цели Install-ADServiceAccount -Identity "GMSA_SQLService" # Проверка Test-ADServiceAccount -Identity "GMSA_SQLService"

Важный момент: Add-ADServiceAccount не создает GMSA! Используйте New-ADServiceAccount для создания.

Привязка осуществляется в свойствах службы: DOMAINGMSA_SQLService$ (с символом доллара), без ввода пароля вручную.

Анализ логов событий на Kerberoasting

Все попытки преступного Kerberoasting можно выявить через анализ событий в журнале Security на контроллере домена.

Event ID 4769 — запрос сервисного билета

Основное событие для мониторинга Kerberoasting:

Поле Значение Интерпретация Service Name Имя учетной записи Кому выдан билет Ticket Encryption Type 0x17 RC4 — подозрительно Ticket Encryption Type 0x12 AES256 — ожидаемо Failure Code 0x0 Успех выдачи Client Address IP клиента Источник запроса

Event ID 4768 — запрос TGT (AS-REQ)

Важен при выявлении атаки AS-REP Roasting для учетных записей без pre-authentication.

Pre-Authentication Type Значение Интерпретация 0 Отключено Уязвимость 2 Включено Норма

Типичные признаки Kerberoasting

  • Серии событий 4769 от одного клиента за малый промежуток времени
  • Запросы TGS для разных сервисных аккаунтов одним источником
  • RC4 (0x17) для учетных записей, где это не ожидается
  • Активность вне рабочих часов
  • Запросы кидаются не с серверов, а с рабочих станций
  • Отсутствуют успешные аутентификации по запрошенным билетам

Быстрая аналитика на PowerShell

# Поиск массовых RC4-запросов за сутки $StartTime = (Get-Date).AddHours(-24) Get-WinEvent -FilterHashtable @{ LogName = 'Security' Id = 4769 StartTime = $StartTime } | Where-Object { $_.Properties[5].Value -eq '0x17' } | Select-Object TimeCreated, @{N='AccountName'; E={$_.Properties[0].Value}}, @{N='ServiceName'; E={$_.Properties[2].Value}}, @{N='ClientIP'; E={$_.Properties[6].Value}} | Group-Object ClientIP | Sort-Object Count -Descending

Выявляются источники массового сбора тикетов.

Экспорт и архивирование логов

# Экспорт журнала безопасности wevtutil epl Security "C:LogsSecurity_$(Get-Date -Format 'yyyyMMdd').evtx"

Архивы хранятся минимум 90 дней для ретроспективной аналитики.

Контроль целостности логов

Очистка журнала (Event ID 1102) — повод для расследования. Чтобы исключить подмену и удаление, логи должны отправляться централизованно (SIEM, syslog) в реальном времени.

Корреляционные правила для SIEM

Правила корреляции — необходимая мера для автоматического реагирования:

ПРАВИЛО: Массовый сбор Kerberos-билетов (4769, шифрование RC4) УСЛОВИЕ: Event ID = 4769 TicketEncryptionType = 0x17 (RC4) ServiceName НЕ заканчивается на "$" >5 событий от одного ClientAddress за 1 минуту ДЕЙСТВИЕ: Уведомление аналитика Изоляция источника ИСКЛЮЧЕНИЯ: Серверы мониторинга и легальные сервисы

Реагирование на Kerberoasting

  • Изоляция источника: Блокировка сетевого доступа рабочей станции, forensic сохранение образа памяти.
  • Сброс паролей сервисных аккаунтов: Все компрометированные тикеты аннулируются после смены пароля.
  • Оповещение владельцев сервисов: Минимизировать простой легальных ресурсов.
  • Анализ журналов: Проверка последующего использования учетных записей и оценка потенциального ущерба.
  • Переход на GMSA: Устранить человеческий фактор паролей сервисных учетных записей.

Имитация атаки для проверки защиты

Рекомендовано проводить аудит уязвимых сервисных аккаунтов с письменного разрешения.

# Выявление уязвимых учетных записей Import-Module ActiveDirectory $VulnerableAccounts = Get-ADUser -Filter { servicePrincipalName -ne "$null" } -Properties servicePrincipalName, PasswordLastSet, msDS-SupportedEncryptionTypes | Select-Object Name, servicePrincipalName, PasswordLastSet, @{N='EncryptionTypes'; E={ switch ($_.msDS-SupportedEncryptionTypes) { 4 { "RC4 only — CRITICAL" } 8 { "AES128 only — OK" } 24 { "AES128+AES256 — OK" } 0 { "Not set — check domain default" } $null { "Not set — check domain default" } default { "Mixed: $_" } } }}, @{N='PasswordAgeDays'; E={ (New-TimeSpan -Start $_.PasswordLastSet -End (Get-Date)).Days }} | Sort-Object PasswordAgeDays -Descending $VulnerableAccounts | Where-Object { $_.EncryptionTypes -match "RC4|Not set" } | Format-Table -AutoSize

Аккаунты, у которых установлен RC4 и возраст пароля более 90 дней, требуют срочного вмешательства.

Сводная таблица мер защиты

Модель угроз: причины успеха атаки

Kerberoasting, это злоупотребление стандартным поведением Kerberos, а не результат эксплуатации уязвимости. Проблема возникает в результате сочетания следующих факторов:

  1. Слабые пароли сервисных учетных записей, часто подвергающиеся перебору.
  2. Устаревшее (RC4) шифрование, что делает перебор легким и быстрым.
  3. Избыточные привилегии сервисных учетных записей (например, членство в Domain Admins).

Исключение хотя бы одного из этих факторов существенно снижает риск. Комплексное решение всех — минимальный стандарт безопасности для современных AD-доменов.

Осознанное понимание механики Kerberos обеспечивает не формальное соответствие чеклисту, а действительно эффективную защиту инфраструктуры.