Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
adaptix-serverless-c2 — Plugin de transport C2 serverless pour AdaptixC2 v1.2 utilisant AWS Lambda + DynamoDB comme infrastructure de relais. | Kitploit
Outils/GitHubGitHub/stillbigjosh/adaptix-serverless-c2
Sécurité de l'Infrastructure CloudFrameworks de Tests d'IntrusionFrameworks d'ExploitationMécanismes de PersistanceScripting et AutomatisationSécurité ServerlessPost-ExploitationSécurité Cloud
Commandement et Contrôle
Red Teaming
Développement de Charges Utiles
GitHubstillbigjosh/adaptix-serverless-c2

adaptix-serverless-c2

Plugin de transport C2 serverless pour AdaptixC2 v1.2 utilisant AWS Lambda + DynamoDB comme infrastructure de relais.

Voir le dépôt
19317il y a 6 joursPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Adaptix Serverless C2

Topologie C2 serverless

Plugin de transport C2 serverless pour AdaptixC2 v1.2 utilisant AWS Lambda + DynamoDB comme infrastructure de relais. Le trafic de l'agent apparaît comme du HTTPS sortant vers des endpoints AWS, ne nécessitant aucun port entrant ni IP publique sur le serveur C2.

Architecture

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

Flux de données :

  1. L'agent Kharon envoie un check-in chiffré via HTTPS vers l'URL de fonction Lambda
  2. Lambda stocke les données brutes dans la table DynamoDB inbound
  3. Lambda interroge la table outbound pendant jusqu'à 8 secondes (comble le décalage asynchrone pour l'enregistrement)
  4. Si une réponse existe, Lambda la renvoie et la marque comme livrée
  5. Le plugin listener AdaptixC2 interroge la table DynamoDB inbound pour les enregistrements non traités
  6. Le listener analyse le protocole wire Kharon (chiffré LokyCrypt), enregistre/met à jour l'agent
  7. Lorsque l'opérateur émet des commandes, le listener les chiffre au format Kharon, les stocke dans outbound
  8. Lors du prochain check-in, Lambda renvoie la réponse à l'agent

Composants

ComposantCheminObjectif
Agent Kharonagent/Implant Kharon inclus (source C++)
Terraformdeploy/aws/Infrastructure Lambda + DynamoDB + IAM + KMS
Relais Lambdadeploy/aws/lambda/Proxy HTTP-vers-DynamoDB sans état avec polling sortant
Plugin listenerlistener/Plugin AdaptixC2, polling DynamoDB, pont protocole Kharon
Configs Kharonkharon/Enregistrement des commandes AXS et config pour les extenders agent/listener
Patchespatches/Patches source AdaptixC2 pour le support BeaconServerless
Profilsprofiles/Profil HTTP malleable pour l'URL Lambda
Scriptsscripts/Installation, build, déploiement, désinstallation

Prérequis

  • Compte AWS avec identifiants configurés (aws configure)
  • Terraform >= 1.5.0
  • Go >= 1.23 (le plugin listener nécessite un GOEXPERIMENT correspondant au binaire serveur)
  • AdaptixC2 v1.2 installé
  • clang++ avec cibles mingw : apt install clang lld
  • Assembleur NASM : apt install nasm
  • objcopy : apt install binutils-mingw-w64-x86-64

Configuration du compte AWS

1. Créer un utilisateur IAM pour le déploiement

Dans la console AWS :

  1. Allez dans IAM > Users > Create user
  2. Nommez-le adaptix-deployer
  3. Sélectionnez Attach policies directly
  4. Attachez ces politiques gérées AWS :
    • AmazonDynamoDBFullAccess
    • AWSLambda_FullAccess
    • IAMFullAccess
    • CloudWatchLogsFullAccess
  5. Ajoutez une politique inline pour KMS :
    • Cliquez sur Add permissions > Create inline policy > JSON
    • Collez : {"Version":"2012-10-17","Statement":[{"Effect":"Allow","Action":"kms:*","Resource":"*"}]}
    • Nommez-la KMSFullAccess
  6. Créez l'utilisateur, puis allez dans Security credentials > Create access key
  7. Choisissez Command Line Interface (CLI)
  8. Sauvegardez l'Access Key ID et la Secret Access Key

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

Vérifiez :

aws sts get-caller-identity

Installation

Étape 1 : Déployer l'infrastructure 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"

Étape 2 : Installer le plugin dans AdaptixC2

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

Ce script va :

  1. Sauvegarder votre répertoire dist/ (certificats, base de données, profil)
  2. Appliquer les patches source pour le support du connecteur BeaconServerless
  3. Détecter les flags GOEXPERIMENT du binaire serveur
  4. Compiler le plugin listener (.so) avec les flags correspondants
  5. Recompiler le serveur AdaptixC2 et les extenders
  6. Restaurer vos fichiers sauvegardés (certificats, base de données, profil)
  7. Installer le plugin listener serverless + les configs de l'extender Kharon
  8. Créer/mettre à jour le service systemd
  9. Redémarrer AdaptixC2

Étape 3 : Configurer le listener dans l'interface graphique

  1. Connectez-vous à l'interface web AdaptixC2
  2. Allez dans Listeners et créez un nouveau listener BeaconServerless
  3. Définissez Lambda URL sur l'URL de fonction de l'étape 1
  4. Définissez Relay API Key (doit correspondre à relay_api_key dans votre terraform.tfvars)
  5. Ajustez éventuellement : AWS Region, Poll Interval (par défaut 5s), TTL Hours (par défaut 24)
  6. Chargez le profil malleable depuis profiles/lambda_default.json
  7. Démarrez le listener

Étape 4 : Générer et exécuter le payload

  1. Dans l'interface graphique, générez un agent Kharon en sélectionnant le listener BeaconServerless
  2. Choisissez le format (Exe, Dll, Svc) et l'architecture (x64)
  3. Exécutez le payload sur la cible
  4. L'agent devrait se connecter en quelques secondes

Configuration

Variables Terraform (deploy/aws/terraform.tfvars)

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

Paramètres du listener (interface AdaptixC2)

ChampDescriptionDéfaut
AWS RegionRégion où l'infra est déployéeus-east-1
Lambda URLURL de fonction depuis la sortie Terraform(requis)
Relay API KeyDoit correspondre au relay_api_key Terraform(optionnel)
Inbound TableTable DynamoDB pour les check-ins des agentsadaptix-inbound
Outbound TableTable DynamoDB pour les réponses du serveuradaptix-outbound
Poll IntervalFréquence de vérification de DynamoDB (secondes)5
TTL HoursExpiration des enregistrements DynamoDB24

Détails techniques clés

Protocole wire Kharon

L'agent Kharon utilise un protocole binaire personnalisé sur HTTP :

  • Nouvel agent (enregistrement) : [36-byte UUID][encrypted_checkin_data][16-byte LokyCrypt key]
  • Agent connecté (GetTask) : [36-byte UUID][encrypted_payload] (pas de clé finale)
  • Agent !Connected (key stomping) : Lorsque le payload est petit, la clé de 16 octets à TotalLen-16 chevauche la zone UUID. Pour un paquet de 44 octets, la clé commence à l'offset 28, écrasant les octets UUID 28-35 et toutes les données chiffrées.

Le listener détecte ces trois formats et les gère correctement.

Boucle de polling sortant Lambda

La nature asynchrone de Lambda + DynamoDB signifie que le listener n'a pas traité l'enregistrement entrant lorsque Lambda vérifie pour la première fois une réponse. Lambda interroge la table outbound pendant jusqu'à 8 secondes après avoir stocké un enregistrement inbound, donnant au listener le temps de traiter et de mettre en file la réponse. Ceci est critique pour l'enregistrement (la réponse Checkin doit arriver pendant la phase Checkin, pas lors d'un GetTask ultérieur).

Persistance des clés

Télécharger l’outil