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.
Installazione Android Manager
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.

Android SDK Manager
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.

Menu per creare un nuovo dispositivo virtuale
Se non viene rilevato nessun problema, il dispositivo è pronto per essere avviato

Dispositivo Android virtuale
Applicazioni vulnerabili
Al momento non so quale applicazione Android andrò ad analizzare nei prossimi articoli, ma alcune che potete già scaricare sono:
- OWASP GoatDroid: ambiente completo per imparare la sicurezza nel mondo Android. A quanto pare sembra un progetto poco seguito ad oggi;
- AndroidInsecureBank: applicazione vulnerabile da poter sfruttare e penetrare;
- DIVA Android: Dannata Insicura e Vulnerabile Applicazione per Android.
Nel caso ne conosceste altre, contattatemi e provvederò ad aggiungerle alla lista.
Comandi principali di ADB
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

Help di ADB
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:

Shell con i permessi di 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 . . . . . . .
Spostare file tra Android e Computer
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

Esempio di push
Con pull, i dati vengono copiati dal sistema Android al computer. L’utilizzo è lo stesso di prima

Esempio di pull
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.
Come scaricare un file Apk
Le modalità per avere un file Apk sono diverse, alcune sono:
- Collegarsi al sito APK Downloader ed inserire l’url dell’app (molte volte da errore);
- Scaricare e installare l’app di interesse sullo smartphone ed utilizzare un’altra app che estragga il file .apk (si trovano facilmente nello store);
- Utilizzare lo script Google Play Crawler.
Il funzionamento dell’ultimo è molto semplice:
- Modificate il file “crawler.conf” inserendo i vostri dati di autenticazione per google play. Sono necessasi solo email, password e Android ID. Per reperire quest’ultimo, le possibilità sono diverse:
- Digitare *#*#8255#*#* sul proprio smartphone;
- Scaricare un’applicazione come “Device ID” che ritorna il valore dello stesso.
- Digitate java -jar googleplaycrawler-0.3.jar -f crawler.conf download nomeapplicazione.

Ricerca e download di un applicazione
Installare applicazione su AVD
Il comando è
./adb install nomeapplicazione
Quindi, con l’app appena scaricata
root@kali:~/Android/Sdk/platform-tools# ./adb install com.roidapp.photogrid.apk Success
Conclusioni
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.