Guide

Ce que le certificate pinning bloque encore

Une app qui épingle son certificat ne se déchiffrera pas avec Busymate DevTools — ni sur iOS, ni sur Android, ni via le proxy. Voici exactement ce que chaque voie de capture peut et ne peut pas voir, comment reconnaître un hôte épinglé, et ce qui reste utile.

Tout outil de capture qui déchiffre le HTTPS fonctionne de la même façon : il présente au client un certificat qu'il a signé lui-même, et le client l'accepte parce qu'il fait confiance à l'autorité signataire. Le certificate pinning, c'est l'app qui déclare ne faire confiance qu'à un certificat ou une clé précis et à rien d'autre. Quand une app épinglée rencontre le certificat de substitution, elle refuse simplement la connexion. C'est une propriété de l'app, pas un interrupteur dans l'outil, et aucune voie de capture livrée par Busymate ne la contourne.

Un outil qui passe cela sous silence vous fait perdre une session de recherche sur une cible qu'il n'allait jamais déchiffrer. Ce guide est donc une carte plutôt qu'un contournement : ce que la capture iOS sur l'appareil, l'app Android, le proxy de bureau, un téléphone rooté de la ferme et le connecteur Chrome livrent chacun face à un hôte épinglé, comment le flux l'étiquette, et les parties du travail qui se font quand même.

Avant de commencer

Ce qu'il vous faut

Ce guide suppose que du trafic arrive déjà dans votre dashboard par au moins une voie de capture.

  • Un téléphone ou un client déjà appairé et en capture — le guide iPhone ou Android vous y amène.

  • Les noms d'hôte de l'app que vous examinez, ajoutés à la liste SSL proxy pour que le déchiffrement soit au moins tenté.

  • Le flux du dashboard ouvert, avec son filtre d'inspection à portée de main.

  • L'autorisation d'inspecter l'app : ces techniques s'appliquent au trafic d'apps et de sites que vous possédez ou que vous êtes autorisé à déboguer.

Pas à pas

Faites-le dans l'ordre

Parcourez les voies dans l'ordre — chacune resserre ce qu'un hôte épinglé peut encore vous apprendre.

  1. 01

    Sachez de quel magasin de confiance dépend votre voie de capture

    Sur iOS, le déchiffrement dépend de l'installation du profil Busymate et de sa confiance totale dans les Réglages — ensuite, chaque app du téléphone fait confiance au certificat présenté par l'app, sauf celles qui épinglent. Sur Android il y a deux magasins : celui de l'utilisateur, que seules les apps ayant explicitement opté honorent depuis Android 7.0, et celui du système, que toutes les apps honorent mais que seul un appareil rooté peut modifier. Le proxy de bureau utilise la confiance que la machine ou le navigateur client accorde à son autorité générée.

    Le pinning se situe au-dessus des trois. Une app qui épingle rejette le certificat de substitution quel que soit le magasin dont il vient, donc déplacer un certificat vers un magasin plus fort n'aide jamais contre un hôte épinglé. Cela n'aide que contre les apps qui refusaient le magasin utilisateur.

  2. 02

    Reconnaissez un hôte épinglé dans le flux

    Un hôte que vous n'avez pas listé pour le déchiffrement affiche un cadenas fermé avec seulement le nom d'hôte et un compteur de requêtes — c'est voulu, pas du pinning. Un hôte épinglé a une autre allure : il est dans votre liste, le déchiffrement a été tenté, et la connexion a échoué ou l'app a réessayé puis abandonné. Le filtre d'inspection du flux du dashboard a trois réglages — déchiffrés seulement, chiffrés seulement, et SSL épinglés seulement — et le dernier isole exactement ces lignes.

    L'autre indice est comportemental : l'app cesse de fonctionner pour cet hôte dès qu'il est déchiffré, et refonctionne dès que vous retirez l'hôte de la liste. Si les deux sont vrais, vous avez trouvé une connexion épinglée.

  3. 03

    Capture sur iPhone : des métadonnées, jamais le corps

    L'app iOS capture à l'échelle du système, en Wi-Fi comme en cellulaire, et déchiffre les hôtes que vous listez. Face à une app épinglée, elle enregistre toujours chaque connexion — l'hôte, le timing, le nombre et la taille des requêtes, le mode de connexion en vigueur — mais elle ne peut produire ni les en-têtes ni le corps, et aucun interrupteur ne change cela. Activer MITM All Hosts déchiffre tous les hôtes non épinglés ; sur un hôte épinglé, cela ne fait rien d'autre que le casser.

    Le geste pratique consiste à retirer l'hôte épinglé de la liste pour que l'app continue de fonctionner, à y garder les autres hôtes de l'app, et à lire ce que révèlent les endpoints non épinglés. Beaucoup d'apps n'épinglent que leur hôte d'authentification ou de paiement et laissent le reste ouvert.

  4. 04

    Android : non rooté, rooté, et où se place le pinning

    Sur un téléphone Android non rooté, le certificat généré par l'app vit dans le magasin utilisateur, donc seuls vos propres builds de debug et les autres clients ayant opté se déchiffrent ; toutes les autres apps sont enregistrées en métadonnées. Sur un appareil rooté, le certificat peut être installé dans le magasin système, et le HTTPS devient déchiffrable à l'échelle du système — sauf le pinning propre à chaque app. La ferme de téléphones fait tourner ses appareils Android à ce niveau rooté précisément pour cela.

    Le root convertit donc une classe d'apps opaques en apps lisibles — celles qui ignoraient simplement le magasin utilisateur — et laisse la classe épinglée intacte. Busymate ne prétend jamais déchiffrer à l'échelle du système sur un appareil non rooté, ni vaincre le pinning sur un appareil rooté.

  5. 05

    Le proxy : la même limite, plus des hôtes qu'il refuse volontairement

    Le proxy de bureau entretient la même relation avec le pinning que les apps mobiles : un client épinglé refuse son certificat généré et la connexion échoue. Il porte aussi une courte liste d'hôtes qu'il n'intercepte jamais, quoi que disent vos réglages SSL proxy — la PKI et les endpoints de révocation d'Apple, les répondeurs de statut de certificat utilisés par la chaîne d'Apple, et le backend de Busymate lui-même — parce que les intercepter casserait l'appareil ou la connexion en direct du dashboard. Ils passent en tunnels bruts, et c'est intentionnel, pas une mauvaise configuration.

    Hôtes que le proxy laisse passer intacts par conception
    text
    # Passed through as raw tunnels by the proxy, regardless of your SSL-proxy list:
    pkis.apple.com  ocsp*.apple.com  crl*.apple.com  valid.apple.com  ppq.apple.com
    # the DigiCert OCSP / CRL responders Apple's chain uses
    *.busymate.net   # the dashboard's own backend + Realtime connection
  6. 06

    Le connecteur Chrome : le pinning ne s'applique pas

    Il existe une voie de capture où le pinning est hors sujet. Le connecteur en ligne de commande lance une instance de Chrome et lit son trafic via le DevTools Protocol, du côté navigateur du TLS. La connexion chiffrée entre Chrome et le serveur n'est jamais touchée — pas de certificat de substitution à rejeter, rien à installer, rien que le pinning puisse détecter. Les flux de connexion chez des fournisseurs dont un proxy ne peut ouvrir les certificats épinglés sont enregistrés de bout en bout, redirections et jetons compris.

    La contrepartie est la portée : il couvre ce qui tourne dans ce Chrome, pas une app native. Si le flux qui vous intéresse a une version web, c'est la voie qui le voit intégralement.

  7. 07

    Exploitez ce qu'un hôte épinglé vous donne encore

    Les métadonnées ne sont pas rien. Vous voyez toujours quand l'app parle à l'hôte épinglé, à quelle fréquence, la taille des échanges et leur durée, et vous pouvez corréler cela avec les appels déchiffrés autour. Les règles de blocage correspondent toujours au niveau de l'hôte sur un hôte chiffré — le chemin est invisible, mais vous pouvez faire se comporter l'app comme si cet endpoint était injoignable, ce qui est souvent exactement le mode de défaillance que vous vouliez tester. Les pauses laissent l'hôte contourner entièrement le proxy pour que l'app continue de fonctionner pendant que vous inspectez tout le reste.

    Et chaque action que vous avez faite figure dans la piste d'audit, si bien qu'une session de recherche laisse une trace de ce qui a été déchiffré, bloqué ou laissé tranquille.

