Direkt zum Inhalt
22.10.2019 - Fachbeitrag

Emotet mit Rspamd und Oletools bekämpfen

Spam-Wellen mit Office-Macro-Viren wie Emotet haben in den letzten Wochen wieder einige bekannte Opfer gefunden: Nach einem Emotet-Ausbruch am Berliner Kammergericht ist das IT-System und der komplette Mailverkehr bereits seit über drei Wochen vollständig lahmgelegt. Aktuell wird bevorzugt wieder per Fax-Gerät kommuniziert.

Dabei sind Office-Dokumente sind in der täglichen digitalen Kommunikation immer noch kaum wegzudenken. Sie werden zum Austausch vielerlei Daten verwendet und bieten auch aktive Elemente, die die Daten in den Dokumenten direkt verarbeiten können. Das kann z.B. die Anzeige und Validierung von Formulardaten sein oder eine komplexere Kalkulation in Excel-Sheets. Für die Programmierung dieser aktiven Elemente werden VBA-Macros verwendet, die direkt in die Office Datei integriert werden.

Macros analysieren

Die Möglichkeiten der Visual-Basic-Macros sind leider so umfangreich, dass auch Viren-Programmierern viele Möglichkeiten vorliegen, Schadcode auf ein System zu schleusen. So lässt sich direkt aus dem Macro eine lokale Datei öffnen als auch schreiben, ein Programm starten, ein Task im Hintergrund ausführen oder ein URL aufrufen, um Daten herunter zu laden. Dazu gibt es bestimmte Trigger, wann ein solches Macro ausgeführt werden soll: beim Öffnen des Dokuments, beim Schließen, beim Speichern … zum Glück nicht mehr vollautomatisch.

Aber mittels Social Engineering schaffen es die Absender immer wieder, den Empfänger zur Aktivierung des Macros zu bewegen. Neben vordefinierten Funktionen lassen sich auch zur Laufzeit neue Funktionen registrieren. In Macro-Viren wie Emotet werden versteckte (obfuskierte) Strings zur Laufzeit dechiffriert und zu neuen Funktionen zusammengesetzt. Damit lassen sich die genutzten VBA-Funktionen vor einer einfachen Analyse verbergen.

Die Emotet-Varianten der letzten Wochen waren sehr oft einzigartig und ließen sich daher durch einen Datei-Hash nicht klassifizieren. Zur Erkennung solcher Viren muss also die Office-Datei selbst analysiert werden. Die Erkennung, ob eine Office-Datei überhaupt ein Macro enthält, ist dabei recht einfach. So gibt es z.B. in einer entpackten Word-Datei einen Ordner namens Macros bzw. VBA.

Sofern man auf Office-Macros komplett verzichten kann, bieten die meisten Anti-Virus-Hersteller die Möglichkeit, diese zu erkennen und entsprechend zu behandeln. Office-Dokumente ohne Macros können ganz normal passieren.

Falls Office-Macros benötigt werden, muss zwischen gutartigen und bösartigen Macros unterschieden werden können. Hier kommen durch die Einzigartigkeit jeder einzelnen Virus-Datei auch bekannte Anti-Viren-Hersteller an ihre Grenzen.

Eine tiefere Analyse bieten Sandboxsysteme und Analysetools aus dem SIEM-Bereich. Ein SIEM-Tool für Office-Dokumente ist das z.B. oletools. Oletools ist ein Python-Framework um OLE-Strukturen und VBA-Funktionen zu analysieren. Dabei kann Oletools auch obfuskierten Code analysieren und deren endgültige Funktion erkennen und kategorisieren.

Emotet-Plugin für Rspamd

Um oletools während der Annahme einer E-Mail die bereits angehängten Office-Dateien analysieren lassen zu können, haben wir für das Anti-Spam Framework Rspamd ein Plugin entwickelt, dass mit einem kleinen Daemon spricht, welcher die Office-Datei von oletools analysieren lässt.

Es gibt 2 Modi der Erkennung:

1. Automatische Kategorisierung
Hierbei wird der Report der oletools vom Rspamd automatisch ausgewertet. Damit ein Macro-Virus erfolgreich einen Computer infizieren kann, müssen zwei Bedingungen erfüllt sein. Das Macro muss gestartet werden (AutoExec) und es wird eine Funktion benötigt, die den Schadcode in das System bringt. Funktionen, die das ermöglichen könnten, werden in der Kategorie "Suspicious" aufgeführt. Kommen in einem Macro beide Kategorien zusammen vor, ist die Wahrscheinlichkeit, dass es sich um einen Virus handelt, recht hoch. Daher meldet das Oletools-Plugin im Rspamd einen erkannten Macro-Virus.

Rspamd-Symbol z.B: OLETOOLS(20.00){AutoExec + Suspicious (autoopen,ShowWindow,CreateObject,Windows);}

2. Erweiterte Kategorisierung
Oletools kennt in seinem Bericht noch weitere Kategorien wie IOC, VBA-Strings, Hex-Strings, die auch auf unerwünschtes Verhalten hinweisen können. Außerdem liefert der oletools-Report die Namen der Funktionen aus der Kategorie Autoexec und Supicious mit. Im extended mode ist es dem Administrator jetzt möglich Kategorien und einzelne Funktionen mit den Boardmitteln des Rspamd zu verknüpfen und weiter zu verarbeiten, so dass eine fein granuläre Filterung möglich ist. Wichtig ist hier zu beachten, dass nach Rspamd-Logik die Kategorien und jede gemeldete Funktion ein einzelner Virus sind. Im unten genannten Beispiel sind das entsprechend 4 Viren. Das muss der Admin im Extended Mode dann auch entsprechend verarbeiten.

Rspamd-Symbol z.B: OLETOOLS (4.00)[MAS-----, Document_open, Shell, Chr]


Einrichtung und Konfiguration der oletools und olefy
Im bald folgenden 2. Blogbeitrag stellen wir Ihnen die Einrichtung und Konfiguration der oletools und olefy sowie deren Einbindung in Rspamd im einfachen und im extended Mode genauer vor.

Links:
https://rspamd.com/doc/modules/external_services.html#oletools-specific-details
https://github.com/HeinleinSupport/olefy
https://www.golem.de/news/bsi-praesident-emotet-ist-der-koenig-der-schadsoftware-1910-144480-rss.html

Autor: Carsten Rosenberg, Linux-Consultant, Heinlein Support

Und hier geht die Serie "Emotet mit Rspamd und Oletools bekämpfen" weiter:

Emotet mit Rspamd und Oletools bekämpfen (Teil 2)
Emotet mit Rspamd und Oletools bekämpfen - Emotet 2020 (Teil 3)
Emotet mit Rspamd und Oletools bekämpfen - die vielen kleinen Tricks (Teil 4)

Kommentare

2 Antworten zu Emotet mit Rspamd und Oletools bekämpfen

t-Icon
tert
26. October 2019 um 10:27

Da statische Signaturen schneller sind würde ich vorschlagen Oletools nach URLhaus ClamAV signatures einzusetzen und auch SURBL und Spamhaus DBL einzubinden.

Oletools haben danach vermutlich nur noch wenig zu prüfen und der Vorgang geht fix

c-Icon
Carsten Rosenberg
27. November 2019 um 11:47

Genau so machen wir das ;)

https://www.heinlein-support.de/blog/news/emotet-mit-rspamd-und-oletool…

--> Stichwort: dynamic_scan