Question:
Comment puis-je analyser un binaire potentiellement dangereux en toute sécurité?
Archenoth
2013-03-20 02:27:57 UTC
view on stackexchange narkive permalink

J'ai récemment réussi à isoler et à archiver quelques fichiers qui ont réussi à faire des ravages sur l'un des systèmes de mon client. Je me demandais donc quels logiciels et quelles techniques constituaient le meilleur bac à sable pour isoler le code et y creuser pour découvrir comment cela fonctionne.

Habituellement, jusqu'à présent, je lancerais simplement un nouveau VMWare ou une instance de QEMU et creuser, mais je suis bien conscient que certains logiciels malveillants bien écrits peuvent sortir d'une machine virtuelle assez facilement. Je recherche donc des techniques (comme utiliser une VM avec une architecture CPU émulée différente par exemple.) Et des logiciels (Peut-être une suite sandbox du genre?) Pour atténuer la possibilité que le code sur lequel je travaille "éclate".

Quelles techniques recommandez-vous? Quel logiciel recommandez-vous?

[Est-il sûr d'installer des logiciels malveillants sur une machine virtuelle] (http://security.stackexchange.com/questions/12546/is-it-safe-to-install-malware-in-a-vm) fournit quelques informations générales.
Aussi [Une machine virtuelle empêche-t-elle les logiciels malveillants de nuire?] (Http://security.stackexchange.com/questions/9011/does-a-virtual-machine-stop-malware-from-doing-harm)
Sachez que les questions du formulaire "Quel X utilisez-vous tous?" serait considérée comme une question de sondage, une sorte de question mal considérée sur Stack Exchange comme plus adaptée au format du forum qu'à notre format Q&R.
Noté ... Aussi quelqu'un a suggéré une modification pour y remédier, alors je l'ai acceptée.
Quatre réponses:
#1
+64
Igor Skochinsky
2013-03-20 05:41:03 UTC
view on stackexchange narkive permalink

Le titre mentionne "bac à sable" mais VMWare ou QEMU ne s'appelle généralement pas ainsi, donc la question semble être plus sur "comment l'analyser sans risque d'infection?"

Il y en a trois grandes catégories d'outils et d'approches que vous pourriez adopter ici.

1. Sandbox en mode utilisateur

Un sandbox en mode utilisateur exécute essentiellement l'échantillon étudié mais intercepte toutes ou du moins les API les plus critiques qui accèdent au système d'exploitation hôte, les neutralise et modifie les résultats pour tromper le logiciel. il fonctionne tout seul. L'un des outils les plus populaires semble être Sandboxie, mais il en existe d'autres comme PyBox. Habituellement, le logiciel malveillant peut détecter assez facilement et il y a toujours un risque qu'une API non émulée laisse le code se déchaîner.

2. Machines virtuelles et émulateurs

Ceux-ci vont un peu plus loin et essaient d'émuler non seulement les API mais aussi l'exécution du code réel. De plus, vous devez généralement exécuter un système d'exploitation complet dans l'émulateur et vous ne pouvez pas utiliser le système d'exploitation hôte tel quel (cela peut être un avantage ou un inconvénient en fonction de vos objectifs). Ceux-ci peuvent être subdivisés en trois catégories par approche utilisée pour l'émulation:

a) virtualisation

Il s'agit notamment de VMWare, VirtualBox et VirtualPC. Ils utilisent les fonctionnalités de virtualisation des processeurs récents pour exécuter la plupart du code de manière native et émuler uniquement les accès mémoire ou matériels. Cela les rend rapides mais en théorie, cela peut conduire à un code qui s'échappe de la VM en cas de bogues d'implémentation.

b) traduction dynamique

Cette approche est utilisée par QEMU. Il traduit chaque bloc de base en une séquence d'instructions du processeur natif et l'exécute. Cette approche lui permet d'émuler raisonnablement rapidement de nombreuses architectures différentes, mais le timing peut différer considérablement de l'original. Je ne pense pas avoir entendu parler d'une VM échappant à des bogues, mais il est possible de le détecter.

c) émulation complète

Ceci est utilisé par Bochs. Il émule complètement chaque instruction séparée une par une, au fur et à mesure de leur exécution. Cela le rend un peu plus lent que les autres solutions mais lui permet d'obtenir une émulation presque parfaite des détails les plus bas. C'est aussi probablement le plus sûr en ce qui concerne les bogues échappant aux VM. Il y avait quelques bogues d'implémentation qui pourraient être utilisés pour le détecter mais je pense que la plupart d'entre eux ont été corrigés.

3. Analyse statique

