RadaRE2 Tuto [Basic] Première approche.

Allez on y va. Voici un petit guide pour mettre le pied à l’étrier et donner sa chance à RadaRE2. C’est affolant de voir qu’il soit si avancé sans avoir plus de doc/tutos que cela. A se demander si ce n’est pas juste utilisé par ses développeurs. Tentons d’y remédier.

On va voir comment reverser avec RadaRE2 un tout petit Chall dont, en plus, on a les sources. On part sur du x64 ELF. Le chall est le suivant :

Compilons ce petit chall et strippons le;

Bon, on ne va pas faire un «strings crackkids» pour gagner on va voir ce que l’on peut faire avec radaRE2. A partir de maintenant oubliez ce qu’il y a dans ce source, et même ce qu’on a pondu comme exécutable.

Premièrement demandons au Rabin2 ce qu’il pense de ce fichier. Rabin2 est mix de objdump et readelf sous stéroides. Il comprend de base les formats d’exécutables JAVA, ELF et PE (et les MZ).

Ok… on est devant un ELF 64 bits strippé. Demandons au Rabin les fonctions importées (i) et les strings déclarées (z).

Masel Tov Rabin !!!  je vois un STRCMP, et le You Win/You Failed !… Ça a l’air pas mal. Ouvrons ceci dans RadaRE2.

Nous voila donc avec un shell à l’entry point. Et c’est là qu’il faut introduire un concept important ; les Flagspaces. L’addresse d’une string, d’une fonction, d’une référence est un “Flag”. Et vu que cela fait beaucoup d’objets, il sont rangés par “FlagSpaces”.  «fs» permet d’afficher ou de sélectionner le Flagspace dans lequel on travaille et «f» affiche les flags.

Devant nous donc, 4 strings, ce qu’avait trouvé avec le rabin précédemment. On peut afficher les strings avec «ps» (Print String), et plus précisément «psz» pour une stringZ (Zero terminated).

Voir meme en hexa avec px (print hexa) dans ce cas, je précise combien de byte j’en veux et le mode d’affichage.

Et il y a bien d’autre print mode hexa. Pour l’aide c’est «?» donc print hexa help c’est «px?». Je vous laisse découvrir tout seul pxe.

Bon, avançons, allons voir le FlagSpace avec les fonctions, mais avant cela il faut le populer. Si le code n’a pas été analysé, il n’y a pas de flagspace “fonctions”.

Bon maintenant trouvons où est appelé notre STRCMP.  (Analyse Reference Flag)

Et voila STRCMP est appelé en 0x0040060F. Désassemblons désormais la fonction autour de cette adresse. (Print Disassembled Function)

C’est un peu large, car il n’a pas détecté la fin inexistante de la fonction fcn.0x0040059c, mais ca passe,  on y est ! On peut constater, comme dans un IDA, les petites flèches d’embranchement qui confirment que le STRCMP est la clef de ce chall. Celui ci compare ce qu’il y aura sur le stack en rbp-0x30 avec ce qu’il y a en rbp-0x10. Le 0x30 sera remplis par un scanf en 0X4005fc. Quand rbp-0x10 il est remplis par deux mov en 0X4005d4 et 0x4005db. Mais comment convertir ceci en string. Et bien on peut utiliser «rax2» un autre tools de la suite RadaRE2 qui convertit tout en tout. Et il est aussi possible de l’apeller directement depuis notre RadaRE2 avec un «!».

Une autre solution capilo-tractée assez violente qui ne servira d’exemple que pour montrer ce que l’on peut faire avec les calculs d’offset de RadaRE2;

Ok, je traduis. Je me place en 0x4005d4 et j’affiche une string d’une longueur de 4 depuis (l’offset courant + taille de l’opcode – 4). (4 car c’est la longueur du dword).

Et oui la commande permet de faire des opérations de dingue sur les offsets. Et nombre de substitutions sont disponibles.

Voila pour une première approche, et on est loin de loin d’avoir tout vu encore. Je n’ai même pas parlé du mode “Visual”.

Retenons, aa, pdf, psz, f, fs et arf. Cela sera déja très bien.

This entry was posted in Reverse and tagged , . Bookmark the permalink.

7 Responses to RadaRE2 Tuto [Basic] Première approche.

  1. rickroll says:

    Yop!
    Merci pour les tuto! C’est vraiment cool! Ca, c’est pour t’encourager à continuer ton site car c’est une très bonne source d’info.
    Bon, par contre, j’ai pas réussi à tout tout faire dans le tuto et celui d’après… En fait, quand je veux lire le contenu de la mémoire d’un variable, j’ai que du ff ff ff ff.. J’ai testé avec la dernière version de RadaRe (git clone) et dans une VM. C’est peut être pour ça? Du coup, impossible d’écrire… J’ai quand même compris le principe et j’ai bien hâte à la prochaine étape!!
    Tchô, bonne continuation.

  2. romeoandjuliet says:

    Hey merci pour les explications ! J’adore ce tool

  3. zM says:

    Merci Thanat0s pour m’avoir mis le pied à l’étrier. Yaplukapoutrer maintenant !

  4. Pingback: Insomni’Hack 2017 write-up : Internet Of Fail | Le blog du Phil

  5. Pingback: Insomni’Hack 2017 write-up : Internet Of Fail – 400 | Le blog du Phil

  6. Pingback: Insomni’Hack 2017 write-up : Internet Of Fail – 400 – Securimag

Leave a Reply

Your email address will not be published. Required fields are marked *

AlphaOmega Captcha Classica  –  Enter Security Code