User Tools

Site Tools


secres:https-interception

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
secres:https-interception [2017/11/24 15:09] orelsecres:https-interception [2024/03/18 15:06] (current) – external edit 127.0.0.1
Line 3: Line 3:
 Nous allons mettre en oeuvre le mécanisme d'interception HTTPS, qui consiste à faire in Man-in-the-Middle pour déchiffre le traffic HTTPS entre le client et le serveur ! Nous allons mettre en oeuvre le mécanisme d'interception HTTPS, qui consiste à faire in Man-in-the-Middle pour déchiffre le traffic HTTPS entre le client et le serveur !
  
-Le code et la documentation du projet sont ici : https://gitlab.inria.fr/esnard/https-interception 
  
 +Considérons le réseau suivant :
  
-=== Démo === 
  
-Considérons le réseau suivant :+  Client Web <-----> Proxy <--- (...) --> Server Web (https://nile.metal.fr)  
  
  
-  Client Web <-----> Proxy <--- (...) --> Server Web (https://nile.metal.fr)+=== Proxy SSL ===
  
-  +Voici le code de notre proxy SSL :
  
 <code python sslproxy.py> <code python sslproxy.py>
Line 20: Line 19:
 import ssl import ssl
 import sys import sys
-import OpenSSL 
 import time import time
 import datetime import datetime
Line 128: Line 126:
 </code> </code>
  
 +=== Génération des faux certificats ===
  
-Génération du certificat //fake// certificat :+Commençons par générer un //fake CA// :  
 + 
 +  $ certtool --generate-privkey --outfile fake-ca-key.pem 
 +  $ certtool --generate-self-signed --load-privkey fake-ca-key.pem --outfile fake-ca-cert.pem 
 + 
 +Voici les réponses à donner strictement : 
 + 
 +  * La plupart des champs peuvent rester vides. 
 +  * Common name: FAKECA 
 +  * The certificate will expire in (days): 255   
 +  * Does the certificate belong to an authority? (y/N): y 
 +  * Will the certificate be used to sign other certificates? (y/N): y 
 +  * CRL signing: y 
 +  * All other extensions: NO (required) 
 + 
 +Pour afficher le contenu de son certificat 
 + 
 +  $ certtool --infile fake-ca-cert.pem -i 
 + 
 +Générons maintenant le //fake// certifcat de notre serveur.  
 + 
 +   $ certtool --generate-privkey --outfile fake-server-key.pem 
 +   $ certtool --generate-certificate --load-privkey fake-server-key.pem --outfile fake-server-cert.pem --load-ca-certificate fake-ca-cert.pem --load-ca-privkey fake-ca-key.pem 
 + 
 +Voici les réponses à donner strictement : 
 + 
 +  * La plupart des champs peuvent rester vides 
 +  * CN=nile.metal.fr 
 +  * DNSName=nile.metal.fr 
 +  * IP address=10.0.0.2 
 +  * The certificate will expire in (days): 255 
 +  * Will the certificate be used for signing (required for TLS)? (y/N): y 
 +  * Will the certificate be used for encryption (not required for TLS)? (y/N): y 
 + 
 +Vous pouvez également utiliser le script suivant pour générer automatiquent le //fake// certificat pour le serveur nile.metal.fr :
  
   ./gen-fake-cert.py nile.metal.fr 443   ./gen-fake-cert.py nile.metal.fr 443
Line 139: Line 172:
 import sys import sys
 import pprint import pprint
-import OpenSSL+import OpenSSL  # deprecated ?
 import time import time
 import datetime import datetime
 import os import os
 import struct import struct
- 
  
 # this certificate must be trusted by the client victim! # this certificate must be trusted by the client victim!
Line 248: Line 280:
 </code> </code>
      
 +
 +=== Lancement du Proxy HTTPS ===
 +
 Lancement du proxy : Lancement du proxy :
  
Line 254: Line 289:
   ./sslproxy.py nile.metal.fr 443 4444   ./sslproxy.py nile.metal.fr 443 4444
  
 +=== Mise en oeuvre avec un client ===
  
 Sur le client : Sur le client :
Line 261: Line 297:
 Pour ajouter le //fake// CA dans le store du client, il faut faire : Pour ajouter le //fake// CA dans le store du client, il faut faire :
  
-  openssl x509 -in ca-cert.pem -inform PEM -out ca-cert.crt+  cp ca-cert.pem ca-cert.crt # renommage
   cp ca-cert.crt /usr/share/ca-certificates/mycert/   cp ca-cert.crt /usr/share/ca-certificates/mycert/
   dpkg-reconfigure ca-certificates   dpkg-reconfigure ca-certificates
      
 +Puis, il suffit de faire :
 +  
 +  wget -4 https://nile.metal.fr
 +  
 +
 +Video de démo par A. Guermouche : https://www.youtube.com/watch?v=KURaBFMn4xg
 +
 ==== Documentation ==== ==== Documentation ====
 +
 +Le code et la documentation du projet (version antérieure) sont ici : https://gitlab.inria.fr/esnard/https-interception 
  
 About HTTPS interception: About HTTPS interception:
secres/https-interception.1511536182.txt.gz · Last modified: 2024/03/18 15:05 (external edit)