____ __ __ _ _
| _ __ _ _ __ ___ _ __ | / | __ _ ___| |__ ___| |_ ___ ________
| |_) / _` | '_ / _ '__| | |/| |/ _` |/ __| '_ / _ __/ _ /_______/
| __/ (_| | |_)| __/ | | | | | (_| | (__| | | | __/ || __/ _______
|_| __,_| .__/___|_| |_| |_|__,_|___|_| |_|___|_____| /_______/
|_| @==|;;;;;;>
Paper Machete (PM) orchestriert binäre Ninja und grakn.ai, um eine statische binäre Analyse zu unterstützen, um Fehler in Software zu finden. PM nutzt die binäre Ninja -MLIL -SSA, um die semantische Bedeutung für einzelne Anweisungen, Operationen, Register-/variabler Zustand und Gesamtkontrollfluss zu extrahieren.
PM migriert diese Daten in Grakn - ein Wissensgrafik, das uns die Möglichkeit gibt, domänenspezifische Ontologien für Daten zu definieren und leistungsstarke Inferenzregeln zu schreiben, um Beziehungen zwischen Daten aufzubauen, die wir nicht explizit speichern möchten (oder nicht). Heeh, wie ordentlich ist das?
Dieses Projekt wurde in Verbindung mit einem Derbycon 2017 -Vortrag mit dem Titel "AIDIDIERT STATISCHE ANALYSE: ERDNIERTEN VERLÄNDERUNGEN IN BINARY ZIELEN DURCH BILDUNGSGRAFT TRIFFEN. Sie können dieses Gespräch hier sehen.
Der erste Prototyp und die öffentliche Codebasis von Paper Machete wurden von Sicherheitsforschern am Battelle Memorial Institute entwickelt. Wenn dieses Projekt reift, hoffen wir, dass Sie es in Ihrer eigenen Forschung nützlich finden und in Betracht ziehen, zum Projekt beizutragen.
Die BNIL-Suite von ILS ist leicht zu arbeiten, angenehm ausführlich und menschlich aussagbar. Zu jedem Zeitpunkt können wir uns entscheiden, andere Ebenen und Formen der IL mit geringen Entwicklungsaufwand von unserer Seite zu nutzen. Wenn Sie dazu beigetragen haben, mehrere Architekturen zu heben und benutzerdefinierte Lifter zu schreiben, haben wir wenig Grund, BNIL nicht zu verwenden.
Grakns Query Language (GRAQL) ist leicht zu lernen und intuitiv, was in den frühen Stadien dieser Forschung äußerst wichtig ist, während wir immer noch von Handschreiberfragen zur Modellierung der Muster-Sicherheitslücken, nach denen Forscher bei der Durchführung einer statischen Analyse suchen.
Durch die Fähigkeit, unsere eigenen domänenspezifischen Ontologien zu schreiben, können wir schnell mit neuen Abfragen-Ideen und Möglichkeiten experimentieren, um unsere Fragen weniger komplex zu machen. Wenn wir in einen Fall stoßen, in dem wir denken "Gee, wenn ich nur Zugriff auf die Beziehung zwischen ..." hatte, können wir unsere Ontologie- und Inferenzregeln ändern, um diese Informationen zu erhalten.
Während das Endspiel für PM die Notwendigkeit von Anfragen von Menschenschrieben beseitigt, ist die Tatsache, dass wir von Square One beginnen. Dies bedeutet, dass die Muster, nach denen Forscher bei der Insektenjagd suchen, eine Menge Abfragen zur Modellierung der Muster menschlicher Verwundbarkeit suchen.
Papiermachete benötigt Binaryninja v1.1, grakn v1.4.2, der Grakn Python -Fahrer und der Java Jre
Wir haben einige grundlegende Anfragen beigefügt, um Ihnen den Einstieg zu erleichtern, wenn Sie mit PM herumspielen möchten. Wie Sie sich vorstellen können, gibt es keine "Silver Bullet" -Anfrage, die alle Manifestationen einer bestimmten Sicherheitsklasse findet. Aus diesem Grund haben wir Versionen für jede CWE -Abfrage aufgenommen. Wenn wir neue Methoden zum Finden des gleichen CWE hinzufügen, fügen wir Skripte mit erhöhten Versionsnummern hinzu, die zu differenzieren sind.
cwe_120_v1.py - Tests zur Verwendung von unsicheren 'Get ()' Funktion (CWE -120)
cwe_121_v1.py - Tests für Pufferüberläufe (CWE -121)
cwe_129_v1.py - Tests auf fehlende Grenzenprüfungen (CWE -129)
cwe_134_v1.py - Tests auf Format -Zeichenfolge -Schwachstellen (CWE -134)
cwe_788_v1.py - Tests für fehlende Grenzen über Array -Indexes (CWE -788)
Führen Sie für die grundlegende Verwendung das Skript paper_machete.py aus und befolgen Sie die Eingabeaufforderungen. Für fortgeschrittene Verwendung lesen Sie bitte das Wiki.
Normalerweise beginnen Sie mit der Option [1] und arbeiten sich zur Option [3] . Wenn Sie Probleme mit der Option Grakn verwenden [4] um Grakn in einen sauberen Zustand zurückzusetzen, und es erneut versuchen.
... banner ...
[1] Analyze a binary file
[2] Migrate a JSON file into Grakn
[3] Run all CWE queries
[4] Clean and restart Grakn
[5] Quit
Option [1] listet alle ausführbaren Dateien im Verzeichnis /analysis auf. Platzieren Sie also alle ausführbaren Funktionen, die Sie in /analysis analysieren möchten. In dieser Option wird pmanalyze.py ausgeführt und generieren eine JSON -Datei im Verzeichnis /analysis .
Sobald Sie Dateien mit [1] analysiert und resultierende JSON -Dateien erstellt haben, werden sie als Wahl in der Option [2] angezeigt. Durch die Auswahl einer JSON -Datei in Option [2] migriert die Daten in Grakn.
Nachdem Sie Daten in Grakn haben, können Sie die Option [3] verwenden. Dies startet alle Skripte in /queries gegen den Schlüsselspace Ihrer Wahl. Wenn Sie Ihre eigenen Abfragemuster schreiben, werfen Sie sie einfach in /queries , und Option [3] wird sie ebenfalls ausgeführt.