Naviguer dans les forums
Trackers Ankama
[Anti-Bot] Une solution technique viable qui n'impacte pas les joueurs
Par CM-Account-Un - ABONNÉ - 13 Novembre 2019 - 13:42:06Bonjour,
Je n'utilise pas de programme de bots, je n'en ai jamais programmé et ce n'est pas quelque chose qui m'intéresse. En revanche, j'ai une solution intéressante qui pourrait servir à la lutte contre la triche.
On sait tous qu'il est impossible de bannir les bots à la main. La solution n'est pas humaine, elle est technique. Et étonnement, elle n'impacte pas les joueurs honnêtes et est simplement réalisable.
Cette solution n'ayant jamais été proposée, je me permet de la partager.
Fonctionnement du MITM
Le bot MITM (Man In The Middle / Homme au Milieu) est le type le plus répandu. Sa conception est accessible à n'importe quel développeur amateur, des multitudes de sources pullulent sur le web et les joueurs ont confiance en ce type (ce qui assure un succès commercial).Son fonctionnement est simple, le bot intercepte la communication entre le client et le serveur de jeu, modifie les paquets qui l'intéresse et les renvoie.
Solution
Pour parvenir à se placer dans le trafic, le programme doit d'abord rediriger le traffic en local. Et la redirection comprend l'injection de DLL. Cette injection est une simple allocation de mémoire tampon destinée à l'écriture des bytes qui constituent la-dite DLL.
Pour mettre fin au fléau des bots MITM, il suffit d'ajouter une sécurité au client qui, avant le switch du serveur de connexion au serveur de jeu, vérifie la mémoire tempon du processus.
Sources:
/!\ Liens Externes /!\ 


Spoiler (cliquez ici pour afficher le spoil)
Définition: https://fr.wikipedia.org/wiki/Injection_DLL
Démonstration: https://www.andreafortuna.org/2017/12/08/what-is-reflective-dll-injection-and-how-can-be-detected/
Solution : https://www.defcon.org/html/defcon-20/dc-20-speakers.html#King
Solution présentation DefCon 20: https://www.defcon.org/images/defcon-20/dc-20-presentations/King/DEFCON-20-King-Reflective-Injection-Detection.pdf
Solution GitHub: https://github.com/aking1012/dc20
Démonstration: https://www.andreafortuna.org/2017/12/08/what-is-reflective-dll-injection-and-how-can-be-detected/
Solution : https://www.defcon.org/html/defcon-20/dc-20-speakers.html#King
Solution présentation DefCon 20: https://www.defcon.org/images/defcon-20/dc-20-presentations/King/DEFCON-20-King-Reflective-Injection-Detection.pdf
Solution GitHub: https://github.com/aking1012/dc20
Je tiens à être le plus clair possible, je n'utilise pas de bots. Ma contribution est justement destinée à stopper leur propagation une bonne fois pour toutes en proposant une solution qui n'affecte pas les joueurs.
J'attend vos retours.

Réagir à ce sujet
C'est ce genre d'initiative venant des joueurs qui doit être étudiée en priorité. Je n'y comprends pas grand chose mais j'espère que les devs vont au moins y jeter un coup d'oeil et te répondre
Merci, j'en doute mais c'est ce que j'espère également.
C po une solution
Psk si chui a la place des mecs, j'vais voir du côté de la commande route de windows, c plus sale mais ça fait pareil
Exactement, tout autre solution ferait pareil, elle injecterait la même dll dans le même processus.
Dofus possède deux type de serveur:
A l'heure où j'écris ces lignes, il n'y a qu'une vérification mise en place avant le switch, c'est l'IdentificationToken du RawDataMessage. Il est facile de le générer dynamiquement en analysant les sources du client.
Si Ankama rajoutait la vérification de la mémoire tampon, plus de MITM. Vraiment. Ce serait impossible.
Le soucis c'est que ça ne règle que le problème des MITM. A supposer qu'une telle fonctionnalité soit mise en place, ça ne fera que "déplacer" le problème vers le deuxième grand type de bot (je donne pas le nom pour pas en faire de la pub, mais les gens qui s'y connaissent sauront).
Du coup tous les bots "industriels" (à savoir ceux qui sont vendus et utilisés en masse, pas le bot individuel créé dans un coin) passeront sur cette techno.
Le bot socket est un simple imitateur. Il se fait passer pour un client.
En fait, les développeurs analysent les sources du client et reproduisent le protocole. De fait, ils peuvent communiquer avec les serveurs sans avoir besoin d'ouvrir une instance de jeu.
Pour mettre fin à ces bots, il faut protéger les sources du client. En Action Script 3 c'est compliqué mais loin d'être impossible. La suite "SecureSWF" de KindiSoft permet une obfuscation qui n'est pas décompilable par les décompileurs grand public utilisés par les développeurs de bots.
Mais ce n'est pas le sujet de mon topic. J'en ouvrirai un lorsque les bots du marché seront des bots sockets.
En ce moment, il existe que 3 bots Dofus PC sur le marché public:
1 MITM
1 MITM + Socket qui contourne pas l'Anti-Bot.
1 MITM + Socket semi-privé qui n'a aucune réelle fonctionnalité et est destiné aux développeurs.
En prenant en considération le fait que tu ne puisses pas modifier les sources du client, comment tu ferais pour mettre en place un système qui manipulerait le traffic envoyé sans utiliser un SocketHook ?
T'as beau pouvoir voir le traffic TCP/IP de ta carte réseau, ces sockets sont déjà envoyés/reçus. Tu peux pas les manipuler avant l'envoi.
EDIT:
J'ai compris où tu voulais en venir et dans ce cas on parle plus du type MITM.
Pour ceux qui veulent se tirer une balle car ils ne comprennent pas tous les propos techniques de l'OP, CM-Account vous propose une corde.
En tout cas +1 à l'OP pour l'initiative, il faut trouver une bonne solution "automatisée" aux bots vampires.
J'essaye d'être le moins technique possible mais au contraire, si quelqu'un a du mal à comprendre, qu'il se manifeste afin que je lui ré-explique plus simplement.
Concernant les bots sockets, j'ai des idées en tête mais elles ne devraient pas être partagées sur ce post.
De plus, elles ne sont pas nécessaires à l'heure actuelle.
Merci pour la reconnaissance, c'est en ouvrant la discussion qu'on réalisera notre objectif, ensemble.