Reverse engineering : Comprendre la sécurité

  • Comprendre les logiciels et le matériel

    Le reverse engineering permet de comprendre le fonctionnement d’un logiciel sans disposer de son code source.

    Les logiciels sont maintenant partout et tournent sur une grande variété de machines. Lors de l’acquisition d’un logiciel, il s’accompagne généralement de nombreuses dépendances tierces dont l’acheteur n’est pas informé. Que contient vraiment le software dont on dépend ? Que fait-il réellement ? Sert-il la sécurité ou introduit-il une faiblesse dans la défense du système ?

    Comprendre un fichier binaire, sans le code source, est une tâche complexe qui nécessite des outils et un savoir-faire particulier. C’est la spécialité de Quarkslab. Nous nous entraînons quotidiennement et développons des outils adaptés aux défis modernes du reverse engineering.

    Les principes du reverse engineering peuvent s'étendre également à l'étude matérielle (PCB, composants,…) pour cartographier l'architecture matérielle, découvrir les bus et protocoles de communication entre les divers éléments et évaluer leur niveau de sécurisation.
  • Nos travaux

    Le reverse engineering est utilisable dans différents contextes, légaux en France :

    • Gagner en compréhension du code, comme un malware ou un logiciel abandonné
    • Fournir des correctifs
    • Tester les protections (DRM, jeux, paiement…)
    • Reconstruire le code exact à partir d’un binaire, binaire (ex. : vol de propriété intellectuelle)
    • Interopérabilité, construire un client tiers pour un protocole
    • Utiliser des méthodes matérielles pour pouvoir analyser les logiciels : extraction de firmware (JTAG, dessoudage de Flash,…), observation, interception et modification des signaux électriques (I2C, SPI,…) entre composants (MCUs, mémoires, périphériques, capteurs biométriques,…)
    • S'appuyer sur des techniques matérielles d'analyse de canaux auxiliaires et d'injection de fautes pour estimer les traitements réalisés par le CPU et extraire les éventuelles clés cryptographiques
  • Résultats

    • Un rapport expliquant le code et/ou le matériel analysé
    • Des extraits de code développés pour reproduire ou interagir avec le programme analysé