1 points par GN⁺ 2024-03-06 | 1 commentaires | Partager sur WhatsApp

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

 
GN⁺ 2024-03-06
Avis sur Hacker News
  • Questions sur l’aspect juridique

    • Interrogation sur la légalité de ce type d’action.
    • Supposait sur le plan technique qu’il s’agissait d’une violation du DMCA, mais doute que cette hypothèse soit correcte.
    • Se demande comment cela peut être possible d’un point de vue légal.
  • Tentative de décompilation/recompilation et niveau d’engagement

    • A essayé une voie similaire, mais a abandonné à l’étape décompilation / modification / recompilation.
    • Admire un tel niveau d’engagement et se demande combien de temps y a été consacré.
    • Pour sa part, se fixe une limite de temps et s’y tient.
  • Perte des savoir-faire d’autrefois

    • Se remémore l’époque de +Orc.
    • Une grande partie des connaissances de l’époque, comme la manière de trouver et supprimer des branches indésirables, a été oubliée.
    • Aujourd’hui, il y a bien plus d’autres technologies à apprendre.
  • Observations sur les défenses de Meta contre la RE

    • Souligne que les défenses de Meta contre le reverse engineering (RE), surtout pour Messenger, sont assez permissives.
    • Mentionne qu’il serait simple de supprimer IsUsingSandbox() d’un build de production.
    • Ajoute que ces défenses resteraient faciles à contourner même avant d’utiliser des techniques d’obfuscation avancées.
  • Certificate pinning en mode sandbox

    • Évoque la possibilité de forcer le certificate pinning même en mode sandbox.
    • Se souvient avoir tenté à l’université d’intercepter le trafic de Snapchat via une attaque de type MitM, sans succès.
  • Utilité d’une somme de contrôle binaire à l’exécution

    • Demande si une somme de contrôle binaire à l’exécution aurait pu aider à compliquer les modifications.
    • Se demande si ce n’est pas une procédure courante dans les apps mobiles, ou si les SDK iOS et Android proposent ce type de fonctionnalité.
    • Pense que cela aurait pu empêcher la solution finale, qui consistait simplement à modifier quelques octets du binaire.
  • Question sur l’utilisation d’un outil proxy

    • Pose une question sur l’outil proxy utilisé dans l’article.
    • Se demande si cet outil redirige le trafic de toutes les applications lorsqu’il est en cours d’exécution.
  • Sécurité des applications des grandes entreprises

    • S’interroge sur les raisons pour lesquelles les applications de grandes entreprises ne sont pas entièrement obfusquées et n’intègrent pas d’autres protections empêchant l’exécution de binaires modifiés.
  • Possibilité d’intercepter le trafic des apps Meta

    • Affirme qu’il n’est pas nécessaire d’intercepter le trafic des apps Meta.
    • Fournit un lien vers la page de formation bug bounty de Meta.
  • Importance de la surveillance du trafic

    • Souligne que c’est important pour réfuter la théorie du complot selon laquelle l’app Facebook écouterait les utilisateurs via le microphone pour leur montrer des publicités ciblées.
    • Le moyen le plus simple de le contredire est de surveiller le trafic entre l’application et les serveurs de Facebook, mais le certificate pinning l’empêche.
    • Il est difficile de convaincre les personnes qui croient à ces théories du complot, mais il est important de savoir qu’une telle surveillance est possible.