Also nun ans Eingemachte: Teil 5 Rspamd und Oletools im Extended Mode.
Ein Prinzip des Rspamd ist es, einem Symbol sogenannte Options (Zusatzinformationen) hinzuzufügen. Bei einem RBL Hit gibt uns Rspamd in den Options den Fund und Fundort bekannt:
SPAMHAUS_ZEN(7.00){91.230.138.11:from;}
Hier stand der einliefernde Server auf der Spamhaus ZEN RBL. Ein Symbol kann aber auch mehrere gesetzte Options haben:
URIBL_SBL_CSS(6.50){195.22.153.202:from;195.22.153.202:ajng.ru:replyto;}
Hier wurden sowohl die IP des einliefernden Servers, als auch die aufgelöste E-Mail Domain des Reply-To Headers in der RBL gefunden. Je nach Einstellung wird der Score des Symbols einmal gesetzt oder mit der Anzahl der Options multipliziert.
Zurück zu den Oletools. Im einfachen Default Modus wird bei einem erkannten, potenziell schädlichen Makro genau eine Option gesetzt, die alle Informationen zum Fund enthält:
OLETOOLS (10.00)[AutoExec + Suspicious
(Auto_Open,Open,ShellExecuteA,Shell32,CALL,URLDownloadToFileA)]
AutoExec + Suspicious als Trigger für ein böses Makro und in Klammern alle erkannten VBA-Funktionen.
Wie in Teil 2 gezeigt, könnte mensch mit den Patterns nun per regulärem Ausdruck auf bestimmte Funktionen matchen und daraus eigene Symbole erstellen. Hier haben wir aber das Problem, dass nur genau ein Match pro Option möglich ist.
Wenn wir nun in Oletools den Extended Mode aktivieren…
# /etc/rspamd/local.d/external_services.conf
oletools {
...
extended = true;
...
}
…erhalten wir dieses Symbol und diese Options:
OLETOOLS (80.00)[----AIMS, Auto_Open, Open, ShellExecuteA, Shell32, CALL,
URLDownloadToFileA, Hex Strings]
Jetzt haben wir 8 Options, wobei in der ersten kodiert die einzelnen Erkennungskategorien hinterlegt sind, die restlichen 7 Options die einzelnen Funktionen des VBA-Codes enthalten.
https://rspamd.com/doc/modules/external_services.html#oletools-extended-mode
Hex bzw. Base64 Strings deuten auf obfuskierte Funktionen im VBA-Code -Vor allem, wenn diese zusammen mit Funktionen wie CALL oder Chr auftreten. Um sich vor der Analyse zu verstecken, werden schädliche Funktionen in Hex oder Base64 Schnipsel zerhackt, zur Laufzeit wiederhergestellt und via CALL oder Chr ausgeführt. Oletools analysiert auch solche Schnipsel, so dass einige der oben gefundenen schädlichen Funktionen durchaus in den Hex Strings versteckt gewesen sein könnten.
Aber zurück zum Score und den Options. Jetzt wurde 8 mal der Score von 10 gezählt. Das kann in der Config des Symbols mittels one_shot = true; verhindert werden:
# /etc/rspamd/local.d/external_services_group.conf
symbols {
...
"OLETOOLS" {
weight = 10.0;
description = "OLETOOLS triggered";
one_shot = true;
}
...
}
OLETOOLS (10.00)[----AIMS, Auto_Open, Open, ShellExecuteA, Shell32, CALL,
URLDownloadToFileA, Hex Strings]
Nun können die Patterns wieder zum Einsatz kommen, um aus einzelnen Options des
OLETOOLS Symbol neue Symbole zu erzeugen.
oletools {
...
extended = true;
patterns {
# symbol_name = "pattern";
OLETOOLS_AUTOEXEC_SUSPICIOUS = "^-.*A.*S";
OLETOOLS_SHELL = "^Shell";
OLETOOLS_OPEN = "^(Auto_Open|Open)";
OLETOOLS_DOWNLOAD = "^URLDownloadToFile";
}
...
}
Achtung: Jetzt ist das Symbol OLETOOLS alleine natürlich nicht mehr aussagekräftig und sollte auf 0.0 gesetzt werden. Hier ist das Ergebnis:
Symbol: OLETOOLS (0.00)[CALL, Hex Strings]
Symbol: OLETOOLS_DOWNLOAD (0.00)[URLDownloadToFileA]
Symbol: OLETOOLS_OPEN (0.00)[Auto_Open, Open]
Symbol: OLETOOLS_SHELL (0.00)[ShellExecuteA, Shell32]
Symbol: OLETOOLS_AUTOEXEC_SUSPICIOUS (0.00)[----AIMS]
Wenn diese neuen Symbole auch einen Score bekommen sollen, müssen sie analog zu
der OLETOOLS Config oben in der external_services_group.conf angelegt werden.
Aber was können wir nun damit anfangen? Es gibt uns die Möglichkeit im Rspamd die OLETOOLS_* Symbole und damit ggf. einzelne VBA-Funktionen weiter zu verarbeiten. Während der einfache Modus auf mindestens eine Funktion aus der Kategorie Autoexec und mindestens eine Funktion aus der Kategorie Suspicious triggert, haben wir jetzt volle Kontrolle.
Dazu kann mensch nun die Rspamd Plugins Composites oder Force Actions nutzen. In beiden Plugins ist es möglich, Symbole (oder sogar Gruppen) in Expressions logisch zu verknüpfen. Während Composites dafür ausgelegt ist mit den Expressions neue Symbole, mit der Möglichkeit alte Symbole oder deren Scores zu löschen, zu erstellen, forciert force_actions mit einer wahren Expression eine bestimmte Aktion beim Scan einer Mail.
Wie würde als Beispiel eine Force Action nun aussehen?
# /etc/rspamd/local.d/force_actions.conf
rules {
...
OLETOOLS_REJECT {
action = "reject";
expression = "OLETOOLS_AUTOEXEC_SUSPICIOUS & (OLETOOLS_SHELL |
OLETOOLS_DOWNLOAD)";
message = "REJECT - Bad Office Macro found - Ref#7362 id: ${queueid}";
require_action = ["no action", "greylist", "soft reject", "add header",
"rewrite subject", "reject"];
}
...
}
Hier werden in der Expression das Symbol für die Kategorien AutoExec und Suspicious zusammen mit den Symbolen für VBA Shell oder Download Funktionen verknüpft. Dass hier auch require_action konfiguriert wird, ist ein kleiner Trick, um diese force_action Regel erst nach den Postfiltern wie Oletools (Oletools ist wie die Spamassassin Rule in external_services ein Postfilter mit dynamic_scan Option) auszuführen. Sonst würde die Regel ins Leere laufen, da die Symbole noch gar nicht gesetzt wären.
Ebenso ist es möglich, eine eigene Reject Nachricht anzugeben. Seit der Rspamd Version 2.6 können hier auch Selectors als Variablen verwendet werden. Mit ${queueid} wird die Postfix Queue-ID eingefügt, welche neben Postfix ja auch vom Rspamd geloggt wird.
In den nächsten beiden Teilen gehe ich noch auf einen praktischen Ansatz mit dem Extended Mode ein und stelle euch unsere Default Configs für Oletools vor.
Übrigens sind die Prinzipien, die ich hier vorgestellt habe, auch auf andere Plugins von Antivirus und External Services anwendbar. Das gilt vor allem für das Spamassassin Plugin in External Services (https://rspamd.com/doc/module/external_services.html#spamassassin-specific-details), welches ebenso einen Extended Mode kennt, der ähnlich funktioniert.
Autor: Carsten Rosenberg, Linux-Consultant, Heinlein Support
Hier nochmal alle bisher erschienenen Artikel aus unserer Reihe „Emotet mit Rspamd und Oletools bekämpfen“ zum Nachlesen:
Kommentare