Mobile Penetration Testing: Lezione 3… Sporchiamoci le mani

Ciao a tutti cari amici di iProg  dopo le prime lezioni “teoriche” e’ arrivato il momento di “sporcarci” le mani ma prima di tutto e’ necessario installare alcuni tools: Java SDK   Android SDK   APK Tool  Dex2Jar e JD-GUI una volta scaricati e installati, useremo questo sito per poter scaricare i file APK. Il prossimo passo quindi e’ quello di scegliere  un applicazione  da google play store (copiamo l’url dell app) e scarichiamo il file APK utilizzando il sito apk-downloader, a questo  punto possiamo diassemblere l’applicazione utilizzando  l’apk tool, per fare cio’ bastera’ eseguire il seguente comando:
java -jar apktool_2.3.3.jar d nomeApp.apk

Una volta terminato il tool generera’ una cartella col nome dell’applicazione, spostiamoci all’interno di quest’ultima, dove possiamo notare due file molto interessati ovvero:

  • apktool.yml: Qusto file contiene informazioni generali riguardanti l’applicazione tra cui:
    minSdkVersion, le risorse presenti all’interno dell’app etc
  • AndroidManifest.xml: Come spiegato nella lezione precedente in questo file possiamo trovare molte info interessanti tra cui API Key, gli intent e i permessi utilizzati dall’applicazione

La prossima operazione che  proveremo a fare e’ quella di estrarre il codice sorgente dall’applicazione scaricata precedentemente per fare cio’ utilizzeremo il tool dex2jar quindi spostiamoci all’interno della cartella del tool (per semplicita spostate anche il file .apk all’interno di quest’ultima) e lanciamo il seguante comando:
./d2j-dex2jar.sh nomeApp.apk

Il tool ci restituira’  l’app  “decompilata” e saremo quindi in grado di accedere al codice sorgente, infatti possiamo notare che e’ stato creato un nuovo file nomeApp-dex2jar.jar. Usiamo il tool  JD-Gui per aprire il file .jar ottenuto al passo precedente. Ora finalmente saremi in grado di vedere e studiare la struttura dell’applicazione e del codice inoltre potremmo trovare molte info interessanti e possibili falle, quindi sta a voi studiare l’applicazione in maniera da poter trovare eventuali vulnerabilita’ o informazioni sensibili …

Ora che abbiamo visto come esplorae il codice sorgente tramite JD-GUi vediamo come farlo anche usando un altro tool ovvero utilizzando Jadx questo tool a differenza del precedente accetta anche file di tip apk cio’ significa che non dovemmo decompilare “manualmente” l’applicazione ma questo tool lo fara’ in automatico per noi

Come possiamo nontare ci sono 2 cartelle principali:

  • Source code: Dove ci sara’ il codice sorgente
  • Resource: In questa cartella possiamo trovare tutte le risorse dell’app tra cui il file manifest

Questo tool offre buone funzionalita’ tuttavia in alcune funzionalita’ e’ meno efficiente di JDGui.

Un altro tool molto importante per testare le applicazioni Android e’  Android Debug Bridge o piu’ semplicemente ADB  questo tool ci consente di avere accesso tramite riga di comando ad ogni dispositivo Android, per poter utilizzare questo tool e’ necessario che sul dispositivo Android sia abilitato l’opzione developere mode. Per visualizzare i dispositivi connessi possiamo usare il comando adb devices se e’ presente un unico dispostivo adb si connettera’ a quest’ultimo automaticamente in alternativa e’ necessario specificare a quale device vogliamo connetterci. Il comando adb help ci mostra la lista di comandi disponibili tra quelli piu’ interessanti possiamo trovare push e pull per poter caricare e scaricare file, port forwarding per ispezionare il traffico (Utilizzando un proxy http come ad esempio Burp). Ma uno dei miei comandi preferiti e’ shell questo comando ci consente di utilizzzare una shell all’interno del dispositivo Android. Una volta che abbiamo una shell all’interno del dispositivo Android le cose piu’ interessanti solitamente si trovano all’interno delle  cartelle:

  • /data
  • /system : All’interno della cartella system possiamo trovare altre cartelle interessanti tra cui /app, /priv-app e /delapp

Se ti e’ piaciuto questo tutorial faccelo sapere tramite twitter o facebook.