
Helper per la valutazione di deeplink Android, Intent e bridge WebView per l'hacking etico.
Helper per la valutazione di deeplink Android, Intent e bridge WebView
apk-interceptor è un APK di test Android portabile per valutazioni di sicurezza applicativa autorizzate. Aiuta gli ingegneri della sicurezza a verificare come un'app Android gestisce i punti di ingresso esterni, come scheme URI personalizzati, deeplink, Activity esportate e bridge JavaScript WebView.
Lo strumento è volutamente limitato:
android.permission.INTERNETcontent://Durante le valutazioni di sicurezza di applicazioni Android, molti risultati dell'analisi statica necessitano ancora di una piccola prova di concetto sul dispositivo prima di poter essere confermati: registrare uno scheme URI personalizzato, inviare un Intent esplicito, servire un payload content:// locale o verificare se JavaScript può raggiungere un bridge WebView.
Creare una nuova app di test usa-e-getta per ogni caso è ripetitivo e soggetto a errori. Piccole differenze nelle voci del manifest, nelle authority, nelle grant URI, nei nomi dei pacchetti o nella costruzione degli Intent possono rallentare la verifica e rendere i risultati più difficili da riprodurre.
apk-interceptor è stato creato per rendere ripetibile questa fase di conferma. Invece di scrivere un nuovo APK PoC per ogni valutazione, costruisci questo strumento con lo scheme autorizzato o l'application ID di cui hai bisogno, esegui il test sul dispositivo e mantieni il flusso di lavoro volutamente limitato: nessun permesso INTERNET, nessuna trasmissione di dati esterni, nessuna esecuzione shell e nessuna dipendenza da root.
apk-interceptor è utile per queste attività di valutazione:
| Scenario | Modulo | Cosa Aiuta a Verificare |
|---|---|---|
| Hijacking di scheme URI personalizzati | Interceptor | Se un'altra app può registrare lo stesso scheme personalizzato e ricevere i link |
| Gestione dei parametri dei deeplink | Sender | Se l'app valutata accetta parametri query/path non sicuri |
| Esposizione di Activity esportate | Sender | Se un'Activity esportata può essere avviata direttamente da un'altra app |
Esposizione del bridge WebView tramite content:// | Payload + Sender | Se un payload HTML locale può raggiungere un bridge JavaScript WebView |
| Controllo della sintassi del payload locale | Payload | Se il payload HTML/JS viene eseguito nella WebView di auto-test |
Approfondimenti dettagliati sulle vulnerabilità:
content://L'app mantiene un log di valutazione in memoria per Intent inviati, deeplink ricevuti, callback del bridge, risultati JavaScript ed errori. I log scompaiono quando il processo dell'app viene terminato. Poiché i log non vengono persistiti, acquisisci le evidenze con screenshot o registrazione dello schermo mentre lavori.
apk-interceptor è uno strumento di conferma, non un framework di scoperta o exploitation. Presuppone che tu sappia già cosa testare (scheme, classe Activity, nome del bridge) dall'analisi statica e offre un modo sicuro, sul dispositivo, per verificare la raggiungibilità e acquisire evidenze. È pensato per essere installato su un dispositivo di valutazione e persino condiviso con un cliente, quindi non include permesso INTERNET, nessuna esecuzione shell, nessuna esfiltrazione di dati e nessun requisito di root.
Dove si colloca rispetto ai soliti strumenti Android:
| Strumento | Ruolo | Come si differenzia apk-interceptor |
|---|---|---|
| jadx / MobSF / QARK / Semgrep | Trovare i punti di ingresso vulnerabili (statica) | apk-interceptor non esegue scansioni né decompilazioni; conferma un finding che hai già |
deep-C / NSdeepLink / adb am start | Enumerare e inviare deeplink | apk-interceptor può anche inviare, ma il suo elemento distintivo è ricevere uno scheme dirottato e mostrare l'URI esatto e i parametri |
| drozer | Framework di attacco generico sul dispositivo (agente + spesso root) | apk-interceptor è un singolo APK leggero con guardrail di sicurezza deliberati, scope più limitato e distribuzione più semplice e sicura per il cliente |
| Metasploit / Frida | Weaponizzare o hook (es. RCE con addJavascriptInterface) | apk-interceptor controlla solo la raggiungibilità del bridge con un payload innocuo; non esfiltra mai dati né esegue comandi shell |
Le due aree in cui apk-interceptor ha il vantaggio più chiaro rispetto alle alternative:
adb/l'analisi statica non possono mostrare.content://: un provider non esportato, a file singolo, il cui payload viene consegnato solo tramite una grant di lettura Intent temporanea, più una WebView di auto-test locale per validare prima la sintassi del payload.apk-interceptor tratta l'invio e l'intercettazione in modo diverso, e questa è la cosa più importante da capire prima di usarlo:
| Azione | Modulo | Scheme personalizzato necessario in fase di build? |
|---|---|---|
| Inviare un Intent o un deeplink a un'altra app | Sender | No, inserisci qualsiasi URI, pacchetto o Activity a runtime |
| Intercettare (ricevere) un deeplink per uno scheme personalizzato | Interceptor | Sì, lo scheme viene fissato nell'APK in fase di build |
Per inviare un deeplink appositamente costruito all'app valutata, non è necessario ricompilare: usa la modalità Implicit Deeplink della scheda Sender e inserisci un qualsiasi URI.
Per intercettare un deeplink, cioè far sì che Android instradi uno scheme personalizzato verso apk-interceptor in modo da poter osservare un possibile scheme-hijack, devi compilare l'APK con quello scheme tramite --scheme. Lo scheme è fissato in fase di build deliberatamente (un guardrail di progettazione); apk-interceptor non registra mai scheme arbitrari a runtime. Se cambi lo scheme che stai valutando, ricompila e reinstalla.
adb per l'installazione sul dispositivo e test opzionali da riga di comandoCompila l'APK con lo scheme URI personalizzato che sei autorizzato a valutare:
./build-interceptor.sh --scheme <authorized_custom_scheme>
adb install ./out/apk-interceptor-<authorized_custom_scheme>-debug.apk
Flag di build opzionali:
./build-interceptor.sh \
--scheme <authorized_custom_scheme> \
--app-id <custom.application.id> \
--output ./out