Dépannage

Ce qui peut mal tourner

Les erreurs qui coûtent le plus de temps sont celles qui ressemblent à des bugs de l'outil et n'en sont pas.

  • L'app s'est cassée dès que j'ai ajouté son hôte

    C'est du pinning. Retirez l'hôte de la liste SSL proxy — sur iOS, redémarrez ensuite le VPN pour que le tunnel prenne en compte le changement — et l'app se rétablit. Gardez ses autres hôtes listés.

  • MITM All Hosts n'a pas débloqué l'app

    Il n'allait jamais le faire. Cet interrupteur élargit les hôtes non épinglés qui sont déchiffrés ; il n'a aucun effet sur un hôte que l'app épingle, et il fait aussi échouer toutes les autres connexions épinglées du téléphone. Désactivez-le.

  • Rooter le téléphone Android n'a pas aidé non plus

    Le root place le certificat dans le magasin système, ce qui convainc les apps qui ignoraient le magasin utilisateur. Il ne touche pas à une app qui compare le certificat à sa propre épingle.

  • Un hôte système d'Apple ne se déchiffre jamais sur le proxy

    Il figure dans la liste des hôtes que le proxy n'intercepte jamais, parce que le déchiffrer casserait l'appareil. Rien à corriger ; le filtre l'affiche comme chiffré par conception.

FAQ

Les questions qu'on nous pose

Busymate propose-t-il un contournement du pinning ?

Non. Aucune voie de capture ne modifie l'app cible, n'injecte de code ni ne patche sa logique de confiance. La réponse honnête pour une app native épinglée, ce sont les métadonnées plus ce que révèlent ses hôtes non épinglés.

Comment distinguer le pinning d'un hôte que j'ai simplement oublié de lister ?

Un hôte non listé affiche un cadenas fermé et l'app continue de fonctionner. Un hôte épinglé est listé, le déchiffrement a été tenté, le filtre SSL épinglé du flux l'isole, et l'app échoue jusqu'à ce que vous le retiriez de la liste.

Quelle voie choisir pour un flux d'authentification chez un fournisseur épinglé ?

Si le fournisseur a une connexion web, passez par le connecteur Chrome — TLS se termine dans le navigateur et toute la chaîne de redirections est enregistrée. Pour une app native, il n'y a pas de voie déchiffrée ; capturez les métadonnées et les appels non épinglés autour.

Connaissez la limite avant de commencer

Limitez le déchiffrement aux hôtes que vous testez, laissez le flux vous dire lesquels épinglent, et consacrez la session à ce qui peut réellement être lu.

Ask your mate