
Uno strumento per automatizzare il noioso processo di APK recon
Uno strumento per automatizzare il processo di ricognizione su un file APK.
Slicer accetta un percorso a un file APK estratto e restituisce tutte le attività, i ricevitori e i servizi che sono esportati e hanno permessi null e possono essere provocati esternamente.
Nota: L'APK deve essere estratto tramite jadx o apktool.
Perché?
Ho iniziato con il bug bounty circa 3 settimane fa (a giugno 2020) e ho dato il meglio di me sulle app Android. Ma ho notato una cosa: in tutte le app c'erano certe cose che dovevo fare prima di addentrarmi. Così ho pensato che sarebbe stato carino automatizzare quel processo con un semplice strumento.
Perché non drozer?
Beh, drozer è una bestia diversa. Anche se trova tutti i componenti accessibili, ero stanco di eseguire quei comandi ancora e ancora.
Perché non automatizzare con drozer?
In realtà ho scritto uno script bash per eseguire certi comandi di drozer in modo da non doverli eseguire manualmente, ma c'erano ancora alcune cose noiose da fare. Come controllare il strings.xml per varie chiavi API, testare se il database Firebase fosse accessibile pubblicamente o se quelle chiavi API di Google avessero impostato qualche limite o altro sul loro utilizzo e molte altre cose.
Perché non cercare in tutti i file?
Penso che uno strumento come grep o ripgrep sarebbe molto più veloce per cercare in tutti i file. Quindi se c'è qualcosa di specifico che vuoi cercare, sarebbe meglio usare questi strumenti. Ma se pensi che ci sia qualcosa che dovrebbe essere controllato in tutti i file Android, sentiti libero di aprire un issue.
Controlla se l'APK ha impostato android:allowbackup a true
Controlla se l'APK ha impostato android:debuggable a true.
Restituisce tutte le attività, servizi e ricevitori broadcast che sono esportati e hanno permessi nulli. Questo è deciso sulla base di due cose:
android:exporte=true è presente in qualsiasi componente e non ha permessi impostati.Intent-filter per quel componente, in caso affermativo significa che quel componente è esportato per impostazione predefinita (Questa è la regola data nella documentazione Android.)Controlla l'URL Firebase dell'APK testandolo per il trucco del .json.
myapp.firebaseio.com, allora controlla se https://myapp.firebaseio.com/.json restituisce qualcosa o dà permesso negato.Controlla se le chiavi API di Google sono accessibili pubblicamente o meno.
git clone https://github.com/mzfr/slicer
cd slicerpython3 slicer.py -hÈ molto semplice da usare. Le seguenti opzioni sono disponibili:
Extract information from Manifest and strings of an APK
Usage:
slicer [OPTION] [Extracted APK directory]
Options:
-d, --dir path to jadx output directory
-o, --output Name of the output file(not implemented)
Non ho ancora implementato il flag output perché penso che se puoi reindirizzare l'output di slicer a un file yaml avrà un formato corretto.
python3 slicer.py -d path/to/extact/apk -c config.json
Il modulo estrattore usato per estrarre URL e percorsi è preso da apkurlgrep di @ndelphit
Tutte le funzionalità implementate in questo strumento sono cose che ho imparato nelle ultime settimane, quindi se pensi che ci siano varie altre cose che dovrebbero essere controllate in un APK, apri pure un issue per quella funzionalità e sarò felice di implementarla :)
Se ti va, puoi offrirmi un caffè:
Duplicato.non applicabile e affermare che la CHIAVE ha un limite di utilizzo - r/suspiciouslyspecific 😉Restituisce altre chiavi API presenti in strings.xml e in AndroidManifest.xml
Elenca tutti i nomi di file presenti nella directory /res/raw e res/xml.
Estrae tutti gli URL e i percorsi.