Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
apk-interceptor — Assistant d'évaluation des deeplinks Android, des Intents et des ponts WebView pour le hacking éthique | Kitploit
Outils/GitHubGitHub/sterrasec/apk-interceptor
Sécurité AndroidAnalyse des VulnérabilitésPentesting d'Applications MobilesExploitation d'Applications WebCollecte d'InformationsTests d'Intrusion
GitHubsterrasec/apk-interceptor

apk-interceptor

Assistant d'évaluation des deeplinks Android, des Intents et des ponts WebView pour le hacking éthique

Voir le dépôt
91il y a 1 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

apk-interceptor

Build Check

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é :

  • Il ne déclare pas android.permission.INTERNET
  • Il n'envoie pas de données vers des serveurs externes
  • Il n'exécute pas de commandes shell
  • Il ne nécessite ni root, ni Magisk, ni Frida, ni instrumentation à l'exécution
  • Il ne sert qu'un seul fichier de charge utile local content://
  • Il enregistre un schéma d'URI personnalisé fixé au moment de la compilation

Motivation

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.

Ce que vous pouvez tester

apk-interceptor est utile pour ces tâches d'évaluation :

Procédures détaillées des vulnérabilités :

  • Détournement de schéma d'URI personnalisé
  • Redirection ouverte de deeplink
  • Activity exportée avec données d'Intent non fiables
  • Exposition d'un pont JavaScript WebView via 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.

Comparaison

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 :

Les deux domaines où apk-interceptor a l'avantage le plus net sur les alternatives :

  • Preuve de détournement de schéma : agir comme la deuxième application qui enregistre réellement le schéma et journaliser chaque paramètre reçu, ce que l'analyse adb/statique ne peut pas montrer.
  • Vérification du pont WebView via 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.

Envoyer ou intercepter

apk-interceptor traite l'envoi et l'interception différemment, et c'est la chose la plus importante à comprendre avant de l'utiliser :

ActionModuleSchéma personnalisé requis à la compilation ?
Envoyer une Intent ou un deeplink vers une autre applicationSenderNon, saisissez n'importe quelle URI, paquet ou Activity à l'exécution
Intercepter (recevoir) un deeplink pour un schéma personnaliséInterceptorOui, 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.

Prérequis

  • Android Studio avec Android SDK 35
  • Appareil ou émulateur Android 12+
  • JDK 17+
  • adb pour l'installation sur l'appareil et les tests en ligne de commande optionnels

Compilation et installation

Compilez l'APK avec le schéma d'URI personnalisé que vous êtes autorisé à évaluer :

root@kitploit:~
./build-interceptor.sh --scheme <authorized_custom_scheme>
adb install ./out/apk-interceptor-<authorized_custom_scheme>-debug.apk

Indicateurs de compilation optionnels :

root@kitploit:~
./build-interceptor.sh \
  --scheme <authorized_custom_scheme> \
  --app-id <custom.application.id> \
  --output ./out

