Категория > Новости > HTB Pivotapi. Большой пентест Active Directory - «Новости»
HTB Pivotapi. Большой пентест Active Directory - «Новости»12-11-2021, 00:02. Автор: Оксана |
Hack The Box. Она называется Pivotapi и посвящена пентесту Active Directory. Нам предстоит заняться OSINT, провести атаку AS-Rep Roasting, декомпилировать приложение на .NET, получить точку опоры через эксфильтрацию данных из Microsoft SQL, взломать базу KeePass, проэксплуатировать LAPS для повышения привилегий и поюзать BloodHound. Программа очень плотная, начинаем немедля!warningПодключаться к машинам с HTB рекомендуется только через VPN. Не делай этого с компьютеров, где есть важные для тебя данные, так как ты окажешься в общей сети с другими участниками. Разведка. Сканирование портовДобавляем IP-адрес машины в
10.10.10.240 pivotapi.htb
И сканируем порты. Справка: сканирование портовСканирование портов — стандартный первый шаг при любой атаке. Он позволяет атакующему узнать, какие службы на хосте принимают соединение. На основе этой информации выбирается следующий шаг к получению точки входа. Наиболее известный инструмент для сканирования — это Nmap. Улучшить результаты его работы ты можешь при помощи следующего скрипта. ports=$(nmap -p- --min-rate=500 $1 | grep^[0-9] | cut -d '/' -f 1 | tr 'n' ',' | sed s/,$//)nmap -p$ports -A $1 Он действует в два этапа. На первом производится обычное быстрое сканирование, на втором — более тщательное сканирование, с использованием имеющихся скриптов (опция Результат работы скрипта Мы нашли много открытых портов, давай пройдемся по порядку:
В итоге мы получаем очень важную информацию. Во‑первых, мы можем работать со службой FTP без авторизации, а во‑вторых, SQL Server дал нам имена домена ( Давай скачаем все файлы с FTP-сервера для дальнейшего анализа. Сделаем это с помощью
wget ftp://pivotapi.htb/*
В документах ничего важного для продвижения не нашлось, но тема интересная — они описывают способы эксплуатации различных уязвимостей. Но, как отмечается в любом курсе OSINT (разведка на основе открытых источников), если мы смогли получить какие‑либо документы, нас могут заинтересовать метаданные, а именно атрибуты «создатель» и «владелец». Из них иногда можно узнать имена, подходящие в качестве логинов. Смотреть эти данные можно разными методами, я воспользуюсь exiftool (устанавливается командой ![]() Создав простой конвейер на Bash, получим из всех документов поля
![]() Откинув сомнительные записи, мы можем составить список из пяти возможных имен пользователей: Точка входа. ASRep RoastingТак как на хосте работает Kerberos, мы можем проверить, существует ли какая‑то учетная запись. В этом нам поможет атака ASRep Roasting. Смысл ее в том, что мы посылаем на сервер аутентификации анонимный запрос для предоставления определенному пользователю доступа к какой‑либо услуге. Сервер в ответ:
Выполнить атаку мы можем с помощью скрипта GetNPUsers, входящего в состав пакета скриптов impacket. Задаем скрипту следующие параметры: контроллер домена (
GetNPUsers.py -dc-ip10.10.10.240 -no-pass -k -usersfileusers.txt LICORDEBELLOTA/pivotapi.htb
Результат работы скриптаНам говорят, что, кроме пользователя Дело в том, что, когда клиент посылает сообщение c идентификатором пользователя на сервер аутентификации и запрашивает доступ к услуге для какого‑то пользователя, сервер аутентификации смотрит, есть ли пользователь в базе Kerberos, после чего проверяет его учетные данные. Если учетные данные неверны, сервер отвечает сообщением Но есть одно ограничение: у учетной записи пользователя может быть активирован флаг Брутить хеш будем по словарю программой hashcat. При запуске нам нужно передать номер типа хеша (параметр
hashcat --example | grep krb5asrep -A2 -B2
![]() Искомый номер — 18200. Теперь запускаем перебор, при этом в параметрах указываем перебор по словарю (
hashcat -a 0 -m18200 hash.krb5asrep ~/wordlists/rockyou.txt
![]() Очень быстро находим искомый пароль учетной записи
smbmap -uKaorz -pRoper4155 -H10.10.10.240
Доступные ресурсы SMBВ выводе получим список доступных ресурсов SMB и разрешения для каждого. Чтобы долго не ходить по директориям и не искать интересные файлы, есть удобная возможность вывести все содержимое ресурсов рекурсивно. Для этого в smbmap нужно указать опцию
smbmap -uKaorz -pRoper4155 -H10.10.10.240 -R
![]() Чтобы заполучить файлы, можем запустить любой клиент SMB. Я буду использовать smbclient, поскольку он тоже входит в набор impacket.
smbclient.py LicorDeBellota/Kaorz:Roper4155@10.10.10.240
use NETLOGON
cd HelpDesk
get Restart-OracleService.exe
get Server MSSQL.msg
get WinRM Service.msg
exit
![]() Точка опорыКонвертация MSGФайл .msg содержит электронное письмо в формате Microsoft Outlook и включает данные отправителя и получателя, тему и текст письма. Также в виде файла .msg может быть сохранена информация о встрече или ином событии из календаря Outlook, данные контакта из адресной книги, сведения о задаче. Его можно конвертировать в обычный текстовый формат с помощью утилиты msgconvert. Но сначала ее следует установить. msgconvert ServerMSSQL.msg Содержимое сообщения Server MSSQLСодержимое сообщения WinRM ServiceВ первом сообщении говорится, что в 2010-е годы была установлена база Oracle, но в 2020 году решили перейти на MS SQL. При этом найденное приложение Во втором сообщении упоминается блокировка службы WinRM и исходящего трафика по протоколам TCP, UDP и ICMP. Анализ приложения, использующего вызов CMDПерейдем к анализу третьего файла — исполняемого. Откроем его в любом дизассемблере (я использую IDA Pro) и первым делом глянем список импортируемых функций. Это позволит нам составить первое мнение об этой программе и примерно понять, для чего она нужна. Список импортируемых функций Обратим внимание на функцию ![]() Когда все будет готово, запустим исполняемый файл и просмотрим вывод Process Monitor. ![]() В событиях мы видим создание файлов .tmp и запись (скорее всего, копирование) скрипта .bat. Далее создается процесс командного интерпретатора ![]() ![]() Пройдем в директорию с запускаемым скриптом и увидим в ней сам скрипт и файл с расширением tmp. ![]() Заглянем в скрипт. В начале видим проверку на запуск от имени определенного пользователя. Сразу сохраняем себе его имя — пригодится! Затем данные записываются в файл Содержимое скрипта После записи создается еще один файл — Содержимое скрипта Давай получим этот исполняемый файл для дальнейшего анализа. Для этого немного модернизируем наш батник: в начале скрипта уберем проверку пользователей, а в конце — любые удаления файлов (команда Модернизированный bat-скрипт (начало)Модернизированный bat-скрипт (конец) Запустим измененный скрипт, после чего проверим каталог ![]() Анализ приложения со скрытыми функциямиИсполняемый файл открываем в IDA Pro, чтобы посмотреть импортируемые функции. Но там не было ничего интересного, а для статического анализа файл великоват. Именно по этой причине я решил использовать приложение API Monitor. Оно может отображать все вызовы API-функций вместе с передаваемыми в них аргументами. После запуска API Monitor нужно указать целевой исполняемый файл, для чего выбираем Monitor New Process. В разделе справа увидим все вызванные приложением функции. ![]() ![]() Часто вызывается Давай узнаем, какие функции хотел спрятать разработчик. Для этого необходимо установить фильтр, чтобы в выводе присутствовали только функции ![]() Сразу видим множество функций для работы с реестром, но это пока ничего не говорит. Чтобы сложить целостную картину, просмотрим абсолютно все загружаемые функции (это займет 5–10 минут). Во время анализа останавливаемся на Отфильтрованный список API-функций Она создает новый процесс и его первичный главный поток. Новый процесс затем запускает заданный исполняемый файл в контексте системы безопасности определенного пользователя. Дело в том, что эта функция принимает учетные данные пользователя в качестве аргументов. Давай найдем ее вызов, чтобы получить эти параметры. Для этого выбираем в окне Display пункт Add Filter, а затем указываем условие Создание фильтраСобытие вызова функции CreateProcessWithLogonW Обрати внимание на параметры Перейти обратно к новости |