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
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
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
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
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