hacktricks/src/mobile-pentesting/android-checklist.md

79 lines
6.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Android APK Checklist
{{#include ../banners/hacktricks-training.md}}
### [Learn Android fundamentals](android-app-pentesting/index.html#2-android-application-fundamentals)
- [ ] [Basics](android-app-pentesting/index.html#fundamentals-review)
- [ ] [Dalvik & Smali](android-app-pentesting/index.html#dalvik--smali)
- [ ] [Entry points](android-app-pentesting/index.html#application-entry-points)
- [ ] [Activities](android-app-pentesting/index.html#launcher-activity)
- [ ] [URL Schemes](android-app-pentesting/index.html#url-schemes)
- [ ] [Content Providers](android-app-pentesting/index.html#services)
- [ ] [Services](android-app-pentesting/index.html#services-1)
- [ ] [Broadcast Receivers](android-app-pentesting/index.html#broadcast-receivers)
- [ ] [Intents](android-app-pentesting/index.html#intents)
- [ ] [Intent Filter](android-app-pentesting/index.html#intent-filter)
- [ ] [Other components](android-app-pentesting/index.html#other-app-components)
- [ ] [How to use ADB](android-app-pentesting/index.html#adb-android-debug-bridge)
- [ ] [How to modify Smali](android-app-pentesting/index.html#smali)
### [Static Analysis](android-app-pentesting/index.html#static-analysis)
- [ ] Controlla l'uso di [obfuscation](android-checklist.md#some-obfuscation-deobfuscation-information), verifica se il mobile è stato rootato, se viene utilizzato un emulatore e controlli anti-manomissione. [Leggi qui per maggiori informazioni](android-app-pentesting/index.html#other-checks).
- [ ] Le applicazioni sensibili (come le app bancarie) dovrebbero controllare se il mobile è rootato e agire di conseguenza.
- [ ] Cerca [interesting strings](android-app-pentesting/index.html#looking-for-interesting-info) (password, URL, API, crittografia, backdoor, token, Bluetooth uuids...).
- [ ] Attenzione speciale alle [firebase ](android-app-pentesting/index.html#firebase)API.
- [ ] [Leggi il manifest:](android-app-pentesting/index.html#basic-understanding-of-the-application-manifest-xml)
- [ ] Controlla se l'applicazione è in modalità debug e prova a "sfruttarla"
- [ ] Controlla se l'APK consente backup
- [ ] Attività esportate
- [ ] Fornitori di contenuti
- [ ] Servizi esposti
- [ ] Ricevitori broadcast
- [ ] Schemi URL
- [ ] L'applicazione sta [salvando dati in modo insicuro internamente o esternamente](android-app-pentesting/index.html#insecure-data-storage)?
- [ ] C'è qualche [password hard coded o salvata su disco](android-app-pentesting/index.html#poorkeymanagementprocesses)? L'app sta [utilizzando algoritmi crittografici insicuri](android-app-pentesting/index.html#useofinsecureandordeprecatedalgorithms)?
- [ ] Tutte le librerie compilate utilizzando il flag PIE?
- [ ] Non dimenticare che ci sono un sacco di [static Android Analyzers](android-app-pentesting/index.html#automatic-analysis) che possono aiutarti molto durante questa fase.
- [ ] `android:exported` **obbligatorio su Android 12+** componenti esportati mal configurati possono portare a invocazioni di intent esterni.
- [ ] Rivedi **Network Security Config** (`networkSecurityConfig` XML) per `cleartextTrafficPermitted="true"` o sovrascritture specifiche del dominio.
- [ ] Cerca chiamate a **Play Integrity / SafetyNet / DeviceCheck** determina se l'attestazione personalizzata può essere agganciata/evitata.
- [ ] Ispeziona **App Links / Deep Links** (`android:autoVerify`) per problemi di reindirizzamento di intent o open-redirect.
- [ ] Identifica l'uso di **WebView.addJavascriptInterface** o `loadData*()` che possono portare a RCE / XSS all'interno dell'app.
- [ ] Analizza bundle cross-platform (Flutter `libapp.so`, React-Native JS bundles, risorse Capacitor/Ionic). Strumenti dedicati:
- `flutter-packer`, `fluttersign`, `rn-differ`
- [ ] Scansiona librerie native di terze parti per CVE noti (ad es., **libwebp CVE-2023-4863**, **libpng**, ecc.).
- [ ] Valuta i **SEMgrep Mobile rules**, **Pithus** e i risultati della scansione assistita da AI più recenti di **MobSF ≥ 3.9** per ulteriori scoperte.
### [Dynamic Analysis](android-app-pentesting/index.html#dynamic-analysis)
- [ ] Prepara l'ambiente ([online](android-app-pentesting/index.html#online-dynamic-analysis), [VM locale o fisica](android-app-pentesting/index.html#local-dynamic-analysis))
- [ ] C'è qualche [unintended data leakage](android-app-pentesting/index.html#unintended-data-leakage) (logging, copia/incolla, log di crash)?
- [ ] [Informazioni riservate salvate in db SQLite](android-app-pentesting/index.html#sqlite-dbs)?
- [ ] [Attività esportate sfruttabili](android-app-pentesting/index.html#exploiting-exported-activities-authorisation-bypass)?
- [ ] [Fornitori di contenuti sfruttabili](android-app-pentesting/index.html#exploiting-content-providers-accessing-and-manipulating-sensitive-information)?
- [ ] [Servizi esposti sfruttabili](android-app-pentesting/index.html#exploiting-services)?
- [ ] [Ricevitori broadcast sfruttabili](android-app-pentesting/index.html#exploiting-broadcast-receivers)?
- [ ] L'applicazione sta [trasmettendo informazioni in chiaro/utilizzando algoritmi deboli](android-app-pentesting/index.html#insufficient-transport-layer-protection)? è possibile un MitM?
- [ ] [Ispeziona il traffico HTTP/HTTPS](android-app-pentesting/index.html#inspecting-http-traffic)
- [ ] Questo è davvero importante, perché se riesci a catturare il traffico HTTP puoi cercare vulnerabilità Web comuni (Hacktricks ha molte informazioni sulle vulnerabilità Web).
- [ ] Controlla possibili [Android Client Side Injections](android-app-pentesting/index.html#android-client-side-injections-and-others) (probabilmente un'analisi statica del codice aiuterà qui)
- [ ] [Frida](android-app-pentesting/index.html#frida): Solo Frida, usala per ottenere dati dinamici interessanti dall'applicazione (forse alcune password...)
- [ ] Testa per **Tapjacking / Animation-driven attacks (TapTrap 2025)** anche su Android 15+ (nessun permesso di overlay richiesto).
- [ ] Prova **overlay / SYSTEM_ALERT_WINDOW clickjacking** e **Accessibility Service abuse** per l'escalation dei privilegi.
- [ ] Controlla se `adb backup` / `bmgr backupnow` può ancora dumpare i dati dell'app (app che hanno dimenticato di disabilitare `allowBackup`).
- [ ] Prova per **Binder-level LPEs** (ad es., **CVE-2023-20963, CVE-2023-20928**); usa fuzzers del kernel o PoC se consentito.
- [ ] Se Play Integrity / SafetyNet è applicato, prova runtime hooks (`Frida Gadget`, `MagiskIntegrityFix`, `Integrity-faker`) o replay a livello di rete.
- [ ] Strumenta con strumenti moderni:
- **Objection > 2.0**, **Frida 17+**, **NowSecure-Tracer (2024)**
- Tracciamento dinamico a livello di sistema con `perfetto` / `simpleperf`.
### Some obfuscation/Deobfuscation information
- [ ] [Read here](android-app-pentesting/index.html#obfuscating-deobfuscating-code)
{{#include ../banners/hacktricks-training.md}}