Active Directory for Red Teams 1
SecDet SamuraiРад представить вам первую статью из серии "Active Directory в Red Teaming". В этом материале я хочу ознакомить вас с основными принципами работы Active Directory и заинтересовать в дальнейшем изучении этой системы.

Основная цель статьи — объяснить ключевые аспекты Active Directory, а также обсудить особенности и нюансы, которые важны для каждого пентестера при подготовке и реализации атак в сетях, основанных на Active Directory. Начнем с изучения службы директорий от Microsoft, предназначенной для управления сетями в доменах Windows.
Оглавление статьи:
- Домен и контроллер домена
- Дерево доменов и лес доменов
- Групповые политики
- Списки управления доступом
- Пользователи и группы
- Доверительные отношения
- Групповые политики
Примечание: в данной статье для примеров сбора информации в среде Active Directory используется инструмент PowerView, работающий на основе PowerShell.
Что такое Active Directory?
Active Directory — это служба, позволяющая централизованно управлять и контролировать множество компьютеров и серверов, объединенных в сеть с помощью центрального сервера, называемого доменом. Эта группа машин является частью более крупной структуры — леса доменов, который выступает в роли основного центра управления сетью Active Directory.
Active Directory хранит информацию об объектах, таких как компьютеры, пользователи, принтеры и т.д. Ее можно представить как "адресную книгу" для Windows. Одна из главных задач этой системы — аутентификация пользователей с помощью протокола Kerberos.
Устройства, работающие не на Windows, такие как машины на Linux, фаерволы и другие, также могут аутентифицироваться в сети Active Directory через протоколы RADIUS или LDAP. В этой статье будут рассмотрены различные механизмы и функции Active Directory.
Зачем использовать Active Directory?
Active Directory широко используется в крупных организациях, поскольку позволяет централизованно управлять и контролировать пользователей с помощью единого центра управления — контроллера домена. Это решение даёт возможность каждому пользователю входить в систему на любом компьютере сети Active Directory, получать доступ к файловым системам и данным, хранящимся на серверах. Основное преимущество заключается в возможности администрировать любой компьютер в компании без необходимости создавать отдельных пользователей на каждой машине. Active Directory значительно упрощает выполнение этих задач.
Пример использования Active Directory
Чтобы лучше понять преимущества Active Directory, рассмотрим пример:
Возьмём компанию Microsoft, транснациональную корпорацию с миллионами сотрудников. Допустим, у одного из подразделений Microsoft есть около тысячи сотрудников, распределённых по разным департаментам, таким как маркетинг, разработка продуктов, отдел кадров, ИТ и т.д. Представьте, что в одном из департаментов нужно обновить программное обеспечение, кто-то забыл пароль или сотруднику требуется доступ к определённым данным, для которых у него нет прав.
Без объединения компьютеров в единую сеть Active Directory, выполнение таких задач стало бы кошмаром для IT-департамента. Однако с Active Directory эти проблемы решаются легко и эффективно из централизованного командного пункта.
Контроллеры доменов
В предыдущих разделах мы говорили о сети Active Directory, главным образом в контексте доменов. Домен — это группа машин, использующих общую базу данных Active Directory, администрируемую несколькими серверами, называемыми контроллерами домена.

