Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
apk-interceptor — Asistente de evaluación de Android deeplink, Intent y WebView bridge para hacking ético | Kitploit
Herramientas/GitHubGitHub/sterrasec/apk-interceptor
Seguridad AndroidAnálisis de VulnerabilidadesPentesting de Apps MóvilesExplotación de Aplicaciones WebRecopilación de InformaciónPruebas de Penetración
GitHubsterrasec/apk-interceptor

apk-interceptor

Asistente de evaluación de Android deeplink, Intent y WebView bridge para hacking ético

Ver Repositorio
914hace 2 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

apk-interceptor

Build Check

Asistente de evaluación de Deeplinks, Intents y puentes WebView para Android

apk-interceptor es un APK de prueba portátil para Android, destinado a evaluaciones de seguridad de aplicaciones autorizadas. Ayuda a los ingenieros de seguridad a verificar cómo una aplicación Android maneja puntos de entrada externos como esquemas URI personalizados, deeplinks, Activities exportadas y puentes JavaScript de WebView.

La herramienta está intencionadamente limitada:

  • No declara android.permission.INTERNET
  • No envía datos a servidores externos
  • No ejecuta comandos de shell
  • No requiere root, Magisk, Frida ni instrumentación en tiempo de ejecución
  • Sirve solo un archivo local de payload content://
  • Registra un esquema URI personalizado fijo en tiempo de compilación

Motivación

Durante las evaluaciones de seguridad de aplicaciones Android, muchos hallazgos del análisis estático aún necesitan una pequeña prueba de concepto en el dispositivo antes de poder confirmarse: registrar un esquema URI personalizado, enviar un Intent explícito, servir un payload local content:// o comprobar si JavaScript puede alcanzar un puente WebView.

Crear una nueva aplicación de prueba desechable para cada caso es repetitivo y propenso a errores. Pequeñas diferencias en las entradas del manifiesto, autoridades, concesiones de URI, nombres de paquete o construcción de Intents pueden ralentizar la verificación y dificultar la reproducibilidad de los resultados.

apk-interceptor fue creado para hacer repetible ese paso de confirmación. En lugar de escribir un nuevo APK PoC para cada evaluación, compilas esta herramienta con el esquema autorizado o el ID de aplicación que necesitas, ejecutas la prueba en el dispositivo y mantienes el flujo de trabajo limitado por diseño: sin permiso INTERNET, sin transmisión de datos externa, sin ejecución de shell y sin dependencia de root.

Qué Puedes Probar

apk-interceptor es útil para estas tareas de evaluación:

Recorridos detallados de vulnerabilidades:

  • Secuestro de Esquema URI Personalizado
  • Redirección Abierta de Deeplink
  • Activity Exportada con Datos de Intent no Confiables
  • Exposición de Puente JavaScript WebView vía content://

La aplicación mantiene un registro de evaluación en memoria para los Intents enviados, deeplinks recibidos, devoluciones de llamada del puente, resultados de JavaScript y errores. Los registros desaparecen cuando el proceso de la aplicación es eliminado. Como los registros no se persisten, captura evidencia con capturas de pantalla o grabación de pantalla mientras trabajas.

Cómo se Compara

apk-interceptor es una herramienta de confirmación, no un framework de descubrimiento o explotación. Asume que ya sabes qué probar (esquema, clase Activity, nombre del puente) a partir del análisis estático, y te ofrece una forma segura y en el dispositivo de verificar la alcanzabilidad y capturar evidencia. Está diseñada para instalarse en un dispositivo de evaluación e incluso compartirse con un cliente, por lo que no incluye permiso INTERNET, ejecución de shell, exfiltración de datos ni requisito de root.

Dónde se sitúa junto a las herramientas habituales de Android:

