Служба каталогов

Что надо знать аналитику 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

  1. Объекты:

    • Каждый элемент в каталоге (пользователь, группа, компьютер) представлен как объект.

    • Объекты имеют уникальный идентификатор (DN — Distinguished Name).

  2. Distinguished Name (DN):

    • Уникальный путь к объекту в каталоге.

    • Пример: cn=JohnDoe,ou=Users,dc=example,dc=com — объект "JohnDoe" в организационном подразделении "Users" домена "example.com".

  3. Атрибуты:

    • Объекты состоят из атрибутов, которые хранят информацию (например, cn — common name, mail — электронная почта).

    • Для разных типов объектов существуют разные атрибуты.

    • для получения полного списка атрибутов LDAP объекта (например, пользователя, группы или компьютера) из Active Directory можно использовать следующие команды:

      Get-ADObject -Identity "DN_объекта" -Properties *
  4. Схема (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.

BloodHound/SharpHound — это мощный инструмент для анализа домена Active Directory, который помогает атакующим (и защитникам) визуализировать отношения между объектами домена и находить пути для повышения привилегий.

Домен 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 — группы, в которые входит пользователь.

SPN (Service Principal Name)

SPN — это уникальный идентификатор, который связывает службу (например, SQL Server, IIS) с учётной записью, под которой она работает в домене. SPN используется в протоколе Kerberos для аутентификации служб. Пример SPN: MSSQLSvc/sqlserver.example.com:1433.

SPN указывает, какие в домене есть сервисы, какие учётные записи используются для запуска служб (например, SQL Server, Exchange).

Также SPN используется для атак Silver Ticket (Подробнее в разделе про Kerberos).

Что интересно атакующему: Привилегированные учётные записи (например, членов групп "Domain Admins"). Анализ членства в группах для поиска путей повышения привилегий. Поиск неактивных или устаревших учётных записей, которые могут быть скомпрометированы (Информация о последнем входе (lastLogon) и смене пароля (pwdLastSet)).

Компьютеры (Computers)

Учётные записи, представляющие компьютеры, присоединённые к домену.

  • sAMAccountName — имя компьютера (заканчивается на $, например, PC01$).

Что интересно атакующему: Информация о настройках делегирования, таких как Unconstrained Delegation, Constrained Delegation и Resource-Based Constrained Delegation. Информация о компьютерах, на которых используется LAPS. Атрибуты, связанные с LAPS, такие как ms-Mcs-AdmPwd.

LAPS (Local Administrator Password Solution)

LAPS — это решение от Microsoft для управления паролями локальных администраторов на компьютерах в домене. Оно автоматически генерирует уникальные сложные пароли для локальных учётных записей администраторов на каждом компьютере и хранит их в Active Directory (AD). Это упрощает управление паролями и повышает безопасность, так как пароли регулярно меняются.

Как работает LAPS

  1. Установка LAPS:

    • LAPS состоит из двух компонентов: клиентской части (устанавливается на компьютеры) и серверной части (устанавливается на контроллеры домена).

    • Клиентская часть отвечает за генерацию и смену паролей.

    • Серверная часть хранит пароли в атрибутах объектов компьютеров в AD.

  2. Генерация паролей:

    • LAPS автоматически генерирует сложные пароли для локальной учётной записи администратора на каждом компьютере.

    • Пароли меняются через определённые интервалы времени (по умолчанию — каждые 30 дней).

  3. Хранение паролей:

    • Пароли хранятся в атрибутах объекта компьютера в Active Directory.

    • Эти атрибуты защищены ACL, чтобы только авторизованные пользователи или группы могли читать пароли.

  4. Получение паролей:

    • Администраторы могут использовать инструменты, такие как LAPS UI или PowerShell, чтобы получить пароль локального администратора для конкретного компьютера.

Атрибуты LAPS в объектах LDAP

LAPS использует два основных атрибута в объектах компьютеров для хранения информации о паролях:

  1. ms-Mcs-AdmPwd:

    • Этот атрибут хранит текущий пароль локального администратора в открытом виде.

    • Важно: Этот атрибут доступен только пользователям или группам, которым явно предоставлены права на чтение.

  2. ms-Mcs-AdmPwdExpirationTime:

    • Этот атрибут хранит время истечения срока действия текущего пароля.

    • Пример значения: 132558739200000000 (это значение представляет дату и время в формате FILETIME).

    • Используется для определения, когда пароль должен быть изменён.


Если права доступа к атрибутам 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.

Атака SID-History

SID-History — это атрибут объектов пользователей в Active Directory (AD), который используется для миграции пользователей между доменами. Он позволяет сохранять старые идентификаторы безопасности (SID) пользователя, чтобы сохранить доступ к ресурсам в старом домене после миграции. Однако этот атрибут может быть использован атакующими для повышения привилегий в домене.

Когда возможно?

  • SID Filtering отключен

  • Есть домены с доверительными отношениями

Что такое SID-History?

  • SID (Security Identifier) — это уникальный идентификатор, который присваивается каждому объекту в домене (пользователю, группе, компьютеру).

  • SID-History — это атрибут объекта пользователя, который хранит список SID, связанных с этим пользователем. Обычно он используется для миграции пользователей между доменами, чтобы сохранить доступ к ресурсам в старом домене.

Как это работает?

  • Когда пользователь аутентифицируется, система проверяет не только его текущие группы, но и SID, указанные в атрибуте SID-History.

  • Если в SID-History есть SID привилегированной группы, система предоставляет пользователю соответствующие права.

Шаги атаки:

  • Атакующий получает доступ к учётной записи с правами на изменение атрибута SID-History (например, с помощью права WriteProperty или GenericAll).

  • Атакующий добавляет SID привилегированной группы (например, "Domain Admins") в атрибут SID-History своей учётной записи.

  • После этого атакующий получает доступ к ресурсам, доступным для этой группы.

Инструменты для сбора информации о домене

BloodHound строит графы, которые показывают отношения между объектами и возможные пути атаки.

  • Пример: пользователь "UserA" имеет право GenericWrite на группу "Domain Admins", что позволяет ему добавить себя в эту группу.

Для чего это нужно атакующим:

  • Поиск кратчайших путей для повышения привилегий.

  • Поиск уязвимостей в структуре домена, которые могут быть использованы для атак.

Пример использования BloodHound

  1. Атакующий запускает сбор данных с помощью SharpHound (сборщик данных для BloodHound).

  2. BloodHound анализирует данные и показывает, что пользователь "UserA" имеет право GenericWrite на группу "IT Support".

  3. Атакующий использует это право, чтобы добавить себя в группу "IT Support".

  4. BloodHound показывает, что группа "IT Support" имеет право WriteDACL на группу "Domain Admins".

  5. Атакующий использует это право, чтобы изменить 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?