fonte https://hacktips.it/analizzare-applicazioni-mobile-drozer/#
Drozer è un framework sviluppato dai laboratori MWR, utilizzato per testare e rilevare vulnerabilità in un applicazione o dispositivo mobile. Esso è uno dei software più utilizzati per analisi dinamiche, exploits remoti o locali e per uno dei suoi punti chiave, ossia l’utilizzo dei meccanismi IPC che interagiscono con il sistema operativo.
Installazione
Dopo aver scaricato la versione del software compatibile con il vostro computer e l’app di testing, avviate il vostro smartphone virtuale e, con adb, installate l’applicazione di prova
Una volta installata, bisogna eseguirla e attivarla direttamente nello smartphone
Dopo averlo avviata, i comandi da eseguire nel terminale sono
./adb forward tcp:31415 tcp:31415
il quale permette l’ascolto al server di Drozer e
drozer console connect
che avvierà direttamente Drozer
Moduli
[Nota: per questo articolo utilizzerò InsecureBank, app apposita per imparare il pentesting di applicazioni mobile]
Come molti altri framework, Drozer ha decine di diversi moduli utilizzabili per l’analisi di applicazioni. Per vederli, basta digitare list
dz> list app.activity.forintent Find activities that can handle the given intent app.activity.info Gets information about exported activities. app.activity.start Start an Activity app.broadcast.info Get information about broadcast receivers app.broadcast.send Send broadcast using an intent app.broadcast.sniff Register a broadcast receiver that can sniff particular intents app.package.attacksurface Get attack surface of package app.package.backup Lists packages that use the backup API (returns true on FLAG_ALLOW_BACKUP) app.package.debuggable Find debuggable packages app.package.info Get information about installed packages app.package.launchintent Get launch intent of package app.package.list List Packages ............
Informazioni sui pacchetti
Il modulo “padre” delle informazioni sui pacchetti è app.package.*. Esso ha al suo interno diversi altri moduli, come list, manifest o info.
Per cercare se un’applicazione è installata basta digitare run app.package.list seguito dal comando di ricerca
dz> run app.package.list -f bank com.android.insecurebankv2 (InsecureBankv2)
Una volta trovato il nome dell’applicazione, controllo i permessi
Come già detto nel precedente articolo, se non si capisse cosa fa un determinato permesso, è possibile cercarlo in questa lista.
Per una visione più chiara dei permessi è anche possibile eseguire il comando manifest, il quale visualizza il file AndroidManifest.xml dell’applicazione selezionata
dz> run app.package.manifest com.android.insecurebankv2
Identificare l’attacco
Per identificare i processi da attaccare bisogna prima di tutto capire quali sono e in che componenti l’applicazione può essere scomposta. Per fare ciò, digitiamo il comando
dz> run app.package.attacksurface com.android.insecurebankv2 Attack Surface: 5 activities exported 1 broadcast receivers exported 1 content providers exported 0 services exported
Come si può vedere, Drozer ha esportato cinque attività, un broadcast receiver e un content provider. Un’applicazione “esporta” una serie di attività per renderle disponibili al sistema, all’utente o ad altre applicazioni.
Ora possiamo vedere quali sono queste attività esportate con il comando
dz> run app.activity.info -a com.android.insecurebankv2 Package: com.android.insecurebankv2 com.android.insecurebankv2.LoginActivity Permission: null com.android.insecurebankv2.PostLogin Permission: null com.android.insecurebankv2.DoTransfer Permission: null com.android.insecurebankv2.ViewStatement Permission: null com.android.insecurebankv2.ChangePassword Permission: null
Avviando una delle attività con il comando
dz> run app.activity.start --component com.android.insecurebankv2 com.android.insecurebankv2.PostLogin
possiamo eseguire una singola attività senza passare dalle altre. Un applicazione con i dovuti controlli darà probabilmente la possibilità di accedere all’attività prescelta, ma eseguendo altri comandi è probabile che crashi.
Lettura dei contenuti
Oltre alle attività, vengono esportati, se presenti, anche i contenuti locali dell’applicazione. Per poterli leggere, il comando è
dz> run app.provider.info -a com.android.insecurebankv2 Package: com.android.insecurebankv2 Authority: com.android.insecurebankv2.TrackUserContentProvider Read Permission: null Write Permission: null Content Provider: com.android.insecurebankv2.TrackUserContentProvider Multiprocess Allowed: False Grant Uri Permissions: False
Come si può notare, nessun permesso è richiesto per leggere i contenuti, quindi nel caso di dati salvati in locale (come i dati di accesso) sarà possibile leggerli senza nessun problema. Un altro comando permette di verificare ciò, stampando anche le cartelle che possono essere lette o no
Nel caso fossero accessibili, possiamo provare a leggere questi dati sempre tramite Drozer. Il comando è
dz> run app.provider.query content://com.android.insecurebankv2.TrackUserContentProvider/trackerusers/ | id | name |
Ovviamente in questo caso l’applicazione testata è vuota, ma se avvesse degli account, avremmo già avuto i dati di autenticazione.
Conclusioni
Per chi conoscesse Metasploit, avrà già notato molte somiglianze. Drozer funziona in modo molto simile, e, anche se non ha centinaia di moduli, è utilissimo per analisi dinamiche preliminari, e per trovare vulnerabilità che saltano all’occhio. Per chi vuole approfondire, la guida è ottima, con esempio compiuti su un’applicazione di testing.