Reverse

Table of Contents

1. Mon setup

Gentoo avec Ghidra pour pouvoir désassembler et décompiler. GDB pour pouvoir exécuter et faire de l'exécution pas à pas. LXD pour avoir une VM Windows 10.

2. Premiers check à faire

  • strings : affiche le binaire avec les chaînes de caractères trouvables dedans. Peut contenir un flag.
  • file : pour vérifier si le binaire a été striped et comment il est link.
    • striped : les symboles ont été enlevés, les fonctions ont un nom basé sur leur adresse dans le décompilateur.
    • link : il peut l'être de 2 manières différentes
      • dynamique : on a les noms de fonctions
      • statique : les bibliothèques se trouvent dans le binaire. Un travail supplémentaire peut être nécessaire pour pouvoir identifier les fonctions de la libc par exemple

Vidéo de LiveOverflow sur les différences entre un binaire striped et les différentes manières de lier les bibliothèques.

3. Ressources

  • begin.re : expliquations sur la pile et les premiers pas dans le RE avec IDA (avec des exercices que je n'ai pas encore fait)

4. Lire la matrice (l'assembleur)

4.1. X86

Pour lire le code désassemblé, c'est utile de connaître un petit peu les bases ainsi qu'une feuille de référence des instructions. Je lis le code désassemblé depuis Ghidra.

5. Liste logiciels

Je n'ai pas testé tous les logiciels listés ici. Je les rajouterai au fur et à mesure dans ma configuration ou via des sections dédiées avec plus d'informations si je me penche dessus sérieusement.

5.1. Décompilateurs et désassembleurs

Plutôt orienté C.

5.1.1. Java

  • javap : désassemble des fichiers .class
  • VineFlower (anciennement QuiltFlower)
  • Nester : utile pour l'obfuscation
  • Enigma : idem
  • ASM OW2 : permet de patcher des classes

5.2. Débuggueurs

  • OllyDbg (plus maintenu)
  • edb (inspiré de OllyDbg)
  • gdb
  • rr : se veut meilleur / rajouter des fonctionnalités à GDB

5.2.1. .NET

5.3. Instrumentation binaire

5.4. Émulateurs

6. Ghidra

Site - CheatSheet

Si l'on voit des zones mémoires qui ressemblent à des strings, il est possible de changer leur type en faisant un clic droit puis dans le menu Data. Cela les affichera comme des chaînes de caractères dans le décompilateur.

6.1. Scripts

  • ResolveX86orX64LinuxSyscallsScript.java (built-in) : permet de remplacer les appels systèmes faient via syscall par les fonctions.

6.2. Débuggeur

Permet de poser des points d'arrêts avec le raccourcis k sur la ligne où l'on souhaite s'arrêter. Il y a différentes vues pour pouvoir voir l'état des registres, de la stack… Il n'est pas possible de taper dans l'entrée standard par défaut.

7. Radare2

7.1. Conférences

Très peu de replays disponibles. Certaines slides sont disponible sur Github.

8. Qiling

9. Unicorn

10. Cutter

Interface graphique basée sur le désassembleur Radare2.

10.1. Installation de plugins

Sur Gentoo

cmake -DBUILD_CUTTER_PLUGIN=ON -DCMAKE_INSTALL_PREFIX=~/.local -DCUTTER_INSTALL_PLUGDIR=~/.local/share/rizin/cutter/plugins/native/ ..

11. Python compilé

pyinstxtractor pour extraire les fichiers Python du .exe.

decompyle3 pour générer le fichier Python à partir du fichier .pyc. Ne crash pas en cas d'erreur, contrairement à uncompyle6.

12. IDA

Site

Outil non libre et payant. Il existe une version gratuite limitée. Merci les chinois.

13. Frida

Site

HandBook (contient des exercices pour apprendre).

14. Liste challenges

14.1. Reversing.kr

Site web

  • Easy Crack (Windows) [WU]
  • Easy Keygen (Windows)
  • Easy Unpack (Windows)
  • Music Player (Windows)
  • Replace (Windows)
  • ImagePrc (Windows)
  • Position (Windows)
  • Direct3D FPS (Windows)
  • Ransomware (Windows)
  • Twist1 (Windows)
  • Easy ELF (Linux)
  • WindowsKernel (Windows)
  • AutoHotKey1 (Windows)
  • CSHOP (Windows)
  • PEPassword (Windows)
  • HateIntel (Apple)
  • SimpleVM (Linux)
  • AutoHotKey2 (Windows)
  • x64 Lotto (Windows)
  • CSHARP (Windows)
  • Flash Encrypt (Flash)
  • MetroApp (Windows)
  • CRC1 (Windows)
  • Multiplicative (Java)
  • CRC2 (Windows)
  • Adventure (Windows)
  • CustomShell

14.2. Crackmes.one

Site regroupant pleins de challenges de reverse. La communauté propose des challenges, en respectant quelques règles. Ces challenges sont ensuite résolus par la communauté qui peut soumettre des solutions. Elles sont listées dans l'onglet "Solutions". Les challenges et les solutions se trouvent dans des dossiers ZIP chiffrés, le mot de passe est crackmes.one, sauf indication contraire dans la description.

Il reprend le fonctionnement et le design de crackmes.de qui n'est plus en ligne. Certains challenges viennent de ce site aussi.

14.2.1. Niveau 1 à 2 (simple)

14.2.2. Niveau 3

14.2.3. Niveau 4

14.2.4. Niveau 5 à 6 (BBT1)

14.2.5. PWN

Footnotes:

1

Boule et Bite Torture

Created: 2024-04-06 sam. 14:29

Validate