Служба каталогов
Что надо знать аналитику 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?