YARA
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Ubuntu 20.04 Focal Fossa
Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
YARA 🇬🇧 ist ein Programm, mit dem sich der Inhalt von Dateien nach definierten Mustern durchsuchen lässt. YARA kann sowohl text-basierte als auch Binärdateien durchsuchen.
Die Entwickler von YARA bezeichnen das Programm selbst als "The pattern matching swiss knife for malware researchers (and everyone else)", was auf Deutsch so viel heißt wie: "Das Schweizer Taschenmesser für den Musterabgleich für Malware-Forscher (und jeden anderen)". Dies kommt daher, dass YARA auch in den Programmen namhafter Anti-Malware Softwareanbieter zum Einsatz kommt. Das Programm selber steht unter einer OpenSource Lizenz und kann frei genutzt werden.
Neben dem Einsatz auf der Kommandozeile bietet YARA auch eine API für Python 🇬🇧 und C 🇬🇧.
Installation¶
aus den Paketequellen¶
YARA ist in den Paketquellen enthalten und kann über das Paket yara installiert werden[1]:
yara (universe)
Befehl zum Installieren der Pakete:
sudo apt-get install yara
Oder mit apturl installieren, Link: apt://yara
Wer auch die Dokumentation lokal installieren möchte, der installiert noch zusätzlich folgendes Paket:
yara-doc (universe)
Befehl zum Installieren der Pakete:
sudo apt-get install yara-doc
Oder mit apturl installieren, Link: apt://yara-doc
manuell installieren¶
Wenn die neueste bzw. eine neueren Version von YARA benötigt wird, als in den Paketquellen vorliegt, kann YARA manuell installieren werden, indem das Programm direkt aus dem Quelltext kompiliert wird. Die notwendigen Schritte für Ubuntu sind in der Dokumentation 🇬🇧 beschrieben.
Benutzung¶
YARA wird über die Kommandozeile genutzt[2], die allgemeine Syntax lautet:
yara [OPTIONEN] RULES_DATEI ZIELVERZEICHNIS
Die RULES_DATEI
enthält dabei die Regel bzw. Regeln, nach der alle Dateien im Verzeichnis ZIELVERZEICHNIS
durchsucht werden.
Die Suche erfolgt standardmäßig nicht rekursiv, d.h. es wird nur das angegebene Zielverzeichnis durchsucht, nicht dessen Unterverzeichnisse.
Die Datei, die die Regeln bzw. Muster enthält, nach der die Dateien durchsucht werden sollen, kann mehrere Regeln enthalten und pro Regel müssen mindestens die Sektionen strings
und conditions
vorhanden sein. Eine Regeldatei kann z.B. so aussehen:
rule UbuntuusersTest { meta: my_meta_string = "Beispiel für ubuntuusers.de" strings: $my_jpg_string = { FF D9 } $my_png_string = { 89 50 4E 47 0D 0A 1A 0A } $my_txt_string = "Hallo Welt!" condition: $my_jpg_string or $my_png_string or $my_txt_string }
Die Zeile rule UbuntuusersTest
leitet einen neue Regel mit dem Namen UbuntuusersTest
ein, die zugehörigen Regeln sind dann in geschweifte Klammern eingeschlossen. Die Sektion strings
enthält ein oder mehrere Strings, nach der die Dateien durchsucht werden sollten. Die Namen der Strings müssen mit dem Dollarzeichen $ beginnen, die Strings können, wie in der 1. und 2. Zeile, entweder hexadezimal sein oder, wie in der 3. Zeile, Text.
Im Abschnitt condition
wird definiert, unter welchen Umständen beim Durchsuchen ein Treffer gemeldet werden soll. In Beispiel wäre dies der Fall, wenn einer der drei Strings gefunden wird.
Der Abschnitt meta
dient der zusätzlichen Dokumentation. Er ist optional und hat keine Einfluss auf die Suchregeln.
Eine Regeldatei kann dabei auch mehr als eine Regel enthalten. Jede Regel muss, wie oben bereits gesagt mit rule NameDerRegel
eingeleitet werden. Regeldateien können dabei unter einem beliebigen Namen gespeichert werden.
Das Ergebnis einer Suche kann dann z.B. so aussehen:
yara uude.rule Bilder/
UbuntuusersTest Bilder//spamegg.txt UbuntuusersTest Bilder//foo.png UbuntuusersTest Bilder//20170703_174902.jpg UbuntuusersTest Bilder//20170703_174818.jpg
Die Datei uude.rule wird auf das Verzeichnis Bilder angewendet. In der Trefferliste wird ausgegeben, welche Regel zutrifft, gefolgt vom Dateinamen, auf die die Regel zutrifft.
Ruft man yara
zusätzlich mit der Option -s
auf, wird zusätzlich noch die Position des Treffers in der Datei mit ausgegeben und gezeigt, welcher der Strings den Treffer ausgelöst hat:
UbuntuusersTest Bilder//spamegg.txt 0x7:$my_txt_string: Hallo Welt! UbuntuusersTest Bilder//foo.png 0x0:$my_png_string: 89 50 4E 47 0D 0A 1A 0A UbuntuusersTest Bilder//20170703_174902.jpg 0x13bc05:$my_jpg_string: FF D9 UbuntuusersTest Bilder//20170703_174818.jpg 0x24ae:$my_jpg_string: FF D9 0x13ed06:$my_jpg_string: FF D9
YARA bietet noch viel mehr Möglichkeiten, Regeldateien mit wesentlich komplexeren Regeln zu schreiben. Eine umfassende Übersicht inklusive vieler Beispielen ist in der Dokumentation 🇬🇧 zu finden.
Optionen¶
YARA kennt eine Reihe von Optionen:
Optionen von YARA | |
Option | Erklärung |
-s , --print-strings | Zeigt zusätzlich den String an, der den Treffer ausgelöst hat und die Position des Treffers in der Datei. |
-n | Zeigt nur die Regeln an, die keinen Treffer ausgelöst haben. |
-p ANZAHL , --threads=ANZAHL | YARA startet ANZAHL Threads zum (parallelen) Durchsuchen der Dateien. |
-a SEKUNDEN , --timeout=SEKUNDEN | Die Suche wird nach SEKUNDEN abgebrochen. |
-r , --recursive | Das Zielverzeichnis wird rekursiv durchsucht. |
YARA kennt noch eine Reihe weitere Optionen, welche in der Manpage und auch der Dokumentation 🇬🇧 erklärt sind.
Dokumentation aufrufen¶
Hat man die Dokumentation über die Paketverwaltung installiert, kann man diese über die URL file:///usr/share/doc/yara-doc/html/index.html
aufrufen. Die Online-Dokumentation ist unter http://yara.readthedocs.io/en/v3.9.0/
zu finden, wobei das v3.9.0
gegebenenfalls. durch die Version zu ersetzen ist, die man verwendet.
Links¶