Unterschätze nie den Makrovirus Marc Ruef | 25.05.2009 Alle, die sich schon länger für Computersicherheit interessieren, können sich noch an die populären Makroviren Melissa und ILOVEYOU erinnern. Anfang des neuen Jahrtausends haben diese bis dahin unbekannt grosses Aufsehen in den Tagesmedien erregt. Office-Dokumente wurden mit korruptem Programmcode versehen, der sich selber per Email weitergeschickt hat. Die neue Gefahr schien bedrohlicher zu sein als alles, was bisher da gewesen war (was in erster Linie mit der jungen Popularität des Internets zu tun hatte). Seitdem ist es eigentlich ruhig geworden um Makroviren. Die Antiviren-Hersteller versuchen schön artig die bekannten Abkömmlinge zu entdecken. Und selbst Microsoft hat dazugelernt, indem es in den jüngeren Versionen der Office-Suite standardmässig die Ausführung von Makros gar nicht mehr. Entweder muss der Benutzer diese Option in mühsamer und manueller Weise über die überladenen Konfigurationseinstellungen aktivieren. Oder durch eine grössflächige Warnmeldung wird er beim Öffnen eines potentiellen Makrodokuments auf die drohenden Gefahren hingewiesen (oder spätestens beim MAPI-Zugriff auf Outlook). Wieso sollte man sich also noch mit Makroviren auseinandersetzen? Ganz einfach: Weil sie viel zu sehr unterschätzt sind! Makros sind eingebettete Skripte in Office-Dokumenten. Diese Skripte werden in einem speziellen Bereich der Datei untergebracht und können bei der reinen Interpretation des Dokuments, zum Beispiel in Word, nicht ohne weiteres gesehen werden. Als Skriptsprache wird hierbei Visual Basic for Applications, das mit VBA abgekürzt wird, eingesetzt. Bei VBA handelt es sich um eine bisweilen vereinfachte (und manchmal arg vermurkste) Variante des klassischen Visual Basic 6.0 (VB6). Die Möglichkeiten sind weitestgehend die Gleichen. Auf der Codeebene kann zu 99% die identische Funktionalität erreicht werden. Nur in Bezug auf das Design der grafischen Oberfläche hat sich Microsoft nicht die gleiche Mühe gegeben. Da korrupter Programmcode aber nur in den wenigstens Fällen auf schöne GUI-Elemente und OCX-Funktionen angewiesen ist, kann dies getrost vernachlässigt werden. Die unterschiedlichen Office-Dokumente erlauben es, mittels VBA-Makros gewisse Abläufe komplexerer Natur automatisieren zu können. Zum Beispiel kann in Excel beim Verändern eines Zelleninhalts ebenfalls die Schriftart der gesamten Spalte angepasst werden. Dies wäre ohne VBA nur mit manuellen Anpassungen (oder einer Bedingten Formatierung) umsetzbar gewesen. Gerade bei grösseren und wiederkehrenden Aufgaben, die sich nicht durch simple Excel-Formeln automatisieren lassen, wird VBA zu einem nützlichen Werkzeug. Die Entwickler korrupten Programmcodes interessieren sich aber viel mehr für andere Funktionalitäten. Zum Beispiel die Möglichkeit lesend oder schreiben auf das Dateisystem zuzugreifen. Oder weitere Dateien bzw. Programme zu öffnen. Oder gar im Netzwerk Daten zu übertragen. Wer im Umgang mit VB6 ein bisschen geübt ist, der wird derlei Routinen sehr schnell ebenfalls in VBA adaptieren können. Portierungen sind zu 95% mit simplem Copy&Paste umzusetzen. Einige Kleinigkeiten müssen dann noch den sprachspezifischen Eigenarten angepasst werden. Ein Word-Dokument, das eine spezifische Datei aus einem Netzwerk herausschickt, bastle ich in wenigen Minuten zusammen - Und sie wird nicht von einer Antiviren-Lösung entdeckt werden! In vielen Unternehmen sind Makros (wieder) geduldet. Man verlässt sich hierbei rigoros auf die Sicherheit der installierten Antiviren-Produkte. Diese sollen die bösartigen Makros frühzeitig erkennen und reagieren können. Doch nach wie vor werden dabei in erster Linie reaktionäre Mechanismen eingesetzt, die neuartige Viren und Würmer nicht erkennen können. Ich entwickle regelmässig neuen korrupten Programmcode für Kunden, die einen Proof-of-Concept für unsere Voraussagen sehen wollen. Man ist sodann vom Resultat hin- und hergerissen: Einerseits ist man verblüfft über die Möglichkeiten, die man da ausschöpfen kann - Andererseits ist es beängstigend zu sehen, dass auch nach 10 Jahren scheinbar plumpe und belächelte Angriffstechniken wie VBA-Makroviren zum Ziel führen können. Da nützen auch teure Firewalls, strenge Authentisierung und ein VPN-Tunnel nichts. Die einzige Lösung besteht darin, aktive Inhalte in Dokumenten zu verbieten. In Office-Dokumenten haben VBA-Objeke nichts verloren. Und im Übrigen hat Actionscript - eine abgespeckte Version von Javascript - in PDF-Dateien ebenso nichts zu suchen (da kann man ebenfals sehr schöne Effekte erzielen). Doch die Industrie bewegt sich immer weiter dahin, dass aktive Inhalte in ehemals statische Formate eingebunden werden können sollen. Erstaunt es da, dass in den neuesten ID-Tags von MP3-Dateien ebenfalls Bilder eingebettet werden können? Der nächste Pufferüberlauf-Exploit in einer Grafikengine ist sicher schon irgendwo in der Mache...