Drozer 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: 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!
Sieve (da mrwlabs)
Parti di questo tutorial sono state estratte dalla documentazione pdf di Drozer.
Installa il Drozer Client all'interno del tuo host. Scaricalo dalle ultime versioni.
Scarica e installa l'APK di drozer dalle ultime versioni. In questo momento è questo.
L'Agent è in esecuzione sulla porta 31415, dobbiamo inoltrare la porta per stabilire la comunicazione tra il Drozer Client e l'Agent, qui c'è il comando per farlo:
Infine, lancia l'applicazione e premi il pulsante "ON"
E connettiti ad essa:
Comandi
Descrizione
Help MODULE
Mostra l'aiuto del modulo selezionato
list
Mostra un elenco di tutti i moduli drozer che possono essere eseguiti nella sessione corrente. Questo nasconde i moduli per cui non hai le autorizzazioni appropriate per eseguire.
shell
Avvia una shell Linux interattiva sul dispositivo, nel contesto dell'Agente.
clean
Rimuove i file temporanei memorizzati da drozer sul dispositivo Android.
load
Carica un file contenente comandi drozer ed eseguili in sequenza.
module
Trova e installa moduli drozer aggiuntivi da Internet.
unset
Rimuove una variabile nominata che drozer passa a qualsiasi shell Linux che genera.
set
Memorizza un valore in una variabile che sarà passato come variabile ambientale a qualsiasi shell Linux generata da drozer.
shell
Avvia una shell Linux interattiva sul dispositivo, nel contesto dell'Agente
run MODULE
Esegui un modulo drozer
exploit
Drozer può creare exploit da eseguire nel dispositivo. drozer exploit list
payload
Gli exploit necessitano di un payload. drozer payload list
Trova il nome del pacchetto filtrando per parte del nome:
Informazioni di base del pacchetto:
Leggi Manifest:
Superficie di attacco del pacchetto:
Attività: Forse puoi avviare un'attività e bypassare qualche tipo di autorizzazione che dovrebbe impedirti di lanciarla.
Fornitori di contenuti: Forse puoi accedere a dati privati o sfruttare qualche vulnerabilità (SQL Injection o Path Traversal).
Servizi:
è debuggabile: Scopri di più
Il valore “android:exported” di un componente attività esportato è impostato su “true” nel file AndroidManifest.xml:
Elenco delle attività esportate:
Avvia attività:
Forse puoi avviare un'attività e bypassare qualche tipo di autorizzazione che dovrebbe impedirti di lanciarla.
Puoi anche avviare un'attività esportata da adb:
PackageName è com.example.demo
Exported ActivityName è com.example.test.MainActivity
Questo post era troppo grande per essere qui, quindi puoi accederci nella sua pagina qui.
Un servizio esportato è dichiarato all'interno del Manifest.xml:
All'interno del codice controlla la funzione **handleMessage
** che riceverà il messaggio:
Dai un'occhiata all'aiuto di drozer per app.service.send
:
Nota che invierai prima i dati all'interno di "msg.what", poi "msg.arg1" e "msg.arg2", dovresti controllare all'interno del codice quali informazioni vengono utilizzate e dove.
Utilizzando l'opzione --extra
puoi inviare qualcosa interpretato da "msg.replyTo", e usando --bundle-as-obj
crei un oggetto con i dettagli forniti.
Nell'esempio seguente:
what == 2354
arg1 == 9234
arg2 == 1
replyTo == object(string com.mwr.example.sieve.PIN 1337)
Nella sezione informazioni di base di Android puoi vedere cosa è un Broadcast Receiver.
Dopo aver scoperto questi Broadcast Receivers dovresti controllare il codice di essi. Fai particolare attenzione alla funzione onReceive
poiché gestirà i messaggi ricevuti.
In questo esempio, abusando del FourGoats apk Content Provider, puoi inviare un SMS arbitrario a qualsiasi destinazione non premium senza chiedere il permesso all'utente.
Se leggi il codice, i parametri "phoneNumber" e "message" devono essere inviati al Content Provider.
Un APK di produzione non dovrebbe mai essere debuggeable. Questo significa che puoi attaccare un debugger java all'applicazione in esecuzione, ispezionarla in tempo reale, impostare punti di interruzione, procedere passo dopo passo, raccogliere valori delle variabili e persino modificarli. L'InfoSec institute ha un ottimo articolo su come approfondire quando la tua applicazione è debuggeable e iniettare codice in tempo di esecuzione.
Quando un'applicazione è debuggeable, apparirà nel Manifest:
Puoi trovare tutte le applicazioni debuggeabili con Drozer:
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!
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)