Active Directory for Red Teams

Spread the love

Главная задача данной статьи – познакомить читателей с основами Active Directory, а также особенностями и нюансами, которые должен знать и учитывать каждый пен-тестер при планировании и осуществлении атак в сетях Active Directory. Итак, давайте рассмотрим службу директроий, разработанную компанией Microsoft для управления сетями в доменах Window.​

ВНИМАНИЕ!!!! АВТОР ДАННОЙ СТАТЬИ НЕ НЕСЕТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ДЕЙСТВИЯ ОТ ЕЕ ПРОЧТЕНИЯ. ВСЕ МАТЕРИАЛЫ ПРЕДОСТАВЛЕНЫ В ИСКЛЮЧИТЕЛЬНО ОБРАЗОВАТЕЛЬНЫХ ЦЕЛЯХ!

Оглавление:

  1. Домен, Контроллер Домена.​
  2. Дерево доменов, Лес доменов.​
  3. Групповые политики.​
  4. Списки управления доступом.​
  5. Пользователи и группы.​
  6. Доверие.​
  7. Групповые политики.​

​Примечание: в данной статье для демонстрации сбора информации в среде Active Directory ​был использован инструмент PowerView , который основан на PowerShell​

Что такое Active directory?​

​В общих чертах, Active Directory – это служба, которая позволяет администрировать и осуществлять мониторинг некоторого числа машин и серверов, объединённых в единую сеть, с помощью центрального сервера (данная структура представляет собой домен). Данная группа машин предствляет собой составную часть более крупного сервера (Леса доменов), который и представляет собой контрольный центр сети Active Directory.​

Active Directory содержит информацию об объектах, таких как компьютеры: пользователи, принтеры и т.д. Можете представить это как “книгу контактов” для Windows. Одной из наиболее важных целей такой структуры является организация аутентификации клиентов с помощью билетов протокола Kerberos.​

Девайсы не использующие ОС Windows, такие как например машины на Линукс, фаерволы и т.д. также имеют возможность аутентификации внутри сети Active directory через протоколы RADUIS или LDAP. Active Directory включает в себя множество механизмов и фич, которые будут рассмотрены в рамках данной статьи.​

Зачем же использовать Active Directory?​

Большинство крупных компаний используют Active Directory, т.к. это позволяет контролировать и осуществлять мониторинг их пользователей с помощью единого командного центра – контроллера домена. Данное решение позволяет одному пользователю логиниться на любом компьютере сети Active Directory, получить доступ их файловым системам, а также их данным, хранящимся на сервере. Преимущество в данном случае состоит в возможности администрировать любой компьютер компании без создания дополнительного пользователя на каждой отдельной машине. Active directory – решение для удобной реализации данных задач.​

Если вышеописанное оказалось не совсем понятным для вас, позвольте привести наглядный пример:​

Давайте возьмём для примера Microsoft. Это транснациональная корпорация, имеющая в штате миллионы сотрудников. Давайте рассмотрим всего лишь одно подразделение Microsoft, которое включает в себя не многим более тысячи сотрудников. Подразделение может включать в себя различные департаменты, например: маркетинговых исследований, принятия решений о разработке продуктов, отдел кадров, ИТ, и т.д. А теперь представьте что в одном из департаментов необходимо обновить программное обеспечение, или кто-то из сотрудников внезапно забыл пароль, либо же кому-то из сотрудников необходим доступ к контенту, но его текущих прав для доступа недостаточно.​

Это стало бы настоящей катастрофой для IT департамента, если бы машины не были объединены в одну сеть Active Directory. Таким образом, вышеописанные задачи решаются легко и не принуждённо из командного центра.​

Контроллеры доменов ​

В самом начале я рассматривал сеть Active directory – прежде всего в качестве домена. В том контексте, что домен – это некоторое множество машин, использующих общую БД Active directory, которая администрируется несколькими серверами домена – Контроллерами Домена.​

