Déterminer les versions SSL/TLS supportés par un site

Déterminer les versions SSL/TLS supportés par un site - Python - Programmation

Marsh Posté le 19-03-2018 à 21:53:44    


 
    Bonjour,
 
    J'aimerais écrire un script python (version 2.7) me permettant déterminer les version de SSL/TLS (et méthode de chiffrement utilisés) qu'acceptent un site web.
    J'ai cependant une contrainte pour ce projet, n'utilisez que la des modules de la bibli standard.
 
    Pour récupérer ce genre d'informations, j'ai tout d'abord penser à regarder à récupérer le certificat du site visé pour aller chercher des informations dedans.
    A la main, cela se fait très bien, mais je n'arrive à obtenir que la version de SSL/TLS actuellement utilisé pour l'échange. Or j'aimerais savoir pour chacune des version, si ces dernières sont supportés.
 
    Du coup, je ne suis pas sur que récupérer le certificat soit la bonne technique à employer...
 
Je ne peux pas commencer à programmer étant donné que je n'ai pas vraiment d'idée de comment faire pour savoir si le site accepte telle ou telle version de SSL/TLS.
    Auriez-vous des idées de comment je pourrais m'y prendre ?  
 
    Cordialement  
 

Reply

Marsh Posté le 19-03-2018 à 21:53:44   

Reply

Marsh Posté le 19-03-2018 à 22:04:01    

Salut,
 
Tu peux déterminer cela lors du “SSL handshake”.
Le serveur te proposera des SSL cipher par ordre de préférence. En général, un site web en proposera plusieurs, tout dépend de ce qui a été configuré.

Reply

Marsh Posté le 20-03-2018 à 08:32:05    

Ok, merci de ta réponse :)
 
Du coup, pour réaliser ça en python, j'ai potentiellement 2 idées.
 
1) Soit il existe déjà une bibliothèque de la librairie standard en python 2.7 qui me permette de rejouer le SSL-handshake. Auquel cas je n'aurais qu'a récupérer le bon message échangé lors du SSL-handshake pour retrouver la liste des version supportés.
 
2) Soit je peux peut-être essayer de créer une socket pour me connecter au site en spécifiant explicitement quelle version de SSL/TLS et algo de chiffrement je souhaite utilisé. Et ensuite, je regarde le retour, est ce que la socket à pu être crée ou non ? Et du coup, je pourrais tenter de me connecter en itérant sur toutes les possibilités de SSL/TLS version avec tous les algos de chiffrement possible.
 
Vous pensez que l'une de ces solutions est plus adaptée pour ce que je souhaiterais faire ?

Reply

Marsh Posté le 20-03-2018 à 08:44:23    

Pas de soucis.
 
Fais une capture réseau, lors d’une connexion à un site et regarde si les résultats obtenu durant le Handshake te conviennent.
Tu peux aussi utiliser OpenSSL avec cela normalement. Il existe aussi d’autres outils de scan pouvant obtenir ces information. Fais une petite recherche sur Internet, il existe normalement des script Perl ou autres.

Reply

Marsh Posté le 20-03-2018 à 09:19:54    

pourquoi réinventer la roue tout ça existe déjà ?

Reply

Marsh Posté le 20-03-2018 à 09:48:40    

Tout ceci existe déjà oui, mais c'est mon projet: déterminer les versions de SSL/TLS (avec algos de chiffrement utilisés) accpeté par un site avec pour contrainte :  
 -utiliser python 2.7
- interdiciton d'utiliser des modules qui ne font pas parti de la bibliothèque standard

Reply

Marsh Posté le 20-03-2018 à 10:01:04    

projet de quoi ?

Reply

Marsh Posté le 20-03-2018 à 10:46:37    

En réseau.
On doit faire une sorte de petit scanner pour récupérer des infos sur des sites webs. Et on doit nottament récupérer les versions TLS/SSL supportés.

Reply

Marsh Posté le 20-03-2018 à 10:57:29    

ouais donc rien de pro, ça ira en cat programmation du coup

Reply

Marsh Posté le 20-03-2018 à 10:58:09    

Ce sujet a été déplacé de la catégorie Systèmes & Réseaux Pro vers la categorie Programmation par Je@nb

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed