По мере роста организации за счет увеличения числа сотрудников, необходимых для поддержки повседневных бизнес-функций, также увеличивается количество устройств, подключенных к сети организации. Несмотря на то, что организация небольшая, в сети очень мало пользователей и компьютеров, и не всегда требуется выделенная ИТ-команда. Самое главное, поскольку в небольшой компании очень мало пользователей, ИТ-специалист может легко создать локальную учетную запись пользователя в каждой системе для каждого сотрудника. Однако по мере увеличения количества пользователей и устройств до средних или крупных организаций создание локальных учетных записей для каждого пользователя на устройстве становится неэффективным.

Сервер Windows, на котором установлена и настроена Active Directory, называется контроллер домена, просто потому, что он позволяет ИТ-специалистам контролировать все, что находится в его домене. Это означает, что вместо создания учетной записи пользователя на каждом компьютере в сети Active Directory позволяет создавать учетную запись пользователя на контроллере домена, назначать пользователей в группы безопасности и даже создавать Объект групповой политики (Group Policy Object) для назначения политик безопасности пользователям и группам в домене. Когда пользователь пытается войти в домен, хост отправляет имя пользователя домена и New Technology LAN Manager (NTLM) хэш версии 2, пароль пользователя к контроллеру домена во время процесса проверки подлинности. Контроллер домена определит, действительны ли учетные данные пользователя, ответит узлу в домене и определит политики безопасности, применяемые к пользователю. Это означает, что пользователь с действительной учетной записью может войти на любое устройство в сети, если это разрешено политикой безопасности, применяемой к учетной записи пользователя домена.

Когда локальная учетная запись пользователя создается в операционной системе Windows 10, учетные данные пользователя сохраняются в Security Account Manager (SAM) в C:\Windows\System32\config. Имя пользователя хранится в виде открытого текста, а пароль
преобразуется в хеш NTLM версии 1 и также сохраняется в файле SAM. Однако, когда пользователь пытается пройти аутентификацию на узле в домене, узел отправляет доменное имя пользователя и хэш пароля NTLM версии 2 на контроллер домена, используя Lightweight Directory Access Protocol (LDAP) по умолчанию — небезопасный протокол каталогов, который используется для выполнения запросов к серверу каталогов, например к контроллеру домена в сети.

Active Directory позволяет использовать следующие функции управления и безопасности:
• Управление профилями пользователей на клиентах и серверах в домене.
• Управление сетевой информацией и конфигурациями.
• Централизованное управление политиками безопасности для пользователей, групп и устройств в домене.
• Конфигурации и политики реестра клиентов.

Перечисление Active Directory

Перечисление позволяет собрать конфиденциальную информацию обо всех объектах, пользователях, устройствах и политиках во всем домене Active Directory. Такая информация даст представление о том, как организация использует Active Directory для управления своим доменом. Вы также сможете получить четкое представление о том, как использовать доверие между клиентами домена, пользователями и контроллером домена для компрометации домена Active Directory организации.

Работа с Power View

PowerView— это очень мощный инструмент PowerShell, который позволяет специалистам по тестированию на проникновение получить всестороннее представление о домене и лесе Active Directory организации. Инструмент PowerView использует собственный код PowerShell (с некоторыми изменениями) для лучшей работы с Active Directory и использование PowerView значительно улучшит процесс перечисления в Active Directory.

В дальнейших примерах будут использованы виртуальные машины Kali Linux, Bob-PC, Alice-PC и Windows Server 2019, объединённые в один домен.

Теперь запускаем Kali Linux, открываем терминал и используем следующие команды,
чтобы загрузить инструменты PowerSploit, включая PowerView, и включить веб-сервер Python3:

kali@kali:~$ git clone https://github.com/PowerShellMafia/PowerSploit
kali@kali:~$ cd PowerSploit/Recon
kali@kali:~/PowerTools/PowerView$ python3 -m http.server 8080

Далее входим на Bob-PC используя учетную запись пользователя домена, открываем браузер и переходим к http://<IP-адрес Kali-Linux>:8080 для доступа к веб-серверу Python3. Отсюда загрузите PowerView.ps1 файл на клиентский компьютер с Windows 10:

Затем открываем Командную строку с привилегиями администратора, переходим в директорию Загрузки и отключаем политику выполнения PowerShell:
C:\Windows\system32> cd C:\Users\bob.REDTEAMLAB\Downloads
C:\Users\bob.REDTEAMLAB\Downloads> powershell -ExecutionPolicy bypass

Затем используйте следующую команду, чтобы включить использование PowerView с Powershell:
PS C:\Users\bob.REDTEAMLAB\Downloads> . .\PowerView.ps1
(Между обеими точками в предыдущей команде есть пробел).
Чтобы получить информацию о вашем текущем домене, используйте следующую команду:
PS C:\Users\bob.REDTEAMLAB\Downloads> Get-NetDomain
Как показано ниже, имя хоста и контроллера домена было изменено.

 Получение сведений о текущем домене
Получение сведений о текущем домене

Чтобы получить Идентификатор безопасности (SID) текущего домена используйте следующую команду:
PS C:\Users\bob.REDTEAMLAB\Downloads> Get-DomainSID
S-1-5-21-634716346-3108032190-2057695417
Чтобы получить список доменных политик текущего домена:
PS C:\Users\bob.REDTEAMLAB\Downloads> Get-DomainPolicy

Как видите, доступ к системе а также KerberosPolicy были получены
Как видите, доступ к системе а также KerberosPolicy были получены

Для получения идентификатора контроллера домена в текущем домене, используйте следующую команду:
PS C:\Users\bob.REDTEAMLAB\Downloads> Get-NetDomainController
И как показано ниже, были получены сведения о контроллере домена, такие как его операционная система, имя хоста и IP-адреса:

Получение сведений о контроллере домена
Получение сведений о контроллере домена

Чтобы получить список всех пользователей в текущем домене, используйте следующую команду:
PS C:\Users\bob.REDTEAMLAB\Downloads> Get-NetUser
Как показано ниже, извлекаются учетные записи всех пользователей домена и их данные:

Получение учетных записей пользователей
Получение учетных записей пользователей

Для получения списка всех учетных записей компьютеров в текущем домене:
PS C:\Users\bob.REDTEAMLAB\Downloads> Get-NetComputer

Чтобы получить все общие файловые ресурсы на всех устройствах в текущем домене, используйте следующую команду:
PS C:\Users\bob.REDTEAMLAB\Downloads> Invoke-ShareFinder -Verbose

Для списка всех объектов групповой политики из текущего домена используйте:
PS C:\Users\bob.REDTEAMLAB\Downloads> Get-NetGPO

Чтобы получить конкретные сведения о текущем "лесе", используется следующая команда:
PS C:\Users\bob.REDTEAMLAB\Downloads> Get-NetForest

Чтобы получить все домены в текущем "лесу", используйте следующую команду:
PS C:\Users\bob.REDTEAMLAB\Downloads> Get-NetForestDomain

Чтобы получить все глобальные каталоги для текущего "леса", содержащие информацию
обо всех объектах в каталоге:
PS C:\Users\bob.REDTEAMLAB\Downloads> Get-NetForestCatalog

Чтобы обнаружить все устройства, на которых текущий пользователь имеет права локального администратора в текущем домене:
PS C:\Users\bob.REDTEAMLAB\Downloads> Find-LocalAdminAccess -Verbose

 Обнаружение систем с локальным доступом администратора
Обнаружение систем с локальным доступом администратора

Ну а для обнаружения всех учетных записей локальных администраторов на всех компьютерах текущего домена:
PS C:\Users\bob.REDTEAMLAB\Downloads> Invoke-EnumerateLocalAdmin -Verbose

С помощью выше приведенных команд, мы узнали, как использовать PowerView для получения конфиденциальной информации из Active Directory. Использование собранной информации поможет вам идентифицировать и сопоставить пользователей, политики, устройства и контроллер домена с доменом, а также даст вам лучшее представление о пути атаки для взлома домена.

Bloodhound

Bloodhound - это приложение для визуализации данных Active Directory, которое помогает пентестерам эффективно определять пути атаки, чтобы получить контроль над доменом и лесом Windows Active Directory. В целом, данные в Active Directory могут быть получены от
SharpHound или AzureHound. После того, как данные были собраны, они должны быть обработаны Bloodhound, для обеспечения пути атаки и для захвата домена внутри организации.