La meilleure façon d'éviter la rupture est de ne pas exécuter du tout le code! En outre, l'analyse statique vous permet de regarder le code complet du binaire et de voir tout cela, même les chemins de code qui ne sont pas pris en l'exécutant et vous évitez toutes les vérifications et détections d'exécution.

Malheureusement, l'analyse statique peut être entravée par l'empaquetage ou l'obscurcissement utilisé dans le malware. Il est donc souvent nécessaire de combiner plusieurs approches. Je ne suis pas un analyste professionnel, mais je fais quelques analyses de malwares. Mon flux de travail se déroule généralement comme suit:

  1. Ouvrir un échantillon dans IDA.
  2. s'il semble compressé ou chiffré, utilisez le débogueur Bochs pour émuler son exécution et laissez-le se décompresser.
  3. Quand c'est fini (généralement c'est évident), je prends un instantané de la mémoire, arrête le débogage et continue l'analyse de manière statique.
  4. Si le code décompressé contient un autre fichier intégré (situation assez courante) , enregistrez-le dans un fichier séparé et passez à l'étape 1
#2
+22
cb88
2013-03-20 03:26:49 UTC
view on stackexchange narkive permalink

Bochs si vous n'avez pas besoin de vitesse mais de beaucoup de flexibilité. Vous pouvez utiliser Bochs avec GDB.

Qemu si vous avez besoin de plus de vitesse et de moins de flexibilité (il effectue une traduction dynamique donc vous gagnez un peu de vitesse mais perdez la séquence exacte des instructions) peut-être un peu moins sûr que les bochs. Son similaire à Vmware et virtualbox en dérive en fait. Vous pouvez utiliser GDB avec Qemu.

Xen, un de mes amis, est assez confiant dans l'hyperviseur Xen tant que vous le configurez correctement, ce qui signifie utiliser un bouclage série pour la configuration et autre configuration complexe. Cependant, ce serait très rapide mais toujours isolé et, d'après ce que j'ai compris, cela garantirait votre sécurité tant que vous contrôleriez la connexion série. Encore Bochs est probablement le plus sûr.

De plus, même s'il ne s'agit pas d'une solution d'émulateur / de virtualisation, les débogueurs comme SoftICE peuvent être utiles même si de nombreux logiciels le détectent et le contournent maintenant.

#3
+15
ekse
2013-03-20 05:59:31 UTC
view on stackexchange narkive permalink

Gilles a fourni de très bons liens et je veux discuter un peu plus de l'utilisation des machines virtuelles pour l'analyse des malwares. Bien qu'une cassure de VM soit certainement une possibilité, je n'ai pas encore rencontré un tel cas ni même entendu parler d'un tel cas et je suppose que cela ferait du buzz si quelqu'un en trouvait un. Pour plus de sécurité, exécutez simplement votre logiciel VM sur un ordinateur et un réseau isolés, comme vous le feriez avec un débogueur.

Je vous encourage à essayer Cuckoo Sandbox. Il automatise le processus d'exécution du malware dans une VM (VMware, VirtualBox & KVM sont pris en charge) et extrait des données telles que des fichiers modifiés, des vidages de mémoire ou du trafic réseau. Il prend même en charge le traçage d'API via l'injection de DLL, ce qui est assez soigné.

#4
+7
Denis Laskov
2013-04-01 19:37:29 UTC
view on stackexchange narkive permalink

Littéralement, pour un premier aperçu des logiciels malveillants, vous n'aurez besoin d'aucun élément spécial installé localement. Vous pouvez utiliser suffisamment de sandbox en ligne:

  • virustotal.com ont leur bac à sable implémenté en utilisant Cuckoo Sandbox. Lorsque vous appliquez un nouvel échantillon, il s'exécute automatiquement dans le cadre de l'analyse. Après environ 10-15 minutes, vous pouvez voir le résultat dans "Informations sur le comportement"
  • anubis.iseclab.org est un autre endroit où vous pouvez soumettre un binaire pour voir son comportement avant de l'exécuter localement . Ici, vous avez le rapport et le fichier pcap de l'activité du réseau, le cas échéant.

En conséquence - vous pouvez avoir une idée de base de ce que fait un binaire et comment l'analyser.Mais - veuillez noter, ce malware sophistiqué vérifie dans son environnement les traces de sandbox et la présence de VM. Il y a donc une chance que le "binaire inoffensif" apparemment se révèle être un malware sophistiqué dans des conditions réelles.



Ce Q&R a été automatiquement traduit de la langue anglaise.Le contenu original est disponible sur stackexchange, que nous remercions pour la licence cc by-sa 3.0 sous laquelle il est distribué.
Loading...