L’obfuscation contournée (Partie 2)

Magazine
Marque
MISC
Numéro
42
Mois de parution
mars 2009
Domaines


Résumé

Dans l’article précédent [1], nous avons vu, d’un point de vue théorique, qu’il était possible de retrouver le code d’origine d’un programme simple protégé par un système d’obfuscation sans jamais analyser ce dernier.En effet, à l’aide d’un émulateur qui nous permet une approche dynamique, nous avions porté une attaque en deux temps :Tout d’abord, nous avions réalisé une analyse différentielle statistique élémentaire sur l’ensemble de la trajectoire [L1] pour dégager des instructions « intéressantes » appelées « program points » [L4].Ensuite, à partir de ces program points obtenus, nous avions réalisé une analyse locale en générant des slices [L5] par backward slicing. En supprimant les instructions de transfert, nous avions obtenu sur le binaire proposé par Craig Smith au recon2008 l’algorithme de vérification du « Serial » en quelques minutes.Dans cet article, nous allons prolonger une partie de ce travail en regardant ce qui se passe sur des protections plus robustes.


1. Introduction

Les deux cibles sur lesquelles je vais m’appuyer ici pour étayer mes propos usent de systèmes de défense d’une qualité que l’on peut qualifier de « professionnelle », c'est-à-dire qu’ils sont d’un niveau suffisant pour être utilisés dans des protections commercialisées.

À la différence du cas d’école proposé par Craig Smith, les deux programmes que nous allons étudier sont partiellement résistants à notre attaque. Plus précisément, ils offrent tous les deux suffisamment de matière pour dérouter la phase 2 de notre offensive : l’analyse locale par slicing. Vous vous demandez déjà, à juste titre, ce qu’il en est de la phase 1 (l’analyse statistique). Nous verrons que ces cibles, aussi résistantes soient-elles, cèdent facilement face à ce genre d’attaque.

2. Slices « complexes »

Dans toutes les attaques menées ici, les slices générés sont toujours des émanations exécutables de la trajectoire étudiée....

Cet article est réservé aux abonnés. Il vous reste 97% à 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é.