Yara Regeln
Grundlagen
Yara (YARA: Another Recursive Ancronym) wurde von VirusTotal entwickelt und soll bei der Erkennung von Schadprogrammen helfen. Das Projekt ist ein quelloffenes Framework und unter Github öffentlich verfügbar. Das Ziel von Yara ist es mit gleichnamigen Yara Regeln Muster zu erstellen, um Malware oder Malware Samples auf Computersystemen zu finden. Ebenfalls lassen sich Malware Samples klassifizieren und einer Malware-Family zuordnen. Dabei können diese Muster nicht nur in Softwaredateien, sondern auch im Arbeitsspeicher gefunden werden.
Yara ist multiplattform einsetzbar und kann daher auf Windows, Linux und MacOS verwendet werden.
Zum Verwenden von Yara regeln wird zum einen ein Yara Scanner und entsprechende Yara Regeln benötigt.
Yara Regeln
Yara Regeln bestehen aus einer Datei mit der Endung yar. Dabei kann die Datei mit jedem Texteditor erstellt werden. Jede Yara Regel muss einem gewissen Muster folgen, dabei betrachten wir nachfolgend eine Beispiel-Regel und beschreiben jede einzelne Komponente.
rule malware_finder { meta: Description = “Einfache Beispielregel um eine Malware zu erkennen” author = “Wings Studenten” date = “2023-07-09” strings: $string1 = “malware” $string2 = “10.11.20.20” $string3 = {0a ba 8a 01 05 06 0a} condition: ($string1 or $string2 and not $string3) and filesize < 200KB }
Zu Beginn der Regel muss immer das Keyword rule gefolgt von einem aussagekräftigen Namen stehen. Dieser Name wird später im Scanner angezeigt, wenn die Regel bei einer Datei zutrifft.
Unter dem Keyword “meta” können einzelne Angaben zu der Regel selber gemacht werden. Wie oben zu sehen können Angaben wie eine Beschreibung, der Autor oder das Datum hinterlegt werden. Dabei haben diese Angaben keine Auswirkungen auf den Suchprozess der Yara Regel.
Das erste Wichtige Keyword leitet strings ein. Unter diesem Keyword können ASCII Zeichenketten oder Hexadezimale Werte gespeichert werden. Diese werden dann bei dem Ausführen und Anwenden der Yara Regel berücksichtigt. Dabei gibt es keine Einschränkungen wie diese Zeichenketten aussehen. Es können beispielsweise auch direkt IP-Adressen von Servern von Advanced Persistent Threats (APT) hinterlegt werden.
Der Wichtigste Teil der Regel wird unter dem Keyword “condition” hinterlegt. Dabei beschreibt dieser Teil die Logik der Regel. Dabei können mit den Schlüsselwörtern and, or und not Logiken untereinander aufgebaut werden. Wie in dem Beispiel oben zu sehen, muss die Datei den String malware oder die IP-Adresse 10.11.20.20 enthalten. Weiter darf die Hexadezimale Zeichenfolge {0a ba 8a 01 05 06 0a} nicht enthalten sein. Abschließend muss die Dateigröße unter 200KB sein. Sind all diese Angaben erfüllt, wird der Yara Scanner die gefundene Datei als Finding ausgeben.
Yara Scanner
Es gibt eine große Anzahl an verschiedenen Yara Scannern, daher wird an dieser Stelle nur der Scanner Loki vorgestellt. Loki wurde in Python entwickelt und kann damit unter Windows, Linux und MacOS verwendet werden. Das Programm ist neben Yara auch als Indicator Of Compromise (IOC) Scanner einsetzbar. Nach dem Herunterladen und Starten (weitere Informationen stehen im Github) befindet sich der Ordner “signature-base” im Installationsverzeichnis. Dieser legt fest, nach welchen Regeln gescannt werden soll. Soll nun nach einer bestimmten Regel gesucht werden, kann diese einzige Yara Regel in das Verzeichnis abgelegt werden. Im Anschluss kann Loki dann über den Befehl ausgeführt werden:
python3 loki.py -p /directory/to/scan
In der Ausgabe werden dann entsprechende Treffer angezeigt oder die durchsuchten Dateien als Gutartig bewertet.
Yara Generatoren
Da das Erstellen einer Zuverlässigen Yara Regel einige Zeit dauern kann, gibt es Yara Regel Generatoren, die einem helfen sollen, diese Zeit zu minimieren. Dabei wird eine Yar-Datei erstellt, die im Anschluss direkt zum Scannen verwendet werden kann.
Ebenfalls gibt es neben Yara Scannern viele Yara Generatoren. An dieser Stelle soll yarGen ( vorgestellt werden, welches von dem gleichen Entwickler wie Loki erstellt wurde.
Dabei kann nach Installation das Tool wie folgt aufgerufen werden:
python3 yarGen.py -m /path/to/file --excludegood –o /output/file/path/rule.yar
Dabei sorgt die Einstellung --exludegood dafür, dass in der Yara Regel alle Zeichenketten entfernt werden die von yarGen als Legitime und bekannte Strings für gutartige Software bekannt sind. Diese Flagge hilft eher bei der Malware suche. Bei dem Auffinden von Dateien in einer forensischen Analyse sollte diese Einstellung weggelassen werden, da potentiell auch nach gutartigen Softwaren gesucht werden muss. Generell sollten Yara Generatoren nur verwendet werden, wenn bereits gute Erfahrungen im Umgang mit Yara Regeln vorhanden sind. In den meisten Fällen sind weniger Regel Einträge Zielführender als eine lange “string” liste. Grundsätzlich können Generatoren auch nur als Ausgangspunkt verwendet werden, um aus der generierten Yara Regel eine minimierte Version zu erstellen.