Est-il possible de «décomstackr» un fichier Windows .exe? Ou du moins voir l’Assemblée?

Un de mes amis a téléchargé des logiciels malveillants de Facebook, et je suis curieux de voir ce qu’il fait sans infecter moi-même. Je sais que vous ne pouvez pas vraiment décomstackr un fichier .exe, mais puis-je au moins le visualiser dans Assembly ou joindre un débogueur?

Edit pour dire que ce n’est pas un exécutable .NET, pas d’en-tête CLI.

Avec un débogueur, vous pouvez parcourir l’assemblage de programme de manière interactive.
Avec un désassembleur , vous pouvez afficher l’assemblage du programme plus en détail.
Avec un décompilateur , vous pouvez reconvertir un programme en code source partiel, en supposant que vous sachiez dans quoi il a été écrit (que vous pouvez trouver avec des outils gratuits tels que PEiD – si le programme est compressé, vous devrez d’abord le décompresser) OU Detect-it-Easy si vous ne pouvez trouver PEiD nulle part, DIE a actuellement une communauté de développeurs solide sur github ).

Débogueurs:

  • OllyDbg , gratuit, un bon débogueur 32 bits, pour lequel vous pouvez trouver de nombreux plugins et scripts créés par l’utilisateur pour le rendre encore plus utile.
  • WinDbg , gratuit, un débogueur tout à fait capable par Microsoft. WinDbg est particulièrement utile pour examiner les composants internes de Windows, car il en sait plus sur les structures de données que les autres débogueurs.
  • SoftICE , SICE aux amis. Commercial et développement se sont arrêtés en 2006. SoftICE est une sorte d’outil hardcore qui s’exécute sous le système d’exploitation (et interrompt tout le système lorsqu’il est appelé). SoftICE est encore utilisé par de nombreux professionnels, même s’il peut être difficile à obtenir et peut ne pas fonctionner sur certains matériels (ou logiciels – à savoir, il ne fonctionnera pas sur les cartes Vista ou NVIDIA gfx).

Désassembleurs:

  • IDA Pro (commercial) – haut de gamme désassembleur / débogueur. Utilisé par la plupart des professionnels, tels que les analystes de logiciels malveillants, etc. Coût cependant assez élevé (il existe une version gratuite , mais elle est assez limitée)
  • W32Dasm (gratuit) – un peu daté mais fait le travail. Je crois que W32Dasm est un abandonware de nos jours, et il existe de nombreux hacks créés par les utilisateurs pour append des fonctionnalités très utiles. Vous devrez regarder autour de vous pour trouver la meilleure version.

Décompilateurs:

  • Visual Basic: VB Decomstackr , commercial, produit un bytecode quelque peu identifiable.
  • Delphi: DeDe , gratuit, produit un code source de bonne qualité.
  • C: HexRays , commercial, un plugin pour IDA Pro de la même société. Produit d’excellents résultats, mais coûte cher, et ne sera vendu qu’à n’importe qui (ou alors, j’entends).
  • .NET (C #): dotPeek , gratuit, décomstack les assemblys .NET 1.0-4.5 en C #. Prise en charge des fichiers .dll, .exe, .zip, .vsix, .nupkg et .winmd.

Certains outils connexes pouvant vous être utiles sont des éditeurs de ressources tels que ResourceHacker (gratuit) et un bon éditeur hexadécimal tel que Hex Workshop (commercial).

De plus, si vous effectuez une parsing des logiciels malveillants (ou utilisez SICE) , je suggère sans réserve de tout exécuter dans une machine virtuelle, à savoir VMware Workstation . Dans le cas de SICE, il protégera votre système actuel des BSOD et, dans le cas de logiciels malveillants, il protégera votre système réel du programme cible. Vous pouvez lire sur l’parsing des logiciels malveillants avec VMware ici .

Personnellement, je roule avec Olly, WinDbg & W32Dasm et quelques outils utilitaires plus petits.

Aussi, rappelez-vous que le déassembly ou même le débogage des logiciels d’ autres personnes sont généralement contre le CLUF à tout le moins 🙂

L’excellent post de psoul répond à votre question, alors je ne reproduirai pas son bon travail, mais je pense que cela aiderait à expliquer pourquoi cette question est à la fois parfaitement valide mais aussi terriblement stupide. Après tout, c’est un endroit pour apprendre, non?

Les programmes informatiques modernes sont produits par une série de conversions, commençant par l’entrée d’un corps d’instructions lisibles par l’homme (appelé “code source”) et se terminant par un corps d’instructions lisibles par ordinateur (appelé alternativement “binary” ou “machine”). code”).

La façon dont un ordinateur exécute un ensemble d’instructions de code machine est finalement très simple. Chaque action qu’un processeur peut effectuer (par exemple, lire de la mémoire, append deux valeurs) est représentée par un code numérique. Si je vous disais que le chiffre 1 signifiait crier et que le chiffre 2 signifiait rire, et que je leur donnais des cartes avec 1 ou 2 en espérant que vous criez ou pouffez en conséquence, j’utiliserais essentiellement le même système qu’un ordinateur utilise. opérer.

