
Visuell inspizieren und YARA- und Regex-Übereinstimmungen in binären sowie Textdaten zwangsweise dekodieren, mit Farben. Viele Farben.

Untersuchen Sie visuell alle Regex-Übereinstimmungen (und ihre schickeren, geheimnisvolleren Vettern, die YARA-Übereinstimmungen), die in Binärdaten und/oder Text gefunden werden. Sehen Sie, was passiert, wenn Sie verschiedene Zeichenkodierungen auf diese übereinstimmenden Bytes anwenden. Mit Farben.
pipx install yaralyzer
# Scan against YARA definitions in a file:
yaralyze --yara-rules /secret/vault/sigmunds_malware_rules.yara lacan_buys_the_dip.pdf
# Scan against an arbitrary regular expression:
yaralyze --regex-pattern 'good and evil.*of\s+\w+byte' --regex-modifier wide the_crypto_archipelago.exe
# Scan against an arbitrary YARA hex pattern
yaralyze --hex-pattern 'd0 93 d0 a3 d0 [-] 9b d0 90 d0 93' one_day_in_the_life_of_ivan_cryptosovich.bin
'/.+/' suchen und erhalten sofort einen Einblick in alle Bytes der Datei, die zwischen Schrägstrichen stehen. Gleiches gilt für Anführungszeichen, BOMs usw. Jeder reguläre Ausdruck, den YARA verarbeiten kann, wird unterstützt – der Phantasie sind keine Grenzen gesetzt.chardet ist eine ausgefeilte Bibliothek zum Erraten von Zeichenkodierungen und wird hier genutzt.chardet wird ebenfalls genutzt, um zu prüfen, ob die Bytes dem Muster irgendeiner bekannten Kodierung entsprechen. Wenn chardet zuversichtlich genug ist (konfigurierbar), wird ein Versuch angezeigt, die Bytes mit dieser Kodierung zu dekodieren.Die Funktionalität des Yaralyzer wurde aus The Pdfalyzer extrahiert, als klar wurde, dass die Visualisierung und Dekodierung von Musterübereinstimmungen in Binärdateien über die reine PDF-Analyse hinaus nützlich ist.
YARA – für diejenigen, die es nicht wissen1 – wird als Malware-Analyse-/Alarmierungswerkzeug vermarktet, ist aber tatsächlich sowohl viel mehr als auch viel weniger als das. Eine Möglichkeit, es zu betrachten, ist, dass YARA eine unter Steroiden stehende Regex-Engine ist. Es kann Regex-Treffer in Binärdateien finden wie jede andere Regex-Engine, aber es kann auch weitaus wildere Dinge tun, wie Regexes in logischen Gruppen kombinieren, Regexes gegen alle 256 XOR-Varianten einer Binärdatei vergleichen, nach base64 und anderen Kodierungen des Musters suchen und mehr. Am wichtigsten ist vielleicht, dass YARA ein standardisiertes textbasiertes Format bietet, mit dem Menschen ihre aufgemotzten regulären Ausdrücke teilen können. All diese Funktionen sind besonders nützlich bei der Analyse oder dem Reverse Engineering von Malware, deren Autoren oft viel Zeit darauf verwenden, Dinge schwer auffindbar zu machen.
Aber... das ist auch alles, was YARA tut. Alles andere bleibt dem Benutzer überlassen. YARA ist nur eine Matching-Engine, und wenn Sie nicht wissen, wonach Sie suchen sollen (oder sogar, welche Zeichenkodierung für die Suche infrage kommt), bringt Sie das nur bedingt weiter. Ich war etwas frustriert, als ich mit YARA alle Treffer einiger kritischer Muster untersuchen wollte:
\".+\" und \'.+\')/.+/). Schrägstriche grenzen in vielen Implementierungen einen regulären Ausdruck ab, und ich wollte herausfinden, ob eines der Bytes, die diesem Muster entsprechen, tatsächlich ein regulärer Ausdruck ist.YARA teilt Ihnen lediglich die Byteposition und die gefundene Zeichenkette mit, kann aber nicht sagen, ob diese Bytes UTF-8, UTF-16, Latin-1 usw. sind (oder nichts davon). Außerdem wollte ich verstehen, was im Bereich der gefundenen Bytes passiert, nicht nur in den gefundenen Bytes. Mit anderen Worten: Ich wollte die Bytes unmittelbar vor und nach dem Treffer betrachten.
Hier kommt Der Yaralyzer ins Spiel, mit dem Sie schnell die Bereiche um Treffer herum durchsuchen können, während gleichzeitig angezeigt wird, wie diese Bereiche aussehen würden, wenn man sie mit verschiedenen Zeichenkodierungen interpretiert.
Der Yaralyzer ist kein Malware-Reverse-Engineering-Tool. Es kann nicht die Dinge tun, die ein Tool wie CyberChef kann, und es versucht es auch nicht. Es ist eher dazu gedacht, einen schnellen visuellen Überblick über verdächtige Bereiche in der Binärdatei zu geben, damit Sie sich auf die Stellen konzentrieren können, die Sie mit einem ernsthafteren Werkzeug untersuchen möchten.
Installieren Sie es mit pipx oder pip3. pipx ist eine etwas bessere Lösung, da es garantiert, dass alle damit installierten Pakete vom Rest Ihrer lokalen Python-Umgebung isoliert sind. Wenn Sie jedoch keine lokale Python-Umgebung haben, ist dies irrelevant, und Sie können es ruhig mit pip/pip3 installieren.
pipx install yaralyzer
Führen Sie yaralyze -h aus, um die Befehlszeilenoptionen zu sehen (Screenshot unten).

