Introduction

Conçue et développée par TETRANE depuis plus de 4 ans, la technologie REVEN® est à la base des produits REVEN-Axion et REVEN-Impact. REVEN® analyse les logiciels sous leur forme binaire exécutable afin d'assister les experts en sécurité et les développeurs logiciels dans leurs travaux de reverse-engineering ou de debug avancés.

À la base de REVEN® (pour REVerse ENgine) se trouve un CPU logiciel symbolique qui peut exécuter le code binaire à analyser, qui peut être considéré comme un émulateur fidèle au matériel. Autour de ce CPU symbolique, TETRANE a également développé les briques d'émulation nécessaires à sa communication avec le reste du matériel : MMU, IRQ/Exceptions, accès matériels via ports, DMA et MMIO, etc.

L'analyse proposée par REVEN® va donc prendre sa source à la frontière entre le logiciel et le matériel : elle englobe le code du système d'exploitation, quel que soit son niveau de privilège (ring3 ou ring0) et remonte jusqu'aux couches applicatives. Cela représente une information riche et complexe, ainsi TETRANE développe également les produits qui permettent d'aggréger, organiser et explorer ces données afin de les exploiter au mieux. Ces produits proposent 2 modes d'analyse : dynamique et statique.

Le mode dynamique est actuellement embarqué dans le produit REVEN-Axion et s'appuie sur l'exécution symbolique d'une trace préalablement enregistrée par l'utilisateur (le scénario). Il est alors possible de naviguer en avant et en arrière dans la trace, d'explorer les registres CPU et données en RAM directement et en n'importe lequel de ses points, d'accéder à la liste des accès en lecture/écriture/exécution de chaque octet, etc.

À ce mode dynamique s'ajoute la possibilité d'analyser localement en statique des portions de code via différents graphes, pour de mieux comprendre sa structure.

Enfin, la technologie REVEN® permet l'accès à des fonctionnalités de haut niveau comme le data-tainting ou des informations rarement disponibles sans accès au code source : propagation de la sémantique de l'OS, gestion des strings dynamiques, parcours des accès hardware, etc.


Caractéristiques

  • Simulation symbolique d'un Intel Core i7 (x86 + extensions FPU, MMX, SSE)
  • Supporte, via le scénario, les évenements hardwares réels (usb, réseau, etc.)
  • Gère des traces de plusieurs dizaines de milliards d'instructions CPU
  • Permet l'analyse multi-plateformes (Windows, Linux, etc.) indépendamment des versions
  • Reverse unifié pour les modes kernel/user, multi-binaires
  • Pre-processing, puis accès direct aux données par API Python et GUI.