HackTheBox. Прохождение Resolute. Password spraying. От DnsAdmin до SYSTEM
Продолжаю публикацию решений отправленных на дорешивание машин с площадки HackTheBox.
В данной статье собираем информацию о машине, выполняем password spraying для получения пользователя, а также повышаем свои права от DnsAdmin до SYSTEM с помощью вредоносной DLL библиотеки.
Подключение к лаборатории осуществляется через VPN. Рекомендуется не подключаться с рабочего компьютера или с хоста, где имеются важные для вас данные, так как Вы попадаете в частную сеть с людьми, которые что-то да умеют в области ИБ :)
Вся информация представлена исключительно в образовательных целях. Автор этого документа не несёт никакой ответственности за любой ущерб, причиненный кому-либо в результате использования знаний и методов, полученных в результате изучения данного документа.
Recon
Данная машина имеет IP адрес 10.10.10.169, который я добавляю в /etc/hosts.
10.10.10.169 resolute.htb
Первым делом сканируем открытые порты. Так как сканировать все порты nmap«ом долго, то я сначала сделаю это с помощью masscan. Мы сканируем все TCP и UDP порты с интерфейса tun0 со скоростью 500 пакетов в секунду.
masscan -e tun0 -p1-65535,U:1-65535 10.10.10.169 --rate=500
На хосте открыто много портов. Теперь просканируем их с помощью nmap, чтобы отфильтровать и выбрать нужные.
nmap resolute.htb -p53,88,135,139,389,445,464,593,636,3268,3269,5985,9389,47001,49664,49665,49666,49667,49671,49676,49677,49688,49915
Теперь для получения более подробной информации о сервисах, которые работают на портах, запустим сканирование с опцией -А.
nmap -A resolute.htb -p53,88,135,139,389,445,464,593,636,3268,3269,5985,9389,47001,49664,49665,49666,49667,49671,49676,49677,49688,49915
Из вывода nmap находим доменное имя megabank.local, которое добавляем в /etc/hosts. Первое делом в разведке для Windows — базовое перечисление. Лично я, тестируя с linux машины, использую enum4linux.
enum4linux -a megabank.local
И среди информации о домене, пользователях, группа, и парольной политике находим интересный комментарий к учетной записи пользователя mark. В комментарии содержится его пароль. Но после попытки авторизации с этими учетными данными, мы на всех сервисах терпим неудачу.
USER
Так как мы имеем уже засвеченный в системе пароль и список пользователей, мы можем использовать одну из техник Lateral Movement — это Password Spraying. Обо всем этом я подробно писал здесь. Суть в том, что мы пробуем известные пароли для всех известных пользователей.
Перебирать первым делом пробуем конечно же по SMB. Для этого можно использовать модуль smb_login для Metasploit Framework.
Указываем нужные параметры.
И успешно находим пользователя, к которому подходит данный пароль.
И проверяем учетные данные. Я предпочитаю smbmap, которому указываем пользователя, пароль, домен и хост.
И получаем список доступных ресурсов. Если вернуться к списку портов, то там есть работающая служба WinRM на 5985. Для удобной работы с данной службой из-под linux можно использовать Evil-WinRM.
USER2
Evil-WinRM работает отлично, но метерпретер все же удобнее. Благо данная программа позволяет при подключении указывать директорию с PowerShell или C# файлами, которые будут автоматически загружены в сессию. Сгенерируем PowerShell файл, который будет содержать Meterpreter нагрузку.
И создадим листенер для прослушивания соединения.
Теперь подключаемся c Evil-WinRM и указываем директорию со скриптом.
Но после запуска файла с нагрузкой, видим, что скрипт отработал без ошибок, но подключения нет.
Скорее всего скрипт был заблокирован. Так как это PowerShell, то скорее всего с помощью AMSI. Но Evil-WinRM имеет собственные полезные модули.
Как можно догадаться, нам нужен первый. Применим данный модуль и снова запустим наш файл с нагрузкой.
И наблюдаем успешное соединение.
После запуска скриптов для Recon«a, обхода машины, натыкаемся на интересную директорию.
Это директория, которая хранит текстовый файл с записанной сессий PowerShell, после команды «Start-Transcript». Ищем файл.
Давайте посмотрим содержимое.
Так, это сессия пользователя Ryan. И чуть дальше находим команду, с которой передавался пароль.
Пробуем учетные данные для службы WinRM.
И в итоге логинимся как Ryan.
ROOT
И первым делом, проверяя информацию о текущем пользователе, находим интересную особенность. Он является членом группы DnsAdmins.
Это дает нам возможность повысить свои привилегии до SYSTEM. Мы можем попросить загрузить DLL при следующем запуске службы. Давайте сгенерируем DLL, содержащую нагрузку meterpreter.
И запустим листенер.
Теперь активируем smb-сервер. Указываем директорию, название и поддержку SMB 2-й версии.
Теперь с помощью dnscmd укажем, какую DLL загрузить.
Команда успешно выполнена, теперь перезагрузим службу DNS.
И после перезагрузки видим подключение по SMB.
А также открытую сессию.
И мы получаем права System.
Вы можете присоединиться к нам в Telegram. Там можно будет найти интересные материалы, слитые курсы, а также ПО. Давайте соберем сообщество, в котором будут люди, разбирающиеся во многих сферах ИТ, тогда мы всегда сможем помочь друг другу по любым вопросам ИТ и ИБ.