Служба каталогов
Что надо знать аналитику SOC об Active Directory, чтобы эффективно мониторить и выявлять атаки
Служба каталогов и LDAP
Служба каталогов (Directory Service) — это специализированная база данных, которая хранит информацию об объектах в сети, таких как пользователи, компьютеры, принтеры и другие ресурсы. Она обеспечивает централизованное управление этими объектами, а также их аутентификацию и авторизацию.
Некоторые примеры службы каталогов:
Active Directory (AD) - наиболее распространённая служба каталогов от Microsoft.
OpenLDAP - открытая реализация LDAP-сервера, часто используется в Linux-средах
FreeIPA - решение на основе OpenLDAP
Azure Active Directory (Azure AD, теперь Microsoft Entra ID) – облачная служба от Microsoft, интегрируется с локальным AD.
Служба каталогов как правило использует протокол LDAP (Lightweight Directory Access Protocol) для доступа к данным.
LDAP (Lightweight Directory Access Protocol) — это протокол для доступа к службам каталогов. Он позволяет клиентам запрашивать и изменять данные, хранящиеся в каталоге, таких как информация о пользователях, группах, компьютерах и других объектах.
Основные компоненты LDAP
Объекты:
Каждый элемент в каталоге (пользователь, группа, компьютер) представлен как объект.
Объекты имеют уникальный идентификатор (DN — Distinguished Name).
Distinguished Name (DN):
Уникальный путь к объекту в каталоге.
Пример:
cn=JohnDoe,ou=Users,dc=example,dc=com— объект "JohnDoe" в организационном подразделении "Users" домена "example.com".
Атрибуты:
Объекты состоят из атрибутов, которые хранят информацию (например,
cn— common name,mail— электронная почта).Для разных типов объектов существуют разные атрибуты.
для получения полного списка атрибутов LDAP объекта (например, пользователя, группы или компьютера) из Active Directory можно использовать следующие команды:
Get-ADObject -Identity "DN_объекта" -Properties *
Схема (Schema):
Определяет типы объектов и их атрибуты.
Например, схема может указывать, что объект "пользователь" должен иметь атрибуты
cn,mail,uid.Получить список всех возможных атрибутов схемы Active Directory
Get-ADObject -SearchBase (Get-ADRootDSE).schemaNamingContext -Filter {objectClass -eq "attributeSchema"} -Properties * | Select-Object name, lDAPDisplayName
Атакующие используют протокол LDAP для разведки и поиска уязвимостей, таких как слабые права доступа или неправильно настроенные объекты.
Популярные инструменты: BloodHound, ldapsearch, AD Explorer, Powerview. Также инфомацию из домена можно получить, используя встроенные утилиты Windows: модуль ActiveDirectory Powershell, net.exe.
Домен Active Directory
Домен — это логическая группа компьютеров, пользователей и других объектов, которые управляются централизованно с помощью службы каталогов, такой как Active Directory.
Ключевые элементы домена, которые важны для понимания его структуры и функционирования.
Контроллеры домена (Domain Controllers, DC) - cерверы, которые управляют доменом и хранят базу данных Active Directory.
Основные функции:
Аутентификация пользователей. (Kerberos — протокол аутентификации)
Хранение информации об объектах домена. (LDAP — протокол доступа к каталогу)
Репликация данных между контроллерами домена. (Механизмы реплекации используются для атак DCShadow и DCSync).
Также на первичном контроллере домена обычно находится DNS-сервер для разрешения имен.
DNS и разрешение именОсновной контроллер и FSMO-роли
Контроллеры домена в Active Directory (AD) в большинстве случаев являются равноправными участниками репликации и могут выполнять одинаковые функции, включая запись и изменение данных в базе AD. Такая модель называется мультимастеровой репликацией (multimaster replication), где каждый контроллер домена может вносить изменения, которые затем реплицируются на другие контроллеры.
Однако в AD существуют операции, которые не могут выполняться одновременно на нескольких контроллерах домена, чтобы избежать конфликтов. Для этих задач выделены специальные роли — FSMO (Flexible Single Master Operations), которые назначаются уникальным контроллерам домена в лесу или домене. Всего таких ролей пять:
Schema Master (мастер схемы) - управляет изменениями схемы Active Directory (например, добавление новых атрибутов). Изменять схему может только DC с этой ролью.
Domain Naming Master (мастер именования доменов) - контролирует создание и удаление доменов в лесу.
Infrastructure Master (мастер инфраструктуры) - отвечает за обновление ссылок между доменами (например, если пользователь из одного домена добавлен в группу другого).
RID Master (мастер RID) - генерирует RID (Relative Identifiers) для новых объектов (пользователей, групп, компьютеров). Без него нельзя создавать новые объекты.
PDC Emulator (эмулятор основного контроллера домена) - отвечает за время, пароли, блокировки аккаунтов и GPO
FSMO роли можно перенести с одного контроллера на другой. Либо захватить.
Действие
Когда использовать
Риски
Transfer (перенос)
Если старый DC доступен и исправен.
Безопасно.
Seize (захват)
Если старый DC недоступен (например, сгорел).
Требует удаления старого DC из домена!
Active Directory не предусматривает автоматического захвата FSMO-ролей. Это делается только вручную для предотвращения конфликтов. Сделать это можно через PowerShell (требует модуль AD):
Move-ADDirectoryServerOperationMasterRole -Identity "НОВЫЙ-DC" -OperationMasterRole PDCEmulator, RIDMaster, InfrastructureMaster, SchemaMaster, DomainNamingMaster -ForceКлюч -Force выполняет захват (seize), а не перенос.
SYSVOL, NETLOGON, NTDS
В Active Directory (AD) есть несколько системных папок, которые играют ключевую роль в работе домена. Они хранят критически важные данные, такие как групповые политики (GPO), скрипты входа, службы аутентификации и репликации.
SYSVOL (\\<domain>\SYSVOL\<domain>\) - Сетевая папка, которая реплицируется между всеми контроллерами домена. Она хранит групповые политики (GPO) в формате XML, скрипты входа/выхода и другие общие файлы домена (например, файлы конфигурации для всех компьютеров домена).
Многие администраторы хранят пароли в GPO (например, для автоматической настройки служб). Эти пароли можно извлечь.
Если злоумышленник получает доступ на запись в SYSVOL, он может подменить logon.bat и выполнить код на всех компьютерах домена.
NETLOGON (\\<domain>\NETLOGON\ или C:\Windows\SYSVOL\sysvol<domain>\SCRIPTS) - Сетевая папка, используемая для хранения скриптов входа в домен (Logon Scripts), которые выполняются при входе пользователя в систему.
Доступна всем аутентифицированным пользователям по умолчанию.
Атакующий может искать пароли в скриптах.
NTDS (C:\Windows\NTDS) - хранит:
Базу данных AD, все объекты домена (пользователи, группы, компьютеры),
Файлы журналов транзакций (edb*.log) – для целостности данных.
Кэш Kerberos-билетов (если включено кэширование).
Злоумышленник с правами репликации может выгрузить все хэши паролей всех пользователей домена.
Захват домена: NTDS.dit, DCSync, DCShadowПользователи (Users)
Учётные записи, которые представляют физических лиц или службы. Пользователи могут быть обычными или привилегированными (например, члены групп "Domain Admins" или "Enterprise Admins")
Основные атрибуты:
sAMAccountName— логин пользователя.userPrincipalName(UPN) — уникальный идентификатор (например,user@domain.com). Для сервисных учетных записей еще используется SPN.memberOf— группы, в которые входит пользователь.
Что интересно атакующему:
Привилегированные учётные записи (например, членов групп "Domain Admins").
Анализ членства в группах для поиска путей повышения привилегий.
Поиск неактивных или устаревших учётных записей, которые могут быть скомпрометированы (Информация о последнем входе (lastLogon) и смене пароля (pwdLastSet)).
Компьютеры (Computers)
Учётные записи, представляющие компьютеры, присоединённые к домену.
sAMAccountName— имя компьютера (заканчивается на$, например,PC01$).
Что интересно атакующему:
Информация о настройках делегирования, таких как Unconstrained Delegation, Constrained Delegation и Resource-Based Constrained Delegation.
Информация о компьютерах, на которых используется LAPS. Атрибуты, связанные с LAPS, такие как ms-Mcs-AdmPwd.
Группы (Groups)
Коллекции пользователей, компьютеров или других групп, которые упрощают управление правами доступа.
Типы групп:
Security Groups — используются для управления доступом к ресурсам.
Distribution Groups — используются для рассылки сообщений (например, почтовые рассылки).
Примеры групп:
Domain Admins — полный контроль над доменом.
Enterprise Admins — полный контроль над всеми доменами в лесу.
Domain Users — все пользователи домена.
Что интересно атакующему: Группы с высокими привилегиями (например, "Domain Admins", "Enterprise Admins"). Группы, которые имеют опасные права на другие объекты (например, право изменять членство в других группах). Пользователи, которые могут быть добавлены в привилегированные группы.
Опасные права на объекты
В Active Directory (AD) права на объекты определяют, какие действия могут выполнять пользователи или группы над определёнными объектами. Эти права задаются через ACL (Access Control List) — списки управления доступом, которые привязаны к каждому объекту.
Опасные права:
GenericAll: Даёт полный контроль над объектом, включая изменение атрибутов, добавление в группы и удаление объекта. Атакующий может изменить пароль пользователя, добавить себя в привилегированные группы или удалить объект.
GenericWrite: Позволяет изменять атрибуты объекта, но не даёт полного контроля. Может быть использовано для изменения членства в группах или других атрибутов, что позволяет повысить привилегии.
WriteDACL: Позволяет изменять список управления доступом (ACL) объекта. Атакующий может изменить права доступа к объекту, предоставив себе дополнительные привилегии.
WriteOwner: Позволяет изменить владельца объекта. Атакующий может стать владельцем объекта и затем изменить его ACL или другие атрибуты.
Примеры эксплуатации:
GenericAll на группу "Domain Admins":
Атакующий может добавить себя в группу "Domain Admins" и получить полный контроль над доменом.
WriteDACL на объект пользователя:
Атакующий может изменить ACL пользователя, предоставив себе право GenericAll, а затем изменить пароль пользователя.
WriteOwner на объект компьютера:
Атакующий может стать владельцем объекта компьютера, изменить его ACL и затем использовать его для атак.
GenericWrite на группу "IT Support":
Атакующий может добавить себя в группу "IT Support", которая имеет доступ к критически важным ресурсам.
Организационные подразделения (Organizational Units, OU)
Контейнеры для группировки объектов (пользователей, групп, компьютеров) в домене.
Зачем нужны:
Упрощение управления объектами.
Применение групповых политик (GPO) к определённым группам объектов.
Пример:
OU=Sales,DC=example,DC=com— подразделение для отдела продаж.
Групповые политики (Group Policy Objects, GPO)
Групповые политики используются для централизованного управления настройками пользователей и компьютеров в домене.
Они позволяют, например, ограничить доступ к определённым функциям операционной системы, настроить параметры безопасности или автоматически устанавливать программное обеспечение.
GPO могут быть привязаны к домену, сайту или организационному подразделению (OU).
Что интересно атакующему: Поиск слабых настроек безопасности в GPO.
Политики, которые могут быть использованы для распространения вредоносного ПО или повышения привилегий. Атакующий с правами на редактирование GPO может добавить локального администратора на все компьютеры внедрить постоянный бекдор (через автозагрузку), отключить защиту (например, Defender) и многое другое.
Администраторы часто хранят пароли в настройках GPO (например, для автоматического подключения сетевых дисков или запуска служб). Эти пароли сохраняются в файлах Groups.xml, Services.xml и других в зашифрованном виде, но ключ шифрования известен (используется AES-256 с фиксированным ключом MS-SAM).
Атакующие могут извлечь эти пароли с помощью инструментов, таких как Get-GPPPassword.
Инструменты для эксплуатации GPO
SharpGPOAbuse
Внедрение вредоносных настроек через GPO.
PowerSploit (Get-GPPPassword)
Извлечение паролей из GPO.
Grouper2
Анализ GPO на уязвимости.
Лес (Forest) и Дерево (Tree)
Лес (Forest) - это наивысший уровень логической структуры AD, состоящий из одного или нескольких доменов, объединённых общими:
Схемой (Schema) — определяет типы объектов (пользователи, компьютеры и т. д.).
Конфигурацией — настройки сайтов, репликации.
Глобальным каталогом (Global Catalog) — содержит частичную информацию обо всех объектах леса.
Каждый лес имеет уникальное имя (например,
contoso.com).Дерево (Tree) - Иерархия доменов, которые имеют общее корневое доменное имя (например,
example.comиsales.example.com). Все домены в дереве автоматически доверяют друг другу (двусторонние транзитивные trusts).
Доверительные отношения (Trusts)
Механизмы, которые позволяют доменам взаимодействовать друг с другом. Например, пользователи из домена A могут получать доступ к ресурсам в домене B, если между ними установлено доверие.
Типы доверия:
Одностороннее — один домен доверяет другому, но не наоборот.
Двустороннее — оба домена доверяют друг другу.
Транзитивное — доверие распространяется на другие домены в лесу.
Что интересно атакующему: Поиск путей для перемещения между доменами (например, использование транзитивного доверия). Поиск доменов, которые имеют доверие к текущему домену, для атак, таких как SID History.
Инструменты для сбора информации о домене
BloodHound строит графы, которые показывают отношения между объектами и возможные пути атаки.
Пример: пользователь "UserA" имеет право
GenericWriteна группу "Domain Admins", что позволяет ему добавить себя в эту группу.
Для чего это нужно атакующим:
Поиск кратчайших путей для повышения привилегий.
Поиск уязвимостей в структуре домена, которые могут быть использованы для атак.
Пример использования BloodHound
Атакующий запускает сбор данных с помощью SharpHound (сборщик данных для BloodHound).
BloodHound анализирует данные и показывает, что пользователь "UserA" имеет право
GenericWriteна группу "IT Support".Атакующий использует это право, чтобы добавить себя в группу "IT Support".
BloodHound показывает, что группа "IT Support" имеет право
WriteDACLна группу "Domain Admins".Атакующий использует это право, чтобы изменить ACL группы "Domain Admins" и добавить себя в неё.
Мониторинг
Event ID 1644
Для обнаружение разведки в домене (без привязки к конкретному инструменту) поможет мониторинг LDAP-запросов (Event ID 1644) или LDAP-трафика. Особое внимание стоит обращать на запросы специфичных атрибутов LDAP, связанных с делегированием, LAPS, SPN, службой сертификатов... А также на массовые выгрузки объектов из службы каталогов (но такие правила могут генерировать много False Positive), так как некоторые сервисы с доменной авторизацией тоже получают информацию о пользователях службы каталогов, их группах и правах.
Event ID 5136
Event ID 5136 поможет отследить изменения объектов. Такие как SID-History, изменение GPO, настройка делегирования, Shadow Cred и многих других.
Интересные атрибуты LDAP, за изменением которых стоит следить:[Cheat Sheet] Интересные атрибуты LDAP
Sysmon 11
Это событие поможет отследить создание или изменение файлов в SYSVOL или NETLOGON.
Last updated
Was this helpful?