Désactiver les protections sous Linux pour pratiquer le développement d'exploit

Je suis actuellement à parfaire mes connaissances sur le développement d'exploit pour utiliser des vulnérabilités de type buffer overflow. Armé de ma bible, je tente actuellement de mettre en pratique les différentes techniques (stack overflow, heap overflow, format strings bug, GOT rewriting etc.) en complétant les exercices Insecure Programming by example de gera.
Linux est la plateforme idéale pour pratiquer ces techniques puisque le système est bien documenté, le code source est accessible et de nombreux outils sont disponibles. Toutefois, les distributions récentes sont livrées avec plusieurs protections qui complexifient le développement d'exploit. Voici donc une liste de commandes pratiques pour désactiver ces protections.
- Activer les coredumps : ulimit -c unlimited
- Désactiver la Stack Randomization : Ajouter kernel.randomize_va_space = 0 à /etc/sysctl.conf
- Désactiver la détection de heap overflow : export MALLOC_CHECK_=0
Compiler avec les options suivantes :
- -ggdb : activer le support pour le déboggeur gdb
- -mpreferred-stack-boundary=2 : Évite que gcc aligne les variables différemment sur la stack
- -fno-stack-protector : Désactive la protection de la stack avec ProPolice (activé sur Gentoo et Ubuntu)
Évidemment, je vous recommande fortement de pratiquer sur une machine virtuelle ou une machine dédiée puisque le fait de désactiver les protections rend l'ensemble des programmes vulnérables.
Merci à Phil pour la méthode pour désactiver ProPolice.