Ce petit binaire codé par YoleJedi est un exemple d’obfuscation lourde. L’objectif ici était de nettoyer le programme pour retrouver le code source originel.
Pour la première fois, j’ai vraiment axé mon travail sur la mise en place d’une méthode d’analyse systématique. Pour cela, je me suis inspiré des travaux de Wroblewski sur l’obfuscation. J’ai ainsi utilisé des techniques d’attaque éprouvées comme :
Voici un petit article qui détaille le fonctionnement d'un défi de crypto proposé par Guetta. La solution a été rédigée conjointement par waganono et moi-même. C'est un défi pour débutants qui utilise des algorithmes de cryptographie à profusion ( RSA 64 et RSA 100 - SHA1 - CAST 128 bits - CRC32 - CRC16 - XTEA - BASE64). Malgré cette imposante liste, le défi reste très simple.
J'ai réalisé une petite analyse du keygenme Meloquynthe de YoleJedi et ++meat. Je propose une analyse des fonctions waveOut qu'il utilise de façon intensive. Il est à noter que le code de ce binaire est difficile a analyser puisqu'il a été obfusqué à l'aide d'un moteur maison et qu'il est réparti sur plusieurs threads. Je propose un petit outil "DeObfuscator" qui permet de se débarasser de ce junk. Enfin, je propose une solution avec keygen pour résoudre l'algorithme de protection.
CrkGenMe est un binaire codé en C++ qui utilise 9 threads pour valider le serial entré. Parmis ces threads, 2 sont des WatchDogs qui se chargent de surveiller le bon fonctionnement de tout ce petit monde. L'usage de JunkCode et d'anti-debugs rend l'analyse un peu plus difficile. J'explique ma démarche pour produire un générateur de clés valides (keygen).
Je propose un petit survol d'un binaire codé en VB6. L'épreuve consiste à patcher le binaire afin de faire apparaître la fenêtre de félicitations quelque soit le mot de passe entré. Un petit trick anti-debug bien sympa est utilisé ici et permet au programme de se détacher d'un debuggueur. J'ai étudié les appels aux fonctions qui sous-tendent cette technique et j'ai montré que l'utilisation du VB n'est pas suffisante a priori en matière de protection.
Cette année, le challenge de reversing de securitech nous permet d'aborder les obfuscations de code et nous oblige à coder de petits bruteforcers. J'ai choisi cette fois d'attaquer ce genre de binaire à l'aide d'une technique que j'ai baptisé le "Back-stepping" et qui consiste, tout simplement, à exécuter le binaire à l'envers.
Esoquynthe est un petit keygenme codé en asm. Il utilise un petit moteur de nombres pseudo-aléatoires pour générer 3 bytes à chaque lancement du binaire. Combinés à une TABLE, ces octets sont utilisés pour vérifier le serial. Je propose ici un rapide aperçu des nombres pseudo-aléatoires et une analyse complète du fonctionnement de ce binaire.
Voici donc la solution coomplète du crypto-keygenme Pamplemousse. Il utilise la lib MIRACl pour gérer les Bignums. L'intérêt de ce keygenme réside dans sa richesse cryptographique : SHA-1, DLP, RSA 222. L'équation à résoudre est assez impressionnante également. Bref, il s'agit bien du keygenme fait pour ceux qui aiment l'arithmétique modulaire.
Je vous propose ici un article détaillé qui explique le fonctionnement du crackme de Kaine, le Kaine#5. Au menu : layers, crc, redirections d'imports, tricks (inédits !) anti-debuggers ring3, tricks anti-SI, drivers de protection, machine virtuelle avec pcode obfusqué etc... vous l'aurez compris, il s'agit d'un crackme phénoménal !
Le challenge securitech étant achevé, la FRET vous propose un petit article d'analyse du binaire forwarder.exe issu du challenge 7 (reversing) proposé par Nicolas Brulez.
J'ai rédigé ce petit article à l'occasion d'un défi proposé par Neitsa et Kaine. Il s'agit d'une analyse d'un petit malware. J'explique une approche possible en statique et je vous propose les outils construits pour l'occasion.
Je vous propose ici une étude du reverseme1 proposé par Neitsa pour un défi sur ForumCrack.
Je vous propose ici une étude du packer FSG ainsi qu'une analyse de la compression par dictionnaire.
Je vous propose ici une comparaison du calcul du checksum par Windows et WinHex.
Je vous propose ici une étude des packers tElock 0.98 et celles baptisées private versions.
Je vous propose ici une étude du packer tElock 0.51.
Copyright (C)- BeatriX (2008)