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
frida-interception-and-unpinning — Scripts de Frida para reescribir aplicaciones móviles en tiempo de ejecución y realizar MitM directo de todo el tráfico HTTPS. | Kitploit
Herramientas/GitHubGitHub/httptoolkit/frida-interception-and-unpinning
Seguridad AndroidSeguridad iOSProxies Web e InterceptaciónPentesting de Apps MóvilesIngeniería InversaPruebas de PenetraciónSeguridad Móvil
GitHubhttptoolkit/frida-interception-and-unpinning

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

frida-interception-and-unpinning

Scripts de Frida para reescribir aplicaciones móviles en tiempo de ejecución y realizar MitM directo de todo el tráfico HTTPS.

Ver RepositorioSitio web
2.3k292hace 2 díasRevisado por Kitploit

Frida Mobile Interception Scripts Funded by NLnet - NGI Zero Entrust

Parte de HTTP Toolkit: potentes herramientas para construir, probar y depurar HTTP(S)

Este repositorio contiene scripts de Frida diseñados para hacer todo lo necesario para la intercepción HTTPS MitM totalmente automatizada en dispositivos móviles.

Este conjunto de scripts puede usarse en conjunto para manejar la intercepción, gestionar la confianza de certificados y deshabilitar la fijación de certificados y las comprobaciones de transparencia, para la intercepción MitM de tráfico HTTP(S) en Android e iOS, o pueden usarse y modificarse de forma independiente para enganchar solo funciones específicas.

Los scripts pueden manejar automáticamente:

  • Redirección del tráfico a un proxy HTTP(S): modificando tanto la configuración del sistema como redirigiendo directamente todas las conexiones de socket.
  • Inyección de un certificado CA dado en los almacenes de confianza del sistema para que sean confiados por defecto en las conexiones.
  • Parcheo de muchas (¿todas?) las herramientas conocidas de fijación de certificados y transparencia de certificados, para permitir la intercepción con tu certificado CA incluso cuando esto está bloqueado activamente.
  • En Android, como fallback: detección automática de fallos de fijación restantes, para intentar el parcheo automático de la fijación de certificados ofuscada (en aplicaciones totalmente ofuscadas, la primera solicitud puede fallar, pero esto activará parcheos adicionales para que todas las solicitudes posteriores funcionen correctamente).
  • Deshabilitación de muchas detecciones comunes de root y jailbreak.
  • Bloqueo de la mayoría de conexiones HTTP/3 (todo el UDP al puerto 443), que pueden ser inconvenientes de interceptar, asegurando que las aplicaciones recurran a HTTP/2 o HTTP/1.

Guía de inicio en Android

  1. Inicia tu proxy MitM (por ejemplo, HTTP Toolkit) y configura tu dispositivo Android rooteado o emulador, conectado a ADB.
  2. Encuentra el puerto de tu proxy MitM (por ejemplo, 8000) y su certificado CA en formato PEM
    • El certificado CA debe comenzar con -----BEGIN CERTIFICATE-----. Puedes abrirlo con un editor de texto para ver y extraer este contenido.
    • En HTTP Toolkit, ambos detalles se pueden encontrar en la opción 'Anything' de la página Intercept.
  3. Abre config.js y añade esos detalles:
    • CERT_PEM: tu certificado CA en formato PEM.
    • PROXY_PORT: el puerto del proxy
    • PROXY_HOST: la dirección de tu proxy, desde la perspectiva de tu dispositivo (o usa adb reverse tcp:$PORT tcp:$PORT para reenviar el puerto a través de ADB, y usa 127.0.0.1 como host)
  4. Instala e inicia Frida en tu dispositivo
    • Los pasos aquí pueden depender de tu dispositivo y configuración específicos.
    • Por ejemplo: descarga el frida-server relevante desde github.com/frida/frida, extráelo, haz adb push a tu dispositivo, y luego ejecútalo con los siguientes 4 comandos: , , , .

Guía de inicio en iOS

  1. Inicia tu proxy MitM (por ejemplo, HTTP Toolkit) y configura tu dispositivo iOS con jailbreak, conectado a tu ordenador.
  2. Encuentra el puerto de tu proxy MitM (por ejemplo, 8000) y su certificado CA en formato PEM
    • El certificado CA debe comenzar con -----BEGIN CERTIFICATE-----. Puedes abrirlo con un editor de texto para ver y extraer este contenido.
    • En HTTP Toolkit, ambos detalles se pueden encontrar en la opción 'Anything' de la página Intercept.
  3. Abre config.js y añade esos detalles:
    • CERT_PEM: tu certificado CA en formato PEM.
    • PROXY_PORT: el puerto del proxy
    • PROXY_HOST: la dirección de tu proxy, desde la perspectiva de tu dispositivo
  4. Instala e inicia Frida en tu dispositivo
    • Los pasos aquí pueden depender de tu dispositivo y configuración específicos, pero esto generalmente está disponible a través de Cydia/Sileo, etc., usando https://build.frida.re como fuente de paquetes.
    • Asegúrate de poder ejecutar frida-ps -Uai en tu ordenador para confirmar que esto funciona correctamente.
  5. Encuentra el ID de la aplicación que te interesa mediante frida-ps -Uai (para una prueba rápida, intenta usar github.com/httptoolkit/ios-ssl-pinning-demo - el ID es )

