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
304103há 8 diasRevisado pelo Kitploit

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 URL da Função Lambda
  2. O Lambda armazena os dados brutos na tabela inbound do DynamoDB
  3. O Lambda consulta a tabela outbound por até 8 segundos (preenche a lacuna assíncrona para registro)
  4. Se existir uma resposta, o Lambda a retorna e a marca como entregue
  5. O plugin de listener do AdaptixC2 consulta a tabela inbound do DynamoDB em busca de registros não processados
  6. O listener analisa o protocolo de comunicação 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, o 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 sem estado de HTTP para DynamoDB com polling de saída
Plugin de listenerlistener/Plugin AdaptixC2, polling do DynamoDB, ponte de protocolo Kharon
Configurações do 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 maleável para URL do Lambda
Scriptsscripts/Instalação, compilação, implantação, desinstalação

Pré-requisitos

  • Conta AWS com credenciais configuradas (aws configure)
  • Terraform >= 1.5.0
  • Go >= 1.23 (o plugin de listener requer GOEXPERIMENT correspondente ao 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 Implantação

No Console da AWS:

  1. Acesse IAM > Users > Create user
  2. Nomeie-o 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-a como KMSFullAccess
  6. Crie o usuário e, em seguida, acesse 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

Verificar:

aws sts get-caller-identity

Instalação

Passo 1: Implantar a Infraestrutura da 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 de código-fonte para suporte ao conector BeaconServerless
  3. Detectar flags GOEXPERIMENT a partir do binário do servidor
  4. Compilar o plugin de listener (.so) com as flags correspondentes
  5. Recompilar o servidor AdaptixC2 e os extenders
  6. Restaurar seus arquivos com backup (certificados, banco de dados, perfil)
  7. Instalar o plugin de listener serverless + configurações do extender 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 como 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 a partir 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 se conectar em questão de 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
Região AWSRegião onde a infraestrutura é implantadaus-east-1
URL do LambdaURL da função a partir da saída do Terraform(obrigatório)
Chave de API do RelayDeve corresponder ao relay_api_key do Terraform(opcional)
Tabela de EntradaTabela DynamoDB para check-ins dos agentesadaptix-inbound
Tabela de SaídaTabela DynamoDB para respostas do servidoradaptix-outbound
Intervalo de PollingCom que frequência verificar o DynamoDB (segundos)5
Horas de TTLExpiração dos registros do DynamoDB24

Detalhes Técnicos Principais

Protocolo de Comunicação Kharon

O agente Kharon usa um protocolo binário personalizado 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 conectado (key stomping): Quando o payload é pequeno, a chave de 16 bytes em TotalLen-16 sobrepõe-se à á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 os três formatos e os trata corretamente.

Loop de Polling de Saída do Lambda

A natureza assíncrona do Lambda + DynamoDB significa que o listener ainda não processou o registro de entrada quando o Lambda verifica pela primeira vez por uma resposta. O Lambda consulta a tabela de saída por até 8 segundos após armazenar um registro de entrada, 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

Baixar ferramenta