Annonce

Réduire
Aucune annonce.

Analyse de fichier .NET généré par Builder/Stub

Réduire
X
 
  • Filtre
  • Heure
  • Afficher
Tout nettoyer
nouveaux messages

  • Tutoriel Analyse de fichier .NET généré par Builder/Stub

    Salut à tous !

    Après des mois d’absences me revoilà et pas les mains vides !
    Bon commençons ...

    Le but de ce tutoriel est de comprendre une façon de générer un malware, analyser ce malware et voir un peu comment analyser un exécutable .NET.


    Tout d'abord qu'est ce que le .NET ?!
    Pour faire simple le .NET est un framework "windowsien" qui permet des interactions simplifié avec les API Win32 : par exemple une interaction qui prendrait 100 lignes de code en C par exemple n'en prendrais que 10 en .NET (je simplifie).
    Le .NET est principalement utilisé par deux langages : C# et Visual Basic.
    Se sont des langages "simples" (pas de pointeurs !) et largement utilisés !

    OK je vois ce qu'est le .NET, mais un Builder et un Stub quesaco ?!
    Un Stub est un fichier qui "s'auto lis" et qui execute du code en fonction de ce qu'il a lus ... quoi vous n'avez rien compris ?
    On va rendre ca plus claire : le Stub est enfaite le malware + des données qui on été écrite à la suite par le Builder.
    Schématiquement ca donne ca : [CODE MALVEILLANT]+[DONNEES].
    Les données, écrites à la suite du code malveillant par le builder, seront utilisé par ce même code.
    Prenons par exemple Emissary Keylogger : un keylogger (merci captain obvious) qui enverra tout les frappes claviers vers une adresse email.

    Le Builder c'est ca :

    cour1.jpg

    Le code hexadecimal du server.exe généré :

    cour2.jpg


    Bon aller à l'abordage !
    Notre scénario est le suivant un fichier suspect : "server.exe" est sur notre machine on veut savoir ce qu'il fait et s'il est dangereux.

    Bon pour commencer on va ouvrir notre nouveau meilleur amis : notre éditeur hexadecimal (ici Frhed)
    Et analysons les premières lignes :

    cour3.PNG

    Bon au vue de ces premières lignes je peux vous dire que c'est un fichier utilisant le framework .NET v2.0 (courant chez les malwares : question de compatibilités)
    Pour l'instant rien de bien méchant !
    On va jeter un coup d’œil du des fonctions etc et la le .NET nous facilite la vie on a juste a faire une recherche : "<Module>" et magie :

    cour4.jpg

    On a plein d'info séparer par un 0x00 donc avec un petit script de mon cru on va y voir plus claire :

    cour5.jpg

    Déjà ca commence à ce gâter : KeyboardHook, KBDLLHOOKSTRUCT, KeyboardProcDelegate, KeyDownEventHandler, KeyUpEventHandler ... ces appelles de fonctions ne me dit rien vaille.
    (ces fonctions font un HOOK sur le clavier c'est à dire qui sont capable d'afficher les frappes clavier pour faire simple).
    Bon voyons voir un peu plus loin : TripleDESCryptoServiceProvider, cTripleDES, Encrypt, Decrypt ... bon des fonctions de cryptographie, pourquoi pas.
    Ensuite on a des textbox, des timers etc rien d'alarmant.
    A tient une jolie fonction qui porte bien son nom : DownloadUrl ...
    Et oh que vois-je : AntiKeyscrambler, AntiWireshark, AntiAnubis, AntiMalwarebytes, AntiKaspersky, AntiOllydbg, AntiOutpost, AntiNorman, AntiBitDefender, AntiNOD32
    Et enfin biensure : get_ExecutablePath, FileSystem, OpenMode, OpenAccess, OpenShare, FileOpen, LOF, Space, FileGet, FileClose (Signature potentiel d'un STUB)
    Et pour finir : AssemblyTrademarkAttribute, AssemblyCopyrightAttribute, AssemblyProductAttribue, AssemblyCompanyAttribute, AssemblyDescriptionAttribute, AssemblyTitleAttribute
    (le fichier change son Assembly ici il prend celui de uTorrent pour tenter de biaiser les antivirus)

    Bon avec toutes ces infos je peux dire de manière sure que ce "server.exe" est un Keylogger capable en plus de fonction de keylogger de télécharger des fichiers, de contourner des antivirus, de changer son Assembly et de crypter/decrypter des ... choses ^^ et changer son assembly.
    Mais on ne peut toujours pas dire s'il a été généré ou non ... bon sait qu'il peut lire un fichier (dont lui même) mais ca s’arrête la !
    Si on jette un coup d’œil à la fin du fichier on observe plein de 0x00 et oh tient des données tel qu'une adresse email, un mot de passe crypté etc
    Je peut donc affirmer que ce malware à été généré par un combo Builder/Stub !

    Nota Bene : il y a d'autre technique pour savoir si le fichier a été généré comme par exemple regarde le OriginalFileName du fichier si c'est Stub.exe ... je vous laisse deviner

    Bon je crois avoir tout dis, du moins l'essentiel
    Si vous avez des questions ou si vous voulez des précisions n'hésitez pas !

    ++

  • #2
    Salut

    Merci beaucoup pour tes tutos, je ne m’intéressais pas du tout au malware reverse, et tu m'as donné envie de m'y mettre De plus, je considérerais ça comme fastidieux et complexe, et je trouve que tu as une très bonne manière d'approcher la chose...

    Merci
    @bioshock
    Twitter: @ContactBioshock
    Mail: [email protected]

    Commentaire


    • #3
      Merci à toi Bioshock ca fait plaisir à lire !

      Commentaire


      • #4
        Super tuto.
        Merci beaucoup.

        Par contre, je ne suis pas certain de te suivre pour le builder et le stub.
        Le builder est le compilateur du programme et le stub est l'exécutable (avec la zone texte et la zone mémoire) ou je me trompe ?

        Fais tout de même attention à bien te relire. Certaines fautes font mal aux yeux.
        Puis c'est bête de gâcher une telle qualité de tuto aves des erreurs aussi grossières.

        Commentaire


        • #5
          Salut Anonyme77 merci pour ton soutien ... oui il y a des fautes j'avais pas fais gaffe c'est un peu la honte
          Promis au prochain tuto je me relis 20 fois (et surtout je dors plus de 3 heures avant de l'écrire )
          Pour ce qui est du Builder/Stub c'est pas tout à fais ca il n'y pas de compilation à proprement parlé ... voila comment fonctionne :

          Le BUILDER :

          1) Il copie le STUB et ouvre la copie en mode écriture
          2) Il se "place" à la fin du "nouveau" STUB (EOF)
          3) Il fait ce qu'on appelle un "PADDING" (suite de 0x00 ou de caractères)
          4) Il écrit (à la suite du PADDING) les données (adresse email ou ip d'un FTP etc)
          5) Il ferme le "nouveau" STUB

          Le STUB (et donc le "nouveau" STUB) :

          1) Il s'ouvre en mode lecture et s'auto-lit
          2) Grâce au PADDING il fait la différence entre son propre code et les données écrient par le BUILDER
          3) Il interagie avec les données écrites par le BUILDER

          Le code source s'organiserait comme cela : [FONCTION D'AUTO-LECTURE]+[ENREGISTREMENT DANS UNE/DES VARIABLES DES DONNÉES COLLECTÉES]+[CODE MALVEILLANT QUI INTERAGIS AVEC LES DONNÉES COLLECTÉES]

          Si tu ne comprend toujours pas envoi moi ton Skype par MP je t'expliquerai à l'oral avec des exemples concrets et précis

          Commentaire

          Chargement...
          X