Los Scripts

Los comandos anteriores usan todos los scripts relevantes, pero generalmente puedes usar cualquier subconjunto que desees, aunque en casi todos los casos querrás incluir config.js como primer script (este define algunas variables que usan otros scripts).

Por ejemplo, para hacer solo el desanclado en Android, cuando la configuración del proxy y del certificado se maneja en otro lugar y sin fallbacks de ofuscación, podrías simplemente ejecutar:

root@kitploit:~
frida -U \
    -l ./config.js \
    -l ./android/android-certificate-unpinning.js
    -f $PACKAGE_ID

Cada script incluye documentación detallada sobre qué hace y cómo funciona en una gran sección de comentarios en la parte superior. Los scripts son:

  • config.js

    Este define variables usadas por otros scripts:

    • CERT_PEM - el certificado CA extra a confiar, en formato PEM
    • PROXY_HOST - la dirección IP (IPv4) del servidor proxy a usar (no es necesario si solo estás desanclando)
    • PROXY_PORT - el puerto del servidor proxy a usar (no es necesario si solo estás desanclando)
    • DEBUG_MODE - el valor por defecto es false, pero cambiarlo a true habilitará mucha salida adicional que puede ser útil para depurar e ingeniería inversa de cualquier problema.
    • BLOCK_HTTP3 - el valor por defecto es true, que bloquea HTTP/3 descartando todas las conexiones UDP al puerto 443.

    Este debe aparecer en la línea de comandos antes que cualquier otro script.

  • native-connect-hook.js

    Captura todo el tráfico de red directamente, enrutando todas las conexiones al host y puerto del proxy configurado.

    Este es un hook de bajo nivel que se aplica a todas las conexiones de red. Esto asegura que todas las conexiones se redirijan forzosamente al servidor proxy objetivo, incluso aquellas que ignoran la configuración del proxy o realizan otras conexiones de socket crudas, y también bloquea las conexiones HTTP/3 si está habilitado.

Estos scripts son parte de un proyecto más amplio de HTTP Toolkit, financiado a través del NGI Zero Entrust Fund, establecido por NLnet con el apoyo financiero del programa Next Generation Internet de la Comisión Europea. Aprende más en la página del proyecto en NLnet.

NLnet foundation logo NGI Zero Entrust Logo

