Serveur de commande et de contrôle (C2) développé dans le cadre d'un projet de programmation orientée objet.
Ce projet implémente un serveur C2 permettant de gérer des clients distants. Le serveur peut envoyer des commandes aux clients connectés et recevoir leurs réponses. Il s'agit d'une architecture client-serveur utilisant des sockets TCP pour la communication.
cli/: Interface en ligne de commandeagent/: Client C2 (agent)server/: Serveur C2
core/: Composants principauxclient.py: Implémentation du clientserver.py: Implémentation du serveur
tools/: Fonctions utilitairesutils.py: Fonctions helper
- Communication client-serveur bidirectionnelle
- Gestion de plusieurs clients simultanément
- Envoi de commandes personnalisées aux clients
- Réception et traitement des réponses des clients
- Support Docker pour déploiement facile
- Python 3.7+
- Docker (optionnel, pour exécution dans des conteneurs)
# Cloner le dépôt
git clone https://github.com/lelianthorel/POO_SERVEUR_C2_thorel.git
cd POO_SERVEUR_C2_thorel
# Créer un environnement virtuel (recommandé)
python3 -m venv venv
source venv/bin/activate # Sur Windows: venv\Scripts\activate
# Installer les dépendances
pip install -r requirements.txt
# Lancer le serveur
python3 -m POO_SERVEUR_C2_thorel server
# Lancer un client en background
python3 -m POO_SERVEUR_C2_thorel clientAucune installation supplémentaire nécessaire si vous avez Docker installé.
Le projet inclut un fichier docker-compose.yml qui configure automatiquement :
- 1 serveur C2 écoutant sur le port 4445
- 100 agents qui se connectent automatiquement au serveur
Pour lancer l'environnement complet :
# Démarrer tous les services
docker-compose up -d
# Arrêter tous les services
docker-compose down
# Attacher vous au conteneur Serveur pour lancer des commandes
docker attach poo_serveur_c2_thorel-server-1Cette approche est la plus simple pour tester le système avec plusieurs agents connectés simultanément.
- Communication client-serveur bidirectionnelle
- Gestion de plusieurs clients simultanément
- Envoi de commandes personnalisées aux clients
- Réception et traitement des réponses des clients
Le projet suit une architecture client-serveur où :
- Le serveur écoute les connexions entrantes des clients sur le port 4445 (Docker) ou 4444 (mode direct)
- Les clients se connectent au serveur et attendent les commandes
- Les communications utilisent des sockets TCP
- Le code est organisé en modules pour séparer les préoccupations
+------------------+ TCP +------------------+
| Client | <----------> | Serveur |
| (Agent C2) | | |
+------------------+ +------------------+
| |
| |
+------------------+ +------------------+
| cli/agent/ | | cli/server/ |
+------------------+ +------------------+
| |
+------------------+ +------------------+
| core/client.py | | core/server.py |
+------------------+ +------------------+
| |
+------------------+ +------------------+
| tools/utils.py | | tools/utils.py |
+------------------+ +------------------+
Les contributions sont les bienvenues ! Pour contribuer :
- Forkez le projet
- Créez une branche pour votre fonctionnalité (
git checkout -b feature/ma-fonctionnalité) - Commitez vos changements (
git commit -am 'Ajout d'une nouvelle fonctionnalité') - Poussez votre branche (
git push origin feature/ma-fonctionnalité) - Ouvrez une Pull Request
Ce projet est sous licence MIT - voir le fichier LICENSE pour plus d'informations.
- Thorel Lelian - Travail initial - lelianthorel