ERESI: une plate-forme d'analyse binaire au niveau noyau — Anthony Desnos, Julien Vanegue
Date : 05 June 2008 à 11:15 — 30 min.
ERESI est une interface pour l'analyse de code machine sur les systèmes d'exploitation UNIX. Nous présentons ses fonctionnalités d'analyse statique et dynamique directement utilisable depuis un langage spécifique au domaine du reverse engineering, du debugging et de l'audit de programmes sans les sources. Notre interface est organisée en sous-ensembles de commandes permettant d'exécuter des routines de programmes en langage ERESI, ce qui facilite l'automatisation des taches de d'audit de vulnérabilités, d'analyse d'exécutable, de vérification d'intégrité, ou de journalisation des événements internes des programmes. Les techniques de manipulation binaire sur disque ou en mémoire exportées par ERESI permettent l'analyse d'environnements protégés tel un Linux compilé avec des protections d'exécution de la mémoire (PaX) ou lors d'introduction d'aléa dans l'espace d'adressage (ASLR).
Dans cet article, nous montrons comment nous avons étendu notre analyse au mode superviseur en permettant d'inspecter l'état du noyau Linux en temps réel, de le modifier et de le debugger, d'y injecter du code C compile, et de détourner les fonctions du noyau même si celle-ci ne sont pas exportées, et ce directement dans le langage ERESI. Nous avons décline ces nouvelles fonctionnalités en deux nouveaux outils : Ke2dbg (Kernel Embedded ERESI debugger) et Kernsh (The Kernel shell).