
Assistant d'évaluation des deeplinks Android, des Intents et des ponts WebView pour le hacking éthique
Outil d'évaluation des ponts Android deeplink, Intent et WebView
apk-interceptor est une APK de test Android portable destinée aux évaluations de sécurité d'applications autorisées. Il aide les ingénieurs sécurité à vérifier comment une application Android gère les points d'entrée externes tels que les schémas d'URI personnalisés, les deeplinks, les Activities exportées et les ponts JavaScript WebView.
L'outil est volontairement limité :
android.permission.INTERNETcontent://Lors des évaluations de sécurité d'applications Android, de nombreux résultats d'analyse statique nécessitent encore une petite preuve de concept sur l'appareil avant d'être confirmés : enregistrer un schéma d'URI personnalisé, envoyer une Intent explicite, servir une charge utile locale content://, ou vérifier si JavaScript peut atteindre un pont WebView.
Créer une nouvelle application de test jetable pour chaque cas est répétitif et sujet aux erreurs. De petites différences dans les entrées du manifeste, les authorities, les autorisations d'URI, les noms de paquets ou la construction des Intents peuvent ralentir la vérification et rendre les résultats plus difficiles à reproduire.
apk-interceptor a été créé pour rendre cette étape de confirmation reproductible. Au lieu d'écrire une nouvelle APK de preuve de concept pour chaque évaluation, vous compilez cet outil avec le schéma autorisé ou l'ID d'application dont vous avez besoin, vous exécutez le test sur l'appareil, et vous gardez le flux de travail limité par conception : pas de permission INTERNET, pas de transmission de données externe, pas d'exécution shell, et aucune dépendance root.
apk-interceptor est utile pour ces tâches d'évaluation :
| Scénario | Module | Ce qu'il aide à vérifier |
|---|---|---|
| Détournement de schéma d'URI personnalisé | Interceptor | Si une autre application peut enregistrer le même schéma personnalisé et recevoir des liens |
| Gestion des paramètres de deeplink | Sender | Si l'application évaluée accepte des paramètres de requête/chemin non sûrs |
| Exposition d'une Activity exportée | Sender | Si une Activity exportée peut être lancée directement par une autre application |
Exposition d'un pont WebView via content:// | Payload + Sender | Si une charge utile HTML locale peut atteindre un pont JavaScript WebView |
| Vérification syntaxique de la charge utile locale | Payload | Si votre charge utile HTML/JS s'exécute dans la WebView d'auto-test |
Procédures détaillées des vulnérabilités :
content://L'application conserve un journal d'évaluation en mémoire pour les Intents envoyées, les deeplinks reçus, les rappels de pont, les résultats JavaScript et les erreurs. Les journaux disparaissent lorsque le processus de l'application est tué. Comme les journaux ne sont pas persistants, capturez les preuves avec des captures d'écran ou un enregistrement vidéo pendant que vous travaillez.
apk-interceptor est un outil de confirmation, pas un cadre de découverte ou d'exploitation. Il suppose que vous savez déjà quoi tester (schéma, classe d'Activity, nom du pont) grâce à l'analyse statique, et vous offre un moyen sûr, sur l'appareil, de vérifier l'atteignabilité et de capturer des preuves. Il est conçu pour être installé sur un appareil d'évaluation et même partagé avec un client, il ne comporte donc aucune permission INTERNET, aucune exécution shell, aucune exfiltration de données et aucune exigence de root.
Sa place parmi les outils Android habituels :
| Outil | Rôle | Différence avec apk-interceptor |
|---|---|---|
| jadx / MobSF / QARK / Semgrep | Trouver des points d'entrée vulnérables (statique) | apk-interceptor ne scanne ni ne décompile ; il confirme un résultat que vous avez déjà |
deep-C / NSdeepLink / adb am start | Énumérer et envoyer des deeplinks | apk-interceptor peut aussi envoyer, mais sa différence clé est de recevoir un schéma détourné et d'afficher l'URI exacte et les paramètres |
| drozer | Cadre d'attaque général sur l'appareil (agent + souvent root) | apk-interceptor est une APK unique et légère avec des garde-fous de sécurité délibérés, un périmètre plus restreint et une distribution plus facile à partager avec un client |
| Metasploit / Frida | Armer ou hooker (ex. RCE addJavascriptInterface) | apk-interceptor vérifie uniquement l'atteignabilité du pont avec une charge utile inoffensive ; il n'exfiltre jamais et n'exécute pas de commandes shell |
Les deux domaines où apk-interceptor a l'avantage le plus net sur les alternatives :
adb/statique ne peut pas montrer.content:// : un fournisseur non exporté, à fichier unique, dont la charge utile n'est délivrée que via une autorisation de lecture d'Intent temporaire, plus une WebView d'auto-test locale pour valider d'abord la syntaxe de la charge utile.apk-interceptor traite l'envoi et l'interception différemment, et c'est la chose la plus importante à comprendre avant de l'utiliser :
| Action | Module | Schéma personnalisé requis à la compilation ? |
|---|---|---|
| Envoyer une Intent ou un deeplink vers une autre application | Sender | Non, saisissez n'importe quelle URI, paquet ou Activity à l'exécution |
| Intercepter (recevoir) un deeplink pour un schéma personnalisé | Interceptor | Oui, le schéma est fixé dans l'APK au moment de la compilation |
Pour envoyer un deeplink conçu à l'application évaluée, pas besoin de recompiler : utilisez le mode Implicit Deeplink de l'onglet Sender et saisissez n'importe quelle URI.
Pour intercepter un deeplink, c'est-à-dire faire en sorte qu'Android route un schéma personnalisé vers apk-interceptor afin d'observer un possible détournement de schéma, vous devez compiler l'APK avec ce schéma via --scheme. Le schéma est fixé au moment de la compilation à dessein (un garde-fou de conception) ; apk-interceptor n'enregistre jamais de schémas arbitraires à l'exécution. Si vous changez le schéma que vous évaluez, recompilez et réinstallez.
adb pour l'installation sur l'appareil et les tests en ligne de commande optionnelsCompilez l'APK avec le schéma d'URI personnalisé que vous êtes autorisé à évaluer :
./build-interceptor.sh --scheme <authorized_custom_scheme>
adb install ./out/apk-interceptor-<authorized_custom_scheme>-debug.apk
Indicateurs de compilation optionnels :