DEBUG TON LINUX COMME UN PRO

Article qui explique comment debugger une exploitation sur un kernel linux.

Pourquoi debug son exploitation ?

Le débug est une solution à mon sens un peu miracle. Pourquoi ? car elle nous permet de voir à chaque moment de notre exploitation le déroulement du system. La stack, les objets heap, les registres et j'en passe. Pour cela qu'a mon sens il est très important de savoir debug et encore plus en kernel exploit.

Module pour GDB ?

Le meilleur module pour GDB à mon avis est pwndbg. Nous pouvons aussi ajouter le plugin PT.

Désormais avec ces deux modules nous allons pouvoir avoir le meilleur debugger 🙂

Sauver son OS ?

Pour éviter de ré-installer son OS à cause de son exploitation kernel. Nous allons utiliser QEMU.

Pour se faire nous allons faire :

$ sudo apt install qemu-system-x86

Désormais, nous allons pouvoir faire un émulation d'un systeme. Mais ce n'est pas tous ! Nous allons faire un script bash qemu avec nos options :

  1. Faire une variable d'environnement pour garder les paramètres actuelles de notre shell et empêcher que CRTL+C ne ferme notre VM via STTY.

  2. Spécifier la RAM nécessaire : 512, 1024 ...

  3. Utiliser l'option : nographic, car nous n'avons pas besoin d'interface graphique juste un shell.

  4. On spécifie notre kernel via "-kernel" suivis du fichier.

  5. Les fonctionnalités CPU via "-cpu" puis l'architecture et les protections.

  6. L'option -s & -S qui va ouvrir un serveur GDB et attendre une connection.

Le résultat :

#!/bin/bash

STTY=$(stty -g)
stty intr ^-

echo "Tu es sur la bonne voie ! ^^"
qemu-system-x86_64 \
	-m 512M \
	-nographic \
	-kernel bzImage \
	-append 'console=ttyS0 oops=panic panic=1 init=/init quiet pti=on' \
	-monitor /dev/null \
	-cpu qemu64,+smap,+smep \
	-initrd rootfs.img \
	-fsdev local,security_model=none,id=share0,path=$(pwd)/qemu_share \
	-device virtio-9p-pci,fsdev=share0,mount_tag=qemu_share

stty "${STTY}"

Last updated