Objection Tutorial

Erfahren Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Bug-Bounty-Tipp: Melden Sie sich an bei Intigriti, einer Premium-Bug-Bounty-Plattform, die von Hackern für Hacker erstellt wurde! Treten Sie noch heute bei https://go.intigriti.com/hacktricks bei und beginnen Sie, Prämien von bis zu 100.000 $ zu verdienen!

Einführung

objection - Laufzeitmobile Exploration

Objection ist ein Toolkit für die Laufzeitmobile-Exploration, das von Frida unterstützt wird. Es wurde mit dem Ziel entwickelt, die Sicherheitslage von mobilen Anwendungen zu bewerten, ohne dass ein gejailbreaktes oder gerootetes Mobilgerät erforderlich ist.

Hinweis: Dies ist keine Art von Jailbreak-/Root-Umgehung. Durch die Verwendung von objection sind Sie immer noch durch alle Beschränkungen eingeschränkt, die von der jeweiligen Sandbox auferlegt werden.

Zusammenfassung

Das Ziel von objection ist es, dem Benutzer das Aufrufen der Hauptaktionen, die Frida bietet, zu ermöglichen. Andernfalls müsste der Benutzer für jede Anwendung, die er testen möchte, ein einzelnens Skript erstellen.

Tutorial

Für dieses Tutorial werde ich die APK verwenden, die Sie hier herunterladen können:

Oder von seinem ursprünglichen Repository (App-Release.apk herunterladen)

Installation

pip3 install objection

Verbindung

Stellen Sie eine normale ADB-Verbindung her und starten Sie den Frida-Server auf dem Gerät (und überprüfen Sie, ob Frida sowohl im Client als auch im Server funktioniert).

Wenn Sie ein gerootetes Gerät verwenden, müssen Sie die Anwendung auswählen, die Sie im --gadget -Parameter testen möchten. In diesem Fall:

frida-ps -Uai
objection --gadget asvid.github.io.fridaapp explore

Grundlegende Aktionen

Nicht alle möglichen Befehle von Objection werden in diesem Tutorial aufgelistet, nur diejenigen, die ich am nützlichsten gefunden habe.

Umgebung

Einige interessante Informationen (wie Passwörter oder Pfade) könnten in der Umgebung gefunden werden.

env

Frida Informationen

frida

Hochladen/Herunterladen

file download <remote path> [<local path>]
file upload <local path> [<remote path>]

Frühere frida-Skript einbinden

import <local path frida-script>

SSL-Pinning

android sslpinning disable #Attempts to disable SSL Pinning on Android devices.

Root-Erkennung

android root disable  #Attempts to disable root detection on Android devices.
android root simulate #Attempts to simulate a rooted Android environment.

Ausführen von Befehlen

android shell_exec whoami

Bildschirmfotos

android ui screenshot /tmp/screenshot
android ui FLAG_SECURE false  #This may enable you to take screenshots using the hardware keys

Statische Analyse wird dynamisch

In einer echten Anwendung sollten wir alle Informationen, die in diesem Teil entdeckt wurden, dank der statischen Analyse kennen, bevor wir Objection verwenden. Trotzdem können Sie auf diese Weise vielleicht etwas Neues sehen, da Sie hier nur eine vollständige Liste von Klassen, Methoden und exportierten Objekten haben.

Dies ist auch nützlich, wenn Sie aus irgendeinem Grund keinen lesbaren Quellcode der App erhalten können.

Auflisten von Aktivitäten, Empfängern und Diensten

android hooking list activities
android hooking list services
android hooking list receivers

Frida wird einen Fehler anzeigen, wenn keiner gefunden wird

Aktuelle Aktivität abrufen

android hooking get current_activity

Klassen suchen

Lassen Sie uns damit beginnen, nach Klassen innerhalb unserer Anwendung zu suchen.

android hooking search classes asvid.github.io.fridaapp

Suchmethoden einer Klasse suchen

Extrahieren wir nun die Methoden innerhalb der Klasse MainActivity:

android hooking search methods asvid.github.io.fridaapp MainActivity

Auflisten deklarierter Methoden einer Klasse mit ihren Parametern

Lassen Sie uns herausfinden, welche Parameter die Methoden der Klasse benötigen:

android hooking list class_methods asvid.github.io.fridaapp.MainActivity

Klassen auflisten

Sie könnten auch alle Klassen auflisten, die in der aktuellen Anwendung geladen wurden:

android hooking list classes #List all loaded classes, As the target application gets usedmore, this command will return more classes.

Dies 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 herauszufinden, welches Modul die Klasse besitzt und dann ihre Methode zu hooken.

Das Hooken ist einfach

Hooken (Überwachen) einer Methode

Aus dem Quellcode der Anwendung wissen wir, dass die Funktion sum() von MainActivity jede Sekunde ausgeführt wird. Versuchen wir, jedes Mal alle möglichen Informationen zu dumpen, wenn die Funktion aufgerufen wird (Argumente, Rückgabewert und Backtrace):

android hooking watch class_method asvid.github.io.fridaapp.MainActivity.sum --dump-args --dump-backtrace --dump-return

Hooking (watching) an entire class

Eigentlich finde ich alle Methoden der Klasse MainActivity wirklich interessant, lass uns sie alle hooken. Sei vorsichtig, das könnte eine Anwendung zum Absturz bringen.

android hooking watch class asvid.github.io.fridaapp.MainActivity --dump-args --dump-return

Wenn Sie mit der Anwendung spielen, während die Klasse gehookt ist, sehen Sie, wann jede Funktion aufgerufen wird, ihre Argumente und den Rückgabewert.

Ändern des booleschen Rückgabewerts einer Funktion

Aus dem Quellcode können Sie sehen, dass die Funktion checkPin ein String als Argument erhält und einen boolean zurückgibt. Lassen Sie die Funktion immer true zurückgeben:

Nun, wenn Sie etwas in das Textfeld für den PIN-Code eingeben, sehen Sie, dass alles gültig ist:

Klasseninstanzen

Suchen und drucken Sie live Instanzen einer bestimmten Java-Klasse aus, die durch einen voll qualifizierten Klassennamen angegeben ist. Out ist das Ergebnis eines Versuchs, einen Zeichenfolgenwert für einen entdeckten Einwand zu erhalten, der typischerweise Eigenschaftswerte für das Objekt enthalten würde.

android heap print_instances <class>

Keystore/Intents

Sie können mit dem Keystore und Intents spielen, indem Sie:

android keystore list
android intents launch_activity
android intent launch_service

Speicher

Dump

memory dump all <local destination> #Dump all memory
memory dump from_base <base_address> <size_to_dump> <local_destination> #Dump a part

Liste

memory list modules

Am unteren Ende der Liste können Sie frida sehen:

Lassen Sie uns überprüfen, was frida exportiert:

Suche/Schreiben

Sie können auch im Speicher suchen und mit Objection schreiben:

memory search "<pattern eg: 41 41 41 ?? 41>" (--string) (--offsets-only)
memory write "<address>" "<pattern eg: 41 41 41 41>" (--string)

SQLite

Sie können den Befehl sqlite verwenden, um mit SQLite-Datenbanken zu interagieren.

Exit

exit

Was mir in Objection fehlt

  • Die Hooking-Methoden lassen die Anwendung manchmal abstürzen (das liegt auch an Frida).

  • Sie können die Instanzen der Klassen nicht verwenden, um Funktionen der Instanz aufzurufen. Und Sie können keine neuen Instanzen von Klassen erstellen und verwenden, um Funktionen aufzurufen.

  • Es gibt keine Abkürzung (wie die für sslpinnin), um alle gängigen Kryptomethoden, die von der Anwendung verwendet werden, zu hooken, um verschlüsselten Text, Klartext, Schlüssel, IVs und verwendete Algorithmen zu sehen.

Bug-Bounty-Tipp: Melden Sie sich an bei Intigriti, einer Premium-Bug-Bounty-Plattform, die von Hackern für Hacker erstellt wurde! Treten Sie uns unter https://go.intigriti.com/hacktricks bei und beginnen Sie noch heute, Prämien von bis zu $100.000 zu verdienen!

Erlernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Last updated