Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
adaptix-serverless-c2 — Плагин serverless C2-транспорта для AdaptixC2 v1.2, использующий AWS Lambda + DynamoDB в качестве инфраструктуры ретрансляции. | Kitploit
Инструменты/GitHubGitHub/stillbigjosh/adaptix-serverless-c2
Безопасность облачной инфраструктурыФреймворки для пентестаФреймворки для эксплойтовМеханизмы персистентностиСкриптинг и автоматизацияБессерверная безопасностьПост-эксплуатацияБезопасность облачных сред
Командование и Управление
Red Teaming
Разработка Полезной Нагрузки
GitHubstillbigjosh/adaptix-serverless-c2

adaptix-serverless-c2

Плагин serverless C2-транспорта для AdaptixC2 v1.2, использующий AWS Lambda + DynamoDB в качестве инфраструктуры ретрансляции.

Репозиторий
3041027 дней назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Adaptix Serverless C2

Топология Serverless C2

Плагин транспорта Serverless C2 для AdaptixC2 v1.2, использующий AWS Lambda + DynamoDB в качестве ретрансляционной инфраструктуры. Трафик агента выглядит как исходящий HTTPS к эндпоинтам AWS, не требуя входящих портов или публичных IP-адресов на сервере C2.

Архитектура

Kharon Agent (target)
    |
    | HTTPS GET/POST (outbound only, randomly alternated)
    v
AWS Lambda Function URL (stateless relay)
    |
    | Store inbound / Poll outbound (up to 8s)
    v
DynamoDB (inbound + outbound tables)
    ^
    | Poll every 5 seconds
    |
Listener Plugin (inside AdaptixC2)
    |
    | TsAgent API + TsExtenderData (key persistence)
    v
AdaptixC2 Teamserver + UI

Поток данных:

  1. Агент Kharon отправляет зашифрованный check-in по HTTPS на URL Lambda-функции.
  2. Lambda сохраняет необработанные данные в таблице DynamoDB inbound.
  3. Lambda опрашивает таблицу outbound до 8 секунд (компенсирует асинхронный разрыв при регистрации).
  4. Если ответ существует, Lambda возвращает его и помечает как доставленный.
  5. Плагин-листенер AdaptixC2 опрашивает таблицу DynamoDB inbound на наличие необработанных записей.
  6. Листенер разбирает проводной протокол Kharon (зашифрованный LokyCrypt), регистрирует/обновляет агента.
  7. Когда оператор отдаёт команды, листенер шифрует их в формате Kharon и сохраняет в outbound.
  8. При следующем check-in Lambda возвращает ответ агенту.

Компоненты

КомпонентПутьНазначение
Агент Kharonagent/Встроенный имплант Kharon (исходный код на C++)
Terraformdeploy/aws/Инфраструктура Lambda + DynamoDB + IAM + KMS
Lambda-ретрансляторdeploy/aws/lambda/Не имеющий состояния прокси HTTP-to-DynamoDB с опросом outbound
Плагин-листенерlistener/Плагин AdaptixC2, опрос DynamoDB, мост протокола Kharon
Конфигурации Kharonkharon/Регистрация команд AXS и конфигурация для расширений агента/листенера
Патчиpatches/Патчи исходного кода AdaptixC2 для поддержки BeaconServerless
Профилиprofiles/Malleable HTTP-профиль для URL Lambda
Скриптыscripts/Установка, сборка, развёртывание, удаление

Предварительные требования

  • Учётная запись AWS с настроенными учётными данными (aws configure)
  • Terraform >= 1.5.0
  • Go >= 1.23 (плагин-листенер требует совпадения GOEXPERIMENT с бинарником сервера)
  • AdaptixC2 v1.2 установлен
  • clang++ с целями mingw: apt install clang lld
  • Ассемблер NASM: apt install nasm
  • objcopy: apt install binutils-mingw-w64-x86-64

Настройка учётной записи AWS

1. Создание пользователя IAM для развёртывания

В консоли AWS:

  1. Перейдите в IAM > Users > Create user
  2. Назовите его adaptix-deployer
  3. Выберите Attach policies directly
  4. Прикрепите следующие управляемые политики AWS:
    • AmazonDynamoDBFullAccess
    • AWSLambda_FullAccess
    • IAMFullAccess
    • CloudWatchLogsFullAccess
  5. Добавьте встроенную политику для KMS:
    • Нажмите Add permissions > Create inline policy > JSON
    • Вставьте: {"Version":"2012-10-17","Statement":[{"Effect":"Allow","Action":"kms:*","Resource":"*"}]}
    • Назовите её KMSFullAccess
  6. Создайте пользователя, затем перейдите в Security credentials > Create access key
  7. Выберите Command Line Interface (CLI)
  8. Сохраните Access Key ID и Secret Access Key