Las dos áreas donde apk-interceptor tiene la ventaja más clara sobre las alternativas:

  • Evidencia de secuestro de esquema: actuar como la segunda aplicación que realmente registra el esquema y registrar cada parámetro recibido, algo que adb/análisis estático no puede mostrar.
  • Verificación de puente WebView vía content://: un proveedor no exportado de un solo archivo cuyo payload se entrega solo a través de un permiso de lectura de Intent temporal, más un WebView de autoevaluación local para validar primero la sintaxis del payload.

Enviar vs. Interceptar

apk-interceptor trata enviar e interceptar de manera diferente, y esto es lo más importante que debes entender antes de usarlo:

AcciónMódulo¿Se necesita un esquema personalizado en tiempo de compilación?
Enviar un Intent o deeplink a otra aplicaciónSenderNo, escribe cualquier URI, paquete o Activity en tiempo de ejecución
Interceptar (recibir) un deeplink para un esquema personalizadoInterceptorSí, el esquema se fija en el APK durante la compilación

Para enviar un deeplink manipulado a la aplicación evaluada, no necesitas recompilar: usa el modo Implicit Deeplink de la pestaña Sender y escribe cualquier URI.

Para interceptar un deeplink, es decir, hacer que Android enrute un esquema personalizado a apk-interceptor para que puedas observar un posible secuestro de esquema, debes compilar el APK con ese esquema mediante --scheme. El esquema se fija en tiempo de compilación a propósito (una barrera de diseño); apk-interceptor nunca registra esquemas arbitrarios en tiempo de ejecución. Si cambias el esquema que estás evaluando, recompila y reinstala.

Requisitos

  • Android Studio con Android SDK 35
  • Dispositivo o emulador con Android 12+
  • JDK 17+
  • adb para instalación en el dispositivo y pruebas opcionales desde línea de comandos

Compilar e Instalar

Compila el APK con el esquema URI personalizado que estás autorizado a evaluar:

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

Indicadores de compilación opcionales:

root@kitploit:~
./build-interceptor.sh \
  --scheme <esquema_personalizado_autorizado> \
  --app-id <id.de.aplicacion.personalizada> \
  --output ./out

--app-id establece el ID de la aplicación instalada (la identidad del paquete en el dispositivo y la autoridad content://<applicationId>.payload) en tiempo de compilación. El valor predeterminado es com.sterrasec.apkinterceptor. Sobrescríbelo con --app-id cuando necesites varias compilaciones instalables por separado para diferentes evaluaciones. El equivalente en Windows es build-interceptor.bat.

El esquema predeterminado intercept-poc-example es un marcador de posición inofensivo. El script de compilación se niega a producir un APK de evaluación con ese esquema predeterminado.

Primer Inicio

En el primer inicio para cada versión de la aplicación, apk-interceptor muestra un diálogo de uso autorizado. Después de tocar Entiendo, la misma versión no vuelve a mostrar el diálogo. La pestaña Sender aún muestra una advertencia persistente porque puede enviar Intents a otras aplicaciones.

Diálogo de uso autorizado

Capturas de Pantalla

SenderPayloadInterceptor
Pestaña SenderPestaña PayloadPestaña Interceptor

Módulos de la Aplicación

Interceptor

Usa esta pestaña para verificar la interceptación de esquemas URI personalizados.

Qué muestra:

  • El esquema compilado en este APK
  • Una advertencia si el esquema predeterminado ficticio aún está en uso
  • Registros de deeplinks recibidos
  • Un campo de parámetro de consulta de prueba
  • Send Test Deeplink
  • Clear

Flujo de trabajo básico:

  1. Compila el APK con el esquema personalizado evaluado.
  2. Instálalo junto con la aplicación evaluada.
  3. Dispara un deeplink para ese esquema desde el flujo evaluado, navegador, adb o el botón integrado Send Test Deeplink.
  4. Si Android enruta el enlace a apk-interceptor, abre la pestaña Interceptor y revisa la URI recibida y los parámetros de consulta.

Acerca de Send Test Deeplink: siempre envía <scheme>://test?<tus parámetros> con un host test fijo, por lo que está destinado a confirmar que apk-interceptor recibe y registra el esquema, no para conducir las rutas de deeplink específicas de la aplicación evaluada. Para enviar un deeplink manipulado que coincida con el host o la ruta requeridos por la aplicación evaluada, usa el modo Implicit Deeplink de la pestaña Sender.

Ejemplo con adb:

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

Usa \& al enviar múltiples parámetros de consulta a través de adb shell; de lo contrario, el shell del dispositivo podría tratar & como un separador de comandos.

Resultado esperado:

  • apk-interceptor se abre en la pestaña Interceptor
  • Aparece una entrada de registro RECEIVED
  • Tocar la entrada de registro expande la URI completa y la lista de parámetros

Sender

Usa esta pestaña para enviar Intents controlados durante una prueba autorizada.

Modos:

  • Implicit Deeplink: envía Intent(ACTION_VIEW, Uri.parse(uri))
  • Explicit Activity: envía un Intent a un paquete y una clase Activity específicos

Campos y controles:

  • URI para el modo de deeplink implícito
  • Package name para el modo de Activity explícito
  • Activity class para el modo de Activity explícito
  • Attach content:// URI para establecer la URI del payload local como datos del Intent (se muestra solo en el modo Explicit Activity; consulta la nota a continuación)
  • FLAG_GRANT_READ_URI_PERMISSION para conceder acceso de lectura a la URI del payload adjunta
  • Send Intent

Flujo de trabajo de deeplink implícito:

  1. Selecciona Implicit Deeplink.
  2. Ingresa una URI que coincida con el patrón de deeplink de la aplicación evaluada.
  3. Toca Send Intent.
  4. Observa el comportamiento de la aplicación evaluada y el registro de apk-interceptor.

Flujo de trabajo de Activity explícito:

  1. Confirma que la Activity objetivo está exportada y cubierta por tu autorización.
  2. Selecciona Explicit Activity.
  3. Ingresa el nombre del paquete de la aplicación evaluada.
  4. Ingresa el nombre de la clase Activity exportada.
  5. Opcionalmente, activa Attach content:// URI.
  6. Toca Send Intent.

Notas:

  • apk-interceptor no sabe si la aplicación evaluada manejó el Intent de forma segura. Debes observar el comportamiento de la aplicación evaluada, los registros o el entorno de prueba.
  • El adjunto content:// es útil al probar si una Activity objetivo pasa datos de Intent no confiables a un WebView.
  • Attach content:// URI se ofrece solo en el modo Explicit Activity. El payload se entrega como los data del Intent, lo que sobrescribiría la URI que escribes en el modo Implicit Deeplink, por lo que la opción está oculta allí.
  • PayloadProvider no está exportado. La aplicación evaluada puede leer el payload content:// adjunto solo porque el Intent le concede acceso de lectura temporal mediante FLAG_GRANT_READ_URI_PERMISSION. Mantén esa bandera activada y entrega la URI a través del Intent. Una URI content:// abierta de cualquier otra manera no será legible por otra aplicación.

Payload

Usa esta pestaña para crear un payload HTML local y validar la sintaxis del puente JavaScript en el WebView de autoevaluación de apk-interceptor.

Qué contiene:

  • Editor HTML
  • Editor JavaScript evaluado después de cargar la página
  • Bridge object name
  • URI content:// generada
  • Save Payload
  • Run Self-Test
  • WebView de autoevaluación
  • Resultado del puente y registros de consola

Formato de la URI del payload generado:

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

El proveedor sirve solo este archivo fijo:

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

Flujo de trabajo de autoevaluación del payload:

  1. Ingresa o pega HTML en el campo HTML.
  2. Ingresa el nombre del objeto puente que deseas probar localmente, por ejemplo localBridge.
  3. Agrega JavaScript dentro de tu HTML o en el editor de JavaScript.
  4. Toca Save Payload.
  5. Toca Run Self-Test.
  6. Revisa las entradas BRIDGE_RESULT, console.log y evaluateJavascript result en el registro.

Ejemplo de JavaScript de autoevaluación:

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

El puente de autoevaluación expone:

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

Limitación importante:

El WebView de autoevaluación confirma que tu payload local y la sintaxis de llamada al puente funcionan dentro de apk-interceptor. No puede observar si el WebView de otra aplicación ejecutó tu payload o llamó a su propio puente. Para la aplicación evaluada, verifica a través de su interfaz de usuario, registros, hooks de prueba o Chrome DevTools si la aplicación es depurable.

Flujos de Trabajo Orientados a Vulnerabilidades

1. Secuestro de Esquema URI Personalizado

Riesgo:

Una aplicación Android registra un esquema URI personalizado en lugar de un App Link verificado. Cualquier otra aplicación puede registrar el mismo esquema, por lo que Android puede mostrar un selector de aplicaciones o enrutar enlaces a una aplicación diferente.

Usa apk-interceptor para comprobar:

  • Si el esquema puede ser registrado por otra aplicación
  • Si Android ofrece apk-interceptor como manejador
  • Si aparecen valores sensibles en los parámetros del deeplink

Pasos:

  1. Identifica el esquema personalizado de la aplicación evaluada desde su manifiesto o documentación.
  2. Compila apk-interceptor con ese esquema.
  3. Instala apk-interceptor y la aplicación evaluada en el mismo dispositivo de prueba.
  4. Dispara un deeplink desde el flujo de prueba autorizado.
  5. Si apk-interceptor lo recibe, inspecciona el registro del Interceptor.

Evidencia a capturar:

  • Comportamiento del selector del SO, si se muestra
  • URI completa recibida
  • Parámetros de consulta y si contienen valores sensibles
  • Interacción del usuario necesaria para enrutar el enlace

2. Inyección de Parámetros en Deeplink

Riesgo:

La aplicación evaluada confía en los parámetros del deeplink para navegación, carga de URL, características, selección de cuenta o renderizado sin suficiente validación.

Usa apk-interceptor para comprobar:

  • Si se aceptan parámetros manipulados
  • Si la aplicación navega a una pantalla no deseada
  • Si se utilizan valores de URL/ruta/contenido no seguros

Pasos:

  1. Identifica el formato de deeplink de la aplicación evaluada.
  2. Abre Sender.
  3. Selecciona Implicit Deeplink.
  4. Ingresa una URI de prueba autorizada con parámetros controlados.
  5. Toca Send Intent.
  6. Observa el comportamiento de la aplicación evaluada.

Ejemplo de marcador de posición:

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

No uses dominios o cuentas reales de terceros a menos que estén explícitamente en el alcance.

3. Control de Acceso a Activity Exportada

Riesgo:

Una Activity exportada realiza acciones sensibles o muestra datos sensibles sin verificar el llamante, el estado del usuario o la autorización requerida.

Usa apk-interceptor para comprobar:

  • Si la Activity exportada se lanza desde otra aplicación
  • Si realiza comportamiento sensible sin las comprobaciones esperadas
  • Si los datos del Intent cambian su comportamiento

Pasos:

  1. Confirma que la Activity está exportada y dentro del alcance.
  2. Abre Sender.
  3. Selecciona Explicit Activity.
  4. Ingresa el nombre del paquete y la clase Activity.
  5. Opcionalmente, adjunta la URI del payload local content://.
  6. Toca Send Intent.
  7. Observa si la aplicación evaluada aplica control de acceso.

Evidencia a capturar:

  • Activity lanzada o bloqueada
  • Cualquier solicitud de autenticación o autorización
  • Exposición de acción o datos sensibles
  • Datos del Intent utilizados por la Activity

4. Exposición de Puente JavaScript WebView vía content://

Riesgo:

La aplicación evaluada carga datos content:// no confiables del Intent en un WebView que también expone un puente JavaScript mediante addJavascriptInterface.

Usa apk-interceptor para comprobar:

  • Si se puede entregar un payload HTML local como content://
  • Si el WebView objetivo carga el payload
  • Si JavaScript desde esa fuente puede alcanzar el puente

Pasos:

  1. Identifica la Activity objetivo y el nombre del objeto puente durante el análisis autorizado.
  2. Abre Payload.
  3. Crea HTML/JS que llame al puente esperado.
  4. Usa Run Self-Test para validar tu sintaxis localmente.
  5. Abre Sender.
  6. Selecciona Explicit Activity.
  7. Ingresa el paquete objetivo y la clase Activity.
  8. Activa Attach content:// URI y mantén FLAG_GRANT_READ_URI_PERMISSION activado.
  9. Toca Send Intent.
  10. Observa la aplicación evaluada para determinar si su WebView cargó el payload y si se ejecutaron las llamadas al puente.

Limitación importante:

apk-interceptor no puede recibir resultados de otra aplicación a menos que esa aplicación los devuelva o muestre explícitamente. La herramienta está diseñada para entregar un payload local y validar sintaxis, no para exfiltrar datos.

Verificaciones desde Línea de Comandos

Verifica que el APK no solicite acceso a la red:

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

Esperado: sin android.permission.INTERNET.

Dispara un deeplink explícitamente a 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'

Dispara un deeplink a través del resolvedor de Android:

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

El comando explícito confirma el comportamiento de InterceptActivity. El comando implícito confirma el intent-filter del manifiesto y el comportamiento del resolvedor.

Pruebas

Las pruebas unitarias se ejecutan en la JVM con Robolectric, por lo que no se requiere dispositivo ni emulador. Cubren PayloadProvider, incluyendo las comprobaciones de lista blanca de rutas y traversing que evitan que el proveedor sirva cualquier otro archivo que no sea el único current.html.

root@kitploit:~
./gradlew testDebugUnitTest

Los resultados de las pruebas se escriben en app/build/reports/tests/testDebugUnitTest/index.html. La misma tarea se ejecuta en CI en cada push y pull request a main.

Barreras de Diseño

  • Sin android.permission.INTERNET
  • Sin transmisión de datos externa o exfiltración automatizada
  • Sin función de ejecución de comandos de shell
  • Sin dependencia de root, Magisk, Frida o instrumentación
  • Sin registro en tiempo de ejecución de esquemas arbitrarios
  • Sin proveedor genérico de servicios de archivos
  • Solo PayloadProvider sirve /current.html

Licencia

MIT

Descargar herramienta
EscenarioMóduloQué Ayuda a Verificar
Secuestro de esquema URI personalizadoInterceptorSi otra aplicación puede registrar el mismo esquema personalizado y recibir enlaces
Manejo de parámetros de DeeplinkSenderSi la aplicación evaluada acepta parámetros de consulta/ruta no seguros
Exposición de Activity exportadaSenderSi una Activity exportada puede ser lanzada directamente por otra aplicación
Exposición de puente WebView vía content://Payload + SenderSi un payload HTML local puede alcanzar un puente JavaScript de WebView
Verificación de sintaxis de payload localPayloadSi tu payload HTML/JS se ejecuta en el WebView de autoevaluación
HerramientaRolEn qué se diferencia apk-interceptor
jadx / MobSF / QARK / SemgrepEncontrar puntos de entrada vulnerables (estático)apk-interceptor no escanea ni decompila; confirma un hallazgo que ya tienes
deep-C / NSdeepLink / adb am startEnumerar y enviar deeplinksapk-interceptor también puede enviar, pero su diferenciador es recibir un esquema secuestrado y mostrar la URI exacta y los parámetros
drozerFramework de ataque general en el dispositivo (agente + a menudo root)apk-interceptor es un único APK ligero con barreras de seguridad deliberadas, un alcance más reducido y una distribución más segura para el cliente
Metasploit / FridaArmar o enganchar (ej. RCE de addJavascriptInterface)apk-interceptor solo verifica la alcanzabilidad del puente con un payload inofensivo; nunca exfiltra ni ejecuta comandos de shell