Un fichier binary est juste un ensemble de ces codes (généralement appelés “codes d’opération”) et les informations (“arguments”) sur lesquelles les codes d’opération agissent.

Maintenant, le langage d’assemblage est un langage informatique où chaque mot de commande dans la langue représente exactement un code d’opération sur le processeur. Il existe une traduction directe 1: 1 entre une commande de langage d’assemblage et un code d’opération de processeur. C’est pourquoi l’assemblage de codage d’un processeur x386 est différent de celui d’un processeur ARM.

Le désassemblage est tout simplement ce qui suit: un programme lit le binary (le code machine), remplace les codes d’opération par leurs commandes de langage d’assemblage équivalentes et affiche le résultat sous forme de fichier texte. Il est important de comprendre cela; Si votre ordinateur peut lire le fichier binary, vous pouvez également lire le fichier binary, manuellement avec une table de codes d’opération dans votre main (ick) ou via un désassembleur.

Les désassembleurs ont quelques nouvelles astuces, mais il est important de comprendre qu’un désassembleur est en fin de compte un mécanisme de recherche et de remplacement. C’est pourquoi tout CLUF qui l’interdit finit par souffler de l’air chaud. Vous ne pouvez pas immédiatement permettre à l’ordinateur de lire les données du programme et d’interdire à l’ordinateur de lire les données du programme.

(Ne vous méprenez pas, il y a eu des tentatives pour le faire. Ils fonctionnent aussi bien que le DRM sur les fichiers de chansons.)

Cependant, il existe des réserves à l’approche du déassembly. Les noms de variables sont inexistants. une telle chose n’existe pas pour votre CPU. Les appels de bibliothèque sont déroutants comme l’enfer et nécessitent souvent le déassembly d’autres binarys. Et l’assemblage est difficile à lire dans les meilleures conditions.

La plupart des programmeurs professionnels ne peuvent pas s’asseoir et lire le langage d’assemblage sans avoir mal à la tête. Pour un amateur, ça ne va pas se passer.

Quoi qu’il en soit, c’est une explication quelque peu dépassée, mais j’espère que cela vous aidera. Tout le monde peut se sentir libre de corriger toute erreur de ma part; cela fait longtemps. 😉

Tout débogueur décent peut le faire. Essayez OllyDbg . (edit: qui a un excellent désassembleur qui décode même les parameters en appels WinAPI!)

Bonnes nouvelles. IDA Pro est actuellement gratuit pour ses anciennes versions: http://www.hex-rays.com/idapro/idadownfreeware.htm

x64dbg est un bon débogueur open source qui est activement maintenu.

Bien sûr, regardez IDA Pro . Ils proposent une version d’évaluation pour que vous puissiez l’essayer.

Si vous essayez juste de comprendre ce qu’est un malware, il peut être beaucoup plus facile de l’exécuter sous un outil comme Process Monitor gratuit, qui vous signalera chaque fois qu’il essaiera d’accéder au système de fichiers, au registre, aux ports, etc.

De plus, l’utilisation d’une machine virtuelle comme le serveur VMWare gratuit est très utile pour ce type de travail. Vous pouvez créer une image “propre”, puis revenir à cela chaque fois que vous exécutez le logiciel malveillant.

Ce que vous voulez, c’est un type de logiciel appelé “Désassembleur”.

Google donne rapidement ceci: http://www.geocities.com/~sangcho/disasm.html

Vous pouvez obtenir des informations en les visualisant dans l’assemblage, mais je pense que le plus simple est de lancer une machine virtuelle et de voir ce qu’elle fait. Assurez-vous de ne pas avoir d’actions partagées ou quelque chose comme ça, mais qu’il peut passer par là;)

Boomerang peut aussi être intéressant.

Si vous souhaitez exécuter le programme pour voir ce qu’il fait sans infecter votre ordinateur, utilisez-le avec une machine virtuelle telle que VMWare ou Microsoft VPC, ou un programme capable de faire fonctionner le programme comme SandboxIE.

Si vous n’avez pas le temps, soumettez le logiciel malveillant à cwsandbox:

http://www.cwsandbox.org/

http://jon.oberheide.org/blog/2008/01/15/detecting-and-evading-cwsandbox/

HTH

Je ne peux pas croire que personne n’a encore rien dit à propos d’ Immunity Debugger .

Immunity Debugger est un outil puissant pour écrire des exploits, parsingr des logiciels malveillants et désosser des fichiers binarys. Il était initialement basé sur le code source d’Ollydbg 1.0, mais avec le bug de resoution de noms corrigé. Il dispose d’une API Python bien supscope pour une extensibilité facile, vous pouvez donc écrire vos scripts python pour vous aider dans l’parsing.

Aussi, il y a un bon que Peter de l’équipe de Corelan a écrit appelé mona.py , excellent outil btw.

Vous pouvez utiliser dotPeek, très bon pour décomposer le fichier exe. Ce est gratuit.

https://www.jetbrains.com/decomstackr/

La suite d’explorateurs peut faire ce que vous voulez.