Содержание статьи
Pentest Award
Этот текст занял третьей место на премии Pentest Award 2024 в категории «Пробив инфры». Соревнование ежегодно проводит компания Awilix.
Дело было осенью 2022 года. Мы работали вдвоем с коллегой: он отвечал за веб‑уязвимости, а я за анализ инфраструктуры — сервисы, домен и прочее.
Представитель заказчика из команды безопасников с порога заявил, что ничего у нас не получится, что их только недавно тестировали и все возможные дырки они закрыли. Он был настолько уверен в этом, что готов был спорить на ящик пенного. Немного жалею, что от спора мы решили отказаться.
В частности, в отделе безопасности утверждали, что регулярно проводят анализ NTDS путем прогона NTLM-хешей паролей доменных пользователей по популярным словарям, так что спреить на популярные пароли смысла нет.
И действительно, проект оказался непростым, учетную запись в домене мне не предоставили. Я проверил возможность LLMNR poisoning и прочие вариации этой атаки, попробовал слушать трафик, сканировал на предмет наличия популярных уязвимостей (Bluekeep, EternalBlue и тому подобных), проверил анонимные файловые ресурсы, нашел и изучил принтеры и МФУ. Веб тоже не дал никаких надежд.
В один прекрасный момент мне повезло: я нашел три хоста с активным сервисом DameWare, из них доменный был только один. В некоторых версиях этого продукта есть уязвимость CVE-2019-3980, позволяющая получить несанкционированный удаленный доступ к атакуемой системе.
Версия DameWare оказалась уязвимой, и мне удалось создать локальную учетную запись администратора, извлечь учетные данные из памяти процесса LSASS и развить атаку до полной компрометации домена. Опущу подробности этого вектора, они не представляют особого интереса, он был достаточно тривиален. Других векторов нам обнаружить тогда не удалось. Самое интересное было дальше.
info
Название домена целевой организации на всех скриншотах замазано, в текстовой части заменено test.
.
warning
Статья имеет ознакомительный характер и предназначена для специалистов по безопасности, проводящих тестирование в рамках контракта. Автор и редакция не несут ответственности за любой вред, причиненный с применением изложенной информации. Распространение вредоносных программ, нарушение работы систем и нарушение тайны переписки преследуются по закону.
Ход атаки
С заказчиком у нас был заключен договор сразу на два проекта, и весной 2023 года мы вернулись к нему снова, в ту же самую инфраструктуру, с той же самой точкой подключения, сервисов DameWare в сети уже не нашли. Заказчик с еще большей уверенностью стал заявлять, что в этот раз у нас точно ничего не получится, так как все замечания и единственный найденный нами баг они устранили. Даже спор снова предложил, а мы снова отказались. И снова пожалели об этом!
Доменную учетную запись нам, как всегда, не дали, и мы принялись за сетевое окружение. Я вновь посканировал на предмет аномальных ресурсов, обошел все МФУ, посниффал трафик и провел все прочие процедуры. Ничего. Мой коллега уязвимостей тоже не нашел.
И тут на одном из веб‑ресурсов мне попалось опубликованное .NET-приложение.
После нажатия кнопки Start на странице http://
происходит скачивание исполняемых файлов приложения во временную директорию на компьютере пользователя. Я подробно изучил скачанное приложение и выяснил, что оно подключается к базе данных Microsoft SQL, размещенной на хосте PPO-BD.
. Учетные данные для подключения к базе находятся в файле star.
, который скачивается вместе с приложением.
Однако пароль от учетной записи хранится в нем в зашифрованном виде. По скриншоту может показаться, что это обычный Base64, но на поверку это оказалось не так.
Для расшифровки пароля я декомпилировал приложение с помощью ILSpy. В динамической библиотеке Star.
нашлась функция EncryptionLogic
, содержащая ключ шифрования и алгоритм расшифровки. В результате мне удалось получить пароль от учетной записи базы данных asabrys
(это не доменная учетная запись). Затем с помощью DBeaver я подключился к базе данных.
У скомпрометированной учетки были права sysadmin в пределах MS SQL, чем я и воспользовался, чтобы включить оболочку xp_cmdshell, позволяющую исполнять команды операционной системы.
Оказалось, что сервер базы данных работает в контексте служебной учетной записи MSSQL$SQLEXPRESS
, у которой есть привилегия SeImpersonatePrivilege
, то есть можно выполнять команды в контексте любой учетной записи, в том числе системной.
Чтобы загрузить необходимые инструменты на хост PPO-BD.
, я развернул FTP-сервер на рабочей станции, с которой проводил тестирование. Для эскалации привилегий до уровня SYSTEM я использовал инструмент SharpImpersonation. С его помощью создал учетку локального администратора itadmin
. Затем со своего компьютера подключился к хосту PPO-BD.
по протоколу RDP и с помощью обфусцированной сборки Mimikatz создал дамп памяти системного процесса lsass.exe и извлек хранящиеся там учетные данные.
В дампе памяти нашелся NTLM-хеш пароля учетной записи компьютера test.
. Других актуальных доменных учеток на хосте PPO-BD.
не было.
Я использовал Rubeus, чтобы запросить TGT-билет Kerberos для учетной записи test.
, используя NTLM-хеш ее пароля. Это позволило получить доступ в домен test.
.
Используя учетную запись компьютера PPO-BD$
, я собрал информацию о домене, включая данные о групповых политиках. При анализе скриптов, запускаемых этими политиками, удалось найти несколько файлов, в которых был прописан пароль для локальной учетной записи LocalAdmin
.
Я подключился к серверу OMO-FSCHANGE.
от имени учетной записи LocalAdmin
. Быстрый осмотр содержимого дисков не принес ничего полезного — ценных данных не нашлось, активных сессий администраторов тоже не было. Зато удалось сделать дамп хранилища локальных учетных записей (LSA).
Извлеченные из LSA локальные учетные данные включали NTLM-хеш локальной учетки admin-omsk
, которая состоит в группе локальных администраторов. После перебора хеша по словарю удалось восстановить пароль — 16010916.
С помощью локальной учетной записи admin-omsk
я получил доступ к серверу OMO-TECH.
. На этом сервере нашел активную сессию учетной записи с таким же именем, но уже доменной — test.
.
Хоть учетная запись test.
и не входила в состав доменных административных групп, она оказалась владельцем учетных записей администраторов, отвечающих за регион «ОМСК».
Продолжение доступно только участникам
Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».
Присоединяйся к сообществу «Xakep.ru»!
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее