Daniel Plohmann, IT-Sicherheitsforscher am Fraunhofer FKIE und Felix Bilstein, Entwickler am Fraunhofer FKIE

Schadsoftware-Familien mit automatisch generierten YARA-Signaturen erkennen

18. Februar 2020

© iStock

Schadsoftware ist seit Jahren eine ernstzunehmende Bedrohung für die Sicherheit und Integrität von Computern und Netzwerken. Gerade in den letzten Monaten sorgen ständig neue Ransomware-Angriffe auf große Konzerne und Organisationen für Schlagzeilen. Zusätzlich setzen immer mehr staatliche Akteure auf den Einsatz von Schadsoftware zu Spionage-, aber auch Sabotagezwecken. Dadurch haben sich im Laufe der Zeit etliche Schadsoftware-Familien gebildet, die ihre Autoren in immer neuen Versionen einsetzen. Für den praktischen Einsatz werden diese Dateien zusätzlich gegen Erkennung durch Antiviren- und andere Sicherheits-Software gehärtet, indem sie gepackt - d.h. in harmlos anmutenden Hüllen versteckt - werden. AV-Test geht dabei von etwa 15 Millionen neuen Schadsoftware-Dateien pro Monat aus.

Wir nehmen jedoch an, dass es deutlich weniger einzigartige Familien gibt, da diese von ihren Autoren händisch zu programmieren sind. Im Dezember 2017 haben wir das Projekt Malpedia gestartet und seitdem fortlaufend Schadsoftware kategorisiert sowie archiviert. Dabei verzeichnen wir aktuell etwa 1.600 Familien, mit einem Zuwachs von 30 bis 40 Familien pro Monat. Die tatsächliche Zahl ist wahrscheinlich noch deutlich höher. Lever et al. [1] kamen 2017 bei einer Untersuchung von 25 Millionen Samples aus dem Zeitraum 2011 bis 2015 zu einer Schätzung von etwa 3.100 Familien.

Automatisierte Analyse von Schadsoftware-Familien

Die Analyse von Schadsoftware wird zunehmend automatisiert, denn nur so lässt sich der Flut der daraus resultierenden einzigartigen Dateien entgegentreten. Bei Vorfällen ist zunächst die Schadsoftware-Familie zu identifizieren, um auf vorhandene Informationen zurückzugreifen. Dadurch lassen sich die Analyse beschleunigen und zeitnah zielgerichtete Gegenmaßnahmen einleiten. Da Autoren von Schadsoftware ihre Programme nicht ständig von Grund auf neu schreiben, finden sich in diesen häufig konstante Programmbausteine wieder.

YARA-Signator identifiziert Bausteine und macht sie nutzbar

Im Dezember 2019 stellten wir auf der Konferenz Botconf in Bordeaux mit YARA-Signator eine Methode vor, die diese Bausteine identifizieren kann und für Identifikationssignaturen nutzbar macht. Diese Methode ist eine Weiterentwicklung der Bachelor-Arbeit von Felix Bilstein. Die Grundidee von YARA-Signator beruht auf der Annahme, dass nahezu jede Schadsoftware-Familie Code-Fragmente enthält, die für sie eindeutig sind und die sich automatisch identifizieren lassen. Als Eingabedatenmenge werden in Familien vorsortierte und entpackte Samples vorausgesetzt, wie sie in Malpedia verfügbar sind.

In einem ersten Schritt wird der Code aus allen Dateien disassembliert, d.h. in einzelne Instruktionen zerlegt, wie sie von einer CPU ausgeführt würden. Anschließend wird diese Menge an Instruktionen pro Sample in kleinere Ketten von vier bis sieben Instruktionen (sogenannte N-Gramme) geteilt und in einer Datenbank abgelegt. Dabei ersetzen Wildcards die absoluten Adressen, um die später generierten Signaturen robuster gegen dynamisches Mapping im Arbeitsspeicher zu machen.

Illustration 1: Filterung der Eingangsdaten. Entfernung aller N-Gramme, die in mehr als einer Familie vorkommen, also nicht charakteristisch für die jeweiligen Familien sind.

Die passende Schnittmenge finden

Der nun folgende Schritt erledigt den Hauptteil der Arbeit: Spezielle Datenbankabfragen reduzieren die Eingangsdaten auf jene N-Gramme, die in nur jeweils einer Familie vorkommen, also für diese charakteristisch sind (vgl. Illustration 1). Dabei werden automatisch statisch gelinkte Programmbibliotheken entfernt, wie sie zum Beispiel für eine Verschlüsselung oder Kompression genutzt werden. Zusätzlich lassen sich jedoch auch Programmteile eliminieren, die aus geteiltem Code bestehen. Dieser entsteht beispielsweise durch den Austausch von Autoren untereinander, oder durch die Verwendung von geleaktem oder veröffentlichtem Quellcode, wie etwa der populären Familie Zeus [6].

In der letzten Phase werden die Bestandteile für die Signaturen ausgewählt. Ziel ist, alle Samples einer Familie mit möglichst wenigen Sequenzen abzudecken. Dazu werden zunächst Sequenzen ausgewählt, die in möglichst vielen Samples vorkommen. Sie werden solange sukzessive aufgefüllt bis jedes Sample mit einer definierbaren Mindestzahl von Sequenzen repräsentiert ist. Da die N-Gramme nur aus Code stammen, kann es immer noch zu False Positives kommen. Daher sind die Regeln in mehreren Runden gegen die Eingangsdaten zu prüfen und zu optimieren.

Populäre Beschreibungssprache für Schadsoftware-Signaturen

Als Ausgabeformat wurde YARA gewählt. Es ist die populärste Beschreibungssprache für Schadsoftware-Signaturen und für Analysten somit direkt einsetzbar. Der aktuelle Satz automatisch erzeugter Regeln deckt hiermit mehr als 950 Schadsoftware-Familien ab und erzielt in der Praxis sehr gute Identifikationsleistung mit nur wenigen False Positives.

YARA-Signator ist als Open-Source-Projekt veröffentlicht. Die erzeugten Regeln sind frei verwendbar und werden regelmäßig in Malpedia veröffentlicht sowie aktualisiert. Zudem lassen sie sich auch als vollständiges Paket direkt über die API herunterladen.

Damit IT-Analysten aus Behörden und Unternehmen Schadsoftware richtig erkennen und analysieren können, bietet die Fraunhofer Academy Seminare zum Thema „Schadsoftwareanalyse“ an. Teilnehmende lernen dort aktuelle Verschleierungsmethoden sowie wichtige Analysewerkzeuge kennen und erproben deren Anwendung in vielen praktischen Übungen.  

 

[1] "A Lustrum of Malware Network Communication:Evolution and Insights". Lever, C., Kotzias, P., Balzerotti, D., Caballero, J., Antonakakis, M. In: 2017 IEEE Symposium on Security and Privacy (SP) (pp. 788-804).