# 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}}