Внутренняя разведка Active Directory через Cobalt Strike

Введение

С ростом автоматизированных вычислительных систем и с увеличением атак на данные системы резко возник вопрос мониторинга за операционными системами на базе которых и работает любая информационная система в компании. В данных операционных системах устанавливаются/подключаются новые классы средств защиты. Мониторинг за информационными системами углубляется, а аналитика атомарных событий усложняется.

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

Чтобы отойти от концепции использования PowerShell и .NET, оставаться более незаметными и минимизировать время на разведку контроллера-домена эксперты из Red Team Outflank создали скрипт для Cobalt Strike — Recon-AD, написанный на языках на C/C++ на основе ADSI и reflective DLL.

Ну что же, приступим к более детальному изучению данного решения.

Данная статья представлена исключительно в образовательных целях. Red Team сообщество «GISCYBERTEAM» не несёт ответственности за любые последствия ее использования третьими лицами.

Установка

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

Для установки скрипта нам необходимо выполнить следующие действия:

6f231ab97ba661da5d528a8dd27027b8.png03501858200b086be9c088000fe211f2.png5f9d86fb804c140cc68e2e58da22447e.png3d19524849d4ceec9388e7e679eff3ea.pngb3e01df3b162ab0ebbb5dbedd7dc6fd1.png

После данных этапов мы можем приступать к использованию инструмента Recon-AD.

Описание функционала и применение

Данный инструмент состоит из главного скрипта и семи DLL-файлов (названия аналогичны командам в Cobalt Strike):

  • Recon-AD-Domain — используется для перечисления информации о домене (доменное имя, GUID, название сайта, политика паролей, список домен-контроллеров).

  • Recon-AD-Users — используется для получения объектов «Пользователи» Active Directory с атрибутами по заданному запросу.

  • Recon-AD-Groups — используется для получения объектов «Группы» Active Directory.

  • Recon-AD-Computers — используется для получения объектов «Компьютеры» Active Directory с атрибутами по заданному запросу.

  • Recon-AD-SPNs — используется для вывода перечня учетных записей Active Directory, участников службы (SPN) и отображения полезных атрибутов.

  • Recon-AD-AllLocalGroups — используется для получения списка локальных групп на хосте и членов данных групп.

  • Recon-AD-LocalGroups — используется для получения информации по определенной локальной группе (группа «Администраторы» по умолчанию).

Изучив основные компоненты данного инструментария можем приступить к демонстрации практического применения, для этого мы будем использовать тестовый стенд. Данный стенд состоит из нескольких виртуальных хостов подключенных к контроллеру домена.

С имитируем получение первоначального доступа на хост «GISPENTEST2» и произведем там внутреннюю разведку с применением »Recon-AD» в составе Cobalt Strike.

bd13e98b7cb5ce9b6cb1fda5b77bef1e.png

Получение информации о домене

Для получения информации о домене, в который мы получили доступ выполним следующую команду через интерактивную сессию хоста в Cobalt Strike.

Recon-AD-Domain

В результате мы получаем информацию о нашем тестовом домене.

e52931fcdfa06293e20f6a70035a3ef7.png

Получение информации о пользователях домена

Для вывода информации о всех пользователях домена выполним следующую команду.

Recon-AD-Users all

Данная команда выведет полный список пользователей Active Directory со всеми атрибутами.

900696fe0f44201de4067ae86f5e332e.png

Для фильтрации запроса мы можем использовать следующие варианты команд.

Recon-AD-Users 
Recon-AD-Users *admin* # имя УЗ содержит текст "admin"

Пример вывода одной из них указан ниже.

