Команда Центра кибербезопасности УЦСБ продолжает рассказывать о самых интересных практиках пентеста. Напоминаем, что в прошлой статье мы писали о том, как нам удалось пробить периметр с двух точек: Windows- и Linux-серверов, а также захватить внутреннюю инфраструктуру компании.
В этот раз мы покажем, как компрометация домена Active Directory (AD) может привести к полной остановке деятельности компании на неопределенное время. Надеемся, наши кейсы будут вам полезны, а этот опыт позволит избежать схожих проблем!
Предыстория
В 2023 году в крупной компании произошел инцидент, который вызвал простой процессов и повлек за собой большие убытки. После устранения последствий руководство решило убедиться, что слабых мест в системе защиты больше нет. Именно поэтому компания обратилась к нам для проведения независимой оценки безопасности с помощью пентеста.
С чего все начиналось
Стоит отметить, что работы проводились по методу черного ящика. Так, перед началом внутреннего тестирования мы пробили внешний периметр компании и получили доступ к Linux от root.
Метод чёрного ящика предполагает имитирование взлома злоумышленниками, которые ничего не знают об инфраструктуре организации.
После проведения разведки низко висящих фруктов не нашлось — не было MS17, Zerologon, BlueKeep, дефолтные пароли почти никуда не подходили. Время на проведение работ по проекту подходило к концу.
Неожиданно получилась цепочка эксплуатации хорошо известных уязвимостей PetitPotam + Relay + PrintNightmare + impersonate в одном месте. Догадаться использовать эти уязвимости и мисконфиги оказалось непросто. Гайдов и описаний эксплуатации из такого контекста не было. В процессе работы пришлось импровизировать и придумывать, как с этим работать. Также не обошлось и без везения — активной сессии администратора на захваченной машине. Наградой за кропотливый труд стало повышение привилегий до администратора домена.
Схема захвата Windows машины приведена ниже.
Принуждение к аутентификации CVE-2021-36942 (PetitPotam или Бегемотик)
Уязвимость CVE-2021-36942, известная также как PetitPotam, заключается в возможности вызова без аутентификации методов протокола MS-EFSRPC. В результате вызовов этих методов атакованный узел осуществляет запрос на указанный узел, вместе с тем при подключении к нему происходит аутентификация с использованием механизма NTLM. Потенциальный нарушитель может таким образом провоцировать аутентификацию атакуемых узлов на подконтрольном ему узле для проведения дальнейших атак, нацеленных на получение доступа к домену или повышение привилегий.
В ходе работ мы проверили возможность эксплуатации уязвимости CVE-2021-36942 на нескольких узлах внутренней сети.
В результате было обнаружено, что этой уязвимости подвержены несколько узлов из домена. Демонстрация эксплуатации уязвимости приведена на Рисунке 1.
Полученные таким образом NetNTLMv2-хэши были использованы при выполнении шагов, описанных в следующем разделе.
Уязвимость CVE-2021-34527 (PrintNightmare)
С помощью уязвимости PrintNightmare потенциальный злоумышленник может повысить свои привилегии на узле с ОС Windows, используя очередь печати Windows. Эксплуатация уязвимости происходит удаленно, для нее необходима учетная запись с привилегиями обычного пользователя. Так как у нас ее не было, дальнейшие этапы работы проводились в контексте NTLM Relay-атаки с использованием машинной учетки.
Получение машинной УЗ
При выполнении NTLM relay-атаки злоумышленник внедряется между клиентом и сервером, используя особенности протокола NTLM. Поэтому в результате атаки он может успешно проводить аутентификацию на целевом узле от имени перехваченной УЗ. Демонстрация захвата сессии SMB приведена на Рисунке 2.
После установления SMB-соединений мы проверили возможность чтения и записи сетевых папок от имени машинной УЗ. На одном из узлов было обнаружено соответствующее право. На сетевой папке с возможностью записи мы разместили файл с расширением DLL, который позволял пентестеру выполнять команды от имени системы.
Демонстрация подключения к сетевой папке приведена на Рисунке 3.
Далее был загружен на узел файл DLL. Демонстрация загрузки приведена на Рисунке 4.
Затем мы провели эксплуатацию уязвимости, как показано на Рисунке 5.
В результате успешной эксплуатации удалось получить доступ к узлу от имени системы. Демонстрация полученного доступа к целевому узлу представлена на Рисунке 6.
Повышение привилегий до администратора домена
После получения доступа от имени системы мы обнаружили, что на узле находится сессия администратора домена. С помощью техники impersonate удалось получить сессию от имени администратора домена.
На сетевом диске, доступном для записи, был размещен исполняемый файл incognito.exe и запущена команда для открытия консоли от имени администратора домена (Рисунок 7).
Заметим, что права администратора домена предоставляют пользователю полный доступ к файлам, каталогам, службам и другим ресурсам, которые находятся в домене AD. Учетная запись с правами администратора домена может использоваться для создания учетных записей, а также для назначения им прав и разрешений на управление доступом. Контроль над учетной записью с правами администратора домена означает контроль над всем доменом AD.
Вывод
Таким образом, вход в инфраструктуру компании был полностью скомпрометирован. Мы получили полный доступ ко всем рабочими станциям и серверам, системам виртуализации и системам резервного копирования.
Так как все сервисы компании завязаны на домене AD, его компрометация могла бы привести к полной остановке деятельности компании на неопределенный промежуток времени.
Избежать таких последствий можно было с помощью простого действия — своевременной установки обновлений. Вот несколько рекомендаций.
PetitPotam:
PrintNightmare:
Установить обновления безопасности в соответствии с версией системы
Отключить spooler, если он не используется.
Автор: Владислав Дриев, специалист по анализу защищенности УЦСБ.