[TECH] Rétroingénierie de rogues - Anti-Virtualization

ѠOOT

[TECH] Rétroingénierie de rogues - Anti-Virtualization

par ѠOOT »

Malekal Entertainment présente : Les rogues font de la résistance. Encore une sale journée passée à refaire l'image d'un DVD moitié rayé d'Adibou, je pensais être pénard ce dimanche mais BadBios a pointé le bout de son nez par les ondes pour infecter ma cafetière, mon grille pain,... mais ne rigolez pas vous serez peut-être le prochain... l'ultime combat n'aura pas lieu dans le futur ( cf: Terminator ). Voilà que maintenant c'est Malekal qui s'effondre tel un portique écotaxe en fusion en se demandant pourquoi ce foutu rogue ne fonctionne pas sur des outils automatisés comme ANUBIS ou CAMAS, ni même sur certaines machines virtuelles. J'éjecte temporairement BadBios de ma cervelle et l'envoi mentalement dans un mixeur pour en sortir "Adios BB" autrement dit "Adios BadBios", un complot pour vanter cette saloperie d'UEFI! Mince, c'est trop bête, j'en étais sûr... Moralité, le week-end, n'abusez pas comme moi de la Żubrówka Tagada, vous en seriez tout raplapla, moitié flagada et blablabla... Cette histoire est un complément technique au billet intitulé "Antivirus Security Pro". À vous, Simone!

AVERTISSEMENT: Ce sujet s'adresse aux curieux souhaitant aller plus loin dans l'étude de codes malveillants : si ce n'est pas votre cas, peut être devriez vous dès à présent passer votre chemin. L'ensemble de nos âneries sont réalisées dans un environnement adapté à l'étude des codes malveillants sous VM, ne reproduisez jamais ces manipulations sur votre propre système d'exploitation.

L'échantillon est ici. Ce programme est un PE de 736 904 octets écrit en Visual C++, au premier coups d'œil, je remarque qu'il possède une section avec une VirtualSize tout à fait anormale.

Image

J'inspecte visuellement la section resources ".rsrc"
Si je fais le calcul, le compte n'y est pas du tout.

Image

La taille démesurée a été spécialement confectionnée. Regardez bien l'effet sur ce graphe réalisé à l'aide de Process Explorer, un pic apparait dès le chargement en mémoire du programme. Pour vous donner une idée, le processus "explorer.exe" en occupe 19440 fois moins :o

Image

Il s'agit d'une ruse afin de ralentir et surtout d'éviter les dumps automatisés.
Pour faire simple au maximum, un dump consiste à extraire une ressource dans son contexte.
Dans notre cas, l'extraction dans un fichier nécessiterait d'écrire plus de 350 Mo - hm.. pas cool.

Pour imager un peu la suite, imaginez-vous en train de faire de la géologie. Pour analyser un programme, il faut commencer par gratter un peu les couches pour laisser apparaitre les différentes strates. A l'aide d'un débogueur, je vais exécuter le programme pas-à-pas. Ici, j'ai opté pour OllyDbg mais libre à vous de choisir celui que vous voulez, si vous préférez IDA ça fonctionne tout autant ; les gouts les couleurs,.. moi je préfère les brunes ( désolé angelique... ) Bref, je ne vais pas détailler car il vous manque de nombreuses notions à commencer par savoir vous dépatouiller en langage assembleur ... Je résume, pour ceux qui ont quelques connaissances, je vais avancer jusqu'à repérer le programme compressé par une couche UPX, je m'arrête sur le jeu d'instruction PUSHAD.

J'utilise ensuite le plugin PE Dumper de FKMA. Dans l'ordre, je vais commencer par cocher les 3 options puis cliquer sur "Get EIP as OEP", ensuite je double-clique sur la section ".rdata" pour l'éditer : je coche la case "writable" puis clique sur "Apply". Enfin, je double-clique sur la section ".rsrc" en "Raw Size" je vais mettre 0x4000 et je diminue "Virtual Size" à une taille plus supportable 0x7AA000, je sors avec "Apply" et enfin je clique sur "Dump".

Image

Comme vous pouvez le voir sur l'image, le plugin n'est pas en mesure de corriger la "size of image".
Je pourrais la calculer mais l'outil LordPE de y0da va me le faire automatiquement. Pour se faire, il suffit d'éditer le dump, de cliquer sur "Sections", de fermer avec la croix et hop... la taille sera recalculée (0x86E000), je clique alors sur "Save" et je referme LPE. Mon dump ne fait pas dans les 300Mo mais 800Ko, mission réussie. Je peux, si besoins, décompresser UPX pour par exemple, accéder aux ressources.

Image

Je charge le dump depuis Olly pour continuer depuis la couche UPX pour en examiner les mécanismes de protections, je recherche principalement des astuces anti-emu & anti-vm. En général, il n'y a pas besoins de chercher bien loin. Ici c'était encore plus rapide puisque j'ai remarque la présence de plusieurs ExitProcess.

Image

En utilisant l'API GetFileAttributes le programme va vérifier la présence de "c:\sd.dbg" ou "c:\sd2.dbg" ( quelqu'un dans l'assistance sait à quoi ça correspond ? ). Puis SETUPAPI est utilisé avec SetupDiGetClassDevs, SetupDiEnumDeviceInfo, SetupDiGetDeviceRegistryProperty afin d'énumérer du matériel et extraire des renseignements. Une approche intéressante car contrairement aux techniques habituelles basées généralement sur Device Extensions, ces appels sont plus discrets. Malins sont les Bad Guys.

Si les infos renvoyées par les API contiennent "qemu", "vmware", "vbox" ou "virtual hd" alors le programme va se fermer. Si je leurre la valeur retournée par la base de registre à la lecture du FriendlyName ( ex: HKLM\SYSTEM\ControlSet001\Enum\IDE ), alors le rogue va enfin s'installer et afficher l'interface à l'écran - Malekal sous VMWARE sera content.

Image

Le mystère est résolu. Retrouvez d'autres sujets classés [TECH], le précédent...
Au pays des malvertising, sur les traces de la redirection perdue.
Malekal_morte
Messages : 114127
Inscription : 10 sept. 2005 13:57

Re: [TECH] Rétroingénierie de rogues - Anti-Virtualization

par Malekal_morte »

Merci pour l'analyse PDT_008
Première règle élémentaire de sécurité : on réfléchit puis on clic et pas l'inverse - Les fichiers/programmes c'est comme les bonbons, quand ça vient d'un inconnu, on n'accepte pas !
Comment protéger son PC des virus
Windows 11 : Compatibilité, Configuration minimale requise, télécharger ISO et installer Windows 11

Comment demander de l'aide sur le forum
Partagez malekal.com : n'hésitez pas à partager les articles qui vous plaisent sur la page Facebook du site.

Revenir à « Tech, Tips & Tricks »