web-dev-qa-db-fra.com

Comprendre l'homme SSL dans le milieu et ses limitations

J'essaie de développer un bon sens de la manière dont un SSL-in-Middle (S) fonctionne (MITM). Si je comprends bien, les Mitms font leur travail de deux manières:

  1. Décrypter le SSL en ayant une copie de la clé privée du serveur. Strictement parlant, ce n'est pas un MITM car le "Dispositif MITM" est tout simplement écoulé. La session SSL n'est pas modifiée
  2. Générer de nouveaux certs à la volée. Ici, l'appareil MITM transfère le client Bonjour, intercepte le certificat du serveur, génère et signe un nouveau et transmet par rapport au client. Le client fait confiance au CERT ou est invité à lui faire confiance (s'il est auto-signé)

Il y a des limitations (et des mesures d'atténuation), cependant:

  1. Le client et le serveur peuvent accepter de générer et d'échanger des touches à l'aide de DHE_RSA (ou d'une variante). Le MITM ne participerait pas à la génération de la clé. Mais un MITM assez sophistiqué ne peut-il pas générer toujours des touches de session créant des sessions SSL distinctes de chaque côté?
  2. Il n'y aurait pas la même chose pour le secret maître étendu? Comme ci-dessus, si le MITM était en train de calculer des clés de session distinctes, le secret maître étendu ne pourrait pas aider à vaincre le mitm
  3. Le serveur peut nécessiter un certificat client. Mais si le MITM pourrait acquérir son propre certificat client et la clé privée correspondante, elle pourrait signer avec succès que le certificat vérifie les messages de la poignée de main.

Suis-je comprendre tout cela correctement? Cela semble être si un MITM avait accès à suffisamment de matériel clé, il pourrait déchiffrer avec succès toute session SSL.

2
The_Glidd

Je pense que vous avez eu quelques-uns des concepts, mais il y a aussi quelques malentendus ou inexactitudes.

  • Décrypter le trafic dans un homme passif à l'attaque intermédiaire (c'est-à-dire seulement renifler) à l'aide de la clé privée des serveurs n'est possible que lorsque l'échange de clé RSA est utilisé. Il ne peut pas être fait avec un échange de clé Diffie-Hellman. Contrairement à l'échange de clé RSA L'échange de clé DH provoque également Secrecy avant ce qui signifie que les connexions précédemment reniflées ne peuvent pas être déchiffrées une fois que l'attaquant a obtenu la clé privée du certificat.
  • Un homme actif à l'attaque moyenne consiste en une session SSL du client à MITM et du MITM au serveur. Celles-ci sont des sessions entièrement distinctes qui ont des touches différentes et peuvent également utiliser un autre chiffrement, une version de protocole, etc. Si l'attaquant MITM a la clé privée originale des serveurs, il peut perfectionner parfaitement le serveur en utilisant le certificat d'origine. Sinon, un faux certificat doit être utilisé (souvent créé de manière dynamique). L'attaque ne réussit que dans ce dernier cas si le client fait déjà confiance à la CA émettant le faux certificat ou que le client ne fait pas de validation de certificat appropriée.
  • Les certificats clients sont similaires aux certificats de serveur: Soit l'attaquant a la clé privée du certificat d'origine et peut ainsi l'utiliser ou le serveur doit faire confiance aux attaquants, le faux certificat ne parvient pas à valider correctement le certificat.
3
Steffen Ullrich

La menace la plus évidente avec MITM est l'endroit où l'interaction est simplifiée, par exemple entre un site Web et un navigateur. Dans la plupart des cas, l'utilisateur tape simplement dans l'URL et prévoit une notification que la connexion est sécurisée. Si le site présenté correspond à leur attente, ils vont sur leur entreprise.

Amusant Mitm est utilisé en gros par passerelles de sécurité pour effectuer un filtrage de contenu sur les connexions HTTPS. Dans ces cas, la passerelle sert de proxy pour tout le trafic sortant; La connexion HTTPS est entre le client et la passerelle. Dans les environnements d'entreprise, le service informatique a généralement poussé la racine CA pour la passerelle de toutes les machines de maison qui permet au client d'accéder au certificat de la passerelle et de montrer la connexion comme sécurisé. La passerelle décrypte ensuite la demande, les filtres selon les besoins et facilite la propre connexion sécurisée du serveur. Cela s'applique également à la sécurisation des connexions SMTP et tout autre protocole qui est de la force proxé.

Un cadeau dans le scénario ci-dessus est que le certificat utilisé par la passerelle identifie généralement la connexion comme étant avec un fournisseur de passerelle (sophos, checkpoint, fortenet, etc.).

Dans le cas d'acteurs malveillants, l'objectif est une interception subreptice. Pour que cela réussisse, l'acteur aura compromis une racine générique de confiance en ca. À travers ce compromis, l'acteur peut émettre un nouveau certificat avec tous les détails attendus du serveur.

Supposons que les clients de l'hôtel (Alice) séjournent dans une locale hostile. Ils veulent utiliser les services de bob.com. Acteur Malory tente la MITM.

Malory se connecte à bob.com et copie tous les détails de l'entreprise du certificat SSL de BOB.com. Malory a déjà compromis Weepomis Root Ca qui est intégré à Windows, MacOS, iOS et Android.

Malory s'insère dans le réseau de l'hôtel (peut être un robinet physique, une reroute de port à l'interrupteur, voire une simple attaque DHCP). Malay redirige tout le trafic à travers son proxy transparent à la recherche d'un accès à Bob.com.

Quand Alice accède à Bob.com, le proxy de Malory se présente à Alice comme Bob.com à l'aide du certificat forgé. Pendant ce temps, Malory se connecte à bob.com et transmet les demandes/tire/pousses/puts/etc. entre les deux. Sauf si Alice regarde l'émetteur de la CA racine et sait que l'émetteur de certificats SSL de Bob.com est (et à condition également que l'émetteur de certificats SSL de BOB.com n'est pas le même que celui comprometté par Malay) elle n'aurait aucun moyen de détecter la Mitm.

Mitm consiste à se insérer dans l'échange de clé et ne craque pas le cryptage et en utilisant une surveillance de la circulation simple Wireshark/NetFlow.

1