Exploiter un Buffer Overflow

hacking 10 sept. 2021

La recette de grand-mère étape par étape avec le script d'automatisation : bofhelper

Outils et environnements

  • Linux :
    Pour la partie fuzzing, génération du payload et exploitation en reverse Shell
  • Windows :
    Pour debugger le logiciel vulnérable

En terme d'outil, nous pouvons utiliser sur Windows :  Immunity Debugger et le module mona

Une fois que Immunity Debugger est installé sur votre ordinateur, déplacer le fichier mona.py dans le dossier  "PyCommands" (C:\Program Files (x86)\Immunity Inc\Immunity Debugger\PyCommands\)

Sur Linux récupérez bofhelper : https://github.com/LegendBegins/Overflow-Helper, cet outil vous permettra d'accélérer l'exploitation d'un buffer overflow.


Rappel des étapes permettant l'exploitation d'un Buffer Overflow :
Voici également un excellent lien (en anglais) qui vous explique ce qui se passe en mémoire.

Les grandes étapes

  • Fuzzing : identifier le nombre d'octet nécessaire pour générer le buffer Overflow
  • Replication du crash et contrôle de l'EIP (l'Extended Instruction Pointer) : identifier l'offset exact qui nous permet de surcharger le contenu du registre EIP : c'est dans cette zone précise que l'on ajoutera l'adresse du JMP qui nous permettra d'executer le payload)
  • Identifier les 'bad characters", ce sont les caractères interdits par le programme, (par défaut \x00), notre payload (le code que l'on va injecter pour obtenir un shell) ne devra contenir aucun bad characters auquel cas il risquerait de ne pas fonctionner.
  • Identifier le Jump Point : Il s'agit de trouver un endroit qui effectue un saut vers le haut de la pile (ESP pour Extended Stack Pointer) via un call ESP, push esp, retn ... et s'assurer que l'instruction ne contient pas de bad characters.
  • Genérer le payload
  • Compléter le payload avec des NOPs placés devant (des instructions qui ne font rien (No Operation) mais qui permettent de passer à l'instruction suivante). Ainsi lorsque le jmp va s'executer nous allons atterir dans notre pool de NOP qui va passer d'instruction en instruction jusqu'à l'execution notre payload.


La vidéo

La vidéo complète sur Youtube :

Des questions ? des commentaires ? Vous pouvez m'écrire directement ici sur le blog, ou sous la vidéo Youtube.

Si vous aimez ce type de vidéo, abonnez-vous et faîtes le moi savoir afin que j'en produise bien plus souvent !

Mots clés