Plugin de transporte C2 serverless para AdaptixC2 v1.2 que utiliza AWS Lambda + DynamoDB como infraestructura de retransmisión.

Plugin de transporte C2 sin servidor para AdaptixC2 v1.2 que utiliza AWS Lambda + DynamoDB como infraestructura de retransmisión. El tráfico del agente aparece como HTTPS saliente hacia endpoints de AWS, sin requerir puertos entrantes ni IPs públicas en el servidor 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
Flujo de datos:
inbound de DynamoDBoutbound durante hasta 8 segundos (salva la brecha asíncrona para el registro)inbound de DynamoDB en busca de registros no procesadosoutbound| Componente | Ruta | Propósito |
|---|---|---|
| Agente Kharon | agent/ | Implante Kharon incluido (código fuente C++) |
| Terraform | deploy/aws/ | Infraestructura Lambda + DynamoDB + IAM + KMS |
| Relay Lambda | deploy/aws/lambda/ | Proxy sin estado de HTTP a DynamoDB con sondeo saliente |
| Plugin de listener | listener/ | Plugin de AdaptixC2, sondeo de DynamoDB, puente de protocolo Kharon |
| Configuraciones de Kharon | kharon/ | Registro de comandos AXS y configuración para extensores de agente/listener |
| Parches | patches/ | Parches del código fuente de AdaptixC2 para soporte de BeaconServerless |
| Perfiles | profiles/ | Perfil HTTP maleable para la URL de Lambda |
| Scripts | scripts/ | Instalación, compilación, despliegue, desinstalación |
aws configure)apt install clang lldapt install nasmapt install binutils-mingw-w64-x86-64En la consola de AWS:
adaptix-deployerAmazonDynamoDBFullAccessAWSLambda_FullAccessIAMFullAccessCloudWatchLogsFullAccess{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Action":"kms:*","Resource":"*"}]}KMSFullAccessaws configure
# AWS Access Key ID: <paste access key>
# AWS Secret Access Key: <paste secret key>
# Default region: us-east-1
# Default output format: json
Verifique:
aws sts get-caller-identity
# 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"
./scripts/install.sh /path/to/AdaptixC2
Este script hará lo siguiente:
dist/ (certificados, base de datos, perfil)GOEXPERIMENT del binario del servidor.so) con los indicadores coincidentesBeaconServerlessrelay_api_key en su terraform.tfvars)profiles/lambda_default.jsonBeaconServerlessdeploy/aws/terraform.tfvars)region = "us-east-1"
function_name = "adaptix-relay"
relay_api_key = "your-secret-key-here"
tags = {
Project = "adaptix-serverless"
}
| Campo | Descripción | Predeterminado |
|---|---|---|
| Región de AWS | Región donde se despliega la infraestructura | us-east-1 |
| Lambda URL | URL de la función desde la salida de Terraform | (obligatorio) |
| Relay API Key | Debe coincidir con relay_api_key de Terraform | (opcional) |
| Tabla de entrada | Tabla DynamoDB para los check-ins del agente | adaptix-inbound |
| Tabla de salida | Tabla DynamoDB para las respuestas del servidor | adaptix-outbound |
| Intervalo de sondeo | Con qué frecuencia consultar DynamoDB (segundos) | 5 |
| Horas de TTL | Expiración de los registros de DynamoDB | 24 |
El agente Kharon utiliza un protocolo binario personalizado sobre HTTP:
[36-byte UUID][encrypted_checkin_data][16-byte LokyCrypt key][36-byte UUID][encrypted_payload] (sin clave al final)TotalLen-16 se superpone en el área del UUID. Para un paquete de 44 bytes, la clave comienza en el desplazamiento 28, sobrescribiendo los bytes 28-35 del UUID y todos los datos cifrados.El listener detecta los tres formatos y los maneja correctamente.