1.29 [Retro] Demande Information MITM

Inscrit
16 Juin 2022
Messages
3
Reactions
0
#1
Bonjour a tous ,
Etant nouveau sur le forum et étant novice dans le monde du botting je me permet de poster ce sujet afin d'avoir quelques réponses concernant le sujet de la création d'un bot MITM sur la version rétro de dofus , je me suis pas mal balader sur le forum ( qui est une vrai mine d'or a information au passage *-* ) , mais je n'ai pas trouvé de sujet qui parle concrètement de la création d'un MITM pour retro j'imagine que le procédé doit etre plus ou moins le meme que sur la version 2.X mais je me demandais comment gerer la partie laucher , je me suis permis de reprendre le schéma que l'un des membres a posté , si j'ai bien compris faire un MITM revient concrétement a construire quelque chose qui s'apparente a ça :
1655383991537.png
Mais ma question c'est l'utilité du " Serveur Client et du Serveur faux Client " pourquoi en faire deux ? , je voulais également savoir si le fait d'injecter un dll directement dans le client pose probléme maintenant que la connexion passe par le laucher ?

J'ai déja réussis a simuler la connexion jusqu'au jeu ( et meme aller un peu plus en gerant les déplacements ) en socket sans gros probléme , mais de tout ce que j'ai lu un MITM est beaucoup plus facile a gérer ? Sauf que je n'ai aucune idée de point de départ et de ce qu'on m'a dit plusieurs sécurité ( dont beaucoup de gens ne sont pas au courant ) sont a prévoir concernant un bot socket sachant que le loader actuel est obfu et qu'aucune version public ne permet de le lire .

Merci d'avance a tout ceux qui me liront :)
 

AzureHaze

Contributeur
Inscrit
27 Septembre 2019
Messages
47
Reactions
250
#2
Salut, oui si j'étais toi j'éviterais de faire un bot socket et j'en ferais un seulement MITM (plus simple et pas de problèmes en cas de mise à jour du protocole). Je pense que les 2 parties dans ton serveur correspondent juste à deux sockets differents (un pour le client, un pour le serveur) c'est juste un mauvais nom, quand ton client va se connecter à ton proxy via connect() tu vas devoir ouvrir un socket, ensuite tu vas devoir te connecter au serveur de jeu avec un autre socket (qui permettra de communiquer avec le serveur cette fois). Si tu as du mal au niveau de l'injection/redirection de flux ou de comment coder ton proxy je peux t'aider. C'est vrai qu'avec la restriction du launcher ça peut poser problème puisque normalement tu lances ton processus en suspendu et tu injectes, mais rien d'impossible.
 
Inscrit
16 Juillet 2017
Messages
3
Reactions
0
#3
Salut, peux tu m'envoyer ton discord ? Je souhaite également me lancer dans la création d'un bot mitm retro dans un but d'apprentissage.
On pourrait s'entraider :p
 
Inscrit
16 Juin 2022
Messages
3
Reactions
0
#4
Salut, oui si j'étais toi j'éviterais de faire un bot socket et j'en ferais un seulement MITM (plus simple et pas de problèmes en cas de mise à jour du protocole). Je pense que les 2 parties dans ton serveur correspondent juste à deux sockets differents (un pour le client, un pour le serveur) c'est juste un mauvais nom, quand ton client va se connecter à ton proxy via connect() tu vas devoir ouvrir un socket, ensuite tu vas devoir te connecter au serveur de jeu avec un autre socket (qui permettra de communiquer avec le serveur cette fois). Si tu as du mal au niveau de l'injection/redirection de flux ou de comment coder ton proxy je peux t'aider. C'est vrai qu'avec la restriction du launcher ça peut poser problème puisque normalement tu lances ton processus en suspendu et tu injectes, mais rien d'impossible.
Salut merci beaucoup pour ta réponse je partirais sur un MITM pour le coup , ça m'aiderait vraiment que tu m'éclaire effectivement au niveau de l'injection c'est une notion dont je n'etais pas tres familier avant de faire quelques recherches sur le sujet ( dont les hooks ) , ajoutons a ça l'histoire du laucher je t'avoue que toute aide de ta part serait la bienvenue :3


Salut, peux tu m'envoyer ton discord ? Je souhaite également me lancer dans la création d'un bot mitm retro dans un but d'apprentissage.
On pourrait s'entraider :p
Salut avec plaisir :D , je te laisse mon discord : jogny#7361
 
Inscrit
25 Septembre 2019
Messages
7
Reactions
5
#5
Salut,

Selon moi le schéma n'est pas tout à fait juste, il ressemblerait plutôt à ça :
1657034655776.png
Je pense que le schéma se suffit à lui même pour expliquer l'utilité du "Faux client" et du "Faux serveur".

Pour ce qui est de l'injection et des hooks cela te permet de "remplacer" le code d'une fonction par ton propre code. Dans le cas d'un MITM on se place entre un client et son serveur, l'injection permet donc de remplacer le code des fonctions connect(), send() et recv() afin d'y intercepter les paquets qui transitent entre le client et le serveur.

Concrètement le processus Dofus Retro.exe va utiliser la fonction send() de la librairie ws_32.dll pour envoyer un paquet (comme tu le fais actuellement avec bot socket). En injectant un hook dans le processus de Dofus Retro.exe, tu vas pouvoir exécuter un petit morceau de code avant d'appeler réellement send() et donc modifier le paquet avant de l'envoyer. C'est le même principe pour les fonctions connect() et recv().

PI : Il me semble que la nouvelle version de Dofus Retro utilise WSASend() et WSARecv() au lieu de Send() et Recv() mais je ne suis plus sûr de ce que j'avance.

En espérant que cela t'éclaire un peu, bon courage pour tes développements !
 
Inscrit
16 Juin 2022
Messages
3
Reactions
0
#6
Salut,

Selon moi le schéma n'est pas tout à fait juste, il ressemblerait plutôt à ça :
Afficher la pièce jointe 799
Je pense que le schéma se suffit à lui même pour expliquer l'utilité du "Faux client" et du "Faux serveur".

Pour ce qui est de l'injection et des hooks cela te permet de "remplacer" le code d'une fonction par ton propre code. Dans le cas d'un MITM on se place entre un client et son serveur, l'injection permet donc de remplacer le code des fonctions connect(), send() et recv() afin d'y intercepter les paquets qui transitent entre le client et le serveur.

Concrètement le processus Dofus Retro.exe va utiliser la fonction send() de la librairie ws_32.dll pour envoyer un paquet (comme tu le fais actuellement avec bot socket). En injectant un hook dans le processus de Dofus Retro.exe, tu vas pouvoir exécuter un petit morceau de code avant d'appeler réellement send() et donc modifier le paquet avant de l'envoyer. C'est le même principe pour les fonctions connect() et recv().

PI : Il me semble que la nouvelle version de Dofus Retro utilise WSASend() et WSARecv() au lieu de Send() et Recv() mais je ne suis plus sûr de ce que j'avance.

En espérant que cela t'éclaire un peu, bon courage pour tes développements !
Hello , merci beaucoup les éclaircissement j'y vois effectivement beaucoup plus clair !! :teeth:
 
Haut Bas