Rainfall
Description
Rainfall est un projet d'exploitation de binaires. On dispose d'une machine sur laquelle une série de programmes SUID vulnérables sont installés, chacun appartenant à un utilisateur différent. L'objectif : exploiter chaque binaire pour lire un mot de passe et progresser de niveau en niveau, jusqu'à obtenir les privilèges les plus élevés.
La démarche
Chaque niveau se résout en trois temps :
- Reverse engineering — analyse du binaire avec
gdb,objdumpetltrace/stracepour comprendre son fonctionnement et repérer la faille (débordement de tampon, format string, appel système dangereux…). - Construction de l'exploit — élaboration d'une charge utile qui détourne le flux d'exécution : écrasement d'adresse de retour, injection de shellcode, ret2libc selon les protections en place.
- Élévation de privilèges — exécution de l'exploit pour obtenir un shell avec les droits de l'utilisateur propriétaire du binaire, puis récupération du mot de passe du niveau suivant.
Ce que j'ai appris
Rainfall m'a donné une compréhension concrète de la mémoire d'un processus : la pile, le tas, les registres, et la façon dont une simple erreur de gestion de tampon devient une prise de contrôle complète. C'est cette compréhension bas niveau qui permet, côté défensif, de savoir pourquoi une protection comme l'ASLR, la NX-bit ou les stack canaries existe — et comment on la contourne.