Date de publication : vendredi 30 juin 2006

Auteur : BeatriX

7. Le mot de la fin

Je remercie bien évidemment Skirby pour nous avoir proposé ce joli défi plein d'idées intéressantes. Il me semble que les protections de binaires multi-threads sont relativement solides pour peu que chaque thread le soit ( obfuscation, anti-debugs, cryptage, auto-patching... ) et que le nombre de thread soit suffisamment important ( plusieurs dizaines ? ).

Que devons-nous retenir de ce défi ?

L'usage du principe du WatchDog avec presque 10 threads est vraiment très intéressant. L'étude statique est inévitable ici et le junkcode implémenté nous rend la vie bien difficile pour la compréhension de la génération des nombres N1,N2,N3,S1,S2,S3 (il mériterait d'ailleurs d'être développé davantage). Il reste néanmoins contournable dans un temps raisonnable si on y regarde de plus près. Les anti-debugs sont astucieux mais sans aucun doute pas assez nombreux. Ce défi dispose également d'une faiblesse (une comparaison mal placée) qui nous amène à la compréhension globale du fonctionnement du binaire assez rapidement. Toutes les comparaisons "vitales" sont effectuées dans le même thread ce qui nous rend la vie plus belle :) Pour finir, le binaire ne résiste pas à une attaque basique par bruteforce. Je trouve que ce travail est un bel exemple d'études de failles et de protections en tout genre (watchdog, anti-debugs, anti-tracing, junkcode)

Pour prolonger ce travail, on peut regarder du côté de la théorie des protections par le schéma Petri net qui utilise en partie les techniques utilisées ici. Il exploite pleinement le potentiel du multi-threading en faisant inter-agir les threads de façon importante.

Salutations distinguées à tous les joyeux drilles de la FRET, de LABO et de FC.

BeatriX - vendredi 30 juin 2006 - 14h21

Copyright (C)- FRET (2006)

Valid XHTML 1.0 Strict

Valid CSS!