Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
В этой статье я расскажу про два кейса из моей практики пентестов внешнего периметра, в которых удалось применить несколько нестандартных подходов с последующим «классическим» получением привилегий администратора домена. Pentest Award
Этот текст получил четвертое место на премии Pentest Award 2024 в категории «Пробив инфры». Это соревнование ежегодно проводит компания Awilix.
Заказчиком была компания, которая существует с 2009 года и занимается финансовой деятельностью. Ее выручка за 2023 год — 12 миллиардов рублей, количество сотрудников — свыше 2 тысяч, клиентов — больше 3 миллионов. У компании зрелая ИТ- и ИБ‑инфраструктура, ежегодно проходят тестирования на проникновение.
Этот кейс интересен тем, что нам попалась небезопасная конфигурация Remote Desktop Gateway: валидный пользователь домена в веб‑интерфейсе RDWeb не имеет приложений для удаленного доступа, но может использовать RDWeb как шлюз для RDP-подключения к некоторым хостам внутри сети.
Для эксплуатации мы написали на Python сценарий автоматизации, который спреит учетные данные валидных пользователей по хостам внутренней сети и ищет разрешения на подключение по RDP.
Никакой информации о системе у нас не было, поэтому полный «черный ящик».
Сначала я покопался в интернете, чтобы собрать всё, что связано с системами компании: IP-адреса, домены и прочее. Вышло больше 50 адресов, и я наметил самые перспективные цели.
Дальше я просканировал открытые порты TCP и UDP. Посмотрел, какие сервисы там работают, и выписал версии. Заодно пробежался по поддоменам и порылся в открытых источниках: репозитории, сливы баз — всё, что кто‑то где‑то мог оставить на видном месте.
После разведки на руках у меня было больше 50 айпишников, а также домены второго и третьего уровня, плюс нашелся внутренний домен компании. А чтобы картина была полной, еще вытащил пару электронных адресов сотрудников — вдруг пригодятся!
Схема компрометации домена
Проверяя внешний периметр, я наткнулся на интересный узел. Там висело веб‑приложение и отвечало по адресу https://mx02.*********.ru
. Вход — только через NTLM-аутентификацию. Но, как ты понимаешь, с NTLM возможно много интересного.
Веб‑приложение
Я пустил в ход NTLM_challenger, и он выдал мне внутренний домен заказчика — *********.int
, а также удалось определить имя NetBIOS одного из серверов во внутренней инфраструктуре — serv154
.
Внутренний домен
Продолжаем копать внешний периметр. На одном из хостов отвечал 443-й порт. На нем работал интерфейс для удаленки — Microsoft RD Web Login. А там, как это часто бывает, уязвимость, которая дает раскрутить имена пользователей через тайминг запросов. Дергаешь логины и смотришь, где время отклика чуть длиннее. Так можно узнать, какие из них существуют в системе.
Я использовал модуль auxiliary/scanner/http/rdp_web_login
из Metasploit и словарь с популярными именами пользователей. Что делать с найденными логинами, ты, я думаю, знаешь.
В ход, конечно же, пошел спреинг паролей: берем один популярный пароль и гоняем по всему списку учеток. Один из паролей <домен компании>123
подошел сразу к четырем пользователям: support, expert, inform, robot.
Результат подбора пароля юзера support
С одной из этих учеток подключаемся к службе рабочих столов.
Веб‑интерфейс службы удаленных рабочих столов
Подключения к службе удаленных рабочих столов
Итак, имеем NetBIOS-имя serv154. Логика подсказывает: скорее всего, и остальные ресурсы названы по схеме serv + порядковый номер.
Я собрал словарь возможных имен и подключил к делу автоматизацию. Написал инструмент, который через xfreerdp и хост RDWeb, как через шлюз, методично проверял эти варианты. Логины‑то у нас уже есть, так что я гонял всё это от имени скомпрометированных учеток. В результате выяснил, какие узлы реально пускают внутрь.
Подбор сетевых узлов
И бинго! Есть доступные для удаленного доступа хосты. Дальше я подключился по RDP к рабочей станции ***serv130
.
Подключение к serv130 от имени support
Мне удалось найти IP-адрес Microsoft Exchange Server, куда я вошел от имени expert
всё с тем же паролем. В результате получилось вытащить список всех почтовых адресов Exchange.
Извлекаем пользователей Exchange с помощью Ruler
Следом я пустил в ход Exchanger.py. Запустил команду dnt-lookup
и через запросы DNT вытащил побольше инфы про пользователей — уже из Active Directory. Самое интересное, что удалось найти, — это учетка L****H***D***
. В ее поле description лежал пароль в открытом виде.
Проверяем подключение из Microsoft Outlook, и да, действительно, пароль подходит.
Вход в учетку
Изначально мы обговорили с заказчиком, что можем устраивать недопустимые события: кражу персональных данных пользователей и получение максимальных прав в домене.
Источник: xakep.ru