1. Архитектура безопасности Active Directory и методология глубокой разведки
Архитектура безопасности Active Directory и методология глубокой разведки
В 2021 году в ходе одного из крупнейших инцидентов безопасности злоумышленники получили доступ к контроллеру домена через цепочку, которая началась с забытого сервисного аккаунта с избыточными правами на чтение контейнера Configuration. Многие системные администраторы полагают, что Active Directory (AD) защищена по умолчанию, пока в ней нет явных дыр вроде пустых паролей. Однако для эксперта по пентесту AD — это не просто база данных пользователей, а сложнейший граф взаимосвязей, где легитимные функции протоколов становятся инструментами компрометации. Понимание того, как именно структурированы объекты и как работает репликация, позволяет атакующему «видеть сквозь стены» корпоративной сети еще до того, как будет отправлен первый эксплойт.
Фундамент безопасности: логическая структура и границы доверия
Прежде чем переходить к инструментам разведки, необходимо переосмыслить архитектуру AD с точки зрения атакующего. В классическом администрировании лес (Forest) считается границей безопасности. В пентесте это утверждение принимается как аксиома: если вы скомпрометировали корень леса, вы владеете всеми доменами внутри. Однако обратное не всегда верно — компрометация дочернего домена не всегда ведет к мгновенному захвату леса, если не эксплуатируются специфические механизмы вроде SID History.
Критически важным элементом является раздел каталога Configuration. Он реплицируется между всеми контроллерами домена в лесу. Для пентестера это «золотая жила»: здесь хранятся данные о сайтах, подсетях и, что более важно, о сервисах, интегрированных с AD (например, Exchange или SCCM). Если вы видите в конфигурации следы Exchange, вы автоматически расширяете поверхность атаки на специфические группы доступа вроде Exchange Windows Permissions, которые исторически имеют опасные привилегии (WriteDACL) на объект домена.
Второй столп — это Global Catalog (GC). Это частичная копия всех объектов леса, доступная для поиска. При разведке пентестер использует запросы к GC (порт 3268/3269) для поиска пользователей и групп в других доменах того же леса без необходимости устанавливать прямое соединение с их контроллерами. Это позволяет оставаться вне поля зрения некоторых систем мониторинга, настроенных на отслеживание аномальных запросов к локальным DC.
Модель безопасности объектов и дескрипторы доступа
В основе безопасности AD лежит модель управления доступом (Windows Access Control Model). Каждый объект в AD имеет дескриптор безопасности (Security Descriptor), который содержит списки управления доступом (ACL).
Для экспертного пентеста критически важно различать два типа списков:
Большинство администраторов фокусируются на членстве в группах (Domain Admins, Enterprise Admins), но упускают из виду атомарные права доступа (ACE — Access Control Entries). Например, право GenericAll на объект пользователя позволяет злоумышленнику сбросить ему пароль или изменить его ServicePrincipalName (SPN), что ведет к атакам типа Kerberoasting.
Особое внимание стоит уделить наследованию. В AD объекты в организационных юнитах (OU) наследуют права от родительских контейнеров. Атакующий ищет «разрывы» в этой логике или избыточные права, делегированные на уровне OU. Если учетная запись обычного специалиста техподдержки имеет право WriteProperty на OU с серверами, он может изменить атрибуты компьютерных объектов, что в конечном итоге позволит выполнить код на этих серверах.
Методология глубокой разведки: от пассивного сбора к графам
Разведка в Active Directory делится на два этапа: перечисление (Enumeration) и анализ связей. На экспертном уровне мы не просто запускаем скрипты, а имитируем поведение легитимных приложений, использующих протокол LDAP.
LDAP как основной инструмент разведки
LDAP (Lightweight Directory Access Protocol) — это язык, на котором говорит AD. Большинство инструментов (BloodHound, SharpHound, adPEAS) являются лишь обертками над LDAP-запросами. Глубокая разведка начинается с понимания фильтров поиска.
Пример сложного фильтра для поиска учетных записей, которые не требуют предварительной аутентификации Kerberos (уязвимы к AS-REP Roasting):
(&(objectCategory=person)(objectClass=user)(userAccountControl:1.2.840.113556.1.4.803:=4194304))
Здесь используется идентификатор 1.2.840.113556.1.4.803, известный как LDAP_MATCHING_RULE_BIT_AND. Это позволяет выполнять побитовое сравнение атрибута userAccountControl (UAC). Число 4194304 соответствует флагу DONT_REQ_PREAUTH. Умение составлять такие запросы вручную позволяет пентестеру обходить ограничения автоматизированных утилит и искать нестандартные векторы.
Использование BloodHound и теория графов
BloodHound произвел революцию в пентесте AD, переведя анализ из плоскости списков в плоскость графов. Он визуализирует пути атаки, которые невозможно заметить глазом. Например:
* Пользователь А входит в группу Б.
* Группа Б имеет право GenericWrite на объект компьютера В.
* На компьютере В активна сессия администратора домена.
Для эксперта BloodHound — это не «нажми кнопку, получи результат», а база данных на языке Cypher. Профессионалы пишут собственные запросы к базе Neo4j, чтобы найти уникальные аномалии. Например, поиск всех пользователей, которые имеют права на изменение GPO, примененных к контроллерам домена:
Такой подход позволяет выявить критические цепочки еще на этапе разведки, не совершая ни одного агрессивного действия в сети.
Анализ протоколов аутентификации и их слабых мест
Разведка не ограничивается объектами в базе LDAP. Необходимо понимать, как именно происходит общение между клиентом и сервером. В современных сетях сосуществуют Kerberos и NTLM, и каждый из них предоставляет свои возможности для сбора данных.
Нюансы Kerberos в разведке
Kerberos — основной протокол аутентификации в AD. С точки зрения разведки он интересен процессом запроса билетов. Когда мы запрашиваем Service Ticket для определенного SPN (Service Principal Name), контроллер домена не проверяет, есть ли у нас права на доступ к этому сервису — он просто выдает зашифрованный билет, если учетная запись сервиса существует.
Это позволяет проводить «сканирование портов без сканирования портов». Вместо того чтобы стучаться на каждый сервер по порту 1433 (MSSQL), мы можем запросить у DC список всех SPN, начинающихся на MSSQLSvc/. DC сам отдаст нам список всех SQL-серверов в организации. Это абсолютно легитимный трафик, который крайне сложно отличить от работы обычного приложения.
NTLM и его роль в современном AD
Несмотря на попытки Microsoft отказаться от NTLM, он остается в сетях для обеспечения совместимости. Разведка NTLM-трафика позволяет выявить:
Скрытая разведка: обход механизмов обнаружения
На экспертном уровне критически важно минимизировать «шум». Современные решения класса EDR (Endpoint Detection and Response) и приманки (Honeytokens) настроены на поиск типичных действий пентестера.
Борьба с Honeytokens
Honeytokens — это поддельные объекты в AD (например, пользователь sql_admin_svc), которые не используются в реальности. Любое обращение к такому объекту (запрос SPN или попытка чтения атрибутов) вызывает мгновенное оповещение службы безопасности.
Как их вычислить?
* Анализ атрибута whenCreated: часто приманки создаются пачками в одно время.
* Отсутствие активности: у реального пользователя заполнено поле lastLogon, есть членство в группах, описание. Приманки часто выглядят слишком «стерильно».
* Анализ badPwdCount: если у пользователя 0 неудачных попыток входа за 5 лет — это подозрительно.
Ограничение скорости запросов (Throttling)
Массированный запрос всех данных через SharpHound создает огромный объем трафика к контроллеру домена по порту 389/636. Эксперты используют модульные инструменты (например, ldapsearch с задержками) или настраивают BloodHound на сбор только определенных типов данных (например, только Group, исключая LoggedOn), чтобы снизить вероятность обнаружения.
Анализ доверительных отношений (Trusts)
Разведка в крупных инфраструктурах неизбежно сталкивается с понятием леса и доверия. Существует несколько типов доверительных отношений: * Parent-Child: автоматическое двустороннее доверие внутри леса. * External Trust: доверие между доменами в разных лесах (обычно не транзитивное). * Forest Trust: доверие между двумя лесами.
Для пентестера важно определить направление доверия (Direction) и его транзитивность. Если домен А доверяет домену Б (Direction: Bi-directional), это означает, что пользователи из Б могут аутентифицироваться в А. Разведка через Get-DomainTrust (PowerView) позволяет построить карту экспансии. Особое внимание уделяется атрибуту Selective Authentication. Если он включен, то простого наличия доверия недостаточно для доступа — необходимо явное разрешение на конкретных ресурсах.
Инвентаризация групповых политик (GPO)
GPO — это не только способ настройки системы, но и мощнейший вектор атаки. Разведка GPO на начальном этапе позволяет понять:
Restricted Groups или Preferences.SYSVOL) зашифрованные пароли (cpassword). Хотя Microsoft выпустила патч, закрывающий эту уязвимость в 2014 году, в реальных сетях до сих пор встречаются старые GPO с забытыми учетными данными.Чтение SYSVOL — это пассивное действие. Любой аутентифицированный пользователь имеет право читать содержимое этой папки. Анализ .xml и .ini файлов внутри SYSVOL может дать информацию о запланированных задачах (Scheduled Tasks), которые запускаются от имени привилегированных пользователей.
Работа с контейнером Managed Service Accounts (MSA)
Современные версии AD используют MSA и gMSA (Group Managed Service Accounts) для автоматизации управления паролями сервисов. С точки зрения безопасности это хорошо, так как пароли длинные и сложные. Однако разведка может выявить, какие компьютеры имеют право запрашивать пароль для конкретной gMSA. Если вы скомпрометировали такой компьютер, вы можете извлечь пароль gMSA и действовать от имени сервиса в сети. Поиск таких связей через атрибут msDS-AllowedToRetrieveManagedPassword — обязательный пункт в чек-листе глубокой разведки.
Логика построения цепочки атаки на основе разведки
Завершая этап разведки, пентестер должен иметь перед собой не просто список уязвимостей, а стратегическую карту.
Рассмотрим сценарий:
GenericWrite на объект GPO.Логический вывод: вместо того чтобы пытаться брутфорсить пароль сервиса (что шумно и долго), можно попробовать изменить GPO, чтобы внедрить свой скрипт на машины администраторов при следующем обновлении политик. Это и есть экспертный подход: использование архитектурных особенностей AD для построения путей с минимальным сопротивлением.
Разведка — это непрерывный процесс. Даже после получения прав локального администратора на первой захваченной машине, цикл разведки повторяется, но уже с использованием новых инструментов (например, чтение памяти процесса lsass.exe или поиск токенов доступа), что позволяет двигаться дальше по графу сети.
Вся мощь Active Directory кроется в её связности. И именно эту связность мы будем использовать в следующих главах для реализации атак на протоколы аутентификации и механизмы делегирования.