Skip to content

lelianthorel/C2-server-python

Repository files navigation

POO_SERVEUR_C2_thorel

Serveur de commande et de contrôle (C2) développé dans le cadre d'un projet de programmation orientée objet.

Description

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.

Structure du projet

  • cli/ : Interface en ligne de commande
    • agent/ : Client C2 (agent)
    • server/ : Serveur C2
  • core/ : Composants principaux
    • client.py : Implémentation du client
    • server.py : Implémentation du serveur
  • tools/ : Fonctions utilitaires
    • utils.py : Fonctions helper

Fonctionnalités

  • 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

Prérequis

  • Python 3.7+
  • Docker (optionnel, pour exécution dans des conteneurs)

Installation

Méthode 1: Installation directe

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

Méthode 2: Utilisation avec Docker

Aucune installation supplémentaire nécessaire si vous avez Docker installé.

Utilisation (Docker Compose - Méthode recommandée)

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-1

Cette approche est la plus simple pour tester le système avec plusieurs agents connectés simultanément.

Fonctionnalités

  • 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

Architecture

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

Diagramme d'architecture

+------------------+     TCP      +------------------+
|     Client       | <----------> |     Serveur      |
| (Agent C2)       |              |                  |
+------------------+              +------------------+
         |                                 |
         |                                 |
+------------------+              +------------------+
|   cli/agent/     |              |   cli/server/    |
+------------------+              +------------------+
         |                                 |
+------------------+              +------------------+
|   core/client.py |              |   core/server.py |
+------------------+              +------------------+
         |                                 |
+------------------+              +------------------+
|  tools/utils.py  |              |  tools/utils.py  |
+------------------+              +------------------+

Contribuer

Les contributions sont les bienvenues ! Pour contribuer :

  1. Forkez le projet
  2. Créez une branche pour votre fonctionnalité (git checkout -b feature/ma-fonctionnalité)
  3. Commitez vos changements (git commit -am 'Ajout d'une nouvelle fonctionnalité')
  4. Poussez votre branche (git push origin feature/ma-fonctionnalité)
  5. Ouvrez une Pull Request

Licence

Ce projet est sous licence MIT - voir le fichier LICENSE pour plus d'informations.

Auteurs

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors