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
3041027 giorni faRevisionato da Kitploit

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 gli 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 tramite HTTPS all'URL della funzione Lambda
  2. Lambda memorizza i dati grezzi nella tabella DynamoDB inbound
  3. Lambda esegue il polling della tabella outbound per un massimo di 8 secondi (colma il divario 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 DynamoDB inbound 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/Impianto Kharon incluso (sorgente C++)
Terraformdeploy/aws/Infrastruttura Lambda + DynamoDB + IAM + KMS
Relay Lambdadeploy/aws/lambda/Proxy stateless da HTTP a DynamoDB con polling in uscita
Plugin listenerlistener/Plugin AdaptixC2, polling DynamoDB, bridge del protocollo Kharon
Configurazioni Kharonkharon/Registrazione dei comandi AXS e configurazione per gli extender dell'agente/listener
Patchpatches/Patch del sorgente di AdaptixC2 per il supporto a BeaconServerless
Profiliprofiles/Profilo HTTP malleabile per l'URL Lambda
Scriptscripts/Installazione, build, deploy, disinstallazione

Prerequisiti

  • Account AWS con credenziali configurate (aws configure)
  • Terraform >= 1.5.0
  • Go >= 1.23 (il plugin listener richiede un 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 da AWS:
    • AmazonDynamoDBFullAccess
    • AWSLambda_FullAccess
    • IAMFullAccess
    • CloudWatchLogsFullAccess
  5. Aggiungi una policy inline per KMS:
    • Clicca su 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 la CLI AWS

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

Passaggio 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"

Passaggio 2: Installare il plugin in AdaptixC2

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

Questo script:

  1. Esegue il backup della tua directory dist/ (certificati, database, profilo)
  2. Applica le patch al codice sorgente per il supporto del 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 cui hai fatto il backup (certificati, database, profilo)
  7. Installa il plugin listener serverless + le configurazioni dell'extender Kharon
  8. Crea/aggiorna il servizio systemd
  9. Riavvia AdaptixC2

Passaggio 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 Passaggio 1
  4. Imposta Relay API Key (deve corrispondere a relay_api_key nel tuo terraform.tfvars)
  5. Facoltativamente, regola: AWS Region, Poll Interval (predefinito 5s), TTL Hours (predefinito 24)
  6. Carica il profilo malleable da profiles/lambda_default.json
  7. Avvia il listener

Passaggio 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 registrarsi 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 di AdaptixC2)

CampoDescrizionePredefinito
AWS RegionRegione in cui viene distribuita l'infrastrutturaus-east-1
Lambda URLURL della funzione dall'output di Terraform(obbligatorio)
Relay API KeyDeve corrispondere a relay_api_key di Terraform(facoltativo)
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 principali

Protocollo di rete 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 connesso (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 fa sì che il listener non abbia 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 è fondamentale per la registrazione (la risposta Checkin deve arrivare durante la fase Checkin, non in un successivo GetTask).

Persistenza delle chiavi

Scarica lo strumento