13.05.2023 | Ищем иголку вредоносных запросов в стоге трафика: PT NAD vs. Cobalt Strike и Brute Ratel 4 |
Популярность фреймворков постэксплуатации среди злоумышленников растет: это удобный инструмент контроля зараженных устройств и горизонтального перемещения внутри сети. Они помогают атакующему собрать всю карту сети и связи между узлами в одном интерфейсе, из которого они же и управляются. Среди фреймворков тоже есть своя мода: их число растет и появляются новые проекты, что ставит новые задачи перед создателями средств защиты. То и дело в открытый доступ попадают взломанные версии инструментов. В 2021 и 2022 годах были бесплатно опубликованы взломанные версии давно известных платформ Cobalt Strike и Brute Ratel 4 со схожей функциональностью, после чего их популярность резко возросла. Сейчас, в 2023 году, среди фреймворков можно заметить новые названия . Какую сложность они представляют для средств защиты? Зачастую хакерские фреймворки имеют богатый арсенал обхода узловых средств защиты. Они умеют оставаться незамеченными для антивирусов и EDR-решений. Тем не менее зараженный узел по-прежнему использует сеть для связи с управляющими серверами и получения команд. Так называемые биконы (beacons) Cobalt Strike умеют общаться с управляющим сервером и без доступа в интернет: они просто передают свои данные по цепочке таких же биконов по протоколам SMB или TCP, пока наконец не выйдут «наружу». Соединение же с самим управляющим сервером может пойти более привычным образом — по HTTP или HTTPS, — и оно нередко мимикрирует под загрузку библиотеки jQuery или общение с удостоверяющими центрами. Другие фреймворки, напротив, могут изображать обычный сайт: периодические отстуки отправляются на HTML-страницы, а результаты их выполнения выглядят как POST-запросы на PHP-скрипты. Отстук — это не что иное, как периодический запрос на управляющий сервер, главная цель которого — дать понять, что бикон все еще жив. Для любителей более изощренным способом скрыться в инфраструктуре эти инструменты могут предложить классические DNS-туннели. Многообразие сетевых протоколов и способов маскировки может помочь злоумышленникам в обходе привычных сетевых средств защиты. Но о решениях класса network traffic analysis (NTA), которым является наш продукт PT NAD, злоумышленникам пока известно мало. Пару слов о продукте: PT Network Attack Discovery (PT NAD) — это средство поведенческого анализа сетевого трафика. Помимо анализа общей фактуры всего сетевого многообразия сети, продукт отлично определяет все стадии атак на инфраструктуру. Работает система просто: вы подаете в PT NAD копию сетевого трафика по принципу «чем больше — тем лучше», а далее он будет обнаруживать вредоносные программы, хакерские атаки и другую злонамеренную активность, даже применение пользовhavoателями слабых паролей и передачу паролей в открытом виде. В наборе экспертизы сейчас насчитывается более 7000 правил и десятки модулей со сложной логикой. Cobalt Strike
Скриншот интерфейса с официального сайта cobaltstrike.com Главным «фигурантом» наших детектов Cobalt Strike станут метаданные. Именно их бикон передает с каждым отстуком. Иногда отстуки заканчиваются для бикона новыми командами, выполнение которых требует еще нескольких запросов. В каждом сетевом запросе от бикона будут передаваться метаданные, которые представляют из себя 128 шифрованных байтов. Эти данные действительно имеют высокую энтропию, а внутри них содержатся различные идентификаторы и информация о самом биконе. Время между отстуками строго фиксировано и задается в Malleable C2 config — это конфигурационный файл, с которым запускается управляющий Team Server (C2). Он содержит абсолютно все параметры Cobalt Strike. Временная задержка строго фиксирована, но умеет случайным образом меняться в заданном диапазоне, например 60 ± 5% секунд между запросами. HTTP-протокол — самый популярный транспорт для биконов и имеет больше всего настраиваемых параметров: заголовки, метод, возможность вставлять различные мусорные данные для маскировки и т. д. Метаданные, кстати, передаются не в открытом виде, а кодируются в различные формы. И здесь авторы фреймворка хорошо постарались: кодировок действительно много, и они могут быть рекурсивно вложены. Например, метаданные могут быть сначала «поксорены» с четырьмя случайными байтами, затем закодированы в Base64 и потом в NetBIOS. Правда, размер таких метаданных будет расти кратно. Где могут передаваться метаданные? Везде: внутри HTTP-заголовков, в теле POST-запроса и даже в URL. В последнем случае, если данные будут «поксорены» со случайным ключом, URL будет также постоянно меняться, оставаясь при этом одной длины. В любой другой ситуации, напротив, URL случайным образом выбирается среди заданных в конфигурации — это также затрудняет обнаружение. Я уже говорил, что Cobalt маскируется под легитимные запросы? Для достижения этой цели перед и после метаданных можно добавлять мусорные данные: например, сами метаданные могут передаваться в Base64 якобы под видом JWT в HTTP cookie, будучи обрамленными необходимыми конструкциями. Каждый автор волен сам придумывать способ маскировки, поэтому вы можете найти десятки и сотни различных конфигураций Malleable на GitHub.
Cobalt Strike маскируется под запросы популярной библиотеки JQuery. Метаданные передаются в заголовке Cookie, при этом ответ от сервера маскируется под содержимое легитимной библиотеки Если вы устали от перечисления возможностей Cobalt Strike, то это неудивительно: он обладает огромной гибкостью и потенциалом маскировки. Обнаружение Cobalt Strike по сети было для нас несложной задачей. Для ее решения мы использовали:
Конечно, в настоящем трафике существует достаточное количество периодических HTTP-запросов с подходящей структурой, но мы смогли довести алгоритм обнаружения до полного отсутствия ложных срабатываний. Все это в совокупности лежит в основе нашего модуля обнаружения Cobalt Strike в PT NAD. Описание Cobalt Strike будет неполным, если не упомянуть его способы горизонтального перемещения по сети. В его арсенале имеются создание сервисов на удаленном сервере по SMB и сессии SSH на Linux. Само по себе создание сервисов и задач на удаленных серверах хорошо изучено и покрыто нашими правилами, но в этой секции мы разберем особенности взаимодействия биконов Cobalt Strike по другим протоколам. Конечно, распространять на другие узлы можно и привычные HTTP(S) биконы, но для устройств без доступа в интернет существуют только две узкоспециализированные опции: SMB и TCP. Они действуют схожим образом: это либо bind/reverse TCP-соединение, либо его аналог в SMB — SMB-пайпы (pipes). Причем появление необычного пайпа также бросается в глаза средствам защиты. После успешного захвата узла и установления соединения (подключения к пайпу) бикон первым делом передает свои метаданные. Размер метаданных равен 132 байтам, что соответствует xor-шифрованию со случайным ключом — он передается в первых четырех байтах.
Пакет SMB, в котором видно передачу метаданных бикона Cobalt Strike
Передача метаданных от бикона Cobalt Strike, но уже по протоколу TCP По протоколу TCP мы наблюдаем ту же самую картину: 132 байта с данными о биконе в начале соединения. И в том, и в другом случае метаданные предваряются четырьмя байтами длины, которые посылаются отдельными пакетами. Для метаданных она будет равняться 0x84 0x00 0x00 0x00 в шестнадцатеричной системе. А раз для SMB- и TCP-биконов метаданные передаются только вначале, все последующие разы узлы будут обмениваться только полями длины по четыре нулевых байта. Только что мы проанализировали трафик Cobalt Strike в лабораторных условиях методом черного ящика, и гибкость этого фреймворка поражает. При компиляции биконов на командном сервере в их код буквально компилируется алгоритм по извлечению метаданных, как они описаны в конфигурации Malleable. Все это дает огромный простор фантазии злоумышленников при маскировке запросов, и, как правило, сетевые средства обнаружения находятся на месте догоняющих: они могут обнаруживать только известные конфигурации. Наш механизм детекта в PT NAD способен находить новые неизвестные образцы этого фреймворка. Благодаря чему это стало возможно? Метаданные:
Почему же авторы Cobalt Strike не добавят в метаданные случайную длину, кодировку или не сделают время между отстуками максимально непредсказуемым? Возможно, причин этому несколько:
Подтвердить или опровергнуть эти гипотезы поможет следующий фреймворк постэксплуатации — Brute Ratel C4. Brute Ratel C4
Интерфейс командного сервера Brute Ratel C4 Авторы Brute Ratel C4 на своем сайте заявляют (дословно): «Badger doesn’t care. It takes what it wants! » Brute Ratel C4 и Cobalt Strike имеют как схожую функциональность, так и ряд отличий: например, Brute Ratel C4 называет свои исполняемые файлы не «биконы», а «барсуки (баджеры)», а еще у них другой цвет интерфейса. Транспорты «барсуков» те же самые: HTTP(S) и SMB/TCP. Для искушенных пользователей также существуют способы коммуникации через DNS-туннели, однако во взломанной версии 1.2.2 эта возможность отсутствовала. Упор в Brute Ratel C4 был сделан на обход узловых детектов, за что его считали не обнаруживаемым на узлах и по-настоящему опасным. Мы со своим анализом трафика думаем иначе.
Отличий Brute Ratel 4 от Cobalt Strike с точки зрения сети несколько, давайте их перечислим:
Выходит, гибкости для обхода сетевых детектов у Brute Ratel C4 еще меньше. Строгие правила передачи метаданных по HTTP делают его еще более простой мишенью для наших алгоритмов детектирования. Алгоритм получается простым:
Что касается общения между баджерами по TCP- и SMB-протоколам, их протокол взаимодействия максимально простой. Обмен данными через SMB pipe или TCP-соединение осуществляется напрямую, ведь спрятать что-либо в них действительно сложно.
Передача метаданных по протоколу SMB от баджера Brute Ratel С4 В SMB-трафике видно, как баджер передает метаданные во фрагменте Base64 данных длиной 108 байт. После декодирования они превратятся в 80 шифрованных байтов, что соразмерно данными Cobalt Strike во время отстука. В TCP-сообщениях данные будут иметь длину 110 байт за счет дополнительных символов в конце каждого сообщения.
Передача метаданных по протоколу TCP от баджера Brute Ratel С4 Другие платформыCobalt Strike имеет свою устоявшуюся аудиторию и разрабатывается более 10 лет. Brute Ratel, напротив, появился в конце 2020 года и получил заметную популярность после выхода взломанной версии в 2022-м. Каждый день злоумышленники ищут аналоги своим инструментам, которые постепенно обрастают детектами. Так, в последнее время стали заметны новые имена — открытые фреймворки Sliver и Havoc. Функциональность таких платформ постэксплуатации несильно отличается, а интерфейс Havoc очень напоминает Cobalt Strike. И даже если функциональность остается той же, средства защиты и специалисты могут быть не готовы к этим новым инструментам. Тем более что группы злоумышленников уже активно используют Sliver — это подтверждает опыт команды по расследованию инцидентов из экспертного центра безопасности Positive Technologies — PT Expert Security Center (PT ESC). Мы постоянно следим за новыми хакерскими инструментами и трендами, непрерывно обновляем экспертизу в продукте PT Network Attack Discovery и разрабатываем новые модули и правила для обнаружения сетевых угроз. С технической точки зрения способы общения Cobalt Strike и Brute Ratel 4 по протоколу HTTP представляют огромный интерес, так как имеют большую вариативность и способность мимикрировать под легитимный трафик. Сейчас с их обнаружением PT NAD 11 пока справляется с помощью правил, а в новой версии 11.1, которая выйдет в ближайшее время, помогать с этим будут уже разработанные нами модули. В любом, даже самом хитром протоколе есть пригодные для детекта артефакты. Например, первый DNS-запрос от Sliver начинается с символов «baakb», а DNS-запросы Cobalt Strike часто содержат внутри себя суффикс «.180.».
Карточка в PT NAD, в которой сообщается об успешном обнаружении активности бикона Cobalt Strike
Карточка сессии в PT NAD, в которой открыт один из HTTP-запросов бикона. В ней видны детали HTTP-запроса: заголовки, URL, метод, а также адреса, порты и домены Мы пишем детектирующие правила для всех видов коммуникации вредоносных программ, многие из которых способны вас удивить:
Иногда биконы Sliver кодируют байты своих данных в виде английских слов |
Проверить безопасность сайта