Контроллер Домена – это сервер на системе Windows, на котором установлены доменные службы Active Directory, и которому присвоены права контроллеров домена в лесу доменов. Контроллеры домена – это центральные узлы Active directory, которые контролируют все остальные объекты домена. Отметим ключевые функции контроллера домена:​

  • Хранит данные доменных служб Active directory
  • Обрабатывает службы аутентификации и авторизации
  • Копирует обновления с других контроллеров домена в лесу доменов
  • Предоставляет админу доступ к управлению ресурсами домена

Сбор информации с помощью PowerView​

1) Информация а текущем домене

Код с оформлением (BB-коды):

PS C:\Tools> Get-NetUser
 user-dc.it.starlight.local
 user-mssql.it.starlight.local
 user-adminsrv.it.starlight.local​

​2) Список администраторов домена​

Код с оформлением (BB-коды):

Get-NetDomain
# Просмотр атрибутов группы администраторов домена
Get-NetGroup -GroupName "Domain Admins" -FullData
# Список юзеров группы администраторов домена
Get-NetGroupMember -GroupName "Domain Admins"

​Хранилища информации Служб Домена Active Directory​

​Хранилища информаци Active directory содержат базы данных и процессы, необходимые для хранения и управления информацией директорий,​ такие как: пользователи, группы и служды. Некоторые содержат также данные и свойства Хранилища Информации Служб домена Active directory:​

  • NTDS.dit – БД, которая содержит информацию контроллера домена Active directory, в том числе хэши паролей пользователей домена.
  • По умолчанию хранитcя в директории %SystemRoot%\NTDS
  • Доступна только контроллеру домена

​Леса доменов​

Дерево доменов определяет всё, является контейнером, который содержит всю остальную информацию о сети.​ Без леса доменов все деревья доменов и сами домены не могут взаимодейтвовать межу собой.​ Однако, не стоит представлять понятие “Лес доменов” буквально, как некоторый физический объект.​ Говоря “Лес”, стоит представляет соединённые деревья доменов и доменамы в единую сеть.​

​Анатомия леса доменов​

​Лес доменов – это совокупность одного или нескольких деревьев домена внутри сети Active directory.​ Это то, что объединяет части сети в единое целое.​ Лес доменов состоит из элементов, которые мы разберём в отдельности несколько позднее:​

1) Деревья – иерархия доменов в службе доменов Active directory

2) Домены – служат для объединения объектов и управления ими

3) Организационные подразделения – контейнеры для групп, компьютеров, пользователей,

принтеров других организационных единиц

4) Привелегии – позволяют пользователям получать доступ к ресурсам других доменов

5) Объекты – пользователи, группы, принтеры, компьютеры. точки общего доступа

6) Службы домена – DNS сервер, LLMNR, IPv6

7) Схема домена – правила создания объектов

Объекты групповой политики​

Групповые политики позволяют легко управлять конфигурациями и изменениями централизованно в Active directory. Позволяют конфигурировать:​

1) Настройки безопасности

2) Настройки политик на уровне регистра

3) Настройки групповых политик, таких как скрипты включения/выключения/логирования/включения и выключения логов.

4) Установка ПО

Данные объекты подвержены различным типам атак, таким как “повышение превилегий”, “бэкддоры”, “эксплуатация сеанса связи”. и т.д.

Сбор данных PowerView​

1) Лист текущих объектов групповой политики

​Код с оформлением (BB-коды):

Get-NetGPO
Get-NetGPO -ComputerName <computer-name>
Get-GPO -All (GroupPolicy module)
Get-GPResultantSetOfPolicy -ReportType Html -Path C:\Users\Administrator\report.html (Provides RSoP)
gpresult /R /V (GroupPolicy Results of current machine)

​2) Объекты групповой политики для ограниченных групп или groups.xml для интересующих нас пользователей​

Код с оформлением (BB-коды):

Get-NetGPOGroup

3) Список пользователей из локальной группы машины, которая использует объекты групповой политики​

Код с оформлением (BB-коды):

Find-GPOComputerAdmin -ComputerName <computer-name>

​4) Список машин, где конкретный пользователь является членом какой-либо группы​

​Код с оформлением (BB-коды):

Find-GPOLocation -Username student1 -Verbose

​5) Список организационных подразделений домена:​

​Код с оформлением (BB-коды):

Get-NetOU -FullData

​6) Объекты групповой политики, присвоенные организационному подразделению (Имя Объектов групповой политики можно найти в атрибуте gplink из Get-NetOU:​

​Код с оформлением (BB-коды):

Get-NetGPO -GPOname
Get-GPO -Guid  %target_guid%  (GroupPolicy module)

Список управления доступами​

Модель контроля доступов основана на контроле возможности процессов получать доступ к объектам и иным ресурсам Active directory с помощью следующих методов:​

  • Токены доступа (идентифицируют пользователя и его привелегии)
  • Дескрипторы безопасности (SID владельца, дискреционные списки управления доступом: ACL (DACL) and System ACL (SACL)
  • Записи контроля доступа (ACE) – отсылает к индивидуальным превилегиям пользователя, либо осуществляет аудит доступа.

Существует 2 типа списков доступа:​

​DACL – определяет права “доверенных” (пользователя или группы) на какой-либо объект.​

SACL – ведёт логи успешных актов аудита, а также ошибок при их попытках в случаях получения доступа к объекту.​

​ACLs (списки контроля доступов) – ключевой элемент в архитектуре безопасности Active directory.​

​​

Сбор данных с помощью PowerView​

1) Получение списка ACL, ассоциированных с определённым объектом

Код с оформлением (BB-коды):

Get-ObjectAcl -SamAccountName student1 -ResolveGUIDs

2) Получение списка ACL, относящихся к определённому префиксу используемому для поиска

Код с оформлением (BB-коды):

Get-ObjectAcl -ADSprefix 'CN=Administrator,CN=Users' -Verbose

3) Также мы можем получить лист ACL, используя модуль Active directory без определения GUIDs

Код с оформлением (BB-коды):

(Get-Acl "AD:\CN=Administrator, CN=<name>, DC=<name>, DC=<name>,DC=local").Access

4) Получения листа ACL, относящихся к определенной директории LDAP, используемой для поиска

Код с оформлением (BB-коды):

Get-ObjectAcl -ADSpath "LDAP://CN=Domain Admins,CN=Users,DC=<name>,DC=<name>,DC=local" -ResolveGUIDs -Verbose

5) Поиск интересных элементов управления доступом (ACE)

Код с оформлением (BB-коды):

Invoke-ACLScanner -ResolveGUIDs

6) Получение ACLs, ассоциированных с определенной директорией

Код с оформлением (BB-коды):

Get-PathAcl -Path "\\<computer-name>\sysvol"

​​

Пользователи и группы​

Пользователи и группы внутри Active directory полностью управляются администратором. Даже при создании контроллера домена, есть всего лишь 2 пользователя по умолчанию: Администратор и Гость. Администратор решает в полной мере какие группы и пользователей создать.

Пользователи являются также базовой единицей в структуре Active directory, без которых данная система не имела бы смысла. Есть 4 основных вида пользователей, которых вы чаще всего можете встретить внутри Active directory. Однако, это в первую очередь зависит от стратегии управления доступами в той или иной компании.​

1) Администраторы домена – “большие” боссы. Только они имеют доступ к контроллеру домена.

2) Аккаунты служб (могут быть администраторами домена). Используются крайне редко для сервисного обслуживания, они необходимы Windows для таких служб как SQL, для связи между аккаунтом службы и самой службой.

3) Локальные администраторы – данные пользователи могут администрировать локальные машины в роли администратора, могут даже контролировать других обычных пользователей, но доступа к контроллеру домена они не имеют.

4) Пользователи домена – это рядовые пользователи, которые могут логиниться на машинах, к которым имеют авторизованный доступ. Могут также иметь права локального администратора в отношении машин, в зависимости от организации той или иной сети.

​Группы​

Группы значительно упрощают процесс распределения и управления привилегиями, путём внесения тех или иных пользователей в группы, обладающими определёнными правами. Основные 2 вида групп в Active directory:​

​1) Группы безопасности – используются для настройки прав большого числа пользователей.

2) Группы рассылки – используются для настройки листов рассылки e-mail. Для атакующих данные группы представляют значительно меньший интерес. Тем не менее могут быть использованы для сборы некоторого объёма информации, а также применения определённых векторов атак.

Группы безопасности по умолчанию​

​Существует множество стандартных групп безопасности, я постараюсь дать лишь самую важную информацию о них.

1) Контроллеры домена – все контроллеры домена внутри домена

2) Гости домена – все гостевые пользователи домена

3) Пользователи домена – все пользователи домена

4) Компьютеры домена – все рабочие машины и сервера, включенные в домен

5) Администраторы домена – администраторы назначенные для домена

6) Администраторы предприятия – администраторы назначенные для предприятия

7) Администраторы схемы – администраторы схемы Active directory

8) Администраторы DNS – группа назначенных администраторов DNS

9) DNS Update Proxy – клиенты DNS, которые вправе осуществлять динамические обновления по поручению некоторых других клиентов (например DHCP серверы)

10) Группа, авторизованная RODC для репликации паролей – члены данной группы могут реплицировать свои пароли на все (read only) контроллеры доменов в домене

11) Владельцы групповой политики – члены данной группы могут редактировать групповую политику домена

12) Группа, неавторизованная RODC для репликации паролей – члены данной не группы могут реплицировать свои пароли на все (read only) контроллеры доменов в домене

13) Защищенные пользователи – к членам данной группы применяются дополнительные меры защиты для аутентификации, для противодействия несанкционированному доступу.

14) Публикаторы сертификатов – пользователи группы, могут публиковать сертификаты в директорию

15) Контроллеры домена (только для чтения) – члены этой группы являются контроллерами домена с параметром “только для чтения”

16) Контроллеры домена предприятия (только для чтения) – Контроллеры домена предприятия с параметром (только для чтения)

17) Ключевые администраторы – члены данной группы могут совершать административные действия в отношении ключевых объектов домена

18) Ключевые администраторы предприятия – члены данной группы могут совершать административные действия в отношении ключевых объектов леса доменов

19) Клонируемые контроллеры домена – члены данной группы – контроллеры домена, которые могут быть клонированы

20) RAS и lAS серверы – серверы данной группы имеют доступ к настройкам удалённого доступа пользователей.

Доверия​

  • ​В среде Active directory “доверие” – это отношение между 2мя доменами или лесами доменов, которое предполагает возможность доступа пользователей одного домена/леса доменов к ресурсам второго домена/леса доменов.
  • Доверие может иметь как автоматический характер (родительский-дочерний, принадлежность к одному лесу доменов), так и установленной (лес – внешняя сеть)
  • Объекты доверия домена представляют взаимоотношения доверия внутри домена.

Одностороннее доверие​

Имеет односторонний характер, т.е. пользователи доверенного домена имеют доступ к ресурсам “доверяющего” домена, но никак не наоборот.

Двустороннее доверие​

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

Транзитивность доверия​

1) Транзитивное доверие может быть расширено для установления доверия с другими доменами.​

По умолчанию все доверия внутри одного леса доменов (дерево-коренной домен. родительский-дочерний) между доменами – имеют двусторонний характер.

2) Нетранзитивное доверие – не может быть расширено в отношении других доменов леса. Может быть двусторонним или же односторонним.​

Данный вид доверия стандартный (также называется “Внешнее доверие”) между 2мя доменами в разных лесах, в случае если леса не имеют между собой отношения доверия.

Сбор информации с помощью PowerView​

1) Получаем полный список доверий для текущего домена

Код с оформлением (BB-коды):

Get-NetDomainTrust
Get-NetDomainTrust -Domain <domain-name>

2) Собираем подробности о текущем лесу доменов

Код с оформлением (BB-коды):

Get-NetForest
Get-NetForest -Forest <forest-name>

3) Список всех доменов в текущем лесу

Код с оформлением (BB-коды):

Get-NetForestDomain
Get-NetForestDomain -Forest <forest-name>

