Rejoignez le coté obscure de Dofus, un monde où les kamas sont une priorité !

Contournement de l’anti-bot sur Dofus

Analyse des Systèmes Anti-Bot sur Dofus: Comment Nous Avons Contourné les Anciennes Mesures de Sécurité

Introduction

Chez Snowbot, nous avons été confrontés à un problème récurrent : nos utilisateurs commençaient à subir des bannissements aléatoires sur leur compte Dofus. Ces bannissements semblaient dépendre de plusieurs facteurs tels que la vitesse de combat, l’ancienneté du compte, et d’autres actions dans le jeu. Après une série d’investigations, nous avons découvert que ces bannissements n’étaient pas le fruit du hasard. En réalité, ils étaient le résultat direct de la détection de l’utilisation de Snowbot par le système anti-bot de Dofus lors de la connexion au jeu.

Méthode de Détection Initiale

Dofus utilisait un système de détection sophistiqué nommé « RawDataMessage ». Ce message, bien que invisible pour les joueurs, était parfaitement détectable par les bots, en particulier ceux utilisant une connexion directe aux serveurs de Dofus, connus sous le nom de Bots sockets. Cette méthode affectait également les bots de type MITM (Man-In-The-Middle), car elle impliquait l’utilisation d’une fonction spécifique appelée « HASH_FUNCTION ».

Nature de la Sécurité Employée

Le serveur de Dofus envoyait un message contenant du code ActionScript3 (AS3) qui devait être exécuté par le client Dofus. Ce code générait une clé publique RSA 256, utilisée pour chiffrer un ticket de connexion et une hashKey. Une fois le tout chiffré pendant l’exécution du RawDataMessage, il était renvoyé au serveur. Si le serveur, détenteur de la clé privée, parvenait à déchiffrer ce ticket, cela validait l’intégrité du RawDataMessage. Et la hashKey déchiffrée permettra de vérifier si les messages sont signés avec la bonne clé.

Défis de Contournement

Bots Sockets

Le principal défi résidait dans la nécessité de réexécuter le code ActionScript3, souvent en utilisant un langage différent. Le code était fortement obfusqué, intégrant de multiples appels à des fonctions internes de Dofus, ce qui rendait nécessaire son exécution au sein d’un client Dofus non modifié.

Bots MITM

Pour ces bots, le défi majeur était la génération de la HASH_FUNCTION. Les paquets envoyés devaient être signés, et sans la signature appropriée, le serveur de Dofus reconnaîtrait que le paquet n’avait pas été envoyé via un client officiel.

Stratégies de Contournement

Compréhension et Adaptation

Nous avons commencé par analyser le code obfusqué pour comprendre le fonctionnement du RawDataMessage. Nous avons découvert que le code changeait toutes les quatre heures environ, mais que l’élément central était la clé publique utilisée pour chiffrer le ticket de connexion et la hashKey.

Solutions Techniques

Nous avons opté pour patcher à la volée le code AS3 du RawDataMessage pour contourner deux points critiques : la vérification de l’intégrité de la fonction exécutée et l’obtention des bytes du client Dofus.

Emulation et Exécution

Nous avons créé un émulateur intégrant toutes les fonctions contenues dans le RawDataMessage. Cela nous a permis de contrôler totalement l’environnement et écuter les RawDataMessage sans avoir à connecter de compte réel.

Conclusion

Ces méthodes de contournement nous ont permis de continuer à offrir une solution efficace à nos utilisateurs sans compromettre leurs comptes. Il est essentiel de souligner que ces actions étaient destinées à comprendre et à tester les limites des systèmes de sécurité en place, et non à encourager l’utilisation de pratiques éthiquement douteuses. Notre objectif final était d’améliorer notre compréhension des mécanismes de sécurité pour mieux informer et protéger notre communauté.