Для начала установим в Kali linux Bloodhound:
kali@kali:~$ sudo apt update
kali@kali:~$ sudo apt install bloodhound

и запустим в консоли neo4j
kali@kali:~$ sudo neo4j console

Как только neo4j запустится, откройте веб-браузер и перейдите в http://localhost:7474/

Далее введите новый пароль и нажмите: Изменить пароль

После того, как пароль был успешно изменен, можно закрыть браузер.
Теперь откройте новый терминал в Kali Linux и используйте следующую команду для запуска
Bloodhound:
kali@kali:~$ sudo bloodhound
Когда Bloodhound запустится, введите в него данные пользователя для входа:

Далее скачаем SharpHound на клиентский компьютер Bob-PC в домене Active Directory. Для этого перейдите в https://github.com/BloodHoundAD/BloodHound/blob/master/Collectors/
SharpHound.ps1 и скачайте файл.
Далее на Bob-PC откройте командную строку с правами администратора и отключите политику выполнения PowerShell:
C:\Windows\system32> cd C:\Users\bob.REDTEAMLAB\Downloads
C:\Users\bob.REDTEAMLAB\Downloads> powershell -ExecutionPolicy bypass
Далее выполняем скрипт SharpHound:
PS C:\Users\bob.REDTEAMLAB\Downloads> . .\SharpHound.ps1
(также напоминаю, что перед точками пробелы)
Теперь используйте следующею команду, чтобы извлечь данные Active Directory из домена и сохранить их в ZIP-файле на локальном компьютере:
PS C:\Users\bob.REDTEAMLAB\Downloads> Invoke-Bloodhound -CollectionMethod All -Domain redteamlab.local -ZipFileName redteamlab.zip

Извлеченные данные Active Directory
Извлеченные данные Active Directory

Как видим, что ZIP-файл был создан и сохранен. Теперь скопируйте папку ZIP в Kali Linux, и в Bloodhound на правой панели инструментов нажмите Upload Data ,чтобы загрузить папку ZIP. Обработка всех данных займет некоторое время.

Просмотр информации о базе данных
Просмотр информации о базе данных



После обработки данных в левой части Bloodhound щелкните значок меню и выберите Database Info для просмотра общих сведений о домене Active Directory:








Bloodhound содержит предварительные аналитические запросы, которые помогут вам лучше визуализировать пути атаки в домене Active Directory. Нажмите на Analysis для просмотра готовых шаблонов:

Нажмите на Find all Domain Admins (Найти всех администраторов домена) и перейдете на путь атаки для администраторов домена:

Просмотр путей атаки администратора домена
Просмотр путей атаки администратора домена

Далее нажмите Find Shortest Paths to Domain Admins (Поиск кратчайших путей к администраторам домена) для просмотра возможных путей атаки:

Комментарии (5)


  1. nick-for-habr
    07.08.2022 00:43
    +3

    Всё это прекрасно, но немного смущает везде оговорка "Запускаем командную строку от имени Администратора". Понятно, что с правами даже локального админа в AD можно многое узнать, да вот кто ж эти права даст просто так?

    Иначе похоже на иструкцию "как захватить замок, когда открыты ворота и опущен подъёмный мост". Ответ: "пройдите по мосту в ворота".

    Как насчёт замка с закрытыми воротами (без прав админа)?


    1. iig
      07.08.2022 10:50

      Локальное повышение прав?


      1. nick-for-habr
        07.08.2022 11:06

        Ну это ещё реализовать нужно, и это по факту самое сложное. А когда ты уже внутри периметра, да ещё и с правами администратора, пусть и локального - это уже даёт очень многое.

        А бóльшую часть из того, что описано в статье (сбор информации по структуре AD) - можно реализовать и без прав локального админа: она доступна для всех юзеров. С точки зрения же контроллера юзер-локальный админ не отличается ничем от "просто юзера" с аналогичными правами в домене.

        Повышенные права лишь дают возможность использовать "административные" инструменты, которые могут быть необходимы для взлома.


  1. whoam1ns3
    07.08.2022 01:31
    +1

    Одно и тоже, каждый день и с каждого утюга.


  1. council_estate
    08.08.2022 12:11

    Разве не Kerberos является протоколом аутентификации по умолчанию еще со времен Windows XP? А про способы атак через легаси NTLM даже на Википедии написано.