ubuntuusers.de

YARA

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

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)

Paketliste zum Kopieren:

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)

Paketliste zum Kopieren:

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.6.0/ zu finden, wobei das v3.6.0 gegebenenfalls. durch die Version zu ersetzen ist, die man verwendet.

Diese Revision wurde am 20. April 2019 00:39 von ubot erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Shell, Sicherheit, Programmierung