L’obfuscation contournée (Partie 1)

Magazine
Marque
MISC
Numéro
41
Mois de parution
janvier 2009
Domaines


Résumé

Implémenter un système pour obscurcir le code d’une application de façon efficace demande au développeur de ce système une connaissance importante dans le domaine de la protection logicielle et notamment dans la furtivité. En plus de devoir connaître les techniques variées utilisées en obfuscation, il doit connaître les méthodes employées par les attaquants pour mettre en déroute ces systèmes de défense.Indubitablement, la grande majorité des reversers utilisent une méthode mixte constituée d’un savant mélange d’analyse statique et d’analyse dynamique. Ils utilisent entre autres la méthode dite de « reconnaissance des patterns » pour éliminer l’obfuscation présente. Il existe des outils semi-automatiques très prometteurs dans ce domaine comme le plugin IDA « DeObfuscator » d’Éric Laspe.


1. Introduction

Si cette méthode d’élimination se révèle très efficace, elle se trouve être également très coûteuse en temps. En effet, l’identification de patterns se fait en général en deux temps : on commence par une reconnaissance « manuelle », c'est-à-dire qu’on identifie chaque pattern de visu en désassemblant le code source du programme protégé, puis on automatise la tâche à l’aide de scripts (scripts IDC si l’on utilise IDA, scripts ODBGScripts si l’on utilise OllyDbg, scripts en Python si l’on utilise Immunity Debugger) ou d’outils de désassemblage spécifiquement codés pour l’occasion. Malgré l’automatisation de cette opération, l’identification de centaines de patterns différentes est un travail fastidieux et pénible.

La reconnaissance de patterns n’est pas la seule technique d’attaque à pouvoir donner des résultats probants lors d’une analyse. Je vais illustrer dans cet article une toute autre approche qui...

Cet article est réservé aux abonnés. Il vous reste 96% à découvrir.
à partir de 21,65€ HT/mois/lecteur pour un accès 5 lecteurs à toute la plateforme
J'en profite


Articles qui pourraient vous intéresser...

Zéro SQLi malgré les développeurs

Magazine
Marque
MISC
Numéro
111
Mois de parution
septembre 2020
Domaines
Résumé

Nous proposons une méthode pour effectuer des requêtes SQL qui garantit l'invulnérabilité aux injections SQL, y compris lorsqu'elle est utilisée par un développeur pressé ou incompétent, contrairement aux requêtes paramétrées. Basée sur l'utilisation d'arbres de syntaxe abstraite, elle permet facilement de construire des requêtes dynamiques et est plus facile à mettre en œuvre qu'un ORM. Nous proposons une bibliothèque Java implémentant nos idées, mais la méthode peut s'appliquer à d'autres langages de programmation et d'autres types de requêtes.

Introduction à QBDI et ses bindings Python

Magazine
Marque
MISC
Numéro
109
Mois de parution
mai 2020
Domaines
Résumé

Le présent article traite de l'outil d'instrumentation dynamique QBDI. C'est un framework de DBI (Dynamic Binary Instrumentation), comparable à d'autres projets publics tels qu’Intel PIN, Valgrind ou encore DynamoRIO. Avant d'entrer dans le vif du sujet, quelques rappels peuvent s'avérer nécessaires…

Introduction au dossier : Python au service de la recherche et l’exploitation de vulnérabilités

Magazine
Marque
MISC
Numéro
109
Mois de parution
mai 2020
Domaines
Résumé

Quand on s’adonne aux plaisirs de la sécurité informatique, il est ce moment où doivent s’aligner les idées et la pratique, c’est-à-dire la production d’une preuve de concept. Et quand il faut écrire du code, le choix du langage s’impose forcément : d’un côté, il y a les contraintes fortes qui nous donnent des possibilités restreintes, et de l’autre il y a nos bas instincts qui prennent la solution qui produira le plus rapidement possible le résultat escompté.