Beruflich Dokumente
Kultur Dokumente
la fin du mois de septembre 2004, sur la directement l'analyse du code, ou bien
liste de discussion pl.comp.programming au cas o le fi chier est compress nous
quelqu'un a post l'article intitul CRACK devons d'abord dcompresser le fi chier.
UNIVERSEL POUR MKS-VIR !!!! (MKS-VIR est L'analyse du code des fi chiers compresss
un programme antivirus polonais trs connu n'a aucun sens.
note du trad.). Ce message contenait le lien La seconde tape, plus importante,
vers l'archive crack.zip avec un fichier ex- consiste analyser le programme suspect
cutable. D'aprs les opinions des utilisateurs, et, ventuellement, dcouvrir dans les ressour-
ce programme n'tait pas un crack. De plus, ces en apparence innocentes de l'application,
il contenait probablement du code suspect. Le du code cach. Cela permettra de savoir com-
lien vers ce programme apparaissait aussi dans ment le programme fonctionne et quels sont les
les articles sur d'autres listes de discussion rsultats de son excution. Nous allons justifier
(mais il passait pour password cracker de la l'utilit de cette analyse. Ce soi-disant crack
messagerie instantane Gadu-Gadu). C'tait si n'appartient sans doute pas aux programmes
intressant que nous avons dcid d'analyser le inoffensifs. Si vous tombez un jour sur un
fichier suspect. fichier suspect, nous vous conseillons d'effec-
Cette analyse se compose de deux ta- tuer ce type d'analyse.
pes. D'abord, il faut analyser la structure
Dfense
Identification rapide
L'archive crack.zip tlcharge ne
contenait qu'un fichier : patch.exe qui
faisait peu prs 200 Ko. Attention !
Nous vous conseillons vivement de
changer l'extension de ce fichier
avant de commencer l'analyse, par
exemple en patch.bin. Cela nous
protgera contre un lancement in- Figure 2. diteur des ressources eXeScope
volontaire d'un programme inconnu
les consquences d'une telle
erreur pouvant tre trs graves.
Dans la premire tape de l'ana-
lyse, nous devons comprendre la
structure du fichier suspect. L'identi-
ficateur de fichiers excutables PEiD
se prte parfaitement nos besoins.
La base qu'il intgre permet de dfi -
nir le langage utilis pour la cration
de l'application et d'identifier les
types de compresseurs de fichiers
excutables les plus connus. Nous
pouvons aussi utiliser un identifica-
teur un peu plus ancien FileInfo, mais
celui-ci n'est pas si bien dvelopp,
c'est pourquoi le rsultat obtenu peut
tre moins prcis.
Quelles informations avons-nous
obtenues l'aide de PEiD ? Par sa
structure, le fichier patch.exe est un Figure 3. Procdure WinMain() dans le dsassembleur IDA
; de l'instruction
.00401103: 90
nop Listing 10. Lancement par le programme principal d'un thread
; octet de l'instruction supplmentaire
; obfusqu "mov"
.00401104: FFD0 ; au dbut de l'excution de ce code, dans le registre eax se trouve
; l'adresse du code, le registre edx contient l'adresse de la structure
call eax
; assurant l'accs la fonction WinApi (interface)
; instruction cache
code_cache:
; eax + 16 = le dbut du code qui sera lanc dans le thread
Revenons au code appel par l'ins- lea ecx, code excut dans le thread[eax]
truction call eax. Il faudrait savoir o push eax
push esp
renvoie l'adresse stocke dans le re-
push 0
gistre eax. Au-dessus de l'instruction push edx ; paramtre pour la procdure du thread
call eax se trouve l'instruction qui ; adresse de la structure interface
dans le registre eax saisit la valeur de push ecx ; adresse de la procdure lancer dans le thread
la variable lpPointeurDuCode (dans push 0
push 0
IDA, le nom de la variable peut tre
call [edx+interface.CreateThread] ; lancer le code dans le thread
chang pour que le code soit plus loc_10:
comprhensible il suffit de placer pop ecx
le pointeur sur le nom, appuyer sur la sub dword ptr [esp], -2
touche N et entrer un nouveau nom). retn
Sur le rseau
Code cach http://www.datarescue.com dsassembleur IDA Demo for PE,
Il est temps d'analyser le code http://webhost.kemtel.ru/~sen/ diteur hexadcimal Hiew, Hiew
cach extrait. Le tout (sans com- http://peid.has.it/ identificateur de fichiers PEiD,
mentaires) n'occupe qu'un kilooctet http://lakoma.tu-cottbus.de/~herinmi/REDRAGON.HTM identificateur FileInfo,
et vous le trouverez sur le CD joint http://tinyurl.com/44ej3 diteur de ressources eXeScope,
au magazine Hakin9 Live. Dans cet http://home.t-online.de/home/Ollydbg dbogueur gratuit pour OllyDbg,
article, nous prsentons le principe http://protools.cjb.net kit d'outils ncessaires l'analyse des fichiers binaires.
gnral du fonctionnement du code
Listing 11).
Indice scanner des disques
L'appel de la procdure scan-
ner _ disques est le premier indice
qui suggre que l'objectif du code
cach est la destruction pour-
quoi alors un prtendu crack aurait Figure 5. Schma de la procdure de scannage des disques
scann tous les lecteurs de l'ordi-
nateur ? Le scannage commence recherche seulement les partitions FindNextFile() et SetCurrentDirec-
par le disque dsign par la lettre standard des disques durs et n- tory(), scanne tout le contenu de
Y:\ et se dirige vers le dbut, le glige les lecteurs de CD-ROM ou la partition la recherche de tous
plus important pour la plupart des les disques rseau. les types de fi chiers. Nous pouvons
utilisateurs le disque C : \ . Pour Si une partition correcte est le constater d'aprs le masque *
dfinir le type du lecteur, la fonction dtecte, le scannage rcursif appliqu la procdure FindFirst-
GetDriveTypeA() est utilise. Cette de tous ses rpertoires est lanc File().
fonction, aprs la saisie de la lettre (la procdure supprimer _ fichiers
de la partition retourne son type. cf. le Listing 13). En voil en- Preuve : la mise blanc
Le code de la procdure se trouve core une preuve que nos soupons des fichiers
dans le Listing 12. Prtez votre taient justes : le scanner, l'aide Jusqu'alors, nous n'avons pu que
attention au fait que la procdure des fonctions FindFirtsFile(), souponner que le code cach dans
P U B L I C I T
WinMain()
GetProcAddress()
DialogBoxParamA()
WaitForSingleObject()
Dfense