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