Контроллер домена — это сервер на базе Windows, на котором установлены доменные службы Active Directory и который наделён правами контроллера домена в лесу доменов. Эти контроллеры являются центральными узлами Active Directory, осуществляющими контроль над всеми остальными объектами домена. Рассмотрим ключевые функции контроллера домена:
- Хранение данных доменных служб Active Directory.
- Обработка запросов на аутентификацию и авторизацию.
- Репликация обновлений с других контроллеров домена в лесу.
- Предоставление администратору доступа к управлению ресурсами домена.
Контроллеры домена выполняют важнейшую роль в обеспечении безопасности и эффективности работы сети Active Directory, обеспечивая централизованное управление и поддержку всех пользователей и устройств в домене.
Сбор информации с помощью PowerView
Информация о текущем домене: Для получения информации о пользователях в текущем домене, можно использовать следующую команду:
PS C:\Ad-RedTeam> Get-NetUser Вывод команды может выглядеть так: user-dc.it.starlight.local user-mssql.it.starlight.local user-adminsrv.it.starlight.local
Список администраторов домена: Для получения списка администраторов домена, выполните следующие команды:
PS C:\Ad-RedTeam> Get-NetDomain # Просмотр атрибутов группы администраторов домена PS C:\Ad-RedTeam> Get-NetGroup -GroupName "Domain Admins" -FullData # Список пользователей группы администраторов домена PS C:\Ad-RedTeam> Get-NetGroupMember -GroupName "Domain Admins"
Хранилища информации служб домена Active Directory
Хранилища информации Active Directory содержат базы данных и процессы, необходимые для хранения и управления данными о пользователях, группах и службах. Ключевые компоненты хранилища информации Active Directory включают:
- NTDS.dit: база данных, содержащая информацию о контроллерах домена Active Directory, включая хэши паролей пользователей домена.
- По умолчанию находится в директории
%SystemRoot%\NTDSи доступна только контроллерам домена.
Леса доменов
Лес доменов является контейнером, содержащим всю информацию о сети. Без леса доменов деревья доменов и сами домены не могут взаимодействовать. Лес доменов представляет собой соединение деревьев доменов и доменов в единую сеть.

