Bidouille Grenouille

Samedi 4 mars 2006

Pour bricoler, bidouiller, trafiquer, en bref grenouiller dans les programmes et les données.
En toute légalité, Of Course mon général...

(d'aprés Hebdogiciel, libre adaptation ;=)

Pourquoi ?
Par curiosité, pour voir comment un soft et fait, et avec quoi.
Pour voir si il ne comporte pas des fonctions non documentées.
Pour traduire un prog en français.
Pour s'assurer qu'un gentil petit freeware ne cache pas un méchant malware...
Parcequ'il n'y a toujours rien à la Trilogie du Samedi.

On va d'abord s'interesser aux .exe Win32.

Avant toute chose, il faut l'analyser un peu:
-Est-il compressé (pour gagner de l'espace disque) ?
-Est-il protégé (justement pour qu'on ne puisse pas l'étudier) ?
-Avec quel langage/compilo à-t-il était écrit ?
-Est-ce qu'il bricole avec le registre, le système de fichier ou le réseau ?

Lorsqu'on aura les réponses, on pourra commencer à rentrer dedans.

Pour détecter un compression/protection et identifier un compilateur, pas de pb:
-StudPE et Langage 2000 sont la pour ça (il y en a d'autres).

Pour étudier l'interaction d'un prog avec le systéme:
-Filemon et Regmon sont sur un bateau...

Si un compression est reconnue, il y a souvent un (de)compresseur qui éxiste,
la encore "Google is my friend".

C'est seulement aprés cette premiére phase qu'on pourra passer à la vitesse supérieure:
-Ripping (images,sons,vidéos).
-Désassemblage.
-Debugging.
-Décompilation (en général partielle).

La, c'est un autre histoire. En plus d'outils logiciels, une bonne dose de d'obstination,
quelques boites de Kriska et albums de XymoX sont indispensables.

Suite au prochain épisode...

 

 

Par Franck Balmer
Ecrire un commentaire - Voir les 0 commentaires - Recommander
Dimanche 16 avril 2006

La détection du compilateur et/ou du compresseur est trés importante lorsque l'on veut analyser un éxécutable.
Voici donc encore deux outils:
Peid et RDG Packer Detector.
Ils complèteront éventuellement les diags de StudPE et Langage2k vus dans l'article "Reverse 1".
Il ne faut pas hésiter à soumettre un .exe à plusieurs analyseurs, méme lorsque le premier résultat renvoyé semble correct.
Certains compilateurs "éxotiques" peuvent étre mal identifiés (signatures proches): Du RapidQ pris pour du Delphi par ex.

Pour décompresser un soft, il y a deux possibilités:
-On utilise le ...décompresseur associé (requéte google <nom du comp> unpacker par ex).
Et là on convertit directement le fichier .exe .
-On travaille sur l'image mémoire de l'éxécutable, sur le process (Danger si on analyse un Malware).
Le but est de réaliser un "Dump" du code aprés décompression par le loader.
C'est la spécialité de ProcDump et de LordPE.
Ce sera la solution lorsque le soft est compressé avec un truc un peu tordu ou inconnu.

Comme d'hab, des screenshots.

Pour Les analyseurs cités plus haut et pour LordPe:

 

Par Franck Balmer
Ecrire un commentaire - Voir les 0 commentaires - Recommander
Samedi 22 avril 2006

Maintenant que l'on sait qu'un .exe est compressé et avec quoi, voyons un peu plus en détails les manips pour le regénérer dans sa forme originale.

Tout d'abord quelques termes employés dans le domaine des outils de modification/camouflage d'éxécutables:
(Un)Compressor
(Un)Crypter
(Un)Cruncher
(Un)scrambler
(Un)protector
(Un)packer

Autre terme parfois rencontré: Dumper. Ex: DilloDumper pour récupérer un .exe modifié avec Armadillo.

Il faut donc disposer d'un bonne reserve de fioles remplies de unpackers.
De temps en temps il est nécessaire de faire plusieurs essais, ça ne marche pas forcément au premier coup.
Il peut y avoir plusieures raisons:
-Version différente du packer.
-Loader de décompression trafiqué.
-Signature mal identifiée: Tout l'intéret d'utiliser plusieurs analyseurs...

Il existe souvent plusieurs outils pour un méme compresseur, de source différentes.
Il faut donc étre patient et jouer avec les éventuelles options, rechercher les autres versions sur le Net,
relire le Livre Des Ombres.
C'est du Lab, plutot sympa...

Voici quelques packers/crypters courants (il y en a des dizaines).
Les fiches signalétiques de Trend-Micro et Symantec, qui montrent ceux les plus utilisés par les programmeurs de virus, sont une bonne source d'informations.
(J'y traine tout le temps, car mes cibles sont le plus souvent des virus,vers et trojans. Sans oublier les pourritures de Spywares qui deviennent de plus en plus blindés et vicieux.)
S'entrainer à les contourner est un plus:

upx: utilisé à toutes les sauces.
fsg: Un autre standard.
Utilisé par certaines variantes des Worms: SdBot,Agobot,Dumaru,Randex...
Extraction par FSG Dumper et UnFSG.
morphine: Il crypte le .exe (morphine d'après polymorphe?)
Utilisé par des souches Agobot et Sdbot.
Contourné par MorphineKiller.
noodle: La solution est NoodleKiller.
neolite: Utilisé par certains Agobot(encore lui) et par le Backdoor OptixPro.
yoda: Dans des variantes Rbot,MyTob et Opaserv
Soluce: deYoda
mew: On le retrouve dans des éxemplaires de SpyBot,WootBot et Rbot.
Certaines versions de Agobot bien sur...
Decompression par UnMew.
PECompact: Utilisé par RxBot.
Parade: UnPEcompact.

Remarque: Un .exe peut avoir été passé à plusieurs moulinettes à la suite.
Par exemple: upx puis yoda.

 

Le Marteau de Thor

les Décrypteurs génériques:
Une méthode assez brutale consiste à ne pas se poser de questions et soumettre l'éxécutable à un prog qui va "de débrouiller tout seul" et tenter de regénérer le binaire original.
Il en éxiste plusieurs:
-GuW32
-APE (?)
-Quick Unpack
-Scu (StartupCode Unpacker)
-Un-pack

 

Procdump intégre également de nombreux Unpackers.

Certains sont en fait une collection de unpackers invoqués depuis une méme interface, alors que d'autres utilisent une méthode plus heuristique et éxécutent le prog et tentent de le stopper puis de le dumper juste aprés le Loader de décompression en guettant l'apparition des premiers opcodes en clair.
Ils recherchent souvent des signatures de compilos...

Sites à consulter pour faire le plein de potions:
http://www.absolutelock.de/construction/releases.html
http://www.openrce.org/reference_library/packer_database
http://ftp.elf.stuba.sk/packages/pub/pc/pack/
http://www.enib.fr/~minos/download.php
http://www.yates2k.net/filepu.html
http://doom.scene-gods.de/unpacker.htm
http://myhome.hanafos.com/~comgod/packing%20&%20unpacking.htm
http://reversing.kulichki.com/files/unpack/unpack.htm
http://www.secretashell.com/codomain/peid/plugins/
http://www.softpedia.com/get/Programming/Packers-Crypters-Protectors/


Magie Noire
Lorsque tous les essais "automatiques" grace aux utilitaires de décompression ont échoué, on se retrouve dans le méme cas qu'avec un loader inconnu: Il faut invoquer Odin et Dumper en Manuel.
On reviendra plus en détail sur ces manips au sujet des debuggers, mais en attendant voici les grandes lignes:
-On charge le prog crypté dans le debugger (Olly,GoVest,SoftIce...)
-On identifie (à force, on les reconnait) la routine de décompression/décryptage.
-On laisse celle-ci s'éxécuter: Elle regénére le binaire original en mémoire.
-Méfiance elle peut flinguer le debugger, ben oui: C'est plus drole...
-On Stoppe avant de donner la main au code décompressé.
-On Dump l'image mémoire ainsi décompressée.
-Le dump obtenu doit étre ensuite modifié(patché) pour constituer un .exe valide: On doit,entre autre, renseigner la nouvelle adresse de début de programme (Entry Point) pour que l'OS sache lancer le prog.

C'est cette derniére étape qui pose souvent le plus de problémes.
Elle n'est par contre pas obligatoire si on veut juste récupérer l'image mémoire du programme pour la
désassembler ou la ripper: extraire les images, les sons, textes et autres.
Le but du reverse n'est pas forcément d'obtenir un nouveau programme éxécutable, mais de l'analyser.

On retrouve ici nos potes ProcDump et LordPE.
De trés bon Tutos éxistent sur le sujet: Recherche Google avec "manual unpacking" "procdump" et Hop!

Aliens
Des scripts/Plugins pour Olly Debugger pour faire du pseudo-manual Dump, Ils automatisent le process précédent.
Je trouve cette solution trés élégante et trop rarement mentionnée.
Voir la page: http://tuts4you.com/ollyscript/

On constate là une analogie entre:
Disassembler(Dead Listing)/Unpacker
et
Debugger(Live Code)/Memory Dumper
Dans le premier cas, on fait du statique (sur disque), dans l'autre du dynamique (en mémoire).

Voila, cet article a été écrit vite fait, en évitant de répéter ce qui est décrit dans d'excellents tutos présents sur le Net.

 

 

 

 

 


Par Franck Balmer
Ecrire un commentaire - Voir les 0 commentaires - Recommander
Dimanche 14 mai 2006

Avant d'étudier le fonctionnement d'un prog "de l'intérieur" grace à un debugger ou un désassembleur, il est utile de récupérer un max d'infos sur son intéraction avec le systéme.

Qu'est-ce qu'il ajoute, qu'est-ce qu'il modifie ?

Contient-il des fonctions cachées ou des Spywares?

Voici, par catégories, les principales ressources systéme pouvant étre surveillées (et les outils associés):

Fichiers

Filemon

http://www.sysinternals.com/Utilities/Filemon.html

Registre

Regmon

http://www.sysinternals.com/Utilities/Regmon.html

Processes et mémoire

Process Explorer et MemSpy

http://www.sysinternals.com/Utilities/ProcessExplorer.html

http://www.softpedia.com/get/System/System-Info/MemSpy.shtml

Appels API Win32

ExeScope et SoftSnoop

http://www.softpedia.com/get/Programming/File-Editors/eXeScope.shtml

http://mitglied.lycos.de/yoda2k/

Modifications apportées durant une installation

InstallSpy

http://www.clubic.com/telecharger-fiche12551-installspy.html

 

Un complément de choix, un sniffer réseau:

http://www.networkchemistry.com/products/packetyzer.php

Histoire de voir si le soft n'envoi pas des données perso sur le Net ou ne télécharge pas autre chose...

Quoique, un bon Firewall le signalerait normalement.

 

Par Franck Balmer
Ecrire un commentaire - Voir les 0 commentaires - Recommander
Dimanche 28 mai 2006
Quelques outils supplémentaires pour analyser le fonctionnement des éxécutables ou trafiquer leurs données:

Avec RegShot, on fait une photo du registre avant et aprés l'installation ou utilisation d'un soft.
Il suffit alors de comparer les deux snapshots pour voir ce qui a bougé.
Simple, Brutal mais efficace:
http://www.clubic.com/telecharger-fiche10880-regshot.html

Api Spy qui permet de surveiller les fonctions de l'API Win32 utilisées par un prog:
http://www.matcode.com/apis32.htm

Enfin pour bricoler dans les archives propriétaires de certains jeux, Dragon Unpacker.
Plutot orienté ripping:
http://www.elberethzone.net/


Voila.
Par Franck Balmer
Ecrire un commentaire - Voir les 0 commentaires - Recommander
Créer un blog sur over-blog.com - Contact - C.G.U. - Rémunération en droits d'auteur - Signaler un abus