--app-id définit l'ID d'application installé (l'identité du paquet sur l'appareil et l'autorité content://<applicationId>.payload) au moment de la compilation. La valeur par défaut est com.sterrasec.apkinterceptor. Remplacez-la avec --app-id lorsque vous avez besoin de plusieurs versions installables séparément pour différentes évaluations. L'équivalent Windows est build-interceptor.bat.

Le schéma par défaut intercept-poc-example est un espace réservé inoffensif. Le script de compilation refuse de produire une APK d'évaluation avec ce schéma par défaut.

Premier lancement

Au premier lancement de chaque version de l'application, apk-interceptor affiche une boîte de dialogue d'utilisation autorisée. Après avoir appuyé sur I understand, la même version n'affiche plus la boîte de dialogue. L'onglet Sender affiche toujours un avertissement persistant car il peut envoyer des Intents vers d'autres applications.

Boîte de dialogue d'utilisation autorisée

Captures d'écran

SenderPayloadInterceptor
Onglet SenderOnglet PayloadOnglet Interceptor

Modules de l'application

Interceptor

Utilisez cet onglet pour vérifier l'interception de schémas d'URI personnalisés.

Ce qu'il affiche :

  • Le schéma compilé dans cette APK
  • Un avertissement si le schéma factice par défaut est toujours utilisé
  • Les journaux de deeplinks reçus
  • Un champ de paramètre de requête de test
  • Send Test Deeplink
  • Clear

Procédure de base :

  1. Compilez l'APK avec le schéma personnalisé évalué.
  2. Installez-la à côté de l'application évaluée.
  3. Déclenchez un deeplink pour ce schéma depuis le flux évalué, le navigateur, adb ou le bouton intégré Send Test Deeplink.
  4. Si Android route le lien vers apk-interceptor, ouvrez l'onglet Interceptor et examinez l'URI reçue et les paramètres de requête.

À propos de Send Test Deeplink : il envoie toujours <scheme>://test?<vos paramètres> avec un hôte test fixe, il est donc destiné à confirmer qu'apk-interceptor reçoit et journalise le schéma, pas à piloter les routes deeplink spécifiques de l'application évaluée. Pour envoyer un deeplink conçu qui correspond à l'hôte ou au chemin requis par l'application évaluée, utilisez plutôt le mode Implicit Deeplink de l'onglet Sender.

Exemple avec adb :

root@kitploit:~
adb shell am start -W \
  -a android.intent.action.VIEW \
  -d 'my-authorized-scheme://test?source=adb\&message=hello%20world'

Utilisez \& lors de l'envoi de plusieurs paramètres de requête via adb shell ; sinon, le shell de l'appareil peut traiter & comme un séparateur de commandes.

Résultat attendu :

  • apk-interceptor s'ouvre sur l'onglet Interceptor
  • Une entrée de journal RECEIVED apparaît
  • Toucher l'entrée du journal développe l'URI complète et la liste des paramètres

Sender

Utilisez cet onglet pour envoyer des Intents contrôlées lors d'un test autorisé.

Modes :

  • Implicit Deeplink : envoie Intent(ACTION_VIEW, Uri.parse(uri))
  • Explicit Activity : envoie une Intent vers un paquet et une classe d'Activity spécifiques

Champs et contrôles :

  • URI pour le mode deeplink implicite
  • Package name pour le mode Activity explicite
  • Activity class pour le mode Activity explicite
  • Attach content:// URI pour définir l'URI de charge utile locale comme données d'Intent (affiché uniquement en mode Explicit Activity ; voir la note ci-dessous)
  • FLAG_GRANT_READ_URI_PERMISSION pour accorder l'accès en lecture à l'URI de charge utile jointe
  • Send Intent

Procédure de deeplink implicite :

  1. Sélectionnez Implicit Deeplink.
  2. Saisissez une URI qui correspond au modèle de deeplink de l'application évaluée.
  3. Touchez Send Intent.
  4. Observez le comportement de l'application évaluée et le journal d'apk-interceptor.

Procédure d'Activity explicite :

  1. Confirmez que l'Activity cible est exportée et couverte par votre autorisation.
  2. Sélectionnez Explicit Activity.
  3. Saisissez le nom du paquet de l'application évaluée.
  4. Saisissez le nom de la classe de l'Activity exportée.
  5. Activez éventuellement Attach content:// URI.
  6. Touchez Send Intent.

Remarques :

  • apk-interceptor ne sait pas si l'application évaluée a géré l'Intent en toute sécurité. Vous devez observer le comportement de l'application évaluée, ses journaux ou son harnais de test.
  • La pièce jointe content:// est utile pour tester si une Activity cible transmet des données d'Intent non fiables à une WebView.
  • Attach content:// URI n'est proposé qu'en mode Explicit Activity. La charge utile est délivrée comme data de l'Intent, ce qui écraserait l'URI que vous saisissez en mode Implicit Deeplink, donc l'option est masquée dans ce mode.
  • PayloadProvider n'est pas exporté. L'application évaluée ne peut lire la charge utile content:// jointe que parce que l'Intent lui accorde un accès en lecture temporaire via FLAG_GRANT_READ_URI_PERMISSION. Gardez ce drapeau activé et délivrez l'URI via l'Intent. Une URI content:// ouverte d'une autre manière ne sera pas lisible par une autre application.

Payload

Utilisez cet onglet pour créer une charge utile HTML locale et valider la syntaxe du pont JavaScript dans la WebView d'auto-test d'apk-interceptor.

Ce qu'il contient :

  • Éditeur HTML
  • Éditeur JavaScript évalué après le chargement de la page
  • Bridge object name
  • URI content:// générée
  • Save Payload
  • Run Self-Test
  • WebView d'auto-test
  • Résultats du pont et journaux de console

Format de l'URI de charge utile générée :

root@kitploit:~
content://<applicationId>.payload/current.html

Le fournisseur ne sert que ce fichier fixe :

root@kitploit:~
filesDir/payloads/current.html

Procédure d'auto-test de la charge utile :

  1. Saisissez ou collez le HTML dans le champ HTML.
  2. Saisissez le nom de l'objet pont que vous voulez tester localement, par exemple localBridge.
  3. Ajoutez du JavaScript soit dans votre HTML, soit dans l'éditeur JavaScript.
  4. Touchez Save Payload.
  5. Touchez Run Self-Test.
  6. Examinez les entrées BRIDGE_RESULT, console.log et evaluateJavascript result dans le journal.

Exemple de JavaScript d'auto-test :

root@kitploit:~
console.log("payload loaded");
window.localBridge.logResult(window.localBridge.getInfo());

Le pont d'auto-test expose :

root@kitploit:~
window.<bridgeName>.logResult("message");
window.<bridgeName>.getInfo();

Limitation importante :

La WebView d'auto-test confirme que votre charge utile locale et la syntaxe d'appel du pont fonctionnent dans apk-interceptor. Elle ne peut pas observer si la WebView d'une autre application a exécuté votre charge utile ou appelé son propre pont. Pour l'application évaluée, vérifiez via l'interface de cette application, ses journaux, ses hooks de test ou Chrome DevTools si l'application est débogable.

Procédures axées sur les vulnérabilités

1. Détournement de schéma d'URI personnalisé

Risque :

Une application Android enregistre un schéma d'URI personnalisé au lieu d'un App Link vérifié. Toute autre application peut enregistrer le même schéma, donc Android peut afficher un sélecteur d'applications ou router les liens vers une autre application.

Utilisez apk-interceptor pour vérifier :

  • Si le schéma peut être enregistré par une autre application
  • Si Android propose apk-interceptor comme gestionnaire
  • Si des valeurs sensibles apparaissent dans les paramètres de deeplink

Étapes :

  1. Identifiez le schéma personnalisé de l'application évaluée à partir de son manifeste ou de sa documentation.
  2. Compilez apk-interceptor avec ce schéma.
  3. Installez apk-interceptor et l'application évaluée sur le même appareil de test.
  4. Déclenchez un deeplink depuis le flux de test autorisé.
  5. Si apk-interceptor le reçoit, inspectez le journal Interceptor.

Preuves à capturer :

  • Comportement du sélecteur du système d'exploitation, s'il est affiché
  • URI complète reçue
  • Paramètres de requête et s'ils contiennent des valeurs sensibles
  • Interaction utilisateur nécessaire pour router le lien

2. Injection de paramètres de deeplink

Risque :

L'application évaluée fait confiance aux paramètres de deeplink pour la navigation, le chargement d'URL, les indicateurs de fonctionnalités, la sélection de compte ou le rendu sans validation suffisante.

Utilisez apk-interceptor pour vérifier :

  • Si des paramètres conçus sont acceptés
  • Si l'application navigue vers un écran non prévu
  • Si des valeurs d'URL/chemin/contenu non sûres sont utilisées

Étapes :

  1. Identifiez le format de deeplink de l'application évaluée.
  2. Ouvrez Sender.
  3. Sélectionnez Implicit Deeplink.
  4. Saisissez une URI de test autorisée avec des paramètres contrôlés.
  5. Touchez Send Intent.
  6. Observez le comportement de l'application évaluée.

Exemple d'espace réservé :

root@kitploit:~
my-authorized-scheme://open?next=https%3A%2F%2Fauthorized-test.example%2Flanding

N'utilisez pas de vrais domaines ou comptes tiers sauf s'ils sont explicitement dans le périmètre.

3. Contrôle d'accès d'une Activity exportée

Risque :

Une Activity exportée effectue des actions sensibles ou affiche des données sensibles sans vérifier l'appelant, l'état de l'utilisateur ou l'autorisation requise.

Utilisez apk-interceptor pour vérifier :

  • Si l'Activity exportée se lance depuis une autre application
  • Si elle effectue un comportement sensible sans les vérifications attendues
  • Si les données d'Intent modifient son comportement

Étapes :

  1. Confirmez que l'Activity est exportée et dans le périmètre.
  2. Ouvrez Sender.
  3. Sélectionnez Explicit Activity.
  4. Saisissez le nom du paquet et la classe de l'Activity.
  5. Joignez éventuellement l'URI de charge utile locale content://.
  6. Touchez Send Intent.
  7. Observez si l'application évaluée applique un contrôle d'accès.

Preuves à capturer :

  • Activity lancée ou bloquée
  • Toute invite d'authentification ou d'autorisation
  • Action sensible ou exposition de données
  • Données d'Intent utilisées par l'Activity

4. Exposition d'un pont JavaScript WebView via content://

Risque :

L'application évaluée charge des données d'Intent content:// non fiables dans une WebView qui expose également un pont JavaScript via addJavascriptInterface.

Utilisez apk-interceptor pour vérifier :

  • Si une charge utile HTML locale peut être délivrée comme content://
  • Si la WebView cible charge la charge utile
  • Si JavaScript provenant de cette source peut atteindre le pont

Étapes :

  1. Identifiez l'Activity cible et le nom de l'objet pont lors de l'analyse autorisée.
  2. Ouvrez Payload.
  3. Créez du HTML/JS qui appelle le pont attendu.
  4. Utilisez Run Self-Test pour valider votre syntaxe localement.
  5. Ouvrez Sender.
  6. Sélectionnez Explicit Activity.
  7. Saisissez le paquet et la classe d'Activity cibles.
  8. Activez Attach content:// URI et gardez FLAG_GRANT_READ_URI_PERMISSION activé.
  9. Touchez Send Intent.
  10. Observez l'application évaluée pour déterminer si sa WebView a chargé la charge utile et si les appels au pont ont été exécutés.

Limitation importante :

apk-interceptor ne peut pas recevoir de résultats d'une autre application à moins que cette application ne les renvoie ou ne les affiche explicitement. L'outil est conçu pour délivrer une charge utile locale et valider la syntaxe, pas pour exfiltrer des données.

Vérifications en ligne de commande

Vérifiez que l'APK ne demande pas d'accès réseau :

root@kitploit:~
aapt dump permissions ./out/apk-interceptor-<scheme>-debug.apk

Attendu : pas de android.permission.INTERNET.

Déclenchez un deeplink explicitement vers apk-interceptor :

root@kitploit:~
adb shell am start -W \
  -n com.sterrasec.apkinterceptor/.InterceptActivity \
  -a android.intent.action.VIEW \
  -d 'my-authorized-scheme://test?source=adb'

Déclenchez un deeplink via le résolveur d'Android :

root@kitploit:~
adb shell am start -W \
  -a android.intent.action.VIEW \
  -d 'my-authorized-scheme://test?source=adb'

La commande explicite confirme le comportement de InterceptActivity. La commande implicite confirme le filtre d'intent du manifeste et le comportement du résolveur.

Tests

Les tests unitaires s'exécutent sur la JVM avec Robolectric, donc aucun appareil ni émulateur n'est requis. Ils couvrent PayloadProvider, y compris les vérifications de liste blanche de chemins et d'anti-traversée qui empêchent le fournisseur de servir autre chose que le fichier unique current.html.

root@kitploit:~
./gradlew testDebugUnitTest

Les résultats des tests sont écrits dans app/build/reports/tests/testDebugUnitTest/index.html. La même tâche s'exécute en CI à chaque push et pull request vers main.

Garde-fous de conception

  • Pas de android.permission.INTERNET
  • Pas de transmission de données externe ni d'exfiltration automatisée
  • Aucune fonctionnalité d'exécution de commandes shell
  • Aucune dépendance root, Magisk, Frida ou instrumentation
  • Aucun enregistrement de schémas arbitraires à l'exécution
  • Aucun fournisseur générique de fichiers
  • Seul /current.html est servi par PayloadProvider

Licence

MIT

Télécharger l’outil
ScénarioModuleCe qu'il aide à vérifier
Détournement de schéma d'URI personnaliséInterceptorSi une autre application peut enregistrer le même schéma personnalisé et recevoir des liens
Gestion des paramètres de deeplinkSenderSi l'application évaluée accepte des paramètres de requête/chemin non sûrs
Exposition d'une Activity exportéeSenderSi une Activity exportée peut être lancée directement par une autre application
Exposition d'un pont WebView via content://Payload + SenderSi une charge utile HTML locale peut atteindre un pont JavaScript WebView
Vérification syntaxique de la charge utile localePayloadSi votre charge utile HTML/JS s'exécute dans la WebView d'auto-test
OutilRôleDifférence avec apk-interceptor
jadx / MobSF / QARK / SemgrepTrouver 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 deeplinksapk-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
drozerCadre 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 / FridaArmer 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