Objection Tutorial
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Bug bounty tip: melden Sie sich an für Intigriti, eine Premium-Bug-Bounty-Plattform, die von Hackern für Hacker erstellt wurde! Treten Sie uns bei unter https://go.intigriti.com/hacktricks heute und beginnen Sie, Belohnungen von bis zu $100,000 zu verdienen!
objection - Runtime Mobile Exploration
Objection ist ein Toolkit zur runtime mobilen Erkundung, unterstützt von Frida. Es wurde mit dem Ziel entwickelt, mobile Anwendungen und deren Sicherheitslage zu bewerten, ohne dass ein jailbreak- oder gerootetes mobiles Gerät erforderlich ist.
Hinweis: Dies ist keine Form von Jailbreak / Root-Bypass. Durch die Verwendung von objection
sind Sie weiterhin durch alle Einschränkungen, die durch die anwendbare Sandbox auferlegt werden, eingeschränkt.
Das Ziel von objection ist es, dem Benutzer zu ermöglichen, die Hauptaktionen, die Frida bietet, aufzurufen. Andernfalls muss der Benutzer ein einzelnes Skript für jede Anwendung erstellen, die er testen möchte.
Für dieses Tutorial werde ich die APK verwenden, die Sie hier herunterladen können:
Oder aus dem originalen Repository (app-release.apk herunterladen)
Stellen Sie eine reguläre ADB-Verbindung her und starten Sie den frida-Server auf dem Gerät (und überprüfen Sie, ob frida sowohl auf dem Client als auch auf dem Server funktioniert).
Wenn Sie ein gerootetes Gerät verwenden, müssen Sie die Anwendung auswählen, die Sie im --gadget-Option testen möchten. In diesem Fall:
Nicht alle möglichen Befehle von Objection werden in diesem Tutorial aufgelistet, nur die, die ich als nützlicher empfunden habe.
Einige interessante Informationen (wie Passwörter oder Pfade) könnten in der Umgebung gefunden werden.
In einer echten Anwendung sollten wir alle Informationen, die in diesem Teil entdeckt wurden, kennen, bevor wir objection verwenden, dank statischer Analyse. Auf jeden Fall kannst du auf diese Weise vielleicht etwas Neues sehen, da du hier nur eine vollständige Liste von Klassen, Methoden und exportierten Objekten haben wirst.
Dies ist auch nützlich, wenn du aus irgendeinem Grund nicht in der Lage bist, lesbaren Quellcode der App zu erhalten.
Frida wird einen Fehler auslösen, wenn nichts gefunden wird
Lass uns anfangen, nach Klassen in unserer Anwendung zu suchen.
Jetzt extrahieren wir die Methoden innerhalb der Klasse MainActivity:
Lass uns herausfinden, welche Parameter die Methoden der Klasse benötigen:
Sie können auch alle Klassen auflisten, die in der aktuellen Anwendung geladen wurden:
Das ist sehr nützlich, wenn Sie die Methode einer Klasse hooken möchten und nur den Namen der Klasse kennen. Sie könnten diese Funktion verwenden, um zu suchen, welches Modul die Klasse besitzt und dann ihre Methode zu hooken.
Aus dem Quellcode der Anwendung wissen wir, dass die Funktion sum() von MainActivity jede Sekunde ausgeführt wird. Lassen Sie uns versuchen, alle möglichen Informationen jedes Mal zu dumpen, wenn die Funktion aufgerufen wird (Argumente, Rückgabewert und Backtrace):
Tatsächlich finde ich alle Methoden der Klasse MainActivity wirklich interessant, lass uns alle hooken. Sei vorsichtig, das könnte eine Anwendung zum Absturz bringen.
Wenn Sie mit der Anwendung spielen, während die Klasse gehookt ist, werden Sie sehen, wann jede Funktion aufgerufen wird, ihre Argumente und den Rückgabewert.
Aus dem Quellcode können Sie sehen, dass die Funktion checkPin einen String als Argument erhält und einen boolean zurückgibt. Lassen Sie uns die Funktion immer true zurückgeben:
Jetzt, wenn Sie irgendetwas im Textfeld für den PIN-Code eingeben, werden Sie sehen, dass alles gültig ist:
Suchen und drucken Sie lebende Instanzen einer bestimmten Java-Klasse, die durch einen vollqualifizierten Klassennamen angegeben ist. Das Ergebnis ist der Versuch, einen String-Wert für eine entdeckte Objection zu erhalten, die typischerweise Eigenschaftswerte für das Objekt enthalten würde.
Sie können mit dem Keystore und Intents spielen, indem Sie:
Am Ende der Liste kannst du frida sehen:
Lass uns überprüfen, was frida exportiert:
Du kannst auch im Speicher mit objection suchen und schreiben:
Sie können den Befehl sqlite
verwenden, um mit SQLite-Datenbanken zu interagieren.
Die Hooking-Methoden stürzen manchmal die Anwendung ab (das liegt auch an Frida).
Du kannst die Instanzen der Klassen nicht verwenden, um Funktionen der Instanz aufzurufen. Und du kannst keine neuen Instanzen von Klassen erstellen und sie verwenden, um Funktionen aufzurufen.
Es gibt keinen Shortcut (wie den für sslpinnin), um alle gängigen Krypto-Methoden, die von der Anwendung verwendet werden, zu hooken, um verschlüsselten Text, Klartext, Schlüssel, IVs und verwendete Algorithmen zu sehen.
Bug-Bounty-Tipp: Melde dich an bei Intigriti, einer Premium-Bug-Bounty-Plattform, die von Hackern für Hacker erstellt wurde! Schließe dich uns heute an unter https://go.intigriti.com/hacktricks und beginne, Belohnungen von bis zu $100.000 zu verdienen!
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)