Содержание статьи
Минутка исторического экскурса. В конце 2023 года коллеги из Specterops опубликовали исследование, в котором подробно раскрыли техники повышения привилегий в домене AD через эксплуатацию серверов SCCM (System Center Configuration Manager). С тех пор вышло еще несколько крутых ресерчей на ту же тему. Если хочешь фундаментально во всем разобраться — добро пожаловать в репозиторий на GitHub, где собраны и упорядочены техники получения учеток, повышения привилегий и постэксплуатации, связанные с SCCM. Здесь же я хочу наглядно продемонстрировать, как можно пользоваться атаками NTLM Relay на SCCM.
warning
Статья имеет ознакомительный характер и предназначена для специалистов по безопасности, проводящих тестирование в рамках контракта. Автор и редакция не несут ответственности за любой вред, причиненный с применением изложенной информации. Распространение вредоносных программ, нарушение работы систем и нарушение тайны переписки преследуются по закону.
Теория
Для тех, кто только погружается в тему и еще не знает, что такое SCCM, дам небольшую справку. Итак, System Center Configuration Manager (с 2020 года известен как Microsoft Endpoint Configuration Manager, MECM) — это ПО для централизованного управления. В официальной документации мне не удалось обнаружить четкого определения, что это за сущность и зачем нужна, поэтому я сформулировал его самостоятельно.
Можно заметить, что это определение, по сути, описывает сам Active Directory (далее AD). На самом деле — и да и нет: Configuration Manager был создан для облегчения жизни ИТ‑администраторам, а также для снижения затрат на администрирование.
Приведу простой пример. Когда в твоей компании тысяча сотрудников, с администрированием может справиться условно пять человек, а что, если компания выросла до десяти тысяч или даже ста тысяч человек? Наймем пятьдесят или пятьсот человек соответственно? Конечно, мы хотим избежать линейной зависимости, для этого и был придуман сначала AD, а после Configuration Manager.
SCCM зачастую встречается в достаточно больших компаниях, где количество пользователей давно перевалило за десять тысяч. Он объединяет в себе почти все возможные оснастки в AD и позволяет более эффективно управлять рабочими станциями, софтом и всем остальным.
Для подтверждения моих слов — скриншот из официальной документации.

Также я выделил ключевую мысль: «может повлиять на каждый компьютер в организации». Но оговорюсь: при условии, если компьютер находится под управлением сервера SCCM.
Со структурой помогла разобраться схема, приведенная ниже.

Вот ключевые составляющие SCCM:
- Архитектура «клиент‑сервер». Клиентами выступают все узлы домена, например DC или Exchange, а сервером — мастер SCCM.
- Реализована отказоустойчивость. Она достигается добавлением пассивного сервера, готового перехватить обязанности мастера в случае, если тот выйдет из строя.
- Работает в терминах сайтов. Здесь всё из официальной документации, просто нужно привыкнуть к терминологии: сайтов в одном домене AD может быть несколько.
- Реализована иерархия сайтов. Сайты могут быть связаны между собой дочерними отношениями. Каждый сайт можно атаковать независимо от другого.
- Реализована ролевая модель. В сайтах SCCM используется хорошо проработанная ролевая модель как для пользователей, так и для серверов. Подробно на этом останавливаться не буду, в рамках статьи важны только две роли: Full administrator для пользователей и Site system servers для серверов. Подробнее про ролевую модель серверов можно прочитать в документации (также — в разделе для пользователей).
- Использует MSSQL. SCCM вообще не может существовать без MSSQL. В БД хранится вся служебная информация, например таблицы с записями про роли. Оснастка MSSQL может быть развернута на мастере, но зачастую выделяется в отдельный сервер.
Разведка
На этом пора заканчивать с теорией и приступать к практике. В качестве стенда я взял лабу GOAD. Если у тебя возникнет желание попробовать все описанное ниже, то ты без проблем развернешь стенд и проведешь тесты. Схема стенда достаточно понятная, у меня будет SCCM/MECM, контроллер домена, который не находится под управлением SCCM, клиент SCCM и сервер с MSSQL для хранения всей служебной информации.

Все дальнейшие действия подразумевают наличие у атакующего учетной записи в домене AD.
В первую очередь мы должны понять, есть ли в домене SCCM. Сделать это можно с помощью одного нехитрого LDAP-запроса:
ldapsearch -E pr=10000/noprompt -D <username>@<domain> -w <password> -x -H ldap://<IP> -b
DC=<domain>,DC=<domain> '(objectclass=mssmsmanagementpoint)' dnshostname,msSMSSiteCode
Также в сообществе разработали инструмент для автоматизации всей разведки — sccmhunter.py. Можно воспользоваться им, тогда вся полученная информация еще будет упорядочена в красивые таблицы.

После разведки через LDAP можно провести разведку по SMB. Это будет вполне по силам сделать руками.

Но лучше автоматизировать.

Продолжение доступно только участникам
Материалы из последних выпусков становятся доступны по отдельности только через два месяца после публикации. Чтобы продолжить чтение, необходимо стать участником сообщества «Xakep.ru».
Присоединяйся к сообществу «Xakep.ru»!
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее