Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
adaptix-serverless-c2 — Plugin de transporte C2 serverless para AdaptixC2 v1.2 usando AWS Lambda + DynamoDB como infraestrutura de relay. | Kitploit
Ferramentas/GitHubGitHub/stillbigjosh/adaptix-serverless-c2
Segurança de Infraestrutura em NuvemFrameworks de Testes de PenetraçãoFrameworks de ExploraçãoMecanismos de PersistênciaScripting e AutomaçãoSegurança ServerlessPós-ExploraçãoSegurança na Nuvem
Comando e Controle
Red Teaming
Desenvolvimento de Payloads
GitHubstillbigjosh/adaptix-serverless-c2

adaptix-serverless-c2

Plugin de transporte C2 serverless para AdaptixC2 v1.2 usando AWS Lambda + DynamoDB como infraestrutura de relay.

Ver Repositório
19310há 6 diasAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

Adaptix Serverless C2

Topologia do C2 Serverless

Plugin de transporte C2 serverless para AdaptixC2 v1.2 usando AWS Lambda + DynamoDB como infraestrutura de retransmissão. O tráfego do agente aparece como HTTPS de saída para endpoints da AWS, não exigindo portas de entrada nem IPs públicos no servidor C2.

Arquitetura

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

Fluxo de dados:

  1. O agente Kharon envia check-in criptografado via HTTPS para a Lambda Function URL
  2. A Lambda armazena os dados brutos na tabela inbound do DynamoDB
  3. A Lambda consulta a tabela outbound por até 8 segundos (preenche a lacuna assíncrona para registro)
  4. Se existir uma resposta, a Lambda a retorna e a marca como entregue
  5. O plugin listener do AdaptixC2 consulta a tabela inbound do DynamoDB em busca de registros não processados
  6. O listener analisa o protocolo de rede do Kharon (criptografado com LokyCrypt), registra/atualiza o agente
  7. Quando o operador emite comandos, o listener os criptografa no formato Kharon e os armazena em outbound
  8. No próximo check-in, a Lambda retorna a resposta ao agente

Componentes

ComponenteCaminhoFinalidade
Agente Kharonagent/Implante Kharon incluído (código-fonte C++)
Terraformdeploy/aws/Infraestrutura Lambda + DynamoDB + IAM + KMS
Relay Lambdadeploy/aws/lambda/Proxy stateless HTTP-para-DynamoDB com polling de saída
Plugin listenerlistener/Plugin AdaptixC2, polling DynamoDB, ponte de protocolo Kharon
Configurações Kharonkharon/Registro de comandos AXS e configuração para extensores de agente/listener
Patchespatches/Patches do código-fonte do AdaptixC2 para suporte a BeaconServerless
Perfisprofiles/Perfil HTTP malleable para Lambda URL
Scriptsscripts/Instalação, build, deploy, desinstalação

Pré-requisitos

  • Conta AWS com credenciais configuradas (aws configure)
  • Terraform >= 1.5.0
  • Go >= 1.23 (o plugin listener requer GOEXPERIMENT compatível com o binário do servidor)
  • AdaptixC2 v1.2 instalado
  • clang++ com alvos mingw: apt install clang lld
  • Montador NASM: apt install nasm
  • objcopy: apt install binutils-mingw-w64-x86-64

Configuração da Conta AWS

1. Criar um Usuário IAM para Deploy

No Console da AWS:

  1. Vá em IAM > Users > Create user
  2. Nomeie como adaptix-deployer
  3. Selecione Attach policies directly
  4. Anexe estas políticas gerenciadas da AWS:
    • AmazonDynamoDBFullAccess
    • AWSLambda_FullAccess
    • IAMFullAccess
    • CloudWatchLogsFullAccess
  5. Adicione uma política inline para KMS:
    • Clique em Add permissions > Create inline policy > JSON
    • Cole: {"Version":"2012-10-17","Statement":[{"Effect":"Allow","Action":"kms:*","Resource":"*"}]}
    • Nomeie como KMSFullAccess
  6. Crie o usuário e vá em Security credentials > Create access key
  7. Escolha Command Line Interface (CLI)
  8. Salve o Access Key ID e o Secret Access Key

2. Configurar a 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

Verifique:

aws sts get-caller-identity

Instalação

Passo 1: Fazer Deploy da Infraestrutura 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: Instalar o Plugin no AdaptixC2

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

Este script irá:

  1. Fazer backup do seu diretório dist/ (certificados, banco de dados, perfil)
  2. Aplicar patches no código-fonte para suporte ao conector BeaconServerless
  3. Detectar flags GOEXPERIMENT do binário do servidor
  4. Compilar o plugin listener (.so) com as flags correspondentes
  5. Recompilar o servidor AdaptixC2 e os extensores
  6. Restaurar seus arquivos de backup (certificados, banco de dados, perfil)
  7. Instalar o plugin listener serverless + configurações do extensor Kharon
  8. Criar/atualizar o serviço systemd
  9. Reiniciar o AdaptixC2

Passo 3: Configurar o Listener na GUI

  1. Faça login na interface web do AdaptixC2
  2. Vá em Listeners e crie um novo listener BeaconServerless
  3. Defina Lambda URL com a Function URL do Passo 1
  4. Defina Relay API Key (deve corresponder a relay_api_key no seu terraform.tfvars)
  5. Opcionalmente ajuste: AWS Region, Poll Interval (padrão 5s), TTL Hours (padrão 24)
  6. Faça upload do perfil malleable de profiles/lambda_default.json
  7. Inicie o listener

Passo 4: Gerar e Executar o Payload

  1. Na GUI, gere um agente Kharon selecionando o listener BeaconServerless
  2. Escolha o formato (Exe, Dll, Svc) e a arquitetura (x64)
  3. Execute o payload no alvo
  4. O agente deve fazer check-in em segundos

Configuração

Variáveis do Terraform (deploy/aws/terraform.tfvars)

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

Configurações do Listener (GUI do AdaptixC2)

CampoDescriçãoPadrão
AWS RegionRegião onde a infraestrutura está implantadaus-east-1
Lambda URLFunction URL da saída do Terraform(obrigatório)
Relay API KeyDeve corresponder ao relay_api_key do Terraform(opcional)
Inbound TableTabela DynamoDB para check-ins do agenteadaptix-inbound
Outbound TableTabela DynamoDB para respostas do servidoradaptix-outbound
Poll IntervalCom que frequência verificar o DynamoDB (segundos)5
TTL HoursExpiração dos registros do DynamoDB24

Detalhes Técnicos Importantes

Protocolo de Rede do Kharon

O agente Kharon usa um protocolo binário customizado sobre HTTP:

  • Novo agente (registro): [36-byte UUID][encrypted_checkin_data][16-byte LokyCrypt key]
  • Agente conectado (GetTask): [36-byte UUID][encrypted_payload] (sem chave no final)
  • Agente !Connected (key stomping): Quando o payload é pequeno, a chave de 16 bytes em TotalLen-16 se sobrepõe à área do UUID. Para um pacote de 44 bytes, a chave começa no offset 28, sobrescrevendo os bytes 28-35 do UUID e todos os dados criptografados.

O listener detecta todos os três formatos e os trata corretamente.

Loop de Polling de Saída da Lambda

A natureza assíncrona do Lambda + DynamoDB significa que o listener ainda não processou o registro inbound quando a Lambda verifica pela primeira vez uma resposta. A Lambda consulta a tabela outbound por até 8 segundos após armazenar um registro inbound, dando tempo ao listener para processar e enfileirar a resposta. Isso é crítico para o registro (a resposta de Checkin deve chegar durante a fase de Checkin, não em um GetTask posterior).

Persistência de Chaves

As chaves de criptografia do agente são persistidas via TsExtenderDataSave/TsExtenderDataLoad (com suporte SQLite). Isso sobrevive a reinicializações do serviço. Ao reiniciar, o listener recupera as chaves do armazenamento persistente quando encontra um ID de agente conhecido.

Baixar ferramenta