Android è ormai il sistema operativo più diffuso nei dispositivi mobile. È importante perciò valutare attentamente la sicurezza delle applicazioni Android che andiamo a installare o distribuire (nel caso fossimo sviluppatori). In questo articolo vedremo i passaggi preliminari per eseguire un penetration test di applicazioni Android e conoscere i principali tool utilizzati.
Vedremo:
- Come intercettare eventuali richieste verso servizi Internet, effettuate dal sistema Android/applicazione;
- Comandi e strumenti base di Android.
Per i punti sopra indicati avremo bisogno dei seguenti software:
- Emulatore Android;
- SDK Android;
- Burp Suite;
I primi due tool, l'SDK Android e l'emulatore Android vengono installati insieme. Se per motivi di performance non volete utilizzare l'emulatore fornito con l'SDK ufficiale, esistono anche altri emulatori, ma per questo breve tutorial ho utilizzato quello default Google. L'utilizzo dello smartphone per effettuare i test a volte è meno macchinoso. Senza dubbio, lo smartphone è molto più veloce dell'emulatore. Inoltre, l'emulatore ufficiale Android non ha di default installato il Google Play Services, servizio proprietario Google sul quale moltissime applicazioni si appoggiano per rendere il codice compatibile con le diverse versioni di Android. Infatti l'emulatore Android è fornito senza le Google Apps. L’emulatore Android e l'sdk sono scaricabili dal sito ufficiale. Una volta scaricato lo zip, eseguite il tool SDK manager per scaricare l’immagine Android sulla quale vorremo testare la nostra applicazione. Per eseguire l'SDK Manager, dovrete eseguire i seguenti comandi:
cd PATH_SDK_ANDROID
cd tools
chmoad a+x android
./android
Una volta aperto l'SDK manager, dovremo scaricare l'immagine Android su cui vorremo testare la nostra applicazione.
Nel mio caso ho scaricato la preview di Android L. Una volta terminato il download, per visualizzare le immagini Android disponibili, digitate il segeunte comando:
./android list targets
Esempio di output:
id: 1 or "android-L"
Name: Android L (Preview)
Type: Platform
API level: L
Revision: 2
Skins: HVGA, WXGA800, WQVGA400, WVGA854, WQVGA432, WXGA720, WXGA800-7in, QVGA, WSVGA, WVGA800 (default)
Tag/ABIs : default/armeabi-v7a
Ogni ID corrisponderà ad una immagine android disponibile. A questo punto per creare il nostro emulatore, basta digitare:
./android create avd -n AndroidL -t 1
Dove Android L indica il nome del nostro emulatore, mentre 1 l'id dell'immagine Android. A questo punto se tutto è andato a buon fine potremo vedere il nostro emulatore, digitando il seguente comando:
./android list avd
Ora, per lanciare il nostro emulatore, digitate:
./emulator -avd AndroidL
Dove AndroidL indica il nome del nostro emulatore scelto prima. In caso di crash dell'emulatore, controllate che esista il seguente file:
/etc/localtime
Per risolvere, nel caso il file non esista, basterà crearlo digitando il seguente comando:
sudo cp /usr/share/zoneinfo/Europe/Rome /etc/localtime
A questo punto, dovremmo avere l'SDK Android e l'emulatore funzionante. Per interagire con l'emulatore, utilizzeremo un tool chiamato adb.
ADB, acronimo di Android Debug Bridge è un toolkit, incluso nell’SDK di Android. Il tool adb ci permette di comunicare attraverso il nostro dispositivo dal nostro terminale.
Per accedere ad adb, dobbiamo cambiare cartella.
cd PATH_SDK_ANDROID
cd platform-tools
./adb
I comandi principali di adb sono i seguenti:
- adb shell
Ci permette di interagire attraverso il prompt dei comandi Android. - adb install
Ci permette di installare sul nostro dispositivo Android un file APK. - adb push
Ci permette di copiare un file dalla nostra macchina al dispositivo. - adb pull:
Ci permette di scaricare un file dal dispositivo sul nostro pc. - adb logcat
Ci permette di vedere i log nella nostra console.
Nel nostro caso, andremo ad installare sul nostro emulatore l'applicazione da testare/analizzare, digitando il seguente comando:
./adb install NOME_APK.APK
A questo punto, vediamo come intercettare attraverso tool come Burp Suite (o ZAP Proxy) le eventuali richieste effettuate dall’applicazione verso servizi Internet. Potete scaricare la versione gratuita di Burp Suite sul sito ufficiale.
Una volta scaricata, potete eseguire il programma con il seguente comando:
java -jar burpsuite_free_v1.6.jar
Se tutto è andato bene, ci ritroveremo Burp Suite aperto. A questo punto dobbiamo configurare il nostro emulatore Android, per far si che tutte le richieste che entrano ed escono da esso, siano intercettatate dal nostro Burp Suite.
Per fare questo dovremo semplicemente lanciare il nostro emulatore con un parametro in più:
./emulator -avd AndroidL -http-proxy http://192.168.178.51:8080
In rosso ho sottolineato l'indirrizo IP del mio computer. Naturalmente voi dovrete sostituirlo con il vostro, impostato correttamente anche in Burp Suite. Da questo momento in poi, ogni richiesta effettuata da Android sarà intercettata.
Nei prossimi articoli vedremo come individuare vulnerabiltà, anche gravi, nelle app di Android.