Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
adaptix-serverless-c2 — Plugin di trasporto C2 serverless per AdaptixC2 v1.2 che utilizza AWS Lambda + DynamoDB come infrastruttura di relay. | Kitploit
Strumenti/GitHubGitHub/stillbigjosh/adaptix-serverless-c2
Sicurezza dell'Infrastruttura CloudFrameworks per Penetration TestingFramework di ExploitMeccanismi di PersistenzaScripting e AutomazioneSicurezza ServerlessPost-ExploitSicurezza Cloud
Command and Control
Red Teaming
Sviluppo Payload
GitHubstillbigjosh/adaptix-serverless-c2

adaptix-serverless-c2

Plugin di trasporto C2 serverless per AdaptixC2 v1.2 che utilizza AWS Lambda + DynamoDB come infrastruttura di relay.

Vedi Repository
193106 giorni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Adaptix Serverless C2

Topologia Serverless C2

Plugin di trasporto C2 serverless per AdaptixC2 v1.2 che utilizza AWS Lambda + DynamoDB come infrastruttura di relay. Il traffico dell'agente appare come HTTPS in uscita verso endpoint AWS, senza richiedere porte in ingresso o IP pubblici sul server C2.

Architettura

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

Flusso dei dati:

  1. L'agente Kharon invia un check-in cifrato via HTTPS alla Lambda Function URL
  2. Lambda memorizza i dati grezzi nella tabella inbound di DynamoDB
  3. Lambda esegue il polling della tabella outbound per un massimo di 8 secondi (colma il gap asincrono per la registrazione)
  4. Se esiste una risposta, Lambda la restituisce e la contrassegna come consegnata
  5. Il plugin listener di AdaptixC2 esegue il polling della tabella inbound di DynamoDB per i record non elaborati
  6. Il listener analizza il protocollo wire di Kharon (cifrato con LokyCrypt), registra/aggiorna l'agente
  7. Quando l'operatore invia comandi, il listener li cifra nel formato Kharon e li memorizza in outbound
  8. Al successivo check-in, Lambda restituisce la risposta all'agente

Componenti

ComponentePercorsoScopo
Agente Kharonagent/Implant Kharon incluso (sorgente C++)
Terraformdeploy/aws/Infrastruttura Lambda + DynamoDB + IAM + KMS
Relay Lambdadeploy/aws/lambda/Proxy stateless HTTP-to-DynamoDB con polling outbound
Plugin listenerlistener/Plugin AdaptixC2, polling DynamoDB, bridge protocollo Kharon
Configurazioni Kharonkharon/Registrazione comandi AXS e configurazione per extender agente/listener
Patchpatches/Patch del sorgente AdaptixC2 per il supporto BeaconServerless
Profiliprofiles/Profilo HTTP malleable per Lambda URL
Scriptscripts/Installazione, build, deploy, disinstallazione

Prerequisiti

  • Account AWS con credenziali configurate (aws configure)
  • Terraform >= 1.5.0
  • Go >= 1.23 (il plugin listener richiede GOEXPERIMENT corrispondente al binario del server)
  • AdaptixC2 v1.2 installato
  • clang++ con target mingw: apt install clang lld
  • Assembler NASM: apt install nasm
  • objcopy: apt install binutils-mingw-w64-x86-64

Configurazione dell'Account AWS

1. Creare un Utente IAM per il Deployment

Nella Console AWS:

  1. Vai su IAM > Users > Create user
  2. Assegna il nome adaptix-deployer
  3. Seleziona Attach policies directly
  4. Allega queste policy gestite AWS:
    • AmazonDynamoDBFullAccess
    • AWSLambda_FullAccess
    • IAMFullAccess
    • CloudWatchLogsFullAccess
  5. Aggiungi una inline policy per KMS:
    • Clicca Add permissions > Create inline policy > JSON
    • Incolla: {"Version":"2012-10-17","Statement":[{"Effect":"Allow","Action":"kms:*","Resource":"*"}]}
    • Assegna il nome KMSFullAccess
  6. Crea l'utente, poi vai su Security credentials > Create access key
  7. Scegli Command Line Interface (CLI)
  8. Salva l'Access Key ID e la Secret Access Key

2. Configurare 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

Verifica:

aws sts get-caller-identity

Installazione

Passo 1: Distribuire l'Infrastruttura 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"

Passo 2: Installare il Plugin in AdaptixC2

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

Questo script:

  1. Esegue il backup della directory dist/ (certificati, database, profilo)
  2. Applica le patch al sorgente per il supporto al connettore BeaconServerless
  3. Rileva i flag GOEXPERIMENT dal binario del server
  4. Compila il plugin listener (.so) con i flag corrispondenti
  5. Ricompila il server AdaptixC2 e gli extender
  6. Ripristina i file di backup (certificati, database, profilo)
  7. Installa il plugin listener serverless + le configurazioni dell'extender Kharon
  8. Crea/aggiorna il servizio systemd
  9. Riavvia AdaptixC2

Passo 3: Configurare il Listener nella GUI

  1. Accedi alla web UI di AdaptixC2
  2. Vai su Listeners e crea un nuovo listener BeaconServerless
  3. Imposta Lambda URL con la Function URL del Passo 1
  4. Imposta Relay API Key (deve corrispondere a relay_api_key nel tuo terraform.tfvars)
  5. Facoltativamente regola: AWS Region, Poll Interval (default 5s), TTL Hours (default 24)
  6. Carica il profilo malleable da profiles/lambda_default.json
  7. Avvia il listener

Passo 4: Generare ed Eseguire il Payload

  1. Nella GUI, genera un agente Kharon selezionando il listener BeaconServerless
  2. Scegli il formato (Exe, Dll, Svc) e l'architettura (x64)
  3. Esegui il payload sul target
  4. L'agente dovrebbe effettuare il check-in entro pochi secondi

Configurazione

Variabili Terraform (deploy/aws/terraform.tfvars)

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

Impostazioni del Listener (GUI AdaptixC2)

CampoDescrizioneDefault
AWS RegionRegione in cui è distribuita l'infrastrutturaus-east-1
Lambda URLFunction URL dall'output di Terraform(obbligatorio)
Relay API KeyDeve corrispondere a relay_api_key di Terraform(opzionale)
Inbound TableTabella DynamoDB per i check-in degli agentiadaptix-inbound
Outbound TableTabella DynamoDB per le risposte del serveradaptix-outbound
Poll IntervalFrequenza di controllo di DynamoDB (secondi)5
TTL HoursScadenza dei record DynamoDB24

Dettagli Tecnici Chiave

Protocollo Wire di Kharon

L'agente Kharon utilizza un protocollo binario personalizzato su HTTP:

  • Nuovo agente (registrazione): [36-byte UUID][encrypted_checkin_data][16-byte LokyCrypt key]
  • Agente connesso (GetTask): [36-byte UUID][encrypted_payload] (nessuna chiave finale)
  • Agente !Connected (key stomping): Quando il payload è piccolo, la chiave di 16 byte a TotalLen-16 si sovrappone all'area dell'UUID. Per un pacchetto di 44 byte, la chiave inizia all'offset 28, sovrascrivendo i byte 28-35 dell'UUID e tutti i dati cifrati.

Il listener rileva tutti e tre i formati e li gestisce correttamente.

Ciclo di Polling Outbound di Lambda

La natura asincrona di Lambda + DynamoDB significa che il listener non ha ancora elaborato il record inbound quando Lambda controlla per la prima volta la presenza di una risposta. Lambda esegue il polling della tabella outbound per un massimo di 8 secondi dopo aver memorizzato un record inbound, dando al listener il tempo di elaborare e accodare la risposta. Questo è critico per la registrazione (la risposta di Checkin deve arrivare durante la fase di Checkin, non in un successivo GetTask).

Persistenza delle Chiavi

Scarica lo strumento