Creare sistema ad-hoc per analizzare applicazioni Android

Tempo di lettura: 7 minuti
Data pubblicazione: December 12, 2016

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
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
Menu per creare un nuovo dispositivo virtuale

Se non viene rilevato nessun problema, il dispositivo è pronto per essere avviato

Dispositivo Android virtuale
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
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
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
Esempio di push

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

Esempio di pull
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:

  1. Collegarsi al sito APK Downloader ed inserire l’url dell’app (molte volte da errore);
  2. Scaricare e installare l’app di interesse sullo smartphone ed utilizzare un’altra app che estragga il file _.apk  _(si trovano facilmente nello store);
  3. Utilizzare lo script Google Play Crawler.

Il funzionamento dell’ultimo è molto semplice:

  1. 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:
    1. Digitare ##8255## sul proprio smartphone;
    2. Scaricare un’applicazione come “Device ID” che ritorna il valore dello stesso.
  2. Digitate java -jar googleplaycrawler-0.3.jar -f crawler.conf download nomeapplicazione.
Ricerca e download di un applicazione
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.