In questo articolo andrò a spiegare passo passo come creare un sistema per analizzare le applicazioni Android, sia che si tratti di analisi statica/dinamica, sia per effetturare penetration test su di esse.
Io utilizzerò un sistema operativo Linux a 64 bit, in quanto raccomandato (ma non obbligatorio) per questo articolo. Se non lo avete potete creare una macchia virtuale (con VirtualBox) installando un qualsiasi sistema Linux. Per chi è alle prime armi consiglio Ubuntu. Ho avuto parecchi problemi ad installare AVD su macchine a 32 bit, per cui vi consiglio di sceglierle a 64 bit. Dò per scontato che il sistema abbia Java installato, per chi non lo avesse il download si trova qui.
Disclaimer: l’interfaccia grafica è stata deprecata, la nuova guida per la creazione di un AVD è presente a questo indirizzo
Collegatevi ora all’indirizzo AndroidStudio e scaricate la versione che si adatta al vostro sistema operativo; nel mio caso utilizzerò la versione, appunto, per Linux.
Dopo averla installata, andando nella cartella d’installazione (/home/nomeutente/Android/Sdk/tools/) bisognerà aprire il file android, il quale ci permetterà di installare i pacchetti e gli aggiornamenti che potranno servirci.
Scaricate la versione Android che preferite, io ne ho scelte un pò, ma potete scegliere quelle che volete. Finito il download e l’installazione andate sul menu a tendina in alto a sinstra, Tools–>Manage AVD. In questo modo potrete ricreare l’ambiente che volete testare per le applicazioni.
Se non viene rilevato nessun problema, il dispositivo è pronto per essere avviato
Al momento non so quale applicazione Android andrò ad analizzare nei prossimi articoli, ma alcune che potete già scaricare sono:
Nel caso ne conosceste altre, contattatemi e provvederò ad aggiungerle alla lista.
adb è un tool per la gestione e il penetration testing di applicazioni. Si trova, preinstallato, nel pacchetto Android Studio. Per aprirlo basta andare nella cartella platform-tools ed eseguirlo da terminale
Per vedere i dispositivi attualmente caricati
root@kali:~/Android/Sdk/platform-tools# ./adb devices
List of devices attached
emulator-5554 device
Per prendere la shell del dispositivo online, il comando è invece
root@kali:~/Android/Sdk/platform-tools# ./adb shell
generic_x86:/ $ whoami
shell
Come potete vedere, non ho i permessi di root. Per averli, basta riavviare adb con il comando root:
Dopo che si è dentro il sistema, per vedere i pacchetti installati in esso, il comando è
generic_x86:/ # pm list packages
package:com.android.smoketest
package:com.android.cts.priv.ctsshim
package:com.example.android.livecubes
package:com.android.providers.telephony
. . . . . . .
I comandi sono due, push e pull.
Con push vengono copiati i file dal computer al sistema. L’utilizzo è, ad esempio
root@kali:~/Android/Sdk/platform-tools# ./adb push /root/Desktop/filedacopiare.png /data/local/tmp
Con pull, i dati vengono copiati dal sistema Android al computer. L’utilizzo è lo stesso di prima
Questi comandi sono utili quando abbiamo bisogno di file o applicazioni che scarichiamo dal nostro computer o, viceversa, abbiamo creato log da Android e vogliamo analizzarli sul nostro dispositivo.
Le modalità per avere un file Apk sono diverse, alcune sono:
Il funzionamento dell’ultimo è molto semplice:
Il comando è
./adb install nomeapplicazione
Quindi, con l’app appena scaricata
root@kali:~/Android/Sdk/platform-tools# ./adb install com.roidapp.photogrid.apk
Success
Penso e spero di aver introdotto i maggiori comandi per gestire un Android virtuale sul proprio computer. Penso che non passerò, per ora, ad IOS perchè non ne conosco l’architettura e neanche il linguaggio con cui sono scritte le applicazioni. Nei prossimi articoli passeremo ad introdurre l’architettura Android e più avanti il penetration testing su mobile.