Анатомия леса доменов
Лес доменов объединяет несколько деревьев домена внутри сети Active Directory, состоящих из следующих элементов:
- Деревья: иерархия доменов в службе доменов Active Directory.
- Домены: служат для объединения и управления объектами.
- Организационные подразделения: контейнеры для групп, компьютеров, пользователей, принтеров и других организационных единиц.
- Привилегии: позволяют пользователям получать доступ к ресурсам других доменов.
- Объекты: пользователи, группы, принтеры, компьютеры, точки общего доступа.
- Службы домена: DNS сервер, LLMNR, IPv6.
- Схема домена: правила создания объектов.
Объекты групповой политики
Групповые политики позволяют централизованно управлять конфигурациями и изменениями в Active Directory. С их помощью можно настраивать:
- Настройки безопасности.
- Настройки политик на уровне реестра.
- Настройки групповых политик, такие как скрипты запуска и завершения, логирование.
- Установку программного обеспечения.
Эти объекты подвержены различным типам атак, таким как повышение привилегий, бэкдоры, эксплуатация сеансов связи и т.д.
Сбор данных с помощью PowerView
Список текущих объектов групповой политики: Для получения списка текущих объектов групповой политики используйте следующие команды:
PS C:\Ad-RedTeam> Get-NetGPO PS C:\Ad-RedTeam> Get-NetGPO -ComputerName <computer-name> PS C:\Ad-RedTeam> Get-GPO -All # (модуль GroupPolicy) PS C:\Ad-RedTeam> Get-GPResultantSetOfPolicy -ReportType Html -Path C:\Users\Ad-Admin\test-report.html # (предоставляет RSoP) PS C:\Ad-RedTeam> gpresult /R /V # (результаты групповой политики текущей машины)
Объекты групповой политики для ограниченных групп или groups.xml для интересующих нас пользователей: Для получения объектов групповой политики, относящихся к ограниченным группам или определённым пользователям, используйте команду:
PS C:\Ad-RedTeam> Get-NetGPOGroup
Список пользователей из локальной группы машины, которая использует объекты групповой политики: Чтобы получить список пользователей из локальной группы на конкретной машине, применяющей объекты групповой политики, используйте:
PS C:\Ad-RedTeam> Find-GPOComputerAdmin -ComputerName <computer-name>
Список машин, где конкретный пользователь является членом какой-либо группы: Для получения списка машин, на которых конкретный пользователь является членом группы, выполните команду:
PS C:\Ad-RedTeam> Find-GPOLocation -Username student1 -Verbose
Список организационных подразделений домена: Чтобы получить список организационных подразделений (OU) в домене с полной информацией, используйте:
PS C:\Ad-RedTeam> Get-NetOU -FullData
Объекты групповой политики, присвоенные организационному подразделению: Для получения объектов групповой политики, присвоенных конкретному организационному подразделению, сначала найдите имя объектов групповой политики в атрибутеgplinkизGet-NetOU, затем выполните следующие команды:
PS C:\Ad-RedTeam> Get-NetGPO -GPOname <GPO-name> PS C:\Ad-RedTeam> Get-GPO -Guid %target_guid% # (модуль GroupPolicy)
Эти команды помогут собрать и проанализировать важную информацию о конфигурации и управлении сетями в доменах Active Directory, что является необходимым для эффективного планирования и осуществления атак в Red Teaming.
Список управления доступом
Модель контроля доступа в Active Directory основывается на управлении возможностями процессов получать доступ к объектам и ресурсам с помощью следующих методов:
- Токены доступа: идентифицируют пользователя и его привилегии.
- Дескрипторы безопасности: включают SID владельца и списки контроля доступа (ACL).
- Записи контроля доступа (ACE): описывают индивидуальные привилегии пользователя или проводят аудит доступа.
Существует два типа списков контроля доступа:
- DACL (Discretionary Access Control List): определяет права "доверенных" (пользователей или групп) на объекты.
- SACL (System Access Control List): ведет логи успешных актов аудита и ошибок при попытках доступа к объектам.
ACLs (списки контроля доступа) являются ключевыми элементами в архитектуре безопасности Active Directory.
Сбор данных с помощью PowerView
Получение списка ACL, ассоциированных с определённым объектом
PS C:\Ad-RedTeam> Get-ObjectAcl -SamAccountName student1 -ResolveGUIDs
Получение списка ACL, относящихся к определённому префиксу, используемому для поиска
PS C:\Ad-RedTeam> Get-ObjectAcl -ADSprefix 'CN=Administrator,CN=Users' -Verbose
Получение списка ACL с использованием модуля Active Directory без определения GUIDs
PS C:\Ad-RedTeam> (Get-Acl "AD:\CN=Administrator, CN=<name>, DC=<name>, DC=<name>,DC=local").Access
Получение списка ACL, относящихся к определенной директории LDAP, используемой для поиска
PS C:\Ad-RedTeam> Get-ObjectAcl -ADSpath "LDAP://CN=Domain Admins,CN=Users,DC=<name>,DC=<name>,DC=local" -ResolveGUIDs -Verbose
Поиск интересных элементов управления доступом (ACE)
PS C:\Ad-RedTeam> Invoke-ACLScanner -ResolveGUIDs
Получение ACL, ассоциированных с определенной директорией
PS C:\Ad-RedTeam> Get-PathAcl -Path "\\<computer-name>\sysvol"
Пользователи и группы в Active Directory
Пользователи и группы в Active Directory полностью управляются администратором. При создании контроллера домена по умолчанию существует всего два пользователя: Администратор и Гость. Все остальные пользователи создаются и управляются администратором. Пользователи являются базовыми единицами в структуре Active Directory. В зависимости от стратегии управления доступами, можно выделить четыре основные категории пользователей:
- Администраторы домена: имеют полный доступ к контроллеру домена.
- Аккаунты служб: могут быть администраторами домена и используются для обслуживания сервисов, таких как SQL, связывая аккаунт службы с конкретной службой.
- Локальные администраторы: могут администрировать локальные машины и управлять обычными пользователями, но не имеют доступа к контроллеру домена.
- Пользователи домена: могут входить в систему на авторизованных машинах и, в зависимости от сети, могут обладать правами локальных администраторов на этих машинах.
Группы в Active Directory упрощают процесс управления привилегиями, объединяя пользователей с аналогичными правами. Основные типы групп:
- Группы безопасности: используются для управления правами большого числа пользователей.
- Группы рассылки: предназначены для настройки e-mail рассылок и могут быть полезны для сбора информации или атак.
Группы безопасности по умолчанию
В Active Directory существует множество стандартных групп безопасности. Вот некоторые из них:
- Контроллеры домена: все контроллеры домена.
- Гости домена: все гостевые пользователи домена.
- Пользователи домена: все пользователи домена.
- Компьютеры домена: все рабочие станции и серверы в домене.
- Администраторы домена: администраторы, назначенные для домена.
- Администраторы предприятия: администраторы, назначенные для предприятия.
- Администраторы схемы: администраторы схемы Active Directory.
- Администраторы DNS: назначенные администраторы DNS.
- DNS Update Proxy: клиенты DNS, которые могут выполнять динамические обновления (например, DHCP серверы).
- Группа, авторизованная RODC для репликации паролей: члены этой группы могут реплицировать свои пароли на read-only контроллеры доменов.
- Владельцы групповой политики: могут редактировать групповую политику домена.
- Группа, неавторизованная RODC для репликации паролей: члены этой группы не могут реплицировать свои пароли на read-only контроллеры доменов.
- Защищенные пользователи: дополнительные меры защиты для аутентификации членов этой группы.
- Публикаторы сертификатов: могут публиковать сертификаты в директорию.
- Контроллеры домена (только для чтения): read-only контроллеры домена.
- Контроллеры домена предприятия (только для чтения): read-only контроллеры домена предприятия.
- Ключевые администраторы: могут выполнять административные действия в отношении ключевых объектов домена.
- Ключевые администраторы предприятия: могут выполнять административные действия в отношении ключевых объектов леса доменов.
- Клонируемые контроллеры домена: контроллеры домена, которые могут быть клонированы.
- RAS и IAS серверы: имеют доступ к настройкам удаленного доступа пользователей.
Доверие в Active Directory
В Active Directory доверие — это отношение между двумя доменами или лесами доменов, которое позволяет пользователям одного домена или леса получать доступ к ресурсам другого домена или леса.
Доверие может быть автоматическим, как в случае с родительскими и дочерними доменами, или настраиваемым, например, при создании доверия с внешней сетью.
Одностороннее доверие
Одностороннее доверие означает, что пользователи доверенного домена имеют доступ к ресурсам доверяющего домена, но не наоборот.

