web-dev-qa-db-fra.com

Possibilité de renifler le trafic HTTPS sur les appareils sans installer de certificat

Mon objectif est de flairer le trafic HTTPS de certains appareils numériques (AppleTV, consoles de jeux, etc.) et de décrypter les paquets HTTPS de mon réseau local.

Je ne peux pas trouver un moyen d'utiliser certains outils proxy de débogage HTTPS comme Charles ou Fiddler, car ils doivent avoir un certificat installé sur l'appareil. Je n'ai pas accès au système de fichiers sur l'appareil, je ne peux pas copier le certificat. Mais je peux définir le proxy de l'appareil pour pointer vers mon ordinateur portable ou utiliser le point d'accès de mon ordinateur portable.

22
Yifei

Le point fort de SSL est sa résistance à l'écoute par des attaques de type homme du milieu comme celle que vous proposez. Si vous ne pouvez pas faire en sorte que le périphérique client approuve votre certificat auto-signé, vos seules options sont les suivantes:

  • Intercepter une requête HTTP initiale et ne jamais laisser la communication être mise à niveau vers HTTPS (mais cela ne fonctionnera pas si le si le client passe explicitement à un https://... URL)
  • Faites semblant d'être le serveur avec votre propre certificat auto-signé et espérez que le système qui fait la demande accepte naïvement un certificat auto-signé (qui est l'équivalent décisionnel d'un utilisateur qui ignore les avertissements sévères du navigateur concernant une éventuelle attaque MITM en cours)
  • Vérifiez la sensibilité aux attaques passées connues sur SSL (Heartbleed, BEAST, etc.). Notez que cette option est très probablement illégale, car elle peut nécessiter une attaque sur le serveur (dont vous n'êtes pas propriétaire) plutôt qu'une attaque sur le client (que vous possédez éventuellement)

Si vous disposez de plusieurs milliers de milliards de dollars, vous avez peut-être d'autres options:

  • Compromis avec succès une autorité de certification de confiance mondiale et utilisez leur clé de signature secrète pour produire des certificats falsifiés pour votre propre paire de clés
  • Achetez ou découvrez une vulnérabilité de sécurité zero-day dans un client Web, un serveur Web ou (de préférence) une bibliothèque SSL/TLS utilisée par le client ou le serveur
  • Découvrez une faiblesse paralysante dans certaines primitives cryptographiques sous-jacentes utilisées par SSL (par exemple, une rupture complète d'AES pourrait bien fonctionner)
  • Dépensez des milliards de dollars en matériel informatique pour effectuer des attaques par force brute sur des communications cryptées interceptées

Si vous avez un accès physique illimité à l'appareil, une attaque sur le magasin de certificats de confiance de l'appareil serait presque plus facile qu'une attaque sur SSL (bien qu'elle puisse également être loin d'être facile).

40
apsillers

Aucune suggestion? Est-ce faisable?

Vous devez posséder un certificat approuvé par l'appareil pour intercepter le trafic. La manière dont cela peut être réalisé dépend de la qualité et de l'ouverture de la validation du certificat sur l'appareil.

  • L'appareil peut avoir une bogue ou une validation inexistante des certificats. C'est généralement
    • Aucune validation du tout, auquel cas vous pouvez utiliser n'importe quel certificat.
    • Valide uniquement la chaîne d'approbation, mais pas le nom à l'intérieur du certificat. Dans ce cas, vous pouvez utiliser n'importe quel certificat signé par une autorité de certification approuvée par l'appareil.
  • L'appareil dispose d'une vérification de certificat appropriée mais permet l'installation d'ancres de confiance personnalisées. Dans ce cas, vous pouvez créer vos propres certificats et les importer comme approuvés.
  • Le périphérique a une vérification de certificat appropriée, mais il est fermé contre l'ajout de nouvelles ancres de confiance. Cela est mauvais pour vous à moins que l'une des autorités de certification de confiance ne signe pour vous un nouveau certificat acceptable par l'appareil. Aucune autorité de certification ne le fera probablement.

Si cela n'aide pas, il peut y avoir d'autres bogues. Regardez les problèmes SSL des dernières années et voyez si vous pourriez utiliser l'un de ces bogues. Vous pouvez également essayer d'utiliser des bogues non SSL pour pirater l'appareil et modifier le comportement du logiciel.

11
Steffen Ullrich

Non, la nature même de HTTPS est que le certificat est nécessaire pour le déchiffrer. Vous pourriez renifler le trafic, mais il serait crypté et inutile pour vous.

3
armani

C'est le but de SSL, pour empêcher ce genre d'espionnage non autorisé. Pour autoriser votre proxy, vous devez dire à l'appareil de faire confiance au certificat proxy et dire aux clients de l'appareil de faire confiance à votre certificat ou utiliser la clé privée des appareils, à laquelle il semble que vous n'ayez pas accès. Pour plus d'informations:

https://en.wikipedia.org/wiki/Transport_Layer_Security

3
Antonius Bloch

Jetez un œil à la vulnérabilité FREAK tls. vous devriez être en mesure d'injecter des données dans la négociation SSL pour tromper l'appareil dans un chiffrement d'exportation RSA, et à partir de là, le déchiffrement du trafic par un homme au milieu est beaucoup plus facile (alias possible).

Charles est écrit en Java, ne devrait pas être trop difficile à modifier pour l'exploiter automatiquement.

3
Damian Nikodem

Tout dépend du trafic qui vous intéresse. Si vous souhaitez décrypter le trafic entre votre client et l'appareil, c'est possible avec un proxy. En fait, cela ressemble beaucoup au fonctionnement de Superfish. Voir Lenovo brise la sécurité HTTPS sur ses ordinateurs portables récents pour un aperçu du fonctionnement de superfish.

D'un autre côté, si vous souhaitez décrypter les informations que votre appareil envoie/reçoit depuis d'autres points, telles que ce que Apple TV peut envoyer/recevoir d'Apple, c'est beaucoup plus difficile. Je pense que c'est probablement le trafic qui vous intéresse le plus.

Bien que le même principe s'applique - essentiellement une attaque MiTM (Man in The Middle), vous devrez en quelque sorte amener votre appareil à faire confiance à un certificat que vous possédez ou à compromettre la clé privée du certificat que l'appareil utilise. Cela peut être plus facile qu'il ne devrait l'être ou très difficile, selon le degré de rigueur avec lequel le fournisseur a assuré la sécurité et la gestion des clés SSL. Par exemple, récemment, il a été signalé qu'un fabricant de routeurs et de modems bien connu utilisait la même clé de certificat sur plusieurs de leurs appareils, ce qui signifiait qu'une fois la clé extraite d'un appareil, vous aviez accès à tous les appareils utilisant cette clé. Si le fabricant de votre appareil a mis en place une protection de sécurité similaire, il y a probablement un trou que vous pouvez exploiter. Cependant, le trouver n'est pas nécessairement trivial. Il faut des compétences de piratage et juste le bon type d'esprit déviant pour trouver la faiblesse. Certaines personnes sont naturelles à cela, d'autres moins.

Ce que vous devez faire est d'obtenir que votre appareil fasse confiance à un certificat que vous possédez, puis configurez un proxy qui a votre certificat qui fonctionnera comme un homme au milieu. La configuration du proxy est triviale s'il s'agit de votre réseau, c'est-à-dire d'un réseau domestique, mais obtenir l'appareil pour faire confiance à un certificat que vous avez créé est beaucoup plus difficile et comporte des risques, c'est-à-dire que vous pourriez corrompre le magasin de certificats sur votre appareil et à peu près le transformer en brique et est presque certainement illégal.

1
Tim X