Rapport d'analyse pour le BugTraq#1 de ForumCrack
par Kharneth
Sommaire
  1. Mise en garde.
  2. Prérequis
  3. Questions
    1. Identifiez les protections.
    2. Identifiez les procédures.
    3. Identifiez les systèmes vulnérables.
    4. Suggérez des méthodes de détection.
    5. Suggérez des méthodes de guérison.
  4. Analyse du loader

      Vous trouverez la base LoaderVirus.idb du listing complet, décrypté et commenté dans le dossier IDB.

    1. Identification de la cible.
    2. Chargement dans IDA.
    3. Suppression du Delta.
    4. Layers de cryptage.
    5. Vérification de la date.
    6. Décompression du code.
    7. Résolution des imports.
    8. Saut sur l'OEP.
    9. Programmation d'un décompresseur.
  5. Analyse du virus

      Vous trouverez la base Unpacked_Virus.idb du listing complet, décompressé et commenté dans le dossier IDB.

    1. GetApiFromCRC.
    2. Procédure à l'EntryPoint.
    3. Fonction principale du Thread.
    4. Recherche des fichiers à infecter.
    5. Infection du fichier.
  6. Conclusion

  1. Mise en garde

    Neitsa a écrit :

    Warning Les codes, fichiers, binaires founis pour le BugTrack sont réels et malicieux. Ces fichiers ont été créés dans des conditions réelles et peuvent causer des dommages.

    Pour éviter de vous faire trop peur :
    1. Si vous double cliquez sur l'exe vous ne risquez absolument rien.
    2. Si vous faites fonctionner l'exe dans un debugger vous ne risquer rien non plus.
    3. si vous patchez l'exe... là on ne répond plus de rien.
  2. Prérequis

    Memento 5 de ShmeitCorp Articles d'initiation à IDA par Netix ainsi qu'une présentation du PE par Anubis.

    MISC 14 Un dossier complet sur le Reverse avec un excellent article de Nicolas Brulez sur IDA.

    Le format PE en français par yarocco.

    Emulation de GetProcAddress par Neitsa.

    Windows NT/2000 Native API Reference par Gary Nebbett.

    IDA Freeware 4.3 Datarescue.

    Lord PE par y0da.

  3. Questions
    1. Identifiez et expliquez les protections mises en place pour protéger le binaire contre l'analyse et le reverse engineering.

      D'abord le virus en lui-même ne possède pas de table d'import. Les adresses des apis sont déterminées juste avant leur utilisation à l'aide d'un hash de 32 bits. De plus, son code est compressé. Ensuite, le loader qui décompresse le virus est crypté à l'aide de 15 couches différentes successives. Il teste également la présence d'un debugger à l'aide de l'api IsDebuggerPresent.

    2. Identifiez les différentes procédures mises en oeuvre par le binaire pour arriver à son but premier.

      Le virus scanne chaque fichier de chaque dossier des disques durs. Lorsqu'il trouve un fichier ne commençant pas par un '.' avec l'extension ".exe" et dont la taille est supérieure à 4Ko, il l'infecte.

    3. Identifier les systèmes susceptibles d'être vulnérables aux attaques de ce binaire (in extenso, ceux ne pouvant pas l'être). Justifier votre raisonnement.

      Le virus utilise 2 fonctions exportées par NTDLL absentes sur système 9x. De plus, sa méthode pour récupérer l'ImageBase de ntdll.dll ne fonctionne pas sous ces systèmes. Le virus ne fonctionnera donc que sous systèmes NT. De plus, le loader vérifie la date du système. Pour que le virus se lance, le système doit être à la date du 16 février 2011.

      On peut noter, par rapport au fonctionnement du virus, que le système suivant n'est pas affecter : Windows installé sur le lecteur E. Le lecteur C ne contient que les fichiers de boot dont les quelques executables sont en lecture seule. Ainsi, le virus va scanner le lecteur C et n'infectera aucun fichier car ne pouvant accéder en écriture à des fichiers en lecture seule, puis s'arretera là car le lecteur D n'existe pas.

    4. Suggérer des méthodes de détections ainsi que des moyens pour combattre les menaces qu'apportent ce binaire.

      Il suffirait que tous les exècutables soient en lecture seule pour être à l'abri de ce virus.

    5. Suggérez une méthode de "guérison" au cas ou le binaire aurait fait son oeuvre.

      On peut reprendre le code du virus pour scanner les lecteurs, puis vérifier le nom de la dernière section. En cas d'infection, il suffirait de supprimer cette section et de rétablir l'EntryPoint (situé au début de la section), le NumberOfSections et la SizeOfImage. Avant de scanner les lecteurs, vérifier les processus en mémoire et les tuer en cas d'infection.

  4. Analyse du loader
  5. Analyse du virus
  6. Conclusion

    Merci à Neitsa et Kaine pour ce défi vraiment très intéressant. C'était la première fois que j'analysais un virus, la première fois que j'effectuais une analyse 100% statique et la première fois que j'utilisais IDA. Donc j'espère ne pas avoir dit trop de conneries! (ouais je sais on se trouve des excuses comme on peut) :p Franchement les 2 dernières questions ne m'ont vraiment pas inspirées... Faudrait que j'étudie un peu plus ces p'tites bêtes! :)

    Pour toute réclamation, adressez vous au bureau des réclamations...

    Kharneth