[03/14 13:05:59] beacon> Recon-AD-Users *Hack*
[03/14 13:05:59] [+] Let's enumerate user *Hack*
[03/14 13:05:59] [*] Tasked beacon to spawn Recon-AD-Users
[03/14 13:05:59] [+] host called home, sent: 128064 bytes
[03/14 13:06:00] [+] received output:
[+] objectClass:
top
person
organizationalPerson
user
[+] cn:
Gorilla GH. Hacker
[+] sn:
Gorilla
[+] c:
RU
[+] l:
Saint-Petersburg
[+] description:
Chief of pentesters
[+] telephoneNumber:
89999999998
[+] givenName:
Hacker
[+] initials:
GH
[+] distinguishedName:
CN=Gorilla GH. Hacker,CN=Users,DC=gtnp,DC=local
[+] instanceType:
4
[+] whenCreated:
3/14/2024 4:02:02 PM
[+] whenChanged:
3/14/2024 4:04:26 PM
[+] displayName:
Gorilla GH. Hacker
[+] uSNCreated:
high: 0 low: 80069
[+] uSNChanged:
high: 0 low: 80090
[+] co:
Russia
[+] name:
Gorilla GH. Hacker
[+] objectGUID:
{ADA81D30-8616-43D5-B3DC-BE4B569F9293}
[+] userAccountControl:
66048
[+] badPwdCount:
0
[+] codePage:
0
[+] countryCode:
643
[+] badPasswordTime:
No value set.
[+] lastLogoff:
No value set.
[+] lastLogon:
No value set.
[+] pwdLastSet:
3/14/2024 9:02:03 AM
[+] primaryGroupID:
513
[+] objectSid:
S-1-5-21-3395708365-1461986185-1509986597-1166
[+] accountExpires:
Never Expires.
[+] logonCount:
0
[+] sAMAccountName:
GorillaHacker
[+] sAMAccountType:
805306368
[+] userPrincipalName:
GorillaHacker@gtnp.local
[+] objectCategory:
CN=Person,CN=Schema,CN=Configuration,DC=gtnp,DC=local
[+] dSCorePropagationData:
3/14/2024 4:02:03 PM
1/1/1601
[+] mail:
gh@somemail.ru
[+] ADsPath:
LDAP://CN=Gorilla GH. Hacker,CN=Users,DC=gtnp,DC=local
[+] Password expire settings:
password never expires
[+] Account options:
account enabled

Получение информации о группах домена

Для вывода информации о всех группах домена выполним следующую команду.

Recon-AD-Groups all

Данная команда выведет полный список групп Active Directory со всеми атрибутами.

a9ac1ef9093e66f7f29d53e12595d82d.png

Для фильтрации запроса мы можем использовать следующие варианты команд.

Recon-AD-Groups 
Recon-AD-Groups admin # имя группы содержит текст "admin"

Получение информации о компьютерах домена

Для вывода информации о всех компьютерах домена выполним следующую команду.

Recon-AD-Computers

Для фильтрации запроса мы можем использовать следующие варианты команд.

Recon-AD-Computers 
Recon-AD-Computers serv # имя хоста содержит текст "serv"

Получение информации об участников службы SPN

Для вывода данной информации выполним следующую команду.

Recon-AD-SPNs

Данная команда выведет полный список участников службы SPN.

10dce1cdcf960f9d0b386ddfcd4f9e4e.png

Получение информации о локальных группах

Для вывода данной информации выполним следующую команду.

Recon-AD-AllLocalGroups 

На выходе мы получаем полный список локальных групп на хосте и их участников.

cff7e08fc4f4b74ed3fab91b275c335f.png

Получение информации о заданной локальной группе

Для вывода данной информации выполним следующую команду.

Recon-AD-LocalGroups  

В рамках данного запроса мы запросили информацию по группе «Users».

952e51848f5408697536c4e2182047ad.png

Заключение

В данной статье мы рассмотрели инструмент »Recon-AD»: его особенности, установку, функционал и практическое применение. Его применение позволит сократить время на получение необходимой информации для проведения следующих этапов тестирования (атак) скомпрометированной инфраструктуры, а также оставаться более незамеченным для средств защиты в корпоративном сегменте.

© Habrahabr.ru