• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Глубокое погружение в Cobalt Strike Malleable C2

yashechka

Генератор контента.Фанат Ильфака и Рикардо Нарвахи
Эксперт
Регистрация
24.11.2012
Сообщения
2 344
Реакции
3 563
Одна из самых ценных функций Cobalt Strike - это его способность изменять поведение полезной нагрузки маячка. Изменяя различные значения по умолчанию в рамках платформы, оператор может изменять объем памяти, занимаемый маячка, изменять частоту регистрации и даже то, как выглядит сетевой трафик маячка. Все эти функции контролируются профилем Malleable C2, который выбирается при запуске командного сервера.

В статье делается предположение, что вы понимаете основы Malleable C2, и она предназначена для использования в качестве справочного материала при проектировании и создании профилей C2. Профиль, находящийся по адресу (https://github.com/threatexpress/malleable-c2), используется в качестве справочного профиля. Он хорошо документирован и содержит советы и рекомендации по созданию новых профилей C2.

Если вы новичок в C2, мы рекомендуем начать с этой ссылки Джеффа Диммока (@bluscreenofjeff) https://bluescreenofjeff.com/2017-01-24-how-to-write-malleable-c2-profiles-for-cobalt -strike/ или чтение других ссылок.

Большое спасибо @andrewchiles и @001SPARTaN за помощь в тестировании и разработке этого профиля C2 !!!

Общие советы

- Не используйте дефолт. Используйте профиль.
- Измените образцы профилей перед использованием. Вероятно, что общедоступные профили Malleable C2 подписаны продуктами безопасности.
- Помните, что вы все еще генерируете "маячковый" сетевой трафик, который создает обнаруживаемый шаблон, который в основном не зависит от выбранного профиля.
- Тестируйте, Тестируйте, Тестируйте

Ниже приведены быстрые советы, которые следует учитывать при установке значений параметров. Следуйте этому, чтобы уменьшить количество ошибок при устранении неполадок.

Заключайте параметры в двойные кавычки, а не в одиночные

set useragent "SOME AGENT"; # GOOD
set useragent 'SOME AGENT'; # BAD


Точки с запятой - это можно

prepend "This is an example;";

Экранируйте двойные кавычки

append "here is \"some\" stuff";


Экранируйте бэклэши

append "more \\ stuff";


Некоторые специальные символы не нужно экранировать

prepend "!@#$%^&*()";

Описание профиля


Пример профиля, использованный в сообщении, можно найти по адресу https://github.com/threatexpress/malleable-c2. Этот профиль C2 предназначен для имитации запроса jQuery. Эта структура javascript часто используется на многих веб-сайтах и может сливаться с целевой сетью.

Шаг 1 - Выберите тему

Обдумайте свою цель, когда решаете, какой профиль емулировать. Трафик C2 должен сливаться с обычным трафиком. Сетевой трафик из профиля C2 может обходить сетевые датчики, но вы хотите настроить его так, чтобы убедить защитника в том, что трафик является законным. Убедить сетевого аналитика или группу безопасности в том, что трафик безопасен, - хороший способ обойти средства защиты и заставить аналитиков игнорировать предупреждения или отмечать их как безопасные. Мы решили использовать запрос jQuery, чтобы вписаться в него. Это общий подход, который может работать против широкого круга целей.

Шаг 2 - Создайте профиль

Начать с нуля или использовать шаблон? Мы рекомендуем использовать существующий профиль и разработать собственный шаблон. Профиль jQuery был настроен и доработан в качестве базового профиля, который мы использовали в течение нескольких лет. Его часто используют как отправную точку для создания новых профилей.

Справочный профиль документирован, но давайте пройдемся по каждому разделу…

Справочный профиль

Примечание. В справочных материалах и рекомендациях, описанных ниже, используется профиль Malleable C2, который находится по адресу https://github.com/threatexpress/malleable-c2.

Имя профиля

1639561783268.png

Выберите имя профиля, которое вы хотите видеть в своих отчетах. Это не влияет на трафик маячка или его влияние на цель.


Время сна


1639561799915.png


Эти настройки управляют временем по умолчанию между проверками маячка (в миллисекундах). Новый маячок HTTP/S, созданный с использованием этого профиля C2, будет проверять, используя время сна в качестве интервала обратного вызова, плюс случайное количество времени до указанного в процентном соотношении джиттера. Выберите время по умолчанию, которое будет соответствовать вашим эксплуатационным потребностям, а также любым соображениям OPSEC. В этом примере используется 60 секунд. Это может быть слишком агрессивным для многих действий, а некоторые защитные продукты могут быстро обнаружить сигнальное поведение, если оно слишком регулярное.

User-Agent

1639561824053.png


Используйте значение User-Agent, которое соответствует вашему взаимодействию. Если возможно, попробуйте захватить реальную строку User-Agent из целевой организации, чтобы смешаться с реальным трафиком. Например, рассмотрите возможность отправки легковестного сообщения электронной почты с веб-ошибкой целевым членам организации и отслеживайте отправку пользовательских агентов в последующих запросах GET. Если вы используете HTTP-трафик с открытым текстом или если в целевой среде используется перехват SSL, строка User-Agent, не соответствующая среде, может служить индикатором для защитников.

Сертификат SSL

1639561846986.png


Этот параметр управляет сертификатом SSL, используемым для связи HTTPS. По возможности используйте настоящий, правильно оформленный SSL-сертификат для домена, который вы используете. LetsEncrypt может выдавать бесплатные SSL-сертификаты, которым доверяют все основные операционные системы и браузеры, и затруднит для защитников проверку трафика маячка.

Шаги по созданию хранилища сертификатов SSL подробно описаны в https://www.cobaltstrike.com/help-malleable-c2.

Примечание. Обычно рекомендуется настраивать вашу цель для работы с сертификатами HTTPS на хостах-редиректорах. Это ограничивает реконфигурацию, требуемую на вашем командном сервере, в случае сгорания домена во время операции. Предостережение: некоторые поставщики CDN требуют, чтобы ваш исходный хост поддерживал действующий сертификат SSL, а вашему командному серверу потребуется установленный доверенный сертификат SSL для работы доменного фронтинга. См. Документацию по Cobalt Strike https://www.cobaltstrike.com/help-malleable-c2#validssl или этот пост от @bluscreenofjeff https://bluescreenofjeff.com/2017-01-24-how-to-write-malleable-c2-profiles-for-cobalt-strike/ для получения инструкций по настройке SSL с Cobalt Strike.

Порождение процессов

1639561872119.png

Параметры spawnto определяют, какой процесс будет запускаться маячком для постэксплуатационных заданий и при использовании команды spawn. Эта команда может даже использовать параметры командной строки

set %windir%\\sysnative\\svchost.exe -k localservice -p -s fdPHost

Дополнительные параметры могут помочь маячку лучше вписаться, если защитник просматривает командную строку запущенных процессов. Иногда бывает сложно найти хорошего кандидата для использования с spawnto. Поэкспериментируйте и проверьте перед выбором.

Общие рекомендации:

- Не используйте защищенные двоичные файлы. Как узнать, защищены ли они?
- Не выбирайте двоичные файлы, которые выполняются с UAC.
- Выберите 64-битный двоичный файл для полезной нагрузки x64 и 32-битный полезный файл для полезной нагрузки x86.
- Подумайте о выборе двоичного файла, который не выглядел бы странно при сетевых подключениях.

SMB маячки

1639561918806.png


Маячки SMB используют именованные каналы для связи через родительский маячок. Это позволяет осуществлять одноранговую связь между маячками на одном и том же хосте или по сети. Имена каналов SMB Beacon можно настроить. Не используйте настройки по умолчанию, так как некоторые защитные продукты будут искать эти значения по умолчанию. Попробуйте выбрать что-то, что будет гармонировать с целевой средой. Перейдите по этой ссылке: https://www.cobaltstrike.com/help-smb-beacon для получения дополнительной информации о маячках SMB.

DNS маячки

1639561937420.png


DNS-маячки используют DNS для всех или части своих коммуникаций. В зависимости от защитных технологий целевой среды трафик DNS может быть легко обнаружен, но часто это слепое пятно для защитников. DNS лучше всего использовать в качестве канала низкого и медленного резервного копирования. Измените настройки по умолчанию, чтобы они лучше соответствовали вашей вовлеченности. Перейдите по этой ссылке https://www.cobaltstrike.com/help-dns-beacon для получения дополнительной информации о DNS-маяках.

Процесс Стейджинга

1639561958590.png


1639561968420.png


Процесс стейджинга маяка можно настроить. Стейджинг - это кусок кода, используемый для полной загрузки маяка. Прочтите этот пост https://blog.cobaltstrike.com/2013/06/28/staged-payloads-what-pen-testers-should-know/, чтобы узнать больше о процессе подготовки маячка. К счастью, HTTP-характеристики стейджера маячка можно изменить. Измените эти настройки, чтобы имитировать один законный HTTP-запрос/ответ.

В этом примере запросы отправляются в /jquery-3.3.1.slim.min.js или /jquery-3.3.2.slim.min.js, в зависимости от архитектуры целевого процесса, чтобы начать промежуточный процесс. Параметры HTTP-сервера созданы для имитации запроса jQuery. Команды и полезные данные маячка смешиваются с фрагментом текста javascript jQuery. Клиент делает разумный запрос при запросе jQuery из сети доставки контента. Многие веб-сайты делают это с помощью <script src=”jquery-3.3.1.min.js”></script>. URI можно изменить, чтобы они выглядели как другие CDN. Например, вы можете изменить http-stager так, чтобы он выглядел так, как будто он извлекается из Microsoft jQuery CDN. <script src=”https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.3.1.min.js“></script>

В некоторых случаях может быть лучше использовать стеджлесс полезные нагрузки, поскольку промежуточный процесс является индикатором, о котором могут предупреждать защитные продукты.

Индикаторы памяти

1639562060817.png


Некоторые из новейших функций Malleable C2 позволяют модифицировать многие индикаторы памяти маячка. Эта тема может быть довольно глубокой и заслуживает отдельного сообщения в блоге. Смотри. Https://blog.cobaltstrike.com/2018/02/08/in-memory-evasion/ и https://www.youtube.com/playlist?list=PL9HO6M_MU2nc5Q31qd2CwpZ8J4KFMhgnK для получения дополнительной информации об управлении индикаторами памяти маяка. В этом примере используется инструмент peclone для извлечения метаданных памяти из explorer.exe, сохранения как части полезной нагрузки маячка, а также используются некоторые рекомендации из сообщения Рафаэля "In Memory Evasion".

HTTP GET

1639562079680.png

Как и в разделе http-stager, запросы/ответы HTTP GET могут быть изменены. Этот раздел используется для проверки командного сервера на наличие задач. Более подробную информацию можно найти здесь https://www.cobaltstrike.com/help-http-beacon. Этот профиль использует аналогичный формат, найденный в http-stager. Разница заключается в использовании файла cookie __cfduid =. Это значение содержит информацию о маяке и используется командным сервером для выполнения задач. Командный сервер отвечает задачей, скрытой в тексте javascript jQuery. Измените этот раздел, чтобы он соответствовал HTTP-трафику, который вы хотите использовать. Если вы решите использовать профиль только для GET (см. ниже), то именно так Beacon передает информацию обратно на командный сервер.

Примечание: Параметр set uri может принимать несколько URI. Это можно использовать для разнообразия ваших запросов. Однако маячки не будут выполнять запросы в стиле циклического перебора, как вы могли предположить, и вместо этого один URI из списка будет назначен каждому маячку во время подготовки.

HTTP POST

1639562106089.png

Как и разделы http-stager и http-get, запросы ответы HTTP-POST можно изменять. Раздел HTTP-POST служит ответом маяка на команды, выдаваемые сервером, и может фактически выполняться как запрос HTTP GET или HTTP POST. В этом примере используется HTTP POST, как показано с помощью команды установки "POST"; HTTP-трафик соответствует тому же стилю раздела HTTP-GET и имитирует запрос jQuery. Вы можете изменить режим с HTTP-POST на HTTP-GET, закомментировав раздел POST и раскомментировав раздел GET HTTP-POST.

Примечание: профили GET-Only имеют некоторые недостатки, и вы можете задуматься при попытке получить большие объемы данных (т.е. скачать файл или сделать снимок экрана). Это связано с тем, как данные передаются в URI, параметрах URI или заголовках. Этот побочный эффект хорошо задокументирован Рафаэлем на https://blog.cobaltstrike.com/2018/03/09/beware-of-slow-downloads.

Шаг 3 - Валидация и тест

Важно всегда проверять и тестировать профили Malleable C2 перед их использованием на цели. Неправильный профиль может легко привести к тому, что маячки не будут регистрироваться или не отправлять выходные данные из задач. Всегда тестируйте новые профили C2, прежде чем использовать их в реальной ситуации.

C2lint

C2lint - это инструмент, поставляемый с Cobalt Strike для проверки профиля на наличие ошибок. Запустите это и исправьте ошибки перед использованием в задании. (https://www.cobaltstrike.com/help-malleable-c2)

Пример

./c2lint c2lint jquery-c2.3.11.profile

Ручное тестирование


Помимо тестирования с помощью c2lint, вручную протестируйте все функции маячка в тестовой системе. Быстрые шаги для ручного тестирования и проверки

- Запустите wireshark
- Запустите командный сервер, используя тестовый профиль
- Создайте прослушиватель HTTP (с именем http)
- Создайте прослушиватель SMB (с именем smb)
- Создайте атаку веб-доставки по сценарию, чтобы настроить HTTP-маячок.
- Attacks -> Web Drive-by -> Scripted Web Delivery
- Запустите PowerShell в тестовой системе Windows от имени администратора.
- Взаимодействовуqте с маячком с повышенными привилегиями
- Создавайте новые маячки, взаимодействуйте с каждым и выполняйте команды создания:

spawn x64 http
spawn x86 http
spawn x64 smb
spawn x86 smb

- Просмотрите данные захвата пакетов, чтобы убедиться, что HTTP-трафик соответствует вашим ожиданиям:
- Просмотрите процесса стейджинга
- Просмотрите процесс http-get
- Просмотрите процесс http-post (даже если вы используете GET)
- Выполните другие команды маячка, чтобы убедиться, что он работает должным образом (как минимум):

keylogger
screenshot
download
upload


Список литературы
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх