Objection Tutorial

Impara l'hacking di AWS da zero a eroe con htARTE (Esperto Red Team AWS di HackTricks)!

Altri modi per supportare HackTricks:

Suggerimento per il bug bounty: iscriviti a Intigriti, una piattaforma premium per bug bounty creata da hacker, per hacker! Unisciti a noi su https://go.intigriti.com/hacktricks oggi e inizia a guadagnare taglie fino a $100,000!

Introduzione

objection - Esplorazione Mobile in Runtime

Objection è un toolkit di esplorazione mobile in runtime, alimentato da Frida. È stato creato con l'obiettivo di aiutare a valutare le applicazioni mobili e la loro postura di sicurezza senza la necessità di un dispositivo mobile jailbroken o con permessi di root.

Nota: Questo non è una forma di bypass di jailbreak / root. Utilizzando objection, sei comunque limitato da tutte le restrizioni imposte dal sandbox applicabile che stai affrontando.

Riassunto

L'obiettivo di objection è consentire all'utente di chiamare le azioni principali offerte da Frida. Altrimenti, l'utente dovrà creare uno script separato per ogni applicazione che desidera testare.

Tutorial

Per questo tutorial userò l'APK che puoi scaricare qui:

O dal suo repository originale (scarica app-release.apk)

Installazione

pip3 install objection

Connessione

Effettua una connessione ADB regolare e avvia il server frida sul dispositivo (e verifica che frida funzioni sia nel client che nel server).

Se stai utilizzando un dispositivo con root, è necessario selezionare l'applicazione che desideri testare all'interno dell'opzione --gadget. in questo caso:

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

Azioni di Base

Non tutti i comandi possibili di Objection verranno elencati in questo tutorial, solo quelli che ho trovato più utili.

Ambiente

Alcune informazioni interessanti (come password o percorsi) potrebbero essere trovate all'interno dell'ambiente.

env

Informazioni su Frida

frida

Caricamento/Scaricamento

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

Importa lo script di frida

import <local path frida-script>

SSLPinning

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

Rilevamento del root

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

Comando Exec

android shell_exec whoami

Schermate

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

Analisi statica resa dinamica

In un'applicazione reale dovremmo conoscere tutte le informazioni scoperte in questa parte prima di utilizzare objection grazie all'analisi statica. Comunque, in questo modo forse potrai vedere qualcosa di nuovo poiché qui avrai solo un elenco completo di classi, metodi e oggetti esportati.

Questo è anche utile se in qualche modo non riesci a ottenere del codice sorgente leggibile dell'applicazione.

Elenca attività, ricevitori e servizi

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

Frida lancerà un errore se nessuna attività viene trovata

Ottenere l'attività corrente

android hooking get current_activity

Cerca Classi

Iniziamo a cercare le classi all'interno della nostra applicazione

android hooking search classes asvid.github.io.fridaapp

Metodi di ricerca di una classe

Ora estraiamo i metodi all'interno della classe MainActivity:

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

Elenco dei metodi dichiarati di una classe con i relativi parametri

Scopriamo di quali parametri hanno bisogno i metodi della classe:

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

Elenco delle classi

È possibile anche elencare tutte le classi che sono state caricate all'interno dell'applicazione corrente:

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

Questo è molto utile se vuoi agganciare il metodo di una classe e conosci solo il nome della classe. Potresti usare questa funzione per cercare quale modulo possiede la classe e poi agganciare il suo metodo.

Facilità nell'agganciare

Agganciare (osservare) un metodo

Dal codice sorgente dell'applicazione sappiamo che la funzione sum() di MainActivity viene eseguita ogni secondo. Proviamo a dumpare tutte le informazioni possibili ogni volta che la funzione viene chiamata (argomenti, valore di ritorno e backtrace):

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

Hooking (watching) an entire class

In realtà trovo tutti i metodi della classe MainActivity molto interessanti, vediamo hookarli tutti. Fai attenzione, questo potrebbe far crashare un'applicazione.

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

Se giochi con l'applicazione mentre la classe è agganciata, vedrai quando viene chiamata ogni funzione, i suoi argomenti e il valore di ritorno.

Cambiare il valore di ritorno booleano di una funzione

Dal codice sorgente puoi vedere che la funzione checkPin riceve una Stringa come argomento e restituisce un booleano. Facciamo in modo che la funzione restituisca sempre true:

Ora, se scrivi qualcosa nella casella di testo per il codice PIN, vedrai che qualsiasi cosa è valida:

Istanze di classe

Cerca e stampa istanze attive di una specifica classe Java, specificata da un nome di classe completamente qualificato. Out è il risultato di un tentativo di ottenere un valore di stringa per un'obiezione scoperta che tipicamente contiene valori delle proprietà per l'oggetto.

android heap print_instances <class>

Keystore/Intents

Puoi giocare con il keystore e gli intents usando:

android keystore list
android intents launch_activity
android intent launch_service

Memoria

Dump

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

Elenco

memory list modules

In fondo alla lista puoi vedere frida:

Controlliamo cosa sta esportando frida:

Ricerca/Scrittura

Puoi anche cercare e scrivere nella memoria con objection:

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

SQLite

Puoi utilizzare il comando sqlite per interagire con i database sqlite.

Exit

exit

Cosa manca in Objection

  • I metodi di hooking a volte fanno crashare l'applicazione (questo è anche a causa di Frida).

  • Non è possibile utilizzare le istanze delle classi per chiamare le funzioni dell'istanza. E non è possibile creare nuove istanze di classi e usarle per chiamare funzioni.

  • Non esiste una scorciatoia (come quella per sslpinnin) per hookare tutti i metodi crittografici comuni utilizzati dall'applicazione per vedere testo cifrato, testo in chiaro, chiavi, IV e algoritmi utilizzati.

Suggerimento per bug bounty: iscriviti a Intigriti, una piattaforma premium per bug bounty creata da hacker, per hacker! Unisciti a noi su https://go.intigriti.com/hacktricks oggi e inizia a guadagnare taglie fino a $100,000!

Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

Last updated