При проведении тестирования на проникновение или соревнований вроде Standoff вам понадобится инструмент для постэксплуатации. С точки зрения red team, C2 — это сервер, с помощью которого вы управляете агентами, которые смогли установить на машины в целевой сети. C&C используется не только белыми хакерами для демонстрации возможных последствий атаки, но и злоумышленниками, так как несет в себе все необходимое для их задач.
Мы будем рассматривать его функционал только в целях обучения и хочу сразу отметить, что за все действия с использованием подобных инструментов отвечаете только вы сами. Никогда не нарушайте закон. Будьте на светлой стороне.
Зачем вообще пентестеру C&C? Например после отправки фишингового письма или эксплуатации уязвимости специалисту необходимо закрепиться в инфраструктуре с целью дальнейшего развития атаки. С2 позволяет настроить связь с агентами, применять шифрование и маскироваться под https или dns трафик, чтобы запутать аналитиков из SOC, получать reverse shell, производить lateral movement и многое другое.
Существует большое количество как платных (Nighthawk, Cobalt Strike, Brute Ratel) так и бесплатных (Sliver, Mythic, Havoc) C2 серверов. Мы же рассмотрим на примере моего фаворита, который еще и бесплатный — Adaptix Framework.
Скажу сразу, что я не буду демонстрировать как обходить антивирусную защиту и прочие интересные вещи, рассмотрим лишь основные возможности и функционал, так как знание подобных вещей полезно как специалистам в наступательной безопасности так и тем, кто занимается защитой.
На данный момент уже вышла версия 0.5 и мне очень нравится то, как развивается данный фреймворк (автор очень крутой).
Скачать его можно отсюда GitHub.
Здесь находится документация.
Коротко расскажу о плюсах (минусов пока не нашел).
- Есть очень красивый и функциональный GUI
- Без проблем установился на kali с первого раза (за документацию отдельный респект)
- Агенты есть как под Windows, так и под Linux с MacOS (мы установим все 3)
- Присутствует шифрование
- Есть готовые extenders (расширения), которые очень существенно прокачивают функционал фреймворка
- Можно просматривать файлы и процессы на удаленной машине, есть информативный граф, в общем все как в дорогих аналогах, но бесплатно и работает даже лучше
Устанавливать клиент и сервер мы будем на kali. В рамках тестовых машин для агентов у нас будут Windows, Linux и MacOS.
Начнем. На kali выполним
клонируем необходимое
git clone https://github.com/Adaptix-Framework/AdaptixC2.git
cd AdaptixC2
устанавливаем все что нужно для сборки клиента и сервера
sudo apt install golang-go mingw-w64 make
sudo apt install make cmake libssl-dev qt6-base-dev qt6-websockets-dev
соберем сервер, расширения и клиент
make server
make extenders
make client
Все необходимое будет в папке dist. Перейдем и выполним некоторые настройки
cd dist
ls
На что здесь стоит обратить внимание. В Adaptrix Framework очень удобный файл конфигурации. Вы можете запускать сервер как с помощью параметров, например
adaptixserver -p port -pw password -e endpoint -sc SslCert -sk SslKey (читаем документацию)
так и с помощью конфигурационного файла. Как по мне это лучший вариант. Рассмотрим этот файл
cat profile.json
{
"Teamserver": {
"port": 4321,
"endpoint": "/endpoint",
"password": "pass",
"cert": "server.rsa.crt",
"key": "server.rsa.key",
"extenders": [
"extenders/listener_beacon_http/config.json",
"extenders/listener_beacon_smb/config.json",
"extenders/listener_beacon_tcp/config.json",
"extenders/agent_beacon/config.json",
"extenders/listener_gopher_tcp/config.json",
"extenders/agent_gopher/config.json"
]
},
"ServerResponse": {
"status": 404,
"headers": {
"Content-Type": "text/html; charset=UTF-8",
"Server": "AdaptixC2",
"Adaptix Version": "v0.3"
},
"page": "404page.html"
}
}
Я думаю, что даже если вы ранее не работали с С2, все интуитивно понятно, но на всякий случай отмечу, что во-первых если вы запускаете его не в локальной лабе, то такой сервер нужно прятать (здесь мы не будем на этом останавливаться) и как минимум изменить параметры port, endpoint и password 🙂
Также обратите внимание на следующие файлы в dist — ssl_gen.sh и 404page.html. Удобно сразу сгенерировать сертификат и изменить заглушку под себя.
Отмечу, что Adaptix можно использовать совместно с коллегами по red team, что также добавляет ему плюсов.
Запустим сервер и перейдем к обзору интерфейса
в одном окне терминала выполним
./adaptixserver -profile profile.json
в другом запустим клиента
./AdaptixClient

Так выглядит интерфейс клиента

Все интуитивно понятно, нет ничего лишнего.
Под основным меню идут вкладки, например Listeners, graph, tunnels table, screens и кнопка для реконнекта. Если на них нажать, то внизу появятся новые окна.

Предлагаю сразу установить дополнительные расширения для прокачки функционала агентов.
git clone https://github.com/Adaptix-Framework/Extension-Kit.git
Теперь выберем в клиенте в меню Extender — Open Extender — Load new (как на скрине) и выбираем json файл (добавляем все что клонировали с github).

Не забываем в папках с Extenders сделать make (там где это нужно) 🙂
Теперь запустим первый listener и создадим агента.
Нажимаем на значок с наушниками — далее правой кнопкой на вкладке listeners внизу — Create

Вновь отмечу автора за удобное меню, все нужное и ничего лишнего и за широкий выбор как listeners так и agents (все основные платформы есть).
Заполняем настройки и нажимаем create. Подсказки очень помогают, даже когда ставил впервые, в документацию залез лишь пару раз.
По поводу самих настроек, если вдруг что-то непонятно (вы недавно в ИБ), это ваш шанс на примере какого-нибудь курса, используя Adaptix разобраться зачем нужны callback addresses и URI 🙂
После того как listener появился внизу, нажимаем там же правой кнопкой — generate agent

Отдельный лайк респект за killdate и workingtime. Так и хочется сказать — а Cobalt вообще за что деньги берет? Adaptix очень мощная штука, с огромным потенциалом, а это всего лишь версия 0.5
Нажимаем generate, сохраняем агента и передаем его на тестовую машину с windows. Так как у нас просто лабораторная, я передам его через обычный http в python. Запускаем и видим, что сессия поднялась.

Повторюсь — если у вас ругается антивирус, как сделать так, чтобы он не ругался мы рассматривать не будем по понятным причинам 🙂
Если вдруг что-то решили изменить и кажется, что сессия не поднялась — просто перезапустите сервер и главное клиент.
Рассмотрим возможности агента.
Нажимаем на него правой кнопкой и выбираем console, внизу, там где beacon пишем help и видим безграничные огромные возможности, в том числе появившиеся благодаря установленным расширениям.

Есть удобрый граф

Очень удобное создание туннелей

И отдельная вкладка для них

Нажав правой кнопкой на целевой хост выберем agent — file browser и process browser


Теперь создадим listener для linux и macos
Выберем gopher. Я не настраиваю tls и ssl специально, но на реальных проектах (СTF :)) это must have.

Генерируем агента

Отмечу еще один плюс фреймворка — размер агентов (кто тестил разные С2 меня поймет)
Видим сессию нашей Linux машины

Здесь еще один лайк респект, нажимаем на linux машину правой кнопкой — agent — remote terminal

За что мне действительно понравился Adaptix — так это за выбор

Откроем консоль и сделаем screenshot

Открываем вкладку Screens и видим наши скриншоты

Теперь MacOS
Создаем 3 listener и генерируем агента

Видим заветную третью сессию, теперь на MacOS и все в рамках одного фреймворка)
Смотрим help, на самом деле очень круто)

Попробуем скачать файл с MacOS и взглянуть еще на одну вкладку
В консоли агента делаем

Можем сделать тоже самое из вкладки File Browser
Теперь на вкладке Downloads видим

Посмотрим на граф теперь

Собственно, что хотелось сказать в конце. Это лишь малая часть того, что есть в данном фреймворке, одни Extenders чего стоят, по сути я прошелся лишь по верхам. Сам я уже использовал Adaptix на Standoff (отмечу, речь не про PHDays, а про саму платформу) и результатом доволен. Удобно, красиво, функционально.
Надеюсь он пригодится Вам также как и мне и теперь что такое С2, стало немного понятнее. Учитывая, что это только версия 0.5, уверен, что впереди много интересного.
Оставайтесь на светлой стороне.