Что такое Command & Control server? Рассмотрим на примере лучшего С2 — Adaptix Framework

При проведении тестирования на проникновение или соревнований вроде 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, уверен, что впереди много интересного.

Оставайтесь на светлой стороне.