Drozer Tutorial
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!
APKs to test
Sieve (da mrwlabs)
Parts of this tutorial were extracted from the Drozer documentation pdf.
Installation
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.
Avviare il Server
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 Interessanti
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. |
Pacchetto
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ù
Attività
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
Content Providers
Questo post era troppo grande per essere qui, quindi puoi accederci nella sua pagina qui.
Services
Un servizio esportato è dichiarato all'interno del Manifest.xml:
All'interno del codice controlla la **handleMessage
** funzione che riceverà il messaggio:
Elenco dei servizi
Interagire con un servizio
Esempio
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)
Broadcast Receivers
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.
Rileva tutti i broadcast receivers
Controlla i broadcast receiver di un'app
Broadcast Interazioni
Invia un messaggio
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.
È debuggeable
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:
Tutorials
More info
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!
Last updated