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
frida-interception-and-unpinning — Scripts Frida pour réécrire les applications mobiles en cours d'exécution afin de mener directement une attaque MitM sur tout le trafic HTTPS | Kitploit
Outils/GitHubGitHub/httptoolkit/frida-interception-and-unpinning
Sécurité AndroidSécurité iOSProxies Web et InterceptionPentesting d'Applications MobilesRétro-ingénierieTests d'IntrusionSécurité Mobile
GitHubhttptoolkit/frida-interception-and-unpinning

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

frida-interception-and-unpinning

Scripts Frida pour réécrire les applications mobiles en cours d'exécution afin de mener directement une attaque MitM sur tout le trafic HTTPS

Voir le dépôtSite web
2.3k292il y a 2 joursVérifié par Kitploit

Scripts d'interception mobile Frida Funded by NLnet - NGI Zero Entrust

Fait partie de HTTP Toolkit : des outils puissants pour créer, tester et déboguer HTTP(S)

Ce dépôt contient des scripts Frida conçus pour faire tout ce qui est nécessaire à l'interception HTTPS MitM entièrement automatisée sur les appareils mobiles.

Cet ensemble de scripts peut être utilisé en entier pour gérer l'interception, gérer la confiance des certificats et désactiver le certificate pinning et les contrôles de transparence des certificats, pour l'interception MitM du trafic HTTP(S) sur Android et iOS, ou ils peuvent être utilisés et ajustés indépendamment pour ne hooker que des fonctionnalités spécifiques.

