Contourner le certificate pinning de Messenger de Meta (macOS)
- L’application Messenger de Meta pour macOS ressemble au modèle de Texts.com, une application desktop autonome.
- Batuhan İçöz, qui dirige le projet Meta Platforms chez Texts.com, estime qu’intercepter les requêtes réseau est une première étape essentielle.
- Meta renforce la sécurité avec le certificate pinning et empêche l’analyse des requêtes serveur via des attaques MITM (man-in-the-middle).
Qu’est-ce que le certificate pinning ?
- Lors de la configuration d’un client proxy, il faut le paramétrer pour faire confiance à une « autorité de certification ».
- Un certificat émis par cette autorité permet d’intercepter et de déchiffrer les informations liées aux requêtes.
- Lorsqu’un service met en œuvre le certificate pinning, il n’accepte que des certificats émis par certaines autorités de certification précises, ce qui empêche l’utilisation de certificats émis par l’autorité de l’utilisateur.
Comportement par défaut
- Sans désactiver le certificate pinning, toutes les requêtes renvoient une « erreur interne » et le logiciel proxy affiche « SSL Handshake failed ».
- Comme les requêtes n’achèvent pas leur cycle de vie, il est impossible d’en déduire des informations.
Comportement souhaité
- Utiliser une attaque MITM afin de pouvoir lire correctement les requêtes, les réponses et les en-têtes dans un outil de débogage réseau.
Approches possibles
- L’une des méthodes ayant déjà fonctionné consiste à remplacer dans le binaire une URL par un endpoint auto-hébergé non sécurisé qui n’implémente pas TLS.
- Il est possible d’utiliser des bibliothèques d’instrumentation dynamique comme Frida, mais Messenger a tendance à planter facilement, en particulier lors du hooking.
- L’usage de Frida implique aussi un processus de déploiement complexe.
Approche
- Télécharger Messenger, le déplacer dans le dossier Applications, puis importer le binaire ARM dans Hopper.
- Hopper permet de désassembler, décompiler, recompiler, déboguer et visualiser le binaire.
- Rechercher des chaînes comme « SSL pinning validation failed » afin de minimiser les modifications.
- Découvrir la chaîne « Using custom sandbox -> turn off SSL verification », puis localiser et modifier la fonction associée.
- Forcer la fonction
IsUsingSandbox à toujours retourner true afin de désactiver le certificate pinning.
Résultat
- Exporter le nouvel exécutable, supprimer sa signature, puis remplacer le binaire Messenger d’origine par le nouveau.
- Après redémarrage de Messenger, l’outil proxy affiche les en-têtes, le corps des réponses et toutes les informations sur les requêtes.
- L’interception des requêtes a réussi en ne modifiant que 4 octets sur les 97 477 728 du binaire.
Déploiement
- Compiler le binaire puis l’envoyer à Batuhan.
- Batuhan récupère un certificat de signature, l’installe et signe l’application.
- Une fois la signature terminée, il peut utiliser le binaire sur son système pour visualiser ses propres requêtes.
L’avis de GN⁺
- Cet article offre un cas intéressant montrant comment des chercheurs en sécurité contournent le certificate pinning dans l’application Messenger de Meta.
- Le certificate pinning est une fonction de sécurité importante pour empêcher les attaques de type man-in-the-middle, mais les méthodes employées pour le contourner apportent aussi des enseignements utiles à la communauté sécurité.
- Cette technique peut aider les développeurs à renforcer la sécurité de leurs applications ou services, ainsi qu’à identifier et corriger des vulnérabilités.
- Cependant, comme ce type de recherche peut aussi être utilisé à des fins malveillantes, il faut faire preuve de prudence lors du partage des résultats.
- Parmi les autres outils offrant des fonctions similaires, on trouve des outils d’analyse réseau comme Wireshark ou Burp Suite, largement utilisés pour surveiller et analyser le trafic réseau.
1 commentaires
Avis sur Hacker News
Questions sur l’aspect juridique
Tentative de décompilation/recompilation et niveau d’engagement
Perte des savoir-faire d’autrefois
Observations sur les défenses de Meta contre la RE
IsUsingSandbox()d’un build de production.Certificate pinning en mode sandbox
Utilité d’une somme de contrôle binaire à l’exécution
Question sur l’utilisation d’un outil proxy
Sécurité des applications des grandes entreprises
Possibilité d’intercepter le trafic des apps Meta
Importance de la surveillance du trafic