Двустороннее доверие
Двустороннее доверие позволяет пользователям обоих доменов получать доступ к ресурсам друг друга.

Транзитивное доверие

- Транзитивное доверие может быть расширено для установления доверия с другими доменами. По умолчанию все доверия внутри одного леса доменов (например, между коренным и дочерними доменами) имеют двусторонний характер.
- Нетранзитивное доверие не может быть расширено для других доменов в лесу. Оно может быть как двусторонним, так и односторонним и используется для доверий между доменами в разных лесах, которые не имеют между собой транзитивного доверия.
Сбор информации с помощью PowerView
Получение полного списка доверий для текущего домена
PS C:\Ad-RedTeam> Get-NetDomainTrust PS C:\Ad-RedTeam> Get-NetDomainTrust -Domain <domain-name>
Сбор информации о текущем лесу доменов
PS C:\Ad-RedTeam> Get-NetForest PS C:\Ad-RedTeam> Get-NetForest -Forest <forest-name>
Список всех доменов в текущем лесу
PS C:\Ad-RedTeam> Get-NetForestDomain PS C:\Ad-RedTeam> Get-NetForestDomain -Forest <forest-name>
Список глобальных каталогов для текущего леса
PS C:\Ad-RedTeam> Get-NetForestCatalog PS C:\Ad-RedTeam> Get-NetForestCatalog -Forest <forest-name>
Карта доверий леса доменов
PS C:\Ad-RedTeam> Get-NetForestTrust PS C:\Ad-RedTeam> Get-NetForestTrust -Forest <forest-name>
Разведка для пользователей с привилегиями локального администратора
1Лист машин в домене, для которых текущий пользователь имеет доступ локального администратора
PS C:\Ad-RedTeam> Find-LocalAdminAccess -Verbose
Этот метод достаточно "шумный". Он запрашивает у контроллера домена список машин с помощью функции Get-NetComputer, а затем запускает многопоточную команду на каждой машине Invoke-CheckLocalAdminAccess. Это действие можно также выполнить с помощью инструментов удалённого администрирования, таких как WMI или PowerShell remoting. Эта альтернатива полезна, если порты (RPC и SMB), используемые функцией Find-LocalAdminAccess, заблокированы. См. Find-WMILocalAdminAccess.ps1. Данное действие оставляет 4624 (log-on события) и 4634 (log-off) на каждом объекте в домене.
Поиск машин, на которых администратор домена (или конкретный пользователь/группа) имеет сессии
PS C:\Ad-RedTeam> Invoke-UserHunter PS C:\Ad-RedTeam> Invoke-UserHunter -GroupName "RDPUsers"
Эта функция запрашивает у контроллера домена список пользователей определённой группы (по умолчанию - Администраторы домена) используя Get-NetGroupMember, получает список машин (Get-NetComputer) и список сессий + всех залогиненных пользователей (Get-NetSession/Get-NetLoggedon) на каждой машине.
Подтверждение доступа администратора
PS C:\Ad-RedTeam> Invoke-UserHunter -CheckAccess
Найти список машин, где админ домена залогинен
PS C:\Ad-RedTeam> Invoke-UserHunter -Stealth
Эта команда запрашивает у контроллера домена (текущего или заданного) список членов группы (по умолчанию - Администраторы домена) с помощью функции Get-NetGroupMember, и получает список серверов, генерируя немало трафика (контроллеры домена, файл-серверы и распределённые файл-серверы). Для меньшей генерации трафика и уменьшения числа сессий и залогиненных пользователей используйте Get-NetSession/Get-NetLoggedon на каждой машине.
Службы доменов
Службы доменов являются ключевыми функциями сетей Active Directory. Они позволяют администрировать домен, сертификаты безопасности, LDAP (облегченные протоколы сетевого доступа) и многое другое. Это и есть способ, которым контроллер домена определяет, что он должен делать и какие службы он должен предоставить домену.
Службы доменов полностью соответствуют своему названию. Это службы, которые контроллер домена предоставляет всем остальным элементам домена или дерева доменов. Существует множество различных служб, которые могут быть добавлены в контроллер домена. Однако, мы остановимся на стандартных службах, которые используются при настройке сервера в качестве контроллера домена.
- LDAP - упрощённый протокол доступа к директориям. Осуществляет коммуникацию между приложениями и службами директорий.
- Службы сертификатов - позволяют контроллеру домена создавать, проверять и отзывать сертификаты публичных ключей.
- DNS, LLMNR, NBT-NS - службы доменных имен для идентификации имён хостов по IP-адресам.
Процесс аутентификации в домене
Наиболее интересная часть Active Directory, как и наиболее уязвимая, — это протоколы аутентификации. Вот два основных из них:
- NTLM - стандартный протокол Windows локальной аутентификации. Использует принцип зашифрованных "вопрос - ответ".
- Kerberos - стандартная служба аутентификации для Active Directory. Использует выданные "тикеты" и "служебные тикеты" для аутентификации пользователей и предоставления им доступа к ресурсам домена.
Службы доменов Active Directory являются наиболее лёгкими точками входа для атакующих и содержат наиболее опасные и уязвимые протоколы.
Резюмируем вышесказанное
Всё, что мы рассмотрели, касается разведывательных методов и основных концепций в среде Active Directory (AD). Давайте резюмируем:
- Разведка для пользователей с привилегиями локального администратора: Мы рассмотрели несколько методов для обнаружения машин в домене, на которых текущий пользователь имеет доступ локального администратора, а также для поиска машин, на которых администратор домена имеет сессии.
- Службы доменов: Службы доменов в AD играют ключевую роль в обеспечении функциональности домена. Мы рассмотрели основные службы, такие как LDAP, службы сертификатов, DNS и другие.
- Процесс аутентификации в домене: Отметили два основных протокола аутентификации в среде AD - NTLM и Kerberos. Эти протоколы имеют важное значение для безопасности и доступа в сети AD.
Общее понимание этих концепций и методов разведки важно для администраторов безопасности и специалистов по информационной безопасности, чтобы обнаруживать потенциальные уязвимости и защищать среду Active Directory от возможных атак.
Оставайтесь в курсе последних новостей в области кибербезопасности, станьте подписчиком нашего королевства и узнайте о новых методах защит и атак. Не забудьте прочитать и другие наши статьи, чтобы расширить свои знания и быть на шаг впереди потенциальных угроз.
📌https://t.me/secdet_team
📌https://t.me/secdet_team
📌https://t.me/secdet_team
Эти и другие статьи в нашем канале
Безопасность - это постоянный процесс, и каждый шаг, предпринятый в направлении ее улучшения, имеет значение.