4) Список глобальных каталогов для текущего леса

Код с оформлением (BB-коды):

Get-NetForestCatalog
Get-NetForestCatalog -Forest <forest-name>

5) Карта доверий леса доменов

Код с оформлением (BB-коды):

Get-NetForestTrust
Get-NetForestTrust -Forest <forest-name>

Разведка для пользователей с привилегиями локального админа​

​1) Лист машин в домене для которых текущий пользователь имеет доступ локального админа

Код с оформлением (BB-коды):

Find-LocalAdminAccess -Verbose

Данный метод – крайне “шумный”. Он запрашивает у контроллера домена список машин с помощью функции (Get-NetComputer), а затем запускает мультипоточную команду на каждой машине Invoke-CheckLocalAdminAccess. Данная задача может быть также выполнена с помощью инструментов удалённого администрирования. Например, WMI или PowerShell remoting. Данная альтератива может быть крайне полезной в случае если порты (RPC и SMB) используемые функцией Find-LocalAdminAccess – заблокированы. См. Find-WMILocalAdminAccess.ps1 Данное действие оставляет 4624 (log-on события) и 4634 (log-off) на каждом объекте в домене.

2) Поиск машин, на которых администратор домена (или конкретный пользователь/группа) имеет сессии

Код с оформлением (BB-коды):

Invoke-UserHunter
Invoke-UserHunter -GroupName "RDPUsers"

Данная функция запрашивает у контроллера домена список пользователей определённой группы (по умолчанию – Администраторы домена) используя Get-NetGroupMember, получает список машин (Get-NetComputer) и список сессий + всех залогиненных пользователей (Get-NetSession/Get-NetLoggedon) на каждой машине.

3) Подтвердить доступ администратора

Код с оформлением (BB-коды):

Invoke-UserHunter -CheckAccess

4) Найти список машин, где админ домен залогинен

Код с оформлением (BB-коды):

Invoke-UserHunter -Stealth

Данная команда запрашивает у контроллера домена (текущего или заданного) список членов группы (по умолчанию – Администраторы домена) с помощью функции Get-NetGroupMember, и получает список серверов, генерируя немало трафика (контроллеры домена, файл-серверы и распределённые файл-серверы). Для меньшей генерации траффика, количества сессий и залогиненных юзеров используйте Get-NetSession/Get-NetLoggedon) на каждой машине.

Службы доменов​

​Службы доменов являются ключевыми функциями сетей Active Directory. Они позволяют администрировать домен, сертификаты безопасности, LDAP (облегченные протоколы сетевого доступа) и многое другое. Это и есть способ, которым контроллер домена определяет что он должен делать и какие службы он должен предоставить домену.​

Службы доменов полностью соответствуют своему названию. Это службы, которые контроллер домена предоставляет всем остальным элементам домена или дерева доменов. Существует множество различных служб, которые могут быть добавлены в контроллер домена. Однако, мы остановимся на стандартных службах, которые используются при настройке сервера в качестве контроллера домена.​

– LDAP – упрощённый протокол доступа к директориям. Осуществляет коммуникацию между приложениями и службами директорий.

– Службы сертификатов – позволяют контроллеру домена создавать, проверять и отзывать сертификаты публичных ключей

– DNS, LLMNR, NBT-NS – службы доменных имен для идентификации имён хостов по IP адресам.

Процесс аутентификации в домене​

Наиболее интересная часть Active Directory, как впрочем и наиболее уязвимая – это протоколы аутентификации. Вот 2 основных из них:​

– NTLM – стандартный протокол Windows локальной аутентификации. Использует принцип зашифрованных “вопрос – ответ”

– Kerberos – стандартная служба аутентификации для Active Directory. Использует выданные “тикеты” и “служебные тикеты” для аутентификации пользователей и предоставления им доступа к ресурсам домена.

Службы доменов Active Directory являются наиболее лёгкими точками входа для атакующих и содержат наиболее опасные и уязвимые протоколы.

Добавить комментарий

WP2Social Auto Publish Powered By : XYZScripts.com