Descargar herramienta
adb shell
su
chmod +x /.../frida-server
/.../frida-server
  • Si tienes problemas, recuerda comprobar que el dispositivo está encendido y conectado (usando adb devices) antes de ejecutar comandos. Ten en cuenta que Frida solo se ejecutará en el dispositivo como root, que es lo que proporciona su en el ejemplo anterior, cuando se ejecuta en un dispositivo rooteado. Para comprobar que eres root después de ejecutar su o similar, verifica que al ejecutar whoami en el shell se imprima root.
  • Encuentra el ID de paquete de la aplicación que te interesa (para una prueba rápida, intenta usar github.com/httptoolkit/android-ssl-pinning-demo - el ID de paquete es tech.httptoolkit.pinning_demo)
  • Usa Frida para lanzar la aplicación que te interesa con los scripts inyectados (comenzando por config.js). Qué scripts usar depende de ti, pero para Android un buen comando para empezar es:
    root@kitploit:~
    frida -U \
        -l ./config.js \
        -l ./native-connect-hook.js \
        -l ./native-tls-hook.js \
        -l ./android/android-proxy-override.js \
        -l ./android/android-system-certificate-injection.js \
        -l ./android/android-certificate-unpinning.js \
        -l ./android/android-certificate-unpinning-fallback.js \
        -l ./android/android-disable-root-detection.js \
        -f $PACKAGE_ID
    
  • ¡Explora, examina y modifica todo el tráfico que te interese! Si tienes algún problema, por favor abre un issue y ayuda a mejorar estos scripts.
  • com.httptoolkit.ios-pinning-demo
  • Usa Frida para lanzar la aplicación que te interesa con los scripts inyectados (comenzando por config.js). Qué scripts usar depende de ti, pero para iOS un buen comando para empezar es:
    root@kitploit:~
    frida -U \
        -l ./config.js \
        -l ./ios/ios-connect-hook.js \
        -l ./ios/ios-disable-detection.js \
        -l ./native-tls-hook.js \
        -l ./native-connect-hook.js \
        -f $APP_ID
    
  • ¡Explora, examina y modifica todo el tráfico que te interese! Si tienes algún problema, por favor abre un issue y ayuda a mejorar estos scripts.
  • Este hook se aplica a libc, y funciona en Android, Linux, iOS y muchos otros entornos relacionados.

  • native-tls-hook.js

    Modifica toda la validación TLS para bibliotecas basadas en BoringSSL para que confíen en tu certificado CA configurado.

    Notablemente, esto engancha las APIs BoringSSL integradas en iOS, que es la forma normal en que iOS maneja la validación de certificados TLS (por lo que esto es suficiente para casi toda la intercepción HTTPS en iOS), pero también se usa en algunos otros casos tanto en iOS como en Android.

    Esto efectivamente confía en tu CA para todos los certificados, y deshabilita toda fijación de certificados, transparencia de certificados y otras restricciones para tu CA. Ten en cuenta que, a diferencia de muchos otros hooks de Frida en otros lugares, esto no desactiva por completo la validación TLS (lo cual es muy inseguro). En cambio, anula la validación para asegurar que todas las conexiones que usan tu certificado CA específico sean confiadas, sin relajar la validación para permitir la intercepción por terceros.

  • android/

    • android-proxy-override.js

      Anula la configuración de proxy de Android para la aplicación objetivo, asegurando que todo el tráfico bien comportado se redirija a través del servidor proxy y sea interceptado.

    • android-system-certificate-injection.js

      Modifica las APIs nativas de Android para asegurar que todos los almacenes de confianza confíen en tu certificado CA extra por defecto, permitiendo capturar tráfico TLS cifrado.

    • android-certificate-unpinning.js

      Modifica o deshabilita muchas técnicas conocidas comunes para restricciones adicionales de certificados, incluyendo la fijación de certificados (aceptando solo un pequeño conjunto de certificados reconocidos, en lugar de todos los certificados confiados en el sistema) y la transparencia de certificados (validando que todos los certificados usados hayan sido registrados en registros públicos de certificados).

    • android-certificate-unpinning-fallback.js

      Detecta fallos de validación de certificados no manejados, e intenta manejar casos desconocidos no reconocidos con parches de fallback generados automáticamente. Esto es más experimental y podría ser ligeramente impredecible, pero es muy útil para casos ofuscados, y en general o bien arreglará los problemas de fijación (después de un fallo inicial) o al menos resaltará código para mayor ingeniería inversa en la salida de registro de Frida. Este script comparte algo de lógica con android-certificate-unpinning.js, y no se puede usar de forma independiente: si quieres usar este script, tendrás que incluir también el script de desanclado sin fallback.

    • android-disable-root-detection.js

      Deshabilita comprobaciones comunes de detección de root en capas nativas y de Java para prevenir la detección de dispositivos Android rooteados.

      Este script intercepta el acceso al sistema de archivos, comandos de shell y búsquedas de paquetes para indicadores conocidos de root (como su, Magisk y aplicaciones relacionadas), y falsifica propiedades clave del sistema (ro.secure, ro.debuggable, etc.) para simular un entorno de producción.

      Bloquea comportamientos sospechosos como comprobaciones de existencia de archivos y ejecución de comandos de shell, ayudando a evadir la detección en aplicaciones que usan comprobaciones de root estándar y avanzadas.

    • android-disable-flutter-certificate-pinning.js

      Asegura que las aplicaciones basadas en Flutter (que generalmente ignoran la configuración de certificados del sistema) confíen en tu certificado CA, incluso en la mayoría de los casos de fijación de certificados explícita. Este script sigue siendo experimental por ahora.

  • ios/

    • ios-connect-hook.js

      Captura todo el tráfico de red de iOS directamente, enrutando todas las conexiones al host y puerto del proxy configurado.

      Este es un hook de bajo nivel que se aplica a todas las conexiones de red. Esto asegura que todas las conexiones se redirijan forzosamente al servidor proxy objetivo, incluso aquellas que ignoran la configuración del proxy o realizan otras conexiones de socket crudas.

    • ios-disable-detection.js

      Deshabilita la detección de jailbreak de JailMonkey.

  • utilities/test-ip-connectivity.js

    Probablemente no quieras usar esto normalmente como parte de la intercepción en sí, pero puede ser muy útil como parte de la configuración.

    Este script te permite configurar una lista de posibles direcciones IP y un puerto objetivo, y hacer que el proceso pruebe cada dirección, y envíe un mensaje al cliente de Frida para la primera dirección alcanzable proporcionada. Esto puede ser útil para procesos de configuración automatizados, si no sabes qué dirección IP es mejor usar para alcanzar el servidor proxy (tu ordenador) desde el dispositivo objetivo (tu teléfono).