
Hochoktanige Triage-Analyse
[][docs]
[
][tests]
[
][codecov]
[
][pypi]
__ __ High Octane Triage Analysis __
|| _||______ __ __________ _____ ||
|| \||___ \__| ____/ ______/___ / ____\ ||
==||=====|| | __/ |/ \ /==| / __ \ __\===]|
'======|| | \ | | \_ _| \ ___/| | ||
||____ /__|___|__/ / | \____]| | ||
=========''====\/=========/ /==|__|=====|__|======'
\ /
\/
Die Binary Refinery™ ist eine Sammlung von Python-Skripten, die Transformationen von Binärdaten wie Kompression und Verschlüsselung implementieren.
Wir werden sie oft einfach als refinery bezeichnen, was auch der Name des entsprechenden Pakets ist.
Die Skripte sind darauf ausgelegt, Eingaben ausschließlich von stdin zu lesen und Ausgaben nach stdout zu schreiben.
Die Hauptphilosophie ist, dass jedes Skript eine Einheit sein sollte, in dem Sinne, dass es eine Aufgabe erfüllt,
und einzelne Einheiten können mit dem Pipe-Operator | auf der Kommandozeile zu Pipelines kombiniert werden, um komplexere Aufgaben zu erledigen.
Der Hauptfokus des Projekts liegt auf Malware-Triage
und ist der Versuch, so etwas wie CyberChef auf der Kommandozeile zu implementieren.
Erstelle eine virtuelle Python-Umgebung. Du benötigst Python 3.11 oder neuer. Installiere refinery wie folgt:
python -m pip install -U pip
python -m pip install -U binary-refinery[extended]
Führe Units mit -h aus, um zu lernen, wie sie funktionieren, durchsuche die [Dokumentation][docs] oder verwende den Befehl binref, um sie zu finden.
Sieh dir [ein aktuelles Video][VOD3] an, wenn du es in Aktion sehen möchtest.
Aber lies auch den Rest dieser Readme.
Es gibt keinen Release-Zeitplan, aber Releases erscheinen sehr häufig und es wird empfohlen, regelmäßig zu aktualisieren. Bugfixes werden außerhalb von GIT nicht dokumentiert, aber alle anderen Änderungen (d. h. neue Funktionen) sind im Changelog dokumentiert. Folge mir auf [Mastodon][] für Updates zu besonders wichtigen Releases.
Der Hilfetext, der angezeigt wird, wenn eine Unit mit dem Schalter -h oder --help ausgeführt wird, ist ihre Hauptdokumentation.
Die [automatisch generierte Dokumentation][docs] enthält eine Zusammenstellung dieser Ausgabe für jede Unit auf oberster Ebene,
aber auch die Spezifikation für die drei grundlegenden Konzepte des Toolkits:
[Framing][frame], [Multibin-Argumente][argformats] und [Meta-Variablen][meta].
Eine Volltextsuche der Beschreibung und des Hilfetexts für jede Unit ist auch auf der Kommandozeile verfügbar,
über den bereitgestellten Befehl binref. In Anerkennung der Tatsache, dass Referenzdokumentation etwas trocken sein kann,
gibt es eine laufende Bemühung, eine Reihe von Tutorials zu erstellen; ich empfehle sehr, sie sich anzusehen.
Darüber hinaus sammle ich unten zusätzliche Ressourcen (einschließlich einiger von Dritten erstellter).
[!NOTE]
Refinery befindet sich noch in der Alpha-Phase und die Schnittstelle kann sich manchmal ändern, d. h. Units und Parameter können entfernt oder umbenannt werden. Daher kann es vorkommen, dass bestimmte Kommandozeilen aus älteren Videos und Blogbeiträgen nicht mehr funktionieren.
2021/08] [OALabs][OA] war so freundlich, mich [das Toolkit in einem Feature-Video vorzustellen][VOD1].
Im Video arbeite ich im Wesentlichen den Inhalt von
dem ersten Tutorial durch.2021/11] [Johannes Bader][JB] schrieb einen großartigen [Blogbeitrag][BLOG] über die Analyse von Malspam mit binary refinery.2024/03] [Malware Analysis For Hedgehogs][MH] erstellte [ein Video über das Entpacken einer XWorm-Sample][VOD2] mit refinery.2024/11] [the CyberYeti][CY] hatte mich [im Stream, um refinery vorzustellen][VOD3].2025/06] Ich war [erneut im Stream][VOD4] mit [the CyberYeti][CY], dieser ist etwas roher.
Alle Fehler, die du hier sehen kannst, wurden behoben. 😉Die Showcases enthalten wieder Beispiele aus dem Beispielabschnitt unten und den Tutorials.
Die Binary Refinery ist (c) 2019 Jesko Hüttenhain und unter einer [3-Clause BSD License][license] veröffentlicht. Dieses Repository enthält auch eine Kopie des vollständigen Lizenztextes. Wenn du etwas damit machen möchtest, das nicht von dieser Lizenz abgedeckt ist, kannst du dich gerne an den Autor wenden.
Die refinery erfordert mindestens Python 3.11. Es wird empfohlen, sie in einer eigenen [virtuellen Umgebung][venv] zu installieren: Das Paket kann viele Abhängigkeiten mitbringen, und die Installation in dein globales Python ist etwas anfällig für Versionskonflikte. Da das Toolkit außerdem eine große Anzahl neuer Befehle einführt, besteht eine gute Chance, dass einige davon auf manchen Systemen kollidieren, und sie in einer eigenen separaten virtuellen Umgebung zu halten, ist eine Möglichkeit, das zu verhindern.
Wenn du alle refinery-Befehle jederzeit in deiner Shell verfügbar haben möchtest (d. h. ohne in eine benutzerdefinierte virtuelle Umgebung wechseln zu müssen),
hast du auch die Möglichkeit, ein Präfix für die Installation zu wählen,
das vor jeden installierten Befehl-Shim gesetzt wird.
Wenn du beispielsweise r. als Präfix wählst, wird die [emit][]-Unit als Befehl r.emit installiert.
Ein zusätzlicher Vorteil ist, dass du r. eingeben und zweimal Tab drücken kannst, um eine Liste aller verfügbaren refinery-Befehle zu erhalten.
Beachte jedoch, dass in der Dokumentation kein Präfix angenommen wird und es ein Entwicklungsziel von refinery ist, auf den meisten Systemen nicht zu kollidieren.
Der Autor verwendet kein Präfix und bietet diese Option als Sicherheitsnetz an.
Der einfachste Weg, refinery zu installieren und zu aktualisieren, ist über pip. Stelle zunächst sicher, dass du die neueste Version ausführst:
python -m pip install -U pip
Dann installiere einfach das refinery-Paket:
pip install -U binary-refinery
Wenn du ein Präfix für alle Units wählen möchtest, kannst du es über die Umgebungsvariable REFINERY_PREFIX angeben.
Der folgende Befehl installiert refinery beispielsweise in die aktuelle Python-Umgebung mit dem Präfix r. unter Linux:
REFINERY_PREFIX=r. pip install -U binary-refinery
Unter Windows müsstest du die folgenden Befehle ausführen:
set REFINERY_PREFIX=r.
pip install -U binary-refinery
Die Angabe des speziellen Präfixes ! hat zur Folge, dass überhaupt keine Shell-Befehle erstellt werden
und binary refinery nur als Bibliothek installiert wird.
Wenn du die aktuelle refinery HEAD installieren möchtest, kannst du alle oben genannten Schritte wiederholen und dabei dieses Repository anstelle des pip-Pakets angeben.
Der folgende Befehl installiert beispielsweise den allerneuesten refinery-Commit:
pip install -U git+git://github.com/binref/refinery.git
Wenn du schließlich [REMnux][remnux-main] verwendest, kannst du deren [refinery Docker-Container][remnux] nutzen.
Wenn du deinem lokalen Malware-Analyse-[claude][] beibringen möchtest, binary refinery zu verwenden, sieh dir den [Binary Refinery Skill][agent] an.