Dexcalibur ist ein Android Reverse Engineering -Plattform, der sich auf die Automatisierung der Instrumenten konzentriert. Seine Besonderheit ist es, die dynamische Analyse zur Verbesserung der statischen Analyseheuristik zu verwenden. Es zielt darauf ab, langweilige Aufgaben im Zusammenhang mit dynamischen Instrumenten zu automatisieren, wie z. B.:
Möchten Sie etwas teilen oder brauchen Sie Hilfe? Schließen Sie sich unseren offiziellen Chats an:
Telegramm - der schnellste Weg, um eine Antwort zu geben
Offizielle Dokumentation finden Sie hier (Website - Arbeiten in Arbeit).
Siehe die neuesten Nachrichten hier: http://docs.dexcalibur.org/news.html
DEXCALIBUR -Demo -Videos anzeigen: Demo: Weniger als 1 Minute, um 61 Methoden zu haken? Kein Problem. (YouTube)
Beitragen !
Zögern Sie nicht! Es gibt verschiedene Möglichkeiten, einen Beitrag zu leisten:
Gehen Sie zur Installation von Doc
Alternative: Verwenden Sie Docker
adb (und gegebenenfalls einen Android -Emulator)docker-compose build android-dexcaliburdocker run --rm -it --net=host -v /tmp/dexcalibur:/shared -p 8000:8000 dexcalibur:2023.01 /bin/bashFür Linux und MacOS
NPM -Installation: Wenn DexCalibur mit NPM ( -g -Option) global installiert wurde, kann Dexcalibur durch $ node $(node root -g dexcalibur)/dexcalibur/dexcalibur.js $ dexcalibur vom Terminal aus gestartet werden.
Installieren Sie aus Quelle: Aus dem Ordner dexcalibur werden $ dexcalibur oder $ node dexcalibur.js ausgeführt.
Für Fenster
NPM -Installation: Ereignis Wenn DexCalibur unter Verwendung von NPM ( -g ) global installiert ist, muss Dexcalibur vom Terminal aus dem folgenden Befehl aus einem node <NPM_ROOT>/dexcalibur/dexcalibur.js ausgelöst werden.
Installieren Sie von Quelle: Aus dem Ordner dexcalibur bis hin zum Terminal führen Sie den node dexcalibur.js aus.
Sie verwenden eine frühere Version von Dexcalibur?
Befolgen Sie die gleichen Schritte wie eine neue Installation. Wenn Sie den Arbeitsbereich Pfad eingeben sollten, geben Sie Ihren aktuellen Arbeitsbereichsort ein.
Nur mit:
$ npm install -g dexcalibur
Die vorhandene Konfiguration und der Arbeitsbereich werden automatisch erkannt.
Die folgenden Screenshots veranschaulichen das automatische Update von XREFs zur Laufzeit.
Tatsächlich ist die größte Einschränkung, dass Dexcalibur nicht in der Lage ist, den Quellcode der nativen Funktion zu generieren (in die JNI -Bibliothek). Sie können jedoch einen Frida -Interceptor manuell erklären, indem Sie einen Haken bearbeiten.
Unter der Annahme, dass Dexcalibur keine (momentan) Funktionen zur Analyse des nativen Teils wie der JNI -Bibliothek oder JNA bietet, wurden nur Merkmale und Einschränkungen im Zusammenhang mit dem Java -Teil detailliert.
Die Genauigkeit der Analyse hängt von der Vollständigkeit des Android -API -Bilds ab, das in frühen Schritten der Analyse verwendet wird. Das heißt, wenn Sie eine Dex -Datei verwenden, die aus der Android.jar -Datei von Android SDK generiert wird, könnten einige Verweise auf interne Methoden, Felder oder Klassen von Android Java API fehlen. Bessere Ergebnisse werden erzielt, wenn die Analyse mit einer "Boot.OAT" -Datei startet, die direkt aus einem realen Gerät extrahiert wird, das die erwartete Android -Version ausführt.
TODO: Text schreiben
TODO: Text schreiben
Verfolgte Verhaltensweisen
Der statische Analysator in "Run Smali (VM)" -Aktion ist in der Lage, das folgende Verhalten zu entdecken und zu akzeptieren, aber verfolgen:
Tatsächlich werden Handler/Zuhörer für solche ungültigen Anweisungen nicht unterstützt, aber Ereignisse werden verfolgt und gerendert.
Dexcalibur IR
Die VM erzeugt eine benutzerdefinierte und vereinfachte Zwischendarstellung (IR), die nur angezeigt wird, um Analyst bei der Durchführung seiner Analyse zu helfen .
Abhängig vom Wert der CallStack -Tiefe und -konfiguration kann IR eine Anweisung einbeziehen oder nicht, die in die genannte Funktion ausgeführt wird. Wenn die Ausführung in einen Try -Block eingeht und weiterhin zurückkehrt, aber niemals einen extra fangen, wird der Fangblock nicht gerendert. Tatsächlich ist es der Zweck von Dexcalibur IR, nur "das ausgeführt" zu rendern oder "das, was abhängig vom Wert eines Symbols" in einen VM -Kontext ausgeführt werden könnte.
Dexcalibur IR hilft beim Lesen einer gereinigten Version von Bytcode, indem nutzloses Goto und undurchsichtiges Prädikat entfernt werden. Dexcalibur IR kann durch die VM mit 2 vereinfachenden Ebenen erzeugt werden:
1st Level IR, könnte verwendet werden, wenn Sie nicht dem 2. Level IR vertrauen:
2. Stufe:
Android API Mock
Todo
Details
Smali VM folgt den Schritten:
Wie behandelt VM auf Incoke-* Anweisungen?
Manifestanalyse (begrenzt)
Vor dem ersten Lauf wird das Android -Manifest der Anwendung analysiert. Tatsächlich werden Anomalien in die offensichtliche solche unsichere Konfiguration auf dieser Ebene wirklich erkannt.
Der einzige Zweck von Android Manifest Parsing besteht darin, andere Arten von Analysatoren zu bevölkern.
Berechtigungsanalyse
Alle aus dem Manifest extrahierten Berechtigungen werden aufgeführt und identifiziert und mit der Android -Spezifikation der Ziel -Android -API -Version verglichen.
Dexcalibur bietet - nur in einigen Fällen - eine Beschreibung des Berechtigungszwecks, der minimalen Android -API -Version, ...
Aktivitätenanalyse
Analyse der Anbieter
Dienstleistungsanalyse
Empfängeranalyse
Netzwerküberwachung
Absichtsüberwachung
Dateizugriffsüberwachung
Sie können ein Multi-Benutzer-Menü nicht finden? Kein Problem, es gibt kein Menü, sondern eine minimalistische kollaborative Arbeit.
Dexcalibur führt einen Webserver aus. Wenn also mehrere Personen im selben Netzwerk dieses Webservers sind und wenn Host -Firewall gut konfiguriert ist, können Sie mehrere für die gleiche Dexcalibur -Instanz arbeiten.
Tatsächliche Einschränkungen sind:
Ein besonderer Dank geht an die Mitwirkenden:
Vorher, um tiefer zu gehen:
dexcalibur --reinstall gemacht haben? Wenn nein, versuchen Sie es. Überprüfen Sie zunächst, ob globale Einstellungen in <user_directory>/.dexcalibur/ gespeichert wurden/gespeichert wurden
$ ls -la ~/.dexcalibur
total 8
drwxr-xr-x 3 test_user staff 96 29 avr 11:41 .
drwxr-xr-x+ 87 test_user staff 2784 29 avr 11:47 ..
-rw-r--r-- 1 test_user staff 204 29 avr 11:41 config.json
$ cat ~/.dexcalibur/config.json
{
"workspace":"/Users/test_user/dexcaliburWS3",
"registry":"https://github.com/FrenchYeti/dexcalibur-registry/raw/master/",
"registryAPI":"https://api.github.com/repos/FrenchYeti/dexcalibur-registry/contents/"
}
Überprüfen Sie als nächstes, ob die Struktur des Dexcalibur -Arbeitsbereichs wie folgt ist (der Inhalt des /api -Ordners kann sich unterscheiden).
$ ls -la ~/dexcaliburWS/.dxc/*
/Users/test_user/dexcaliburWS/.dxc/api:
total 0
drwxr-xr-x 3 test_user staff 96 29 avr 11:41 .
drwxr-xr-x 7 test_user staff 224 29 avr 11:41 ..
drwxr-xr-x 8 test_user staff 256 29 avr 11:41 sdk_androidapi_29_google
/Users/test_user/dexcaliburWS/.dxc/bin:
total 34824
drwxr-xr-x 4 test_user staff 128 29 avr 11:41 .
drwxr-xr-x 7 test_user staff 224 29 avr 11:41 ..
-rwxr-xr-x 1 test_user staff 17661172 29 avr 11:41 apktool.jar
drwxr-xr-x 18 test_user staff 576 29 avr 11:41 platform-tools
/Users/test_user/dexcaliburWS/.dxc/cfg:
total 8
drwxr-xr-x 3 test_user staff 96 29 avr 11:41 .
drwxr-xr-x 7 test_user staff 224 29 avr 11:41 ..
-rw-r--r-- 1 test_user staff 314 29 avr 11:41 config.json
/Users/test_user/dexcaliburWS/.dxc/dev:
total 0
drwxr-xr-x 2 test_user staff 64 29 avr 11:41 .
drwxr-xr-x 7 test_user staff 224 29 avr 11:41 ..
/Users/test_user/dexcaliburWS/.dxc/tmp:
total 0
drwxr-xr-x 2 test_user staff 64 29 avr 11:41 .
drwxr-xr-x 7 test_user staff 224 29 avr 11:41 ..
Wenn Sie ein über USB angeschlossenes physisches Gerät verwenden, stellen Sie sicher, dass der Entwicklungsmodus und das USB -Debugging aktiviert sind.
Wenn Sie ein virtuelles Gerät verwenden, wechseln Sie zu /splash.html , wählen Sie Device Manager aus, klicken Sie Connect over TCP ... und befolgen Sie die Anweisungen. Wenn Sie nicht die IP -Adresse Ihres Geräts kennen, lassen Sie Dexcalibur diese durch automatic configuration des Kontrollkästchens erkennen.
Sie müssen das Zielgerät zuvor anmelden, um es verwenden zu können. Während der Registrierung sammeln Dexcalibur Gerätemetadaten und schieben Sie eine kompatible Version von Frida Server.
Solche Metadaten werden verwendet, um die rechten Frida-Server- und Frida-Gadget-Ziele auszuwählen.
Wenn ein rotes Ausrufezeichen ist ! Erscheint in einer Leitung in die Geräteliste, dann ist Ihr Desktop nicht vom Gerät zulässig. Sie müssen wahrscheinlich bestätigen
Wenn Ihr Gerät in DeviceManager aufgelistet ist und die online -Spalte überprüft wird, klicken Sie auf enroll
Wenn Ihr Gerät in DeviceManager aufgelistet ist und die online -Spalte überprüft wird, klicken Sie auf enroll
Dexcalibur -Version <v0.7 konnte das Gerät automatisch emuliert erkennen und aufgrund einer unvollständigen ADB -Ausgangsanalyse verwenden.
Da Version> = v0.7, sobald Ihr virtuelles Gerät ausgeführt wird, gehen Sie zu /splash.html oder klicken Sie auf DEXCALIBUR in die Navigationsleiste. Klicken Sie auf die Schaltfläche Device Manager im linken Menü und klicken Sie oben im Array auf die Schaltfläche Refresh .
Sie sollten eine Zeile mit der ADB -ID Ihres virtuellen Geräts haben.
Als jedes Zielgerät sollten Sie es zunächst anmelden.
Klicken Sie Connect over TCP ... um ein neues Gerät über TCP hinzuzufügen oder ein angemeldetes Gerät über TCP zu verbinden.
Wenn das Gerät noch nie eingeschrieben wurde, wird die Registrierung über TCP durchgeführt. In einigen Fällen ist die Verbindung über TCP langsamer als über USB. Die Anmeldung kann also zusätzliche Zeit in Anspruch nehmen.
Wenn das Gerät über USB eingeschlossen wurde, wird der neue bevorzugte Transporttyp für dieses Gerät zu TCP.
Erstellen Sie eine Pull -Anfrage für dieses Repository oder erstellen Sie ein Problem.
Erstellen Sie eine Pull-Anfrage zum Dexcalibur-Doc-Repository.
Die Dokumentation finden Sie hier (DOC -Website) und hier (Wiki)
![]() |
|---|
| Sie boten eine Lizenz für alle Produkte <3 an |
Es gibt tatsächlich nur wenige Dokumentation und Schulungsressourcen über Dexcalibur. Wenn Sie Dexcalibur erfolgreich verwendet haben, um die CTF -Herausforderung zu gewinnen oder Verwundbarkeit zu finden, ermutige ich Sie dringend, Ihre Erfahrungen zu teilen.