virtdbg: un débogueur noyau utilisant la virtualisation matérielle — Christophe Devine, Damien Aumaitre
Date : 09 June 2010 à 15:30 — 30 min.
L'observateur perturbe la mesure : cette règle s'applique aussi dans le monde de l'analyse dynamique de programmes, où le fait d'attacher un débogueur peut entraîner des effets de bords modifiant le comportement du système étudié. Ainsi, plusieurs codes malveillants tentent de détecter la présence d'un débogueur ou d'un environnement de virtualisation pour altérer leurs actions en conséquence.
Le projet virtdbg a objectif but de créer un débogueur fondé sur un hyperviseur minimaliste. Il est injecté directement dans la mémoire du système cible en utilisant un transfert DMA et offre un ensemble de primitives simples permettant de contrôler la cible (pose de points d'arrêt, lecture et écriture de la mémoire, gestion des exceptions, etc.) Ces primitives s'appuient sur les fonctions de virtualisation matérielle des processeurs Intel et AMD récents. Le système est très peu altéré et le contrôle est total.
Les communications entre l'hyperviseur et le débogueur reposent sur le protocole gdbserver, implémenté au-dessus d'un médium physique choisi pour minimiser l'impact sur le système à étudier (USB ou Ethernet). Ce protocole a par ailleurs comme avantage d'être compatible avec différents débogueurs comme gdb, IDA Pro, GenDbg, etc.