По мере роста организации за счет увеличения числа сотрудников, необходимых для поддержки повседневных бизнес-функций, также увеличивается количество устройств, подключенных к сети организации. Несмотря на то, что организация небольшая, в сети очень мало пользователей и компьютеров, и не всегда требуется выделенная ИТ-команда. Самое главное, поскольку в небольшой компании очень мало пользователей, ИТ-специалист может легко создать локальную учетную запись пользователя в каждой системе для каждого сотрудника. Однако по мере увеличения количества пользователей и устройств до средних или крупных организаций создание локальных учетных записей для каждого пользователя на устройстве становится неэффективным.
Сервер 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
Для получения идентификатора контроллера домена в текущем домене, используйте следующую команду: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
и запустим в консоли neo4j
kali@kali:~$ sudo apt install bloodhound
Как только neo4j запустится, откройте веб-браузер и перейдите в http://localhost:7474/
kali@kali:~$ sudo neo4j console
Далее введите новый пароль и нажмите: Изменить пароль
После того, как пароль был успешно изменен, можно закрыть браузер.
Теперь откройте новый терминал в 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
Далее выполняем скрипт SharpHound:
C:\Users\bob.REDTEAMLAB\Downloads> powershell -ExecutionPolicy bypassPS 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
Как видим, что 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)
council_estate
08.08.2022 12:11Разве не Kerberos является протоколом аутентификации по умолчанию еще со времен Windows XP? А про способы атак через легаси NTLM даже на Википедии написано.
nick-for-habr
Всё это прекрасно, но немного смущает везде оговорка "Запускаем командную строку от имени Администратора". Понятно, что с правами даже локального админа в AD можно многое узнать, да вот кто ж эти права даст просто так?
Иначе похоже на иструкцию "как захватить замок, когда открыты ворота и опущен подъёмный мост". Ответ: "пройдите по мосту в ворота".
Как насчёт замка с закрытыми воротами (без прав админа)?
iig
Локальное повышение прав?
nick-for-habr
Ну это ещё реализовать нужно, и это по факту самое сложное. А когда ты уже внутри периметра, да ещё и с правами администратора, пусть и локального - это уже даёт очень многое.
А бóльшую часть из того, что описано в статье (сбор информации по структуре AD) - можно реализовать и без прав локального админа: она доступна для всех юзеров. С точки зрения же контроллера юзер-локальный админ не отличается ничем от "просто юзера" с аналогичными правами в домене.
Повышенные права лишь дают возможность использовать "административные" инструменты, которые могут быть необходимы для взлома.