Un de mes amis a téléchargé des logiciels malveillants sur Facebook, et je suis curieux de voir ce qu'il fait sans se infecter. Je sais que vous ne pouvez pas vraiment décompiler un fichier .exe, mais puis-je au moins le visualiser dans Assembly ou attacher un débogueur?
Modifier pour dire que ce n'est pas un exécutable .NET, pas d'en-tête CLI.
Avec un débogueur , vous pouvez parcourir le programme Assembly de manière interactive.
Avec un désassembleur , vous pouvez voir le programme Assembly plus en détail.
Avec un décompilateur , vous pouvez reconvertir un programme en code source partiel, en supposant que vous sachiez en quoi il a été écrit. découvrez-le avec des outils gratuits tels que PEiD - si le programme est compressé, vous devrez d'abord le décompresser OR Détecter -it-Easy si vous ne pouvez trouver aucun fichier PEiD. DIE a une communauté de développeurs forte sur github actuellement).
Certains outils connexes qui peuvent être utiles dans tout ce que vous faites sont les éditeurs de ressources tels que ResourceHacker (free) et un bon éditeur hexadécimal tel que Atelier Hex (commercial).
En outre, si vous effectuez une analyse de malware (ou utilisez SICE) , je suggère de tout coeur de tout exécuter à l'intérieur d'une machine virtuelle, à savoir . VMware Workstation . Dans le cas de SICE, cela protégera votre système actuel des BSOD et, dans le cas des logiciels malveillants, de votre système actuel du programme cible. Vous pouvez en savoir plus sur l'analyse des logiciels malveillants avec VMware ici .
Personnellement, je roule avec Olly, WinDbg & W32Dasm et des outils utilitaires plus petits.
En outre, rappelez-vous que le démontage ou même le débogage autres personnes le logiciel est généralement contre le CLUF à tout le moins :)
le post excellent de psoul répond à votre question, je ne vais donc pas reproduire son excellent travail, mais j'estime que cela aiderait à expliquer pourquoi c'est à la fois une question tout à fait valable 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, en commençant par la saisie d’un corps d’instructions textuelles lisibles par l’homme (appelé "code source") et en se terminant par un corps d’instructions lisibles par ordinateur (appelées alternativement "binaire" 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 dans la mémoire, ajouter deux valeurs) est représentée par un code numérique. Si je vous disais que le chiffre 1 signifiait hurler et que le chiffre 2 signifiait rire, puis que je tenais les cartes avec 1 ou 2 sur celles-ci et s'attendant à ce que vous criiez ou pouffiez de rire en conséquence, j'utiliserais essentiellement le même système qu'un ordinateur opérer.
Un fichier binaire est simplement un ensemble de ces codes (généralement appelé "codes op") et des informations ("arguments") sur lesquelles les codes op agissent.
Le langage assembleur est un langage informatique dans lequel chaque commande Word 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 langue d'assemblage et un code d'opération de processeur. C'est pourquoi le codage Assembly pour un processeur x386 est différent du codage Assembly pour un processeur ARM.
Le désassemblage est simplement ceci: un programme lit le binaire (le code machine), remplace les codes-opérations par leurs commandes équivalentes du langage d'assemblage, et affiche le résultat sous forme de fichier texte. Il est important de comprendre cela. si votre ordinateur peut lire le fichier binaire, vous pouvez également le lire également, soit manuellement avec une table de codes opération dans votre main (ick), soit via un désassembleur.
Les désassembleurs ont de nouvelles astuces et tout, 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 souffle finalement de l'air chaud. Vous ne pouvez pas à la fois permettre à l'ordinateur de lire les données du programme et également lui interdire de lire les données du programme.
(Ne vous méprenez pas, des tentatives ont été tentées. Ils fonctionnent aussi bien que DRM sur des fichiers de chansons.)
Cependant, l’approche de désassemblage doit être nuancée. Les noms de variables sont inexistants; une telle chose n'existe pas pour votre CPU. Les appels à la bibliothèque sont déroutants et nécessitent souvent le désassemblage de binaires supplémentaires. Et l’Assemblée 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 tout simplement pas arriver.
Quoi qu'il en soit, il s'agit d'une explication quelque peu passée sous silence, mais j'espère que cela aidera. Tout le monde peut se sentir libre de corriger les inexactitudes de ma part; cela fait longtemps. ;)
Bonnes nouvelles. IDA Pro est actuellement gratuit pour ses anciennes versions: http://www.hex-rays.com/idapro/idadownfreeware.htm
Tout débogueur décent peut le faire. Essayez OllyDbg . (edit: qui a un excellent désassembleur qui décode même les paramètres des appels WinAPI!)
x64dbg
est un bon débogueur à source ouverte qui est activement maintenu.
Bien sûr, jetez un oeil à IDA Pro . Ils offrent une version eval afin que vous puissiez l'essayer.
Ce que vous voulez, c'est un type de logiciel appelé "désassembleur".
Google rapide donne ceci: http://www.geocities.com/~sangcho/disasm.html
Si vous essayez simplement de comprendre ce que fait un malware, il pourrait être beaucoup plus facile de l'exécuter sous quelque chose comme l'outil gratuit Process Monitor , qui signalera à chaque fois qu'il tente d'accéder au système de fichiers, au registre, aux ports , etc...
En outre, utiliser une machine virtuelle telle que la version libre serveur VMWare est très utile pour ce type de travail. Vous pouvez créer une image "propre", puis y revenir chaque fois que vous exécutez le programme malveillant.
Vous obtiendrez peut-être des informations à ce sujet dans Assembly, mais je pense que la meilleure chose à faire est de lancer une machine virtuelle et de voir ce qu’elle fait. Assurez-vous de ne pas avoir de partages ouverts ou quelque chose du genre qui pourrait traverser;)
Boomerang peut également valoir le détour.
Je ne peux pas croire que personne ne dise rien à propos de débogueur d'immunité , pour le moment.
Immunity Debugger est un outil puissant pour écrire des exploits, analyser des logiciels malveillants et procéder à un reverse engineering de fichiers binaires. Il était initialement basé sur le code source Ollydbg 1.0, mais le bogue de résolution des noms a été corrigé. Elle possède une API Python bien prise en charge pour une extensibilité aisée, vous permettant ainsi d’écrire vos scripts python pour vous aider dans l’analyse.
En outre, il y en a un bon que Peter de l'équipe Corelan a écrit et qui s'appelle mona.py , excellent outil d'ailleurs.
Vous pouvez utiliser dotPeek, très bon pour le fichier decompile exe. Ce est gratuit.
Si vous n'avez pas le temps, envoyez le malware à cwsandbox:
http://jon.oberheide.org/blog/2008/01/15/detecting-and-evading-cwsandbox/
HTH
Le suite Explorer peut faire ce que vous voulez.