Objection Tutorial
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: iscriviti a Intigriti, una premium bug bounty platform creata da hacker, per hacker! Unisciti a noi su https://go.intigriti.com/hacktricks oggi, e inizia a guadagnare bounty fino a $100,000!
Introduzione
objection - Esplorazione Mobile in Esecuzione
Objection è un toolkit di esplorazione mobile in esecuzione, alimentato da Frida. È stato costruito 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 rootato.
Nota: Questo non è una forma di jailbreak / bypass del 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 principali azioni che offre Frida. Altrimenti, l'utente dovrà creare un singolo script 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
Connection
Effettua una connessione ADB regolare e avvia il server frida nel dispositivo (e controlla che frida funzioni sia nel client che nel server).
Se stai utilizzando un dispositivo rootato, è necessario selezionare l'applicazione che desideri testare all'interno dell'opzione --gadget. in questo caso:
Azioni di Base
Non tutti i comandi possibili di objections saranno 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.
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F197708944-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FE5VfhVAq0qYsgU9deMR8%252Fuploads%252Fgit-blob-a15396d7921ec411dd889b31f1a518fda22f042c%252Fimage%2520%28220%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=68601591&sv=1)
Informazioni su Frida
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F197708944-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FE5VfhVAq0qYsgU9deMR8%252Fuploads%252Fgit-blob-9181a7d109dccb8412635a30668d8014b6631a5a%252Fimage%2520%281093%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=f999e9b1&sv=1)
Caricamento/Scaricamento
Importa lo script frida
SSLPinning
Rilevamento del root
Esegui Comando
Screenshot
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 potresti vedere qualcosa di nuovo poiché qui avrai solo un elenco completo di classi, metodi e oggetti esportati.
Questo è anche utile se in qualche modo sei incapace di ottenere del codice sorgente leggibile dell'app.
Elenca attività, ricevitori e servizi
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F197708944-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FE5VfhVAq0qYsgU9deMR8%252Fuploads%252Fgit-blob-7e07102b4e6f87e96c3cf4594a136d3590691ab7%252Fimage%2520%281016%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=63e4190d&sv=1)
Frida lancerà un errore se non ne viene trovata nessuna
Ottenere l'attività corrente
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F197708944-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FE5VfhVAq0qYsgU9deMR8%252Fuploads%252Fgit-blob-74a3163d5e09a99eb2f038694ec0dbfdcac1a99b%252Fimage%2520%28813%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=210e6e7d&sv=1)
Cerca Classi
Iniziamo a cercare classi all'interno della nostra applicazione.
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F197708944-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FE5VfhVAq0qYsgU9deMR8%252Fuploads%252Fgit-blob-1ee9326a975e60d9b89c0e3d5fe185992cbd3fcb%252Fimage%2520%28507%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=808db116&sv=1)
Metodi di ricerca di una classe
Ora estraiamo i metodi all'interno della classe MainActivity:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F197708944-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FE5VfhVAq0qYsgU9deMR8%252Fuploads%252Fgit-blob-1978dd558bcc997a2b44343ac7af9829143d0dcd%252Fimage%2520%28929%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=53533e7c&sv=1)
Elenca i metodi dichiarati di una classe con i loro parametri
Scopriamo quali parametri necessitano i metodi della classe:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F197708944-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FE5VfhVAq0qYsgU9deMR8%252Fuploads%252Fgit-blob-006ca9f28c8918e23f7d6a94dcbe93bc208cbad8%252Fimage%2520%28299%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=4f4ed33a&sv=1)
Elenca le classi
Puoi anche elencare tutte le classi che sono state caricate all'interno dell'applicazione corrente:
Questo è molto utile se vuoi agganciare il metodo di una classe e conosci solo il nome della classe. Puoi usare questa funzione per cercare quale modulo possiede la classe e poi agganciare il suo metodo.
Agganciare è facile
Agganciare (osservare) un metodo
Dal codice sorgente dell'applicazione sappiamo che la funzione sum() di MainActivity viene eseguita ogni secondo. Proviamo a estrarre tutte le informazioni possibili ogni volta che la funzione viene chiamata (argomenti, valore di ritorno e backtrace):
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F197708944-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FE5VfhVAq0qYsgU9deMR8%252Fuploads%252Fgit-blob-b010358dd58a1b962e52a5c5cccc0ad3fe94e250%252Fimage%2520%281086%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=7f6b5696&sv=1)
Hooking (watching) an entire class
In realtà trovo tutti i metodi della classe MainActivity davvero interessanti, quindi hookiamoli tutti. Fai attenzione, questo potrebbe crashare un'applicazione.
Se giochi con l'applicazione mentre la classe è hookata, vedrai quando ogni funzione viene chiamata, i suoi argomenti e il valore di ritorno.
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F197708944-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FE5VfhVAq0qYsgU9deMR8%252Fuploads%252Fgit-blob-7db5cbb7b07bcb7fa428cbd450b13cd47f022997%252Fimage%2520%28861%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=2f2a54d2&sv=1)
Cambiare il valore di ritorno booleano di una funzione
Dal codice sorgente puoi vedere che la funzione checkPin riceve un String come argomento e restituisce un boolean. Facciamo in modo che la funzione restituisca sempre true:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F197708944-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FE5VfhVAq0qYsgU9deMR8%252Fuploads%252Fgit-blob-877c67db112f6e5b507630bf5f8ec5fc1620eb66%252Fimage%2520%28883%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=1f745a3d&sv=1)
Ora, se scrivi qualsiasi cosa nella casella di testo per il codice PIN, vedrai che qualsiasi cosa è valida:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F197708944-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FE5VfhVAq0qYsgU9deMR8%252Fuploads%252Fgit-blob-3e9c614b9566726b780aa8b994ffe0c333adf618%252Fimage%2520%28228%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=e080f950&sv=1)
Istanze di classe
Cerca e stampa istanze live di una specifica classe Java, specificata da un nome di classe completamente qualificato. Questo è il risultato di un tentativo di ottenere un valore stringa per un'obiezione scoperta che tipicamente contiene valori di proprietà per l'oggetto.
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F197708944-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FE5VfhVAq0qYsgU9deMR8%252Fuploads%252Fgit-blob-bc3c40e93d4448fb6cd7847a09def112744fe463%252Fimage%2520%281095%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=8a1bfa4e&sv=1)
Keystore/Intents
Puoi giocare con il keystore e gli intents usando:
Memoria
Dump
Elenco
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F197708944-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FE5VfhVAq0qYsgU9deMR8%252Fuploads%252Fgit-blob-2515a86824aeb76433556a4e4d4b9fcd51ba353a%252Fimage%2520%28286%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=24daab82&sv=1)
In fondo alla lista puoi vedere frida:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F197708944-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FE5VfhVAq0qYsgU9deMR8%252Fuploads%252Fgit-blob-ac353e4c43f8b5470e4ab7e2a302cbb0381340c4%252Fimage%2520%281097%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=92740bfc&sv=1)
Controlliamo cosa sta esportando frida:
![](https://book.hacktricks.xyz/~gitbook/image?url=https%3A%2F%2F197708944-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FE5VfhVAq0qYsgU9deMR8%252Fuploads%252Fgit-blob-2f8a8d54cec70561d458fa19b847e4c563761f1b%252Fimage%2520%28298%29.png%3Falt%3Dmedia&width=768&dpr=4&quality=100&sign=c4075cb3&sv=1)
Cerca/Scrivi
Puoi anche cercare e scrivere nella memoria con objection:
SQLite
Puoi utilizzare il comando sqlite
per interagire con i database sqlite.
Exit
Cosa mi manca in Objection
I metodi di hooking a volte fanno crashare l'applicazione (questo è anche a causa di Frida).
Non puoi usare le istanze delle classi per chiamare le funzioni dell'istanza. E non puoi creare nuove istanze delle classi e usarle per chiamare funzioni.
Non c'è 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.
Bug bounty tip: iscriviti a Intigriti, una premium bug bounty platform creata da hacker, per hacker! Unisciti a noi su https://go.intigriti.com/hacktricks oggi, e inizia a guadagnare bounty fino a $100,000!
Impara e pratica AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica GCP Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Last updated