Retour au blog

Bypass de SSL Pinning via proxy : comment intercepter le trafic d'une application mobile sans compromettre le test

SSL Pinning empêche l'interception du trafic des applications mobiles - nous expliquons comment contourner cela via un proxy sans connaissances techniques approfondies.

📅6 août 2026
```html

Vous configurez un proxy, connectez votre appareil - et l'application ne montre toujours pas le trafic ou plante avec une erreur. Le problème vient probablement de SSL Pinning : une protection que les développeurs intègrent intentionnellement dans l'application pour bloquer l'interception des requêtes HTTPS. C'est un casse-tête pour tous ceux qui analysent le comportement des applications concurrentes, testent les intégrations publicitaires ou étudient les API des marketplaces.

Dans ce guide, nous allons examiner ce qu'est SSL Pinning, pourquoi cela entrave le fonctionnement avec un proxy, et comment le contourner - étape par étape, sans théorie superflue.

Qu'est-ce que SSL Pinning et pourquoi est-il intégré dans les applications

SSL Pinning (ou Certificate Pinning) est un mécanisme de sécurité par lequel une application mobile "intègre" à l'avance un certificat SSL spécifique ou une clé publique du serveur. À chaque connexion, l'application vérifie si le certificat du serveur correspond à celui qui est intégré. Si ce n'est pas le cas, la connexion est interrompue.

Dans un schéma HTTPS classique, le navigateur ou l'application fait confiance à tout certificat signé par une autorité de certification (CA) de confiance. C'est ce que les outils proxy comme Charles Proxy ou mitmproxy exploitent : ils substituent leur propre certificat, déchiffrent le trafic et le transmettent. L'utilisateur voit tout l'échange de données en clair.

SSL Pinning casse ce schéma. L'application voit le certificat de l'outil proxy, comprend qu'il ne correspond pas au certificat "d'origine" du serveur, et refuse de fonctionner. C'est pourquoi vous voyez des erreurs comme SSL handshake failed, Certificate verification failed ou simplement un écran vide dans l'application.

Les développeurs intègrent SSL Pinning pour plusieurs raisons :

  • Protection contre les attaques de type Man-in-the-Middle (MITM)
  • Prévention du reverse engineering des API
  • Protection contre les bots et les requêtes automatisées
  • Cacher la logique interne de monétisation et les intégrations publicitaires

Parmi les applications qui utilisent activement SSL Pinning : les applications bancaires, les marketplaces (Wildberries, Ozon), les SDK publicitaires (Facebook, TikTok), les systèmes de paiement et les grandes plateformes de e-commerce. C'est pourquoi le contournement de SSL Pinning est si important pour les marketeurs, les arbitragistes et les analystes de la concurrence.

Pourquoi le proxy ne fonctionne pas si l'application utilise SSL Pinning

Lorsque vous configurez un proxy sur votre téléphone (par exemple, via les paramètres Wi-Fi), tout le trafic HTTP et HTTPS passe par le serveur proxy. Pour HTTP, cela fonctionne sans problème - le trafic est déjà en clair. Mais pour HTTPS, l'outil proxy doit "se faire passer" pour le serveur en substituant son propre certificat.

C'est là que le conflit se produit. Les applications ordinaires acceptent ce certificat si vous avez installé le certificat racine de l'outil proxy dans le magasin de certificats système de l'appareil. Mais les applications avec SSL Pinning ignorent le magasin système - elles vérifient uniquement leur certificat "intégré".

Comment cela se manifeste en pratique :

Vous connectez Charles Proxy, installez son certificat racine sur un iPhone, lancez l'application de la marketplace - et vous voyez une erreur ou un écran vide. Dans les logs de Charles, c'est le vide ou des enregistrements avec une erreur SSL. C'est le tableau classique de SSL Pinning en action.

Il est important de comprendre : le problème ne vient pas du serveur proxy (résident, mobile ou de centre de données). Le proxy agit ici comme un nœud intermédiaire pour le routage du trafic. Le problème réside dans l'application elle-même, qui refuse d'accepter le certificat substitué. C'est pourquoi la solution doit être recherchée au niveau de l'application ou de l'appareil, et non au niveau du serveur proxy.

Il existe plusieurs types de SSL Pinning, et ils diffèrent par la complexité de contournement :

Type de Pinning Ce qui est vérifié Complexité de contournement
Certificate Pinning Certificat complet du serveur Moyenne
Public Key Pinning Clé publique du certificat Élevée
Hash Pinning Hachage du certificat ou de la clé Élevée
Network Security Config Fichier de configuration Android (XML) Faible à moyenne

Outils pour intercepter le trafic : Charles, mitmproxy, Burp Suite

Avant de passer au contournement de SSL Pinning, il faut choisir un outil pour intercepter le trafic. Tous fonctionnent sur le même principe : ils mettent en place un serveur proxy local à travers lequel passe le trafic de l'appareil. La différence réside dans la convivialité, les fonctionnalités et le prix.

Charles Proxy

L'outil le plus populaire parmi les marketeurs et les testeurs sans formation technique approfondie. Il dispose d'une interface graphique, fonctionne sur Windows et macOS. Permet de voir toutes les requêtes et réponses dans un arbre pratique, de filtrer par domaine, d'éditer les requêtes à la volée. Payant, mais avec une période d'essai. Idéal pour analyser les API des marketplaces et des SDK publicitaires.

mitmproxy

Outil gratuit et open source. Fonctionne via la ligne de commande, mais dispose d'une interface web (mitmweb). Très flexible : prend en charge des scripts pour modifier automatiquement le trafic. Bien adapté à ceux qui souhaitent automatiser l'analyse ou intégrer l'interception dans le pipeline de test. Un peu plus complexe à configurer que Charles.

Burp Suite

Outil professionnel pour les tests de sécurité. Dispose d'une version Community gratuite avec des fonctionnalités de base. Particulièrement utile pour une analyse détaillée des requêtes, le travail avec les cookies et les sessions. Utilisé activement lors de l'analyse des API concurrentes et de l'étude des intégrations publicitaires. L'interface est plus complexe que celle de Charles, mais les possibilités sont plus larges.

Outil Interface Prix Pour qui
Charles Proxy GUI (convivial) Payant (~50 $) Marketeurs, analystes
mitmproxy CLI + Web UI Gratuit Techniciens
Burp Suite GUI (complexe) Gratuit / Pro Testeurs de sécurité

Pour la plupart des tâches d'un marketeur ou d'un arbitragiste - analyse des requêtes publicitaires, étude de l'API d'une marketplace, surveillance du trafic d'une application - Charles Proxy sera le choix optimal. Si vous avez besoin d'automatisation ou de travail sans GUI - optez pour mitmproxy.

Méthodes de contournement de SSL Pinning : des simples aux avancées

Il existe plusieurs approches pour contourner SSL Pinning. Elles diffèrent par leur complexité, leurs exigences en matière d'appareil et leur fiabilité. Examinons chacune d'elles - de la plus simple à la plus puissante.

Méthode 1 : Installation du certificat dans le magasin de certificats système (Android uniquement)

La méthode la plus simple - mais elle ne fonctionne que pour les applications qui utilisent le magasin de certificats système. Sur Android jusqu'à la version 7.0, les certificats personnalisés étaient acceptés au même titre que les certificats système. À partir d'Android 7.0, les applications ignorent par défaut les CA personnalisées. Si l'application autorise explicitement les certificats personnalisés dans network_security_config.xml - cette méthode fonctionnera. Pour la plupart des applications modernes avec SSL Pinning - cela ne fonctionnera pas.

Méthode 2 : Frida - patching dynamique de l'application

Frida est un outil pour l'instrumentation dynamique des applications. Il permet d'intercepter "à la volée" les appels de fonctions à l'intérieur de l'application et de modifier leur comportement. Pour contourner SSL Pinning, il existe des scripts prêts à l'emploi qui désactivent la vérification du certificat sans modifier l'APK. Nécessite un accès root sur Android ou un jailbreak sur iOS. C'est la méthode la plus fiable et polyvalente.

Méthode 3 : Patching de l'APK (Android)

Décompilation du fichier APK à l'aide d'apktool, suppression ou modification du code SSL Pinning, reconstruction et signature de l'application. Ne nécessite pas de root, mais nécessite des compétences techniques pour travailler avec le code smali. Fonctionne bien pour les applications avec une mise en œuvre simple du Pinning via Network Security Config. Pour les applications avec du code natif (C/C++) - c'est beaucoup plus complexe.

Méthode 4 : Objection - wrapper sur Frida pour les débutants

Objection est un outil basé sur Frida avec une interface de ligne de commande plus simple. Il contient des commandes intégrées pour contourner SSL Pinning en une seule commande : android sslpinning disable. Convient à ceux qui ne veulent pas se plonger dans l'écriture de scripts Frida manuellement. Nécessite un accès root ou un jailbreak.

Méthode 5 : Utilisation d'un émulateur avec root

Au lieu d'un appareil physique, vous pouvez utiliser un émulateur Android (par exemple, Genymotion ou l'AVD standard d'Android Studio) avec un accès root activé. Cela permet d'installer des certificats système et de faire fonctionner Frida sans risquer de "briquer" un vrai téléphone. Une option pratique pour des tests réguliers dans un environnement de travail.

Contournement étape par étape de SSL Pinning sur Android

Examinons le scénario le plus pratique : un appareil Android ou un émulateur avec root, l'outil Objection + Frida, l'outil proxy Charles Proxy ou mitmproxy.

Ce dont vous aurez besoin :

  • Appareil Android avec root ou émulateur Genymotion
  • Ordinateur avec Python 3 installé
  • Frida-server pour Android (télécharger depuis GitHub)
  • Objection (installé via pip)
  • Charles Proxy ou mitmproxy sur l'ordinateur
  • ADB (Android Debug Bridge)

Étape 1 : Configurez l'outil proxy sur l'ordinateur

Lancez Charles Proxy ou mitmproxy. Par défaut, ils écoutent le port 8888 (Charles) ou 8080 (mitmproxy). Notez l'adresse IP de votre ordinateur sur le réseau local - elle sera nécessaire pour configurer le proxy sur l'appareil.

Étape 2 : Configurez le proxy sur l'appareil Android

Allez dans les paramètres Wi-Fi → sélectionnez votre réseau → appuyez sur "Modifier" → "Options avancées" → Proxy : Manuel. Indiquez l'IP de l'ordinateur et le port de l'outil. Maintenant, tout le trafic de l'appareil passe par votre proxy.

Étape 3 : Installez le certificat de l'outil proxy

Ouvrez le navigateur sur l'appareil et allez à l'adresse chls.pro/ssl (pour Charles) ou mitm.it (pour mitmproxy). Téléchargez et installez le certificat. Sur Android avec root, déplacez également le certificat dans le magasin de certificats système - cela est nécessaire pour certaines applications.

Étape 4 : Lancez Frida-server sur l'appareil

Téléchargez frida-server de la version appropriée depuis GitHub (la version doit correspondre à la version de Frida sur l'ordinateur). Chargez le fichier sur l'appareil via ADB :

adb push frida-server /data/local/tmp/
adb shell "chmod 755 /data/local/tmp/frida-server"
adb shell "su -c /data/local/tmp/frida-server &"

Étape 5 : Connectez-vous via Objection et désactivez SSL Pinning

Sur l'ordinateur, installez Objection via pip et lancez-le en spécifiant le nom du package de l'application :

pip install objection
objection -g com.example.app explore

Après la connexion, dans la console Objection, exécutez la commande pour désactiver SSL Pinning :

android sslpinning disable

Après cela, ouvrez l'application et commencez à interagir avec elle. Le trafic apparaîtra dans Charles ou mitmproxy sous forme déchiffrée.

Étape 6 : Pour les applications avec Network Security Config

Si l'application utilise network_security_config.xml, vous pouvez décompiler l'APK avec apktool, trouver ce fichier et ajouter une autorisation pour les certificats personnalisés, puis reconstruire et signer à nouveau l'APK. Cela fonctionne sans root, mais nécessite de désactiver la vérification de la signature de l'application.

Contournement étape par étape de SSL Pinning sur iOS

Sur iOS, la situation est plus complexe : la plupart des méthodes nécessitent un jailbreak. Sans cela, les possibilités sont limitées. Examinons les deux options.

Option A : Avec jailbreak (iOS 14-16, checkra1n / palera1n)

Étape 1 : Configurez le proxy

Sur l'iPhone, allez dans Réglages → Wi-Fi → votre réseau → Configurer le proxy → Manuel. Indiquez l'IP de l'ordinateur et le port de Charles/mitmproxy.

Étape 2 : Installez le certificat

Ouvrez Safari et allez à chls.pro/ssl. Installez le profil via Réglages → Général → VPN et gestion de l'appareil. Ensuite, activez-le dans Réglages → Général → Confiance des certificats.

Étape 3 : Installez SSL Kill Switch 2 via Cydia/Sileo

SSL Kill Switch 2 est un tweak pour iOS jailbreaké qui désactive SSL Pinning globalement pour toutes les applications. Trouvez-le dans Cydia ou Sileo, installez-le, redémarrez l'appareil. Après cela, la plupart des applications cesseront de vérifier les certificats, et le trafic sera visible dans Charles.

Étape 4 : Alternative - Frida + Objection sur iOS

De la même manière que sur Android : installez frida-server via Cydia, connectez-vous via Objection sur l'ordinateur et exécutez ios sslpinning disable. Cette méthode est plus flexible et fonctionne pour les applications que SSL Kill Switch 2 ne couvre pas.

Option B : Sans jailbreak (possibilités limitées)

Sans jailbreak, contourner SSL Pinning sur iOS est beaucoup plus difficile. Une des options est d'utiliser l'outil Proxyman avec sa fonction SSL Proxying pour iOS sans jailbreak. Proxyman installe un profil spécial sur l'appareil et utilise une interface VPN pour intercepter le trafic. Cela fonctionne pour de nombreuses applications, mais pas pour toutes avec un Pinning strict.

Une autre option est d'utiliser l'émulateur iOS dans Xcode. L'émulateur n'a pas de SSL Pinning au niveau du système d'exploitation, et de nombreuses applications peuvent y être exécutées (si elles prennent en charge l'émulateur). Mais cela convient uniquement pour des tests, et non pour l'analyse des applications en production.

Quel type de proxy choisir pour tester les applications mobiles

Une fois que SSL Pinning est contourné, le trafic de l'application passe par votre outil proxy (Charles, mitmproxy). Mais pour certaines tâches, il est également nécessaire de diriger le trafic à travers un serveur proxy externe - par exemple, pour que l'application "voit" une autre région ou une autre adresse IP. Il est donc important de bien choisir le type de proxy.

Proxies résidentiels

Les proxies résidentiels utilisent les adresses IP de véritables utilisateurs domestiques. Les applications mobiles, en particulier les SDK publicitaires et les marketplaces, font beaucoup plus confiance à ces IP qu'aux adresses des centres de données. Si vous analysez le comportement d'une application en fonction de la région - les proxies résidentiels donneront l'image la plus "propre", proche de celle d'un utilisateur réel.

Proxies mobiles

Les proxies mobiles fonctionnent via de véritables réseaux mobiles (3G/4G/5G). Cela est particulièrement pertinent lors des tests d'applications mobiles : les IP provenant d'un réseau mobile ont le niveau de confiance le plus élevé auprès des SDK Facebook Ads, TikTok et d'autres plateformes publicitaires. Si votre objectif est d'analyser les requêtes publicitaires de l'application ou de tester le comportement des SDK dans un environnement mobile, les proxies mobiles sont le choix optimal.

Proxies de centres de données

Les proxies de centres de données conviennent pour des tâches où la vitesse est plus importante que la "naturalité" de l'IP : par exemple, pour le scraping massif d'API ouvertes ou les tests de performance. Pour l'analyse des SDK publicitaires et des applications protégées, ils sont moins préférables, car facilement détectés par les systèmes anti-fraude.

Type de proxy Confiance des applications Vitesse Meilleur scénario
Résidentiels Élevé Moyenne Analyse par région, marketplaces
Mobiles Maximal Moyenne SDK publicitaires, Facebook, TikTok
Centres de données Faible Élevée Scraping d'API ouvertes, tests de charge

Scénarios pratiques : arbitrage, e-commerce, marketing

Examinons des tâches concrètes pour lesquelles les marketeurs et les arbitragistes contournent SSL Pinning.

Scénario 1 : Analyse du SDK publicitaire Facebook et TikTok

Les arbitragistes travaillant avec Facebook Ads et TikTok Ads veulent souvent comprendre quelles données le SDK envoie au serveur : quels événements sont enregistrés, comment les requêtes d'attribution sont formées, quels paramètres influencent l'optimisation des campagnes. Sans contourner SSL Pinning, cela est impossible - les deux SDK utilisent le Certificate Pinning.

Après avoir contourné via Frida/Objection, vous pouvez voir dans Charles tous les événements du SDK : installations, achats, inscriptions, - et vous assurer que le suivi est configuré correctement. Cela est particulièrement important lors de la configuration de CAPI (Conversions API) et de la vérification de la dé-duplication des événements.

Scénario 2 : Surveillance des prix sur Wildberries et Ozon via l'application

Les applications Wildberries et Ozon utilisent SSL Pinning pour protéger leurs API. Les vendeurs qui souhaitent surveiller les prix des concurrents via une application mobile (et non la version web) sont confrontés à cette protection. Après avoir contourné SSL Pinning, vous pouvez étudier la structure des requêtes API et comprendre quels points de terminaison sont utilisés pour obtenir des données sur les prix, la disponibilité et les évaluations des produits.

Important : les données obtenues ne peuvent être utilisées que pour une analyse personnelle. Le scraping automatisé via la reproduction des requêtes API enfreint les conditions d'utilisation des plateformes.

Scénario 3 : Test des créatifs publicitaires de différentes régions

Les marketeurs qui testent des publicités dans Facebook Ads et TikTok Ads de différentes régions souhaitent voir comment l'application se comporte lorsqu'elle se connecte via une IP d'un pays spécifique. La combinaison du contournement de SSL Pinning + un proxy résidentiel de la région souhaitée permet de voir quel contenu et quels prix sont affichés aux utilisateurs de cette région.

Scénario 4 : Test QA de votre propre application

Si vous développez votre propre application mobile ou travaillez avec une équipe de développement, l'interception du trafic avec contournement de SSL Pinning est une pratique standard en QA. Cela permet de vérifier la validité des requêtes, de détecter des fuites de données, de vérifier le fonctionnement des analyses et des SDK publicitaires dans des conditions réelles avant la publication.

Scénario 5 : Analyse des concurrents dans le secteur des jeux mobiles et des applications

Les marketeurs de jeux mobiles utilisent l'interception du trafic pour analyser la monétisation des concurrents : quelles offres sont affichées, comment fonctionne le système d'achats in-app, quels réseaux publicitaires sont utilisés. Cela aide à construire des stratégies UA (User Acquisition) et de monétisation plus efficaces.

Checklist : vérifiez la configuration avant le test

Avant de commencer à intercepter le trafic, assurez-vous que tout est configuré correctement. Voici la checklist complète :

✅ Checklist de configuration

  • L'outil proxy (Charles/mitmproxy) est lancé sur l'ordinateur et écoute le port requis
  • L'ordinateur et l'appareil sont sur le même réseau Wi-Fi
  • Sur l'appareil, dans les paramètres Wi-Fi, l'IP correcte de l'ordinateur et le port du proxy sont indiqués
  • Le certificat racine de l'outil proxy est installé sur l'appareil
  • Sur Android : le certificat est déplacé dans le magasin de certificats système (si root est disponible)
  • Sur iOS : le certificat est activé dans la section "Confiance des certificats"
  • Frida-server est lancé sur l'appareil (si vous utilisez Frida/Objection)
  • La version de Frida sur l'ordinateur correspond à la version de frida-server sur l'appareil
  • Objection s'est connecté avec succès au processus de l'application
  • La commande android sslpinning disable a été exécutée sans erreurs
  • Des enregistrements apparaissent dans Charles/mitmproxy lors de l'utilisation de l'application
  • Les requêtes HTTPS sont déchiffrées (ne montrent pas d'erreur SSL)

Problèmes fréquents et leurs solutions

Problème Cause Solution
Le trafic n'apparaît pas dans Charles IP/port du proxy incorrects Vérifiez l'IP de l'ordinateur et le port
Erreur SSL dans Charles Certificat non installé ou non activé Réinstallez et activez le certificat
Frida ne se connecte pas Versions frida/frida-server non correspondantes Synchronisez les versions
Objection ne désactive pas le Pinning Code natif (C/C++) avec Pinning Utilisez un script Frida personnalisé
L'application plante après le contournement L'application vérifie l'intégrité Désactivez également la détection de root via Objection

Conclusion

SSL Pinning est une protection sérieuse, mais pas insurmontable. Pour la plupart des tâches pratiques d'un marketeur ou d'un arbitragiste, il suffit d'une combinaison : émulateur Android avec root + Frida/Objection + Charles Proxy. Sur iOS - SSL Kill Switch 2 en cas de jailbreak ou Proxyman sans. L'essentiel est de bien configurer la chaîne : outil proxy sur l'ordinateur → trafic à travers lui → contournement du Pinning sur l'appareil.

N'oubliez pas que le contournement de SSL Pinning dans des applications tierces est autorisé uniquement pour une analyse personnelle et une recherche. Le scraping automatisé et la reproduction des requêtes API enfreignent les conditions d'utilisation de la plupart des plateformes.

Si votre tâche est d'analyser le trafic des applications mobiles dans différentes régions ou de tester le comportement des SDK publicitaires de pays spécifiques, vous aurez besoin non seulement de contourner SSL Pinning, mais aussi d'un serveur proxy de qualité. Pour travailler avec des plateformes publicitaires (Facebook Ads, TikTok Ads) et des marketplaces, nous recommandons d'utiliser des proxies mobiles - ils ont le niveau de confiance le plus élevé auprès des systèmes anti-fraude et permettent d'émuler correctement un environnement mobile réel.

```