Делаем разбор нашумевших фреймворков, которыми активно пользуются злоумышленники.
Популярность фреймворков постэксплуатации среди злоумышленников растет: это удобный инструмент контроля зараженных устройств и горизонтального перемещения внутри сети. Они помогают атакующему собрать всю карту сети и связи между узлами в одном интерфейсе, из которого они же и управляются. Среди фреймворков тоже есть своя мода: их число растет и появляются новые проекты, что ставит новые задачи перед создателями средств защиты. То и дело в открытый доступ попадают взломанные версии инструментов. В 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 правил и десятки модулей со сложной логикой.
Скриншот интерфейса с официального сайта 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 на своем сайте заявляют (дословно): «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 байт за счет дополнительных символов \r\n в конце каждого сообщения.
Передача метаданных по протоколу 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 кодируют байты своих данных в виде английских слов
Живой, мертвый или в суперпозиции? Узнайте в нашем канале