Échec de la capture de paquets de l'App Binance avec Charles : explication du Certificate Pinning
- Qu'est-ce que le Certificate Pinning
- Pourquoi les applications financières font du Pinning
- Comment fonctionnent Charles / mitmproxy
- Manifestations concrètes de l'échec de capture
- Quelques méthodes pour contourner le Pinning
- Pourquoi les utilisateurs normaux rencontrent-ils ce problème
- Mécanisme de mise à jour du Pinning
- Implémentation sur les différents clients
- Alternatives à la capture de paquets
- Recommandations de sécurité
- FAQ
- Lectures complémentaires
Lorsque des chercheurs en technologie ou des auditeurs de sécurité tentent d'utiliser Charles ou mitmproxy pour capturer le trafic HTTPS de l'application Binance, ils constatent que l'application refuse directement la connexion ou signale une erreur SSL. C'est parce que Binance implémente le Certificate Pinning (épinglage de certificat). Cette note explique ce mécanisme d'un point de vue technique. Téléchargez l'application via le Site officiel Binance ou l'App officielle Binance ; pour l'installation sur iPhone, consultez le Tutoriel d'installation iOS.
Qu'est-ce que le Certificate Pinning
Processus de validation HTTPS normal :
- L'application initie une connexion
- Le serveur renvoie un certificat
- L'application vérifie si le certificat a été émis par une autorité de certification (CA) approuvée par le système
- Tout certificat signé par une CA de confiance est accepté
Le Certificate Pinning est une vérification plus stricte :
- L'application intègre une « empreinte de certificat attendue »
- Après que le serveur a renvoyé le certificat, l'application ne regarde pas seulement la CA, mais vérifie également s'il correspond à l'empreinte intégrée
- Si ça ne correspond pas → connexion refusée
Pourquoi les applications financières font du Pinning
Pour prévenir les attaques de l'homme du milieu (Man-in-the-Middle) :
- Un attaquant peut inciter l'utilisateur à installer son certificat racine
- Puis utiliser son propre certificat pour détourner le trafic
- La validation HTTPS normale passerait (car le certificat racine a été mis sur liste blanche)
- Mais le Pinning refusera (car l'empreinte ne correspond pas)
Binance, les banques, PayPal et d'autres applications financières utilisent couramment le Pinning.
Comment fonctionnent Charles / mitmproxy
Étapes pour capturer des paquets HTTPS avec Charles :
- Installer le certificat racine Charles sur l'appareil et l'approuver
- Configurer le proxy pour qu'il pointe vers Charles
- L'application envoie une requête → Charles utilise son propre certificat pour se faire passer pour la cible
- Validation de l'application : CA approuvée (car le certificat Charles est installé)
- Une application normale accepte → capture réussie
Mais l'application Binance effectue une vérification supplémentaire à l'étape 4 :
5'. Vérifie l'empreinte du certificat → ne correspond pas → refusé
C'est pourquoi la capture échoue.
Manifestations concrètes de l'échec de capture
| Phénomène | Cause |
|---|---|
| L'app tourne dans le vide au démarrage | Handshake TLS refusé |
| Le graphique des marchés est vide | Connexion WebSocket refusée |
| L'API renvoie une erreur de connexion | Échec de validation du certificat |
| Charles affiche SSL Handshake Error | Idem |
| L'app plante directement (rare) | Exception non gérée |
Quelques méthodes pour contourner le Pinning
Les chercheurs peuvent utiliser :
- Scripts Frida : remplacer dynamiquement la logique de validation du certificat dans l'application
- Modules LSPosed / Magisk : injecter du code modifié
- Décompiler l'APK, modifier le dex puis recompiler
- Utiliser un modificateur PIN-SSL
Toutes ces méthodes nécessitent un appareil rooté et violent les conditions d'utilisation de l'application. Les mécanismes de sécurité de l'application Binance peuvent également détecter ces outils.
Pourquoi les utilisateurs normaux rencontrent-ils ce problème
La grande majorité des utilisateurs ne capturent jamais de paquets, mais il existe quelques scénarios inattendus :
Scénario 1 · Interception SSL sur le réseau de l'entreprise L'entreprise déchiffre le trafic HTTPS au niveau du routeur pour le surveiller :
- Installe le certificat racine de l'entreprise sur tous les appareils des employés
- Le trafic est déchiffré
- L'application Binance refuse la connexion (l'empreinte est incorrecte)
Diagnostic : Les autres applications nécessitant le HTTPS (comme les applications bancaires) ne peuvent-elles pas non plus se connecter ?
Scénario 2 · Inspection HTTPS par l'antivirus Kaspersky, Avast et d'autres antivirus analysent le trafic HTTPS :
- Méthode de l'homme du milieu similaire
- L'application Binance peut refuser la connexion
Solution : Désactiver temporairement l'inspection HTTPS de l'antivirus.
Scénario 3 · Installation d'un "Accélérateur réseau" Certains « accélérateurs » agissent en réalité comme des proxys de trafic :
- L'utilisateur a installé un certificat racine sans le savoir
- Capture les paquets et accélère
- Binance refuse
Solution : Désinstaller les accélérateurs d'origine douteuse.
Mécanisme de mise à jour du Pinning
L'empreinte du Certificate Pinning change (lorsque Binance change de certificat) :
- Généralement, l'application intègre plusieurs empreintes
- L'invalidation d'une n'affecte pas la connexion
- Mise à jour synchronisée lors de la mise à jour de l'application
Si vous ne mettez pas à jour l'application pendant une longue période, il se peut qu'un jour l'empreinte Pinning et le certificat du serveur changent, vous empêchant de vous connecter.
Implémentation sur les différents clients
Niveau de rigueur du Pinning sur les clients Binance :
| Client | Rigueur du Pinning |
|---|---|
| App Android | Stricte |
| App iOS | Stricte |
| Client Bureau | Stricte |
| Navigateur | Non implémenté (dépend de la confiance de l'OS) |
Les navigateurs n'ont pas de Pinning (c'est pourquoi le navigateur peut subir une attaque de l'homme du milieu, contrairement à l'application).
Alternatives à la capture de paquets
Alternatives pour la recherche technique :
- Utiliser la documentation officielle de l'API Binance (publique)
- Utiliser les interfaces fournies par le SDK
- Capture sur la version Web (Outils de développement du navigateur)
- Capture au niveau réseau (Wireshark, mais ne permet de voir que le texte chiffré)
Ces méthodes ne nécessitent pas de contourner les mécanismes de sécurité de l'application.
Recommandations de sécurité
- N'installez pas de certificats racines d'origine inconnue
- Utilisez l'application Binance avec prudence sur les réseaux d'entreprise / WiFi publics
- Si l'inspection HTTPS de l'antivirus coexiste avec Binance, ajoutez Binance à la liste blanche
- Ne rootez pas l'appareil que vous utilisez couramment
FAQ
Q : Charles peut-il capturer les paquets de la version Web de Binance ? R : Oui (le navigateur n'a pas de Pinning), mais vous ne verrez que le trafic Web, pas celui de l'application.
Q : mitmproxy peut-il empêcher l'application Binance de faire du Pinning ? R : mitmproxy seul ne le peut pas. Il faut le combiner avec des outils comme Frida.
Q : Binance sera-t-il bloqué après l'installation d'un certificat racine d'entreprise sur iOS ? R : C'est possible. Cela dépend si le certificat spécifique a été intégré dans la chaîne de confiance.
Q : Peut-on capturer des paquets sur un Android rooté ? R : C'est théoriquement possible avec des outils comme Frida, mais cela viole les conditions de l'application.