Informationen zum Exportieren von SVG-Bildern, HTML usw. finden Sie unter Beispielausgabe.
Wenn Sie eine Datei namens .yaralyzer in Ihrem Home-Verzeichnis oder im aktuellen Arbeitsverzeichnis ablegen, werden die in dieser .yaralyzer-Datei angegebenen Umgebungsvariablen bei jedem Aufruf von Yaralyzer zur Umgebung hinzugefügt. Dies bietet einen Mechanismus, um verschiedene Befehlszeilenoptionen dauerhaft zu konfigurieren, sodass Sie sie nicht immer wieder eingeben müssen. Weitere Informationen finden Sie in den Kommentaren in der Beispieldatei .yaralyzer.example.
Es wird nur eine .yaralyzer-Datei geladen, und die .yaralyzer-Datei des Arbeitsverzeichnisses hat Vorrang vor der des Home-Verzeichnisses.
Yaralyzer ist die Hauptklasse. Automatisch generierte Dokumentation für die verschiedenen Klassen und Methoden von Yaralyzer finden Sie hier. Es bietet eine Vielzahl von alternativen Konstruktoren:
.yara-Dateien aus einem VerzeichnisbytesSollten Sie über die BytesMatch (ähnlich einem re.Match-Objekt für einen YARA-Treffer) und BytesDecoder (verfolgt Dekodierungsversuche) Objekte des Yaralyzer iterieren wollen, können Sie das so tun:
from yaralyzer.yaralyzer import Yaralyzer
yaralyzer = Yaralyzer.for_rules_files(['/secret/rule.yara'], 'lacan_buys_the_dip.pdf')
for bytes_match, bytes_decoder in yaralyzer.match_iterator():
do_stuff()
Wenn Sie einen yara.Error mit einem numerischen Fehlercode erhalten, können Sie hier nachsehen, was dieser Code bedeuten könnte.
Der Yaralyzer kann Visualisierungen in HTML, ANSI-farbigen Text sowie PNG- und SVG-Vektorbilder exportieren, und zwar mit der Dateiexportfunktion von Rich sowie einem (etwas eingeschränkten) JSON-Textformat.
Wenn Sie .png-Bilder wie die untenstehenden direkt aus Yaralyzer exportieren möchten, müssen Sie eine der folgenden Optionen wählen:
brew install --cask inkscape installieren)img-Extra an, wenn Sie Yaralyzer installieren, das cairosvg installiert: pipx install yaralyzer[img]. Sie müssen das CairoSVG-Executable auch je nach Betriebssystem manuell installieren; siehe die CairoSVG-Dokumentation.Unserer Erfahrung nach funktionieren sowohl Inkscape als auch CairoSVG, obwohl wir mit CairoSVG bei von Yaralyzer gerenderten SVGs einige Ungereimtheiten im ausgegebenen Resultat gesehen haben; daher ist Inkscape die empfohlene Option.


chardet.detect() über die Wahrscheinlichkeit denkt, dass Ihre Bytes in einer bestimmten Kodierung/Sprache vorliegen:
Beiträge sind mehr als willkommen; siehe CONTRIBUTING.md für Details zur Einrichtung der Umgebung, zum Ausführen der Testsuite usw. Dort gibt es auch eine TODO-Liste mit anstehenden Arbeiten.
Wie ich bis vor kurzem. ↩