Категория > Новости > 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 (устанавливается командой Свойства документа notes1.pdf Создав простой конвейер на 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
Содержимое каталога HelpDeskЧтобы заполучить файлы, можем запустить любой клиент 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
Загрузка файлов с SMB Точка опорыКонвертация 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 Когда все будет готово, запустим исполняемый файл и просмотрим вывод Process Monitor. События в Process Monitor В событиях мы видим создание файлов .tmp и запись (скорее всего, копирование) скрипта .bat. Далее создается процесс командного интерпретатора Событие запуска приложения Restart-OracleService.exeСобытие запуска файла bat Пройдем в директорию с запускаемым скриптом и увидим в ней сам скрипт и файл с расширением tmp. Содержимое каталога /AppData/Local/Temp/ Заглянем в скрипт. В начале видим проверку на запуск от имени определенного пользователя. Сразу сохраняем себе его имя — пригодится! Затем данные записываются в файл Содержимое скрипта После записи создается еще один файл — Содержимое скрипта Давай получим этот исполняемый файл для дальнейшего анализа. Для этого немного модернизируем наш батник: в начале скрипта уберем проверку пользователей, а в конце — любые удаления файлов (команда Модернизированный bat-скрипт (начало)Модернизированный bat-скрипт (конец) Запустим измененный скрипт, после чего проверим каталог Содержимое каталога C:programdata Анализ приложения со скрытыми функциямиИсполняемый файл открываем в IDA Pro, чтобы посмотреть импортируемые функции. Но там не было ничего интересного, а для статического анализа файл великоват. Именно по этой причине я решил использовать приложение API Monitor. Оно может отображать все вызовы API-функций вместе с передаваемыми в них аргументами. После запуска API Monitor нужно указать целевой исполняемый файл, для чего выбираем Monitor New Process. В разделе справа увидим все вызванные приложением функции. Стартовое окно приложения API MonitorВыбор исполняемого файлаРезультат анализа файла Часто вызывается Давай узнаем, какие функции хотел спрятать разработчик. Для этого необходимо установить фильтр, чтобы в выводе присутствовали только функции Установка фильтраОтфильтрованный список функций API Сразу видим множество функций для работы с реестром, но это пока ничего не говорит. Чтобы сложить целостную картину, просмотрим абсолютно все загружаемые функции (это займет 5–10 минут). Во время анализа останавливаемся на Отфильтрованный список API-функций Она создает новый процесс и его первичный главный поток. Новый процесс затем запускает заданный исполняемый файл в контексте системы безопасности определенного пользователя. Дело в том, что эта функция принимает учетные данные пользователя в качестве аргументов. Давай найдем ее вызов, чтобы получить эти параметры. Для этого выбираем в окне Display пункт Add Filter, а затем указываем условие Создание фильтраСобытие вызова функции CreateProcessWithLogonW Обрати внимание на параметры Перейти обратно к новости |