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)
Parts of this tutorial were extracted from the Drozer documentation pdf.
Installa 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. |
payload | Gli exploit necessitano di un payload. |
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 di 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 **handleMessage
** funzione 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 cos'è 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 debuggeable 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)