2. Настройка AWS CLI

aws configure
# AWS Access Key ID: <paste access key>
# AWS Secret Access Key: <paste secret key>
# Default region: us-east-1
# Default output format: json

Проверка:

aws sts get-caller-identity

Установка

Шаг 1: Развёртывание инфраструктуры AWS

# Build the Lambda relay binary (cross-compiled for Amazon Linux)
./scripts/build_relay.sh

# Deploy Lambda + DynamoDB + IAM with Terraform
./scripts/deploy_infra.sh

# Note the Lambda Function URL from the output, e.g.:
# lambda_function_url = "https://xxxxx.lambda-url.us-east-1.on.aws"

Шаг 2: Установка плагина в AdaptixC2

./scripts/install.sh /path/to/AdaptixC2

Этот скрипт:

  1. Создаёт резервную копию вашего каталога dist/ (сертификаты, база данных, профиль)
  2. Применяет патчи исходного кода для поддержки коннектора BeaconServerless
  3. Определяет флаги GOEXPERIMENT из бинарного файла сервера
  4. Собирает плагин слушателя (.so) с соответствующими флагами
  5. Пересобирает сервер AdaptixC2 и расширители
  6. Восстанавливает ваши резервные файлы (сертификаты, база данных, профиль)
  7. Устанавливает плагин бессерверного слушателя + конфигурации расширителя Kharon
  8. Создаёт/обновляет службу systemd
  9. Перезапускает AdaptixC2

Шаг 3: Настройка слушателя в графическом интерфейсе

  1. Войдите в веб-интерфейс AdaptixC2
  2. Перейдите в раздел Listeners и создайте новый слушатель BeaconServerless
  3. Укажите Lambda URL — Function URL из шага 1
  4. Укажите Relay API Key (должен совпадать с relay_api_key в вашем terraform.tfvars)
  5. При необходимости настройте: AWS Region, Poll Interval (по умолчанию 5 с), TTL Hours (по умолчанию 24)
  6. Загрузите malleable-профиль из profiles/lambda_default.json
  7. Запустите слушатель

Шаг 4: Генерация и выполнение полезной нагрузки

  1. В графическом интерфейсе сгенерируйте агент Kharon, выбрав слушатель BeaconServerless
  2. Выберите формат (Exe, Dll, Svc) и архитектуру (x64)
  3. Выполните полезную нагрузку на целевой системе
  4. Агент должен выйти на связь в течение нескольких секунд

Конфигурация

Переменные Terraform (deploy/aws/terraform.tfvars)

region        = "us-east-1"
function_name = "adaptix-relay"
relay_api_key = "your-secret-key-here"
tags = {
  Project = "adaptix-serverless"
}

Настройки слушателя (AdaptixC2 GUI)

ПолеОписаниеПо умолчанию
AWS RegionРегион, в котором развёрнута инфраструктураus-east-1
Lambda URLURL функции из вывода Terraform(обязательно)
Relay API KeyДолжен совпадать с relay_api_key из Terraform(необязательно)
Inbound TableТаблица DynamoDB для регистраций агентовadaptix-inbound
Outbound TableТаблица DynamoDB для ответов сервераadaptix-outbound
Poll IntervalКак часто проверять DynamoDB (в секундах)5
TTL HoursСрок истечения записей DynamoDB24

Ключевые технические детали

Сетевой протокол Kharon

Агент Kharon использует собственный бинарный протокол поверх HTTP:

  • Новый агент (регистрация): [36-byte UUID][encrypted_checkin_data][16-byte LokyCrypt key]
  • Подключённый агент (GetTask): [36-byte UUID][encrypted_payload] (без ключа в конце)
  • !Подключённый агент (перезапись ключа): Когда полезная нагрузка мала, 16-байтовый ключ по смещению TotalLen-16 перекрывает область UUID. Для 44-байтового пакета ключ начинается со смещения 28, перезаписывая байты UUID 28-35 и все зашифрованные данные.

Слушатель распознаёт все три формата и корректно их обрабатывает.

Цикл опроса исходящих запросов Lambda

Асинхронная природа Lambda + DynamoDB означает, что слушатель ещё не обработал входящую запись, когда Lambda впервые проверяет наличие ответа. Lambda опрашивает исходящую таблицу до 8 секунд после сохранения входящей записи, давая слушателю время обработать и поставить ответ в очередь. Это критично для регистрации (ответ Checkin должен прийти на этапе Checkin, а не в более позднем GetTask).

Сохранение ключей

Ключи шифрования агентов сохраняются через TsExtenderDataSave/TsExtenderDataLoad (на базе SQLite). Это переживает перезапуски службы. При перезапуске слушатель восстанавливает ключи из постоянного хранилища, когда встречает известный ID агента.

Скачать инструмент