SSTIC 2013 - Recompilation dynamique de code binaire hostile

Par Sébastien Josse

Les malwares sont de plus en plus dur à analyser du fait des techniques de packing existantes, qui combinent techniques de compilation, crypto et anti-debug. Il n’existe actuellement pas de mécanismes d’analyse multi-plateformes suffisament robuste pour traiter ce problème. De nombreux outils existent pour faire de l’analyse statique ou dynamique, mais difficilement adaptés à l’analyse de codes hostiles, et ne permettent pas toujours la re-écriture du binaire. L’utilisation de formats propriétaires intermédiaires rend difficile l’utilisation combinée de plusieurs outils.

Plusieurs solutions existent pour l’unpacking. L’instrumentation depuis l’espace utilisateur, bien qu’efficace, reste facile à détecter, et le code offensif s’exécute avec le même niveau de privilèges. Depuis un hyperviseur, on gagne en privilèges par rapport au code hostile. L’auteur propose de travailler directement avec un CPU virtualisé et instrumenté. Le binaire est d’abord recompilé pour l’architecture du CPU virtuel à l’aide de TCG. L’architecture cible choisie est LLVM ce qui permet d’y appliquer les optimisation traditionnelles de la compilation.

VxStripper propose une architecture modulaire avec des plugins d’unpacking, de normalisation ou de trace.