Les scripts peuvent gérer automatiquement :

  • Redirection du trafic vers un proxy HTTP(S) - en modifiant à la fois les paramètres système et en redirigeant directement toutes les connexions socket.
  • Injection d'un certificat CA donné dans les magasins de confiance du système afin qu'ils soient approuvés par défaut dans les connexions.
  • Correction de nombreux (tous ?) outils connus de certificate pinning et de transparence des certificats, pour permettre l'interception par votre certificat CA même lorsque celle-ci est activement bloquée.
  • Sur Android, en secours : détection automatique des échecs de pinning restants, pour tenter l'auto-patching du certificate pinning obfusqué (dans les applications entièrement obfusquées, la première requête peut échouer, mais cela déclenche un patching supplémentaire pour que toutes les requêtes suivantes fonctionnent correctement).
  • Désactivation de nombreuses détections courantes de root et de jailbreak.
  • Blocage de la plupart des connexions HTTP/3 (tout l'UDP vers le port 443), qui peuvent être gênantes à intercepter, en forçant les applications à revenir à HTTP/2 ou HTTP/1.

Guide de démarrage Android

  1. Démarrez votre proxy MitM (par exemple HTTP Toolkit), et configurez votre appareil Android rooté ou votre émulateur, connecté à ADB.
  2. Trouvez le port de votre proxy MitM (par ex. 8000) et son certificat CA au format PEM
    • Le certificat CA devrait commencer par -----BEGIN CERTIFICATE-----. Vous pouvez l'ouvrir avec un éditeur de texte pour voir et extraire ce contenu.
    • Dans HTTP Toolkit, ces deux informations se trouvent dans l'option 'Anything' de la page Intercept.
  3. Ouvrez config.js et ajoutez ces informations :
    • CERT_PEM : votre certificat CA au format PEM.
    • PROXY_PORT : le port du proxy
    • PROXY_HOST : l'adresse de votre proxy, du point de vue de votre appareil (ou utilisez adb reverse tcp:$PORT tcp:$PORT pour rediriger le port via ADB, et utilisez 127.0.0.1 comme hôte)
  4. Installez et démarrez Frida sur votre appareil
    • Les étapes ici peuvent dépendre de votre appareil et de votre configuration spécifiques.
    • Par exemple : téléchargez le frida-server correspondant depuis github.com/frida/frida, extrayez-le, faites un adb push vers votre appareil, puis exécutez-le avec les 4 commandes suivantes : , , , .

Guide de démarrage iOS

  1. Démarrez votre proxy MitM (par exemple HTTP Toolkit), et configurez votre appareil iOS jailbreaké, connecté à votre ordinateur.
  2. Trouvez le port de votre proxy MitM (par ex. 8000) et son certificat CA au format PEM
    • Le certificat CA devrait commencer par -----BEGIN CERTIFICATE-----. Vous pouvez l'ouvrir avec un éditeur de texte pour voir et extraire ce contenu.
    • Dans HTTP Toolkit, ces deux informations se trouvent dans l'option 'Anything' de la page Intercept.
  3. Ouvrez config.js et ajoutez ces informations :
    • CERT_PEM : votre certificat CA au format PEM.
    • PROXY_PORT : le port du proxy
    • PROXY_HOST : l'adresse de votre proxy, du point de vue de votre appareil
  4. Installez et démarrez Frida sur votre appareil
    • Les étapes ici peuvent dépendre de votre appareil et de votre configuration spécifiques, mais c'est généralement disponible via Cydia/Sileo, etc. en utilisant https://build.frida.re comme source de paquets.
    • Assurez-vous de pouvoir exécuter frida-ps -Uai sur votre ordinateur pour confirmer que cela fonctionne correctement.
  5. Trouvez l'identifiant de l'application qui vous intéresse via frida-ps -Uai (pour un test rapide, essayez d'utiliser github.com/httptoolkit/ios-ssl-pinning-demo - l'identifiant est )

Les scripts

Les commandes ci-dessus utilisent tous les scripts pertinents, mais vous pouvez généralement utiliser n'importe quel sous-ensemble de votre choix, bien que dans presque tous les cas vous voudrez inclure config.js comme premier script (il définit certaines variables utilisées par les autres scripts).

Par exemple, pour faire uniquement de l'unpinning sur Android, lorsque la configuration du proxy et des certificats est gérée ailleurs et sans fallbacks d'obfuscation, vous pouvez simplement exécuter :

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

Chaque script comprend une documentation détaillée sur ce qu'il fait et comment il fonctionne dans un grand bloc de commentaires en haut. Les scripts sont :

  • config.js

    Ce script définit des variables utilisées par d'autres scripts :

    • CERT_PEM - le certificat CA supplémentaire à approuver, au format PEM
    • PROXY_HOST - l'adresse IP (IPv4) du serveur proxy à utiliser (non requis si vous ne faites que de l'unpinning)
    • PROXY_PORT - le port du serveur proxy à utiliser (non requis si vous ne faites que de l'unpinning)
    • DEBUG_MODE - vaut false par défaut, mais passer ceci à true activera beaucoup de sorties supplémentaires qui peuvent être utiles pour le débogage et le reverse engineering de tout problème.
    • BLOCK_HTTP3 - vaut true par défaut, ce qui bloque HTTP/3 en supprimant toutes les connexions UDP vers le port 443.

    Ce script doit être listé sur la ligne de commande avant tous les autres scripts.

  • native-connect-hook.js

    Capture tout le trafic réseau directement, en routant toutes les connexions vers l'hôte et le port du proxy configuré.

    C'est un hook de bas niveau qui s'applique à toutes les connexions réseau. Cela garantit que toutes les connexions sont forcément redirigées vers le serveur proxy cible, même celles qui ignorent les paramètres de proxy ou établissent d'autres connexions socket brutes, et bloque également les connexions HTTP/3 si activé.

Ces scripts font partie d'un projet HTTP Toolkit plus large, financés par le Fonds NGI Zero Entrust, établi par NLnet avec le soutien financier du programme Next Generation Internet de la Commission européenne. En savoir plus sur la page projet NLnet.

Logo de la fondation NLnet Logo NGI Zero Entrust

Télécharger l’outil
adb shell
su
chmod +x /.../frida-server
/.../frida-server
  • Si vous rencontrez des problèmes, pensez à vérifier que l'appareil est allumé et connecté (avec adb devices) avant d'exécuter les commandes. Notez que Frida ne s'exécute qu'en root sur l'appareil, ce que fournit su dans l'exemple ci-dessus, lorsqu'on est sur un appareil rooté. Pour vérifier que vous êtes root après avoir exécuté su ou une commande similaire, vérifiez que l'exécution de whoami dans le shell affiche root.
  • Trouvez l'identifiant du package de l'application qui vous intéresse (pour un test rapide, essayez d'utiliser github.com/httptoolkit/android-ssl-pinning-demo - l'identifiant du package est tech.httptoolkit.pinning_demo)
  • Utilisez Frida pour lancer l'application qui vous intéresse avec les scripts injectés (en commençant par config.js). Le choix des scripts à utiliser vous appartient, mais pour Android une bonne commande pour commencer est :
    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
    
  • Explorez, examinez et modifiez tout le trafic qui vous intéresse ! Si vous avez des problèmes, veuillez ouvrir une issue et aidez à améliorer ces scripts.
  • com.httptoolkit.ios-pinning-demo
  • Utilisez Frida pour lancer l'application qui vous intéresse avec les scripts injectés (en commençant par config.js). Le choix des scripts à utiliser vous appartient, mais pour iOS une bonne commande pour commencer est :
    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
    
  • Explorez, examinez et modifiez tout le trafic qui vous intéresse ! Si vous avez des problèmes, veuillez ouvrir une issue et aidez à améliorer ces scripts.
  • Ce hook s'applique à libc et fonctionne pour Android, Linux, iOS et de nombreux autres environnements apparentés.

  • native-tls-hook.js

    Modifie toute la validation TLS pour les bibliothèques basées sur BoringSSL afin d'approuver votre certificat CA configuré.

    Notamment, ce hook cible les API BoringSSL intégrées sur iOS, ce qui est la façon normale pour iOS de gérer la validation des certificats TLS (c'est donc suffisant pour presque toute l'interception HTTPS sur iOS), mais il est aussi utilisé dans quelques autres cas sur iOS et Android.

    Cela revient à approuver votre CA pour tous les certificats, et désactive tout le certificate pinning, la transparence des certificats et les autres restrictions pour votre CA. Notez que contrairement à beaucoup d'autres hooks Frida ailleurs, cela ne désactive pas complètement la validation TLS (ce qui est très peu sûr). Au lieu de cela, il remplace la validation pour garantir que toutes les connexions utilisant votre certificat CA spécifique sont approuvées, sans assouplir la validation pour permettre l'interception par des tiers.

  • android/

    • android-proxy-override.js

      Remplace les paramètres proxy Android pour l'application cible, garantissant que tout le trafic bien comporté est redirigé via le serveur proxy et intercepté.

    • android-system-certificate-injection.js

      Modifie les API Android natives pour garantir que tous les magasins de confiance approuvent votre certificat CA supplémentaire par défaut, permettant ainsi de capturer le trafic TLS chiffré.

    • android-certificate-unpinning.js

      Modifie ou désactive de nombreuses techniques connues courantes de restrictions supplémentaires de certificats, notamment le certificate pinning (n'acceptant qu'un petit ensemble de certificats reconnus, plutôt que tous les certificats approuvés par le système) et la transparence des certificats (validant que tous les certificats utilisés ont été enregistrés dans les journaux publics de certificats).

    • android-certificate-unpinning-fallback.js

      Détecte les échecs de validation de certificats non gérés, et tente de traiter les cas inconnus non reconnus avec des correctifs de secours générés automatiquement. C'est plus expérimental et cela peut être légèrement imprévisible, mais c'est très utile pour les cas obfusqués, et en général cela corrigera les problèmes de pinning (après un premier échec) ou mettra au moins en évidence du code pour un reverse engineering ultérieur dans la sortie du journal Frida. Ce script partage une partie de la logique avec android-certificate-unpinning.js et ne peut pas être utilisé seul - si vous voulez utiliser ce script, vous devrez inclure aussi le script d'unpinning non-fallback.

    • android-disable-root-detection.js

      Désactive les contrôles courants de détection de root dans les couches natives et Java pour empêcher la détection des appareils Android rootés.

      Ce script intercepte l'accès au système de fichiers, les commandes shell et les recherches de paquets pour les indicateurs de root connus (comme su, Magisk et les applications associées), et simule les propriétés système clés (ro.secure, ro.debuggable, etc.) pour simuler un environnement de production.

      Il bloque les comportements suspects comme les vérifications d'existence de fichiers et l'exécution de commandes shell, aidant à échapper à la détection dans les applications utilisant à la fois des contrôles de root standard et avancés.

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

      Garantit que les applications basées sur Flutter (qui ignorent généralement la configuration des certificats système) approuvent votre certificat CA, même dans la plupart des cas de certificate pinning explicite. Ce script reste expérimental pour l'instant.

  • ios/

    • ios-connect-hook.js

      Capture tout le trafic réseau iOS directement, en routant toutes les connexions vers l'hôte et le port du proxy configuré.

      C'est un hook de bas niveau qui s'applique à toutes les connexions réseau. Cela garantit que toutes les connexions sont forcément redirigées vers le serveur proxy cible, même celles qui ignorent les paramètres de proxy ou établissent d'autres connexions socket brutes.

    • ios-disable-detection.js

      Désactive la détection de jailbreak JailMonkey.

  • utilities/test-ip-connectivity.js

    Vous ne voudrez probablement pas l'utiliser normalement dans le cadre de l'interception elle-même, mais cela peut être très utile lors de la mise en place de votre configuration.

    Ce script vous permet de configurer une liste d'adresses IP possibles et un port cible, de faire tester chaque adresse par le processus, et d'envoyer un message au client Frida pour la première adresse joignable fournie. Cela peut être utile pour les processus de configuration automatisés, si vous ne savez pas quelle adresse IP est la meilleure pour atteindre le serveur proxy (votre ordinateur) depuis l'appareil cible (votre téléphone).