Objectifs du TP :
Comprendre le fonctionnement des jeux en réseau.
Analyser et manipuler le client de jeu pour contourner certaines protections.
Utiliser des outils de hacking pour altérer le comportement du jeu.
Prérequis :
Connaissance de base en C/C++ et en reverse engineering.
Familiarité avec les outils de débogage tels que Ghidra, IDA, ou Radare2.
Environnement Linux avec des outils comme Wireshark, Cheat Engine, etc.
Matériel requis :
Une version de Pwn Adventure 3 préalablement installée (disponible sur GitHub).
Outils : Ghidra, Cheat Engine, Wireshark, et un compilateur C/C++.
Modes de jeu :
Pwn Adventure 3 peut être joué en deux modes : local et en réseau. En mode local, toutes les interactions se font sur votre machine. En mode réseau, vous pouvez jouer avec d’autres joueurs et interagir avec un serveur distant.
Lancement d’un serveur Docker de Pwn Adventure 3 :
Pour lancer un serveur Pwn Adventure 3 à l’aide de Docker, suivez les étapes suivantes :
Assurez-vous d’avoir Docker installé sur votre machine.
Exécutez la commande suivante pour lancer le serveur :
docker run -d -p 3000:3000 -p 3001:3001 -p 3002:3002 -p 3003:3003 -p 3004:3004 -p 3333:3333 --hostname=cc98ca086102 --mac-address=02:42:ac:11:00:02 --env PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin --env PWN3=/opt/pwn3 --env MASTERDNS=localhost --env GAMEDNS=game.pwn3 --restart=no --runtime=runc checkblue/pwnadventure:latest
Le port
3333
est utilisé pour les connexions des clients de jeu.Le port 3000 est utilisé pour l’interface d’administration du serveur.
A noter que depuis le 1 Novembre 2024, le certificat SSL server.crt n’est plus valide. Il faut entrer dans le conteneur docker afin de le renouveller.
Entrer dans le conteneur docker :
docker exec -it <container_id> /bin/bash
Entrer dans le dossier qui contient le fichier server.key
/opt/pwn3/server/MasterServer/
Création du fichier server.csr :
openssl req -new -key server.key -out server.csr
Renouvellement du certificat server.crt
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
Il faudra ensuite récupérer ce fichier et le remplacer dans le client dans /PwnAdventure3/Content/Server
Puis modifier le server.ini avec les informations de connexion.
Et enfin il faudra modifier l’host du serveur pour répondre au requête DNS de game.pwn3 et master.pwn3
Sinon la solution de facilité est de lancer le client et de jouer en offline. Bon jeu.
Partie 1 : Analyse de la Communication en Réseau
1. Lancement et Capture des Paquets
Lancez Pwn Adventure 3 et ouvrez Wireshark pour capturer les paquets.
Filtrez les paquets liés au jeu (par exemple, en utilisant le port TCP spécifique du jeu).
Essayez de comprendre le type de données qui est échangé entre le client et le serveur.
Question : Quels types de paquets sont échangés ? Pouvez-vous identifier les paquets de connexion et ceux qui contiennent des informations de jeu ?
2. Manipulation des Paquets
Utilisez un outil comme
mitmproxy
ouWireshark
pour modifier certains paquets en cours de jeu.Tentez de modifier la quantité d’or envoyée au serveur, par exemple.
Note : Assurez-vous de travailler en mode local pour ne pas enfreindre les règles d’éthique.
Partie 2 : Analyse Statique et Dynamique du Code
1. Analyse avec Ghidra
Ouvrez le fichier exécutable de Pwn Adventure 3 dans Ghidra.
Essayez d’identifier les fonctions liées à la gestion des objets (par exemple, l’or ou la santé du joueur).
Notez les adresses mémoire qui semblent importantes pour la manipulation des ressources.
2. Utilisation de Cheat Engine
Lancer Cheat Engine et attachez-le au processus du jeu.
Recherchez la valeur actuelle de l’or de votre personnage.
Modifiez cette valeur et observez le comportement du jeu.
Question : Est-ce que la modification est persistante ? Pourquoi ou pourquoi pas ?
Partie 3 : Contournement de Mécanismes de Protection
1. Analyse des Protections
Identifiez les protections mises en place pour empêcher la triche (vérification de l’intégrité, checksum, etc.).
Utilisez IDA ou Ghidra pour repérer des fonctions qui pourraient vérifier l’intégrité des données.
2. Contournement
En utilisant un débogueur, placez des points d’arrêt (breakpoints) sur ces fonctions.
Essayez de contourner ces vérifications, par exemple en changeant les conditions de saut (jump).
Question : Quel effet a ce contournement sur le jeu ?
Partie 4 : Exploitation Avancée – Création de Cheats
1. Création d’un Mod Menu
Utilisez vos connaissances en C++ pour créer un petit programme qui interagit avec le processus du jeu.
Par exemple, créez une interface qui permet de modifier la quantité d’or, la santé, ou de téléporter le joueur.
Implémentez des hooks pour rediriger certaines fonctions du jeu vers votre propre code.
2. Test et Validation
Testez votre mod menu en jeu et assurez-vous que toutes les fonctionnalités fonctionnent comme prévu.
Question : Quels problèmes avez-vous rencontrés lors de l’injection de code ? Comment les avez-vous résolus ?
Partie 5 : Réflexion éthique
Discussion :
Quelles sont les implications éthiques de la création de cheats pour des jeux vidéo ?
Dans quel contexte l’exploitation d’un logiciel est-elle acceptable ?
Rédigez un paragraphe expliquant pourquoi il est important de respecter les règles d’éthique dans ce type de pratique.
Conclusion
Ce TP vous a permis d’explorer les rouages internes d’un jeu vidéo, de comprendre les communications réseau, et d’apprendre à manipuler le code pour en altérer le comportement. Ces compétences sont précieuses pour comprendre les mécanismes de sécurité et les potentielles vulnérabilités d’un logiciel, mais doivent être utilisées avec responsabilité et éthique.