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 в качестве инфраструктуры ретрансляции.

Репозиторий
193106 дней назадЕщё не проверено

Популярное

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

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

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

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

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

Adaptix Serverless C2

Топология Severless C2

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

Архитектура

Kharon Agent (цель)
    |
    | HTTPS GET/POST (только исходящий, случайное чередование)
    v
AWS Lambda Function URL (stateless-ретранслятор)
    |
    | Сохранение входящих / Опрос исходящих (до 8 с)
    v
DynamoDB (таблицы inbound + outbound)
    ^
    | Опрос каждые 5 секунд
    |
Плагин-листенер (внутри AdaptixC2)
    |
    | TsAgent API + TsExtenderData (сохранение ключей)
    v
AdaptixC2 Teamserver + UI

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

  1. Агент Kharon отправляет зашифрованный check-in по HTTPS на Lambda Function URL
  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/Stateless-прокси HTTP-to-DynamoDB с опросом исходящих
Плагин-листенерlistener/Плагин AdaptixC2, опрос DynamoDB, мост протокола Kharon
Конфигурации Kharonkharon/Регистрация команд AXS и конфигурация для расширений агента/листенера
Патчиpatches/Патчи исходников AdaptixC2 для поддержки BeaconServerless
Профилиprofiles/Malleable HTTP-профиль для Lambda URL
Скрипты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. Добавьте inline policy для 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. Установку плагина serverless-листенера + конфигураций расширения Kharon
  8. Создание/обновление службы systemd
  9. Перезапуск AdaptixC2

Шаг 3: Настройка листенера в GUI

  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. В GUI сгенерируйте агента 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"
}

Настройки листенера (GUI AdaptixC2)

ПолеОписаниеПо умолчанию
AWS RegionРегион, где развёрнута инфраструктураus-east-1
Lambda URLFunction URL из вывода Terraform(обязательно)
Relay API KeyДолжен совпадать с relay_api_key в Terraform(опционально)
Inbound TableТаблица DynamoDB для check-in агентов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 опрашивает таблицу outbound до 8 секунд после сохранения входящей записи, давая листенеру время обработать и поставить ответ в очередь. Это критично для регистрации (ответ Checkin должен прийти во время фазы Checkin, а не при более позднем GetTask).

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

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

Обработка GET/POST

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