rsakeyfind
Chercheur de clés privées RSA dans les dumps mémoire. Scanne des images mémoire, des dumps RAM et des images disque pour localiser du matériel de clé privée RSA à partir des propriétés mathématiques des nombres premiers. RSA private key finder in memory dumps. Scans memory images, RAM dumps, and disk images to locate RSA private key material based on mathematical properties of prime numbers.
↗ https://citp.princeton.edu/our-work/memory/Overview
rsakeyfind locates RSA private keys in memory dumps by searching for the mathematical structure of RSA key material (specifically prime numbers). Useful in forensic analysis when encryption keys need to be recovered from acquired memory images.
Basic Usage
Search for RSA keys in a memory dump
rsakeyfind memory.dmp
Search in a process memory dump
rsakeyfind process_memory.bin
Search in disk image
rsakeyfind disk.img
Output to file
rsakeyfind memory.dmp > found_keys.txt
What rsakeyfind Finds
# RSA private key components:
# - Private exponent (d)
# - Prime factors (p, q)
# - CRT parameters (dp, dq, qinv)
# These appear as large integers with specific mathematical properties
# rsakeyfind uses the mathematical structure to identify them
# Found keys are output in PEM format if complete:
# -----BEGIN RSA PRIVATE KEY-----
# ...
# -----END RSA PRIVATE KEY-----
Acquiring Memory for Analysis
# Linux memory acquisition
sudo avml /tmp/memory.lime
sudo dd if=/proc/kcore of=/tmp/memory.bin bs=1M
# Windows memory acquisition
# → Use winpmem, dumpit, FTK Imager
Hibernation file (Windows)
rsakeyfind hiberfil.sys
# Process memory (Linux)
gcore -o process_dump PID
rsakeyfind process_dump.PID
Common Use Cases
# Recover SSH private keys from running process
# → Target: ssh-agent process memory
pgrep ssh-agent # Find PID
gcore -o ssh_dump PID
rsakeyfind ssh_dump.*
# Recover OpenSSL keys from web server
pgrep apache2
gcore -o apache_dump PID
rsakeyfind apache_dump.*
# Search entire system memory
sudo dd if=/dev/mem of=/tmp/full_memory.bin bs=1M
rsakeyfind /tmp/full_memory.bin
Tips
- RSA key recovery from memory works because keys persist in RAM after use
- Works best on RAM dumps taken while the process using the key is running
- ssh-agent stores decrypted private keys in memory — target for key recovery
- OpenSSL keeps keys in memory during TLS sessions — web server memory is valuable
- Combine with AESkeyfind for symmetric key recovery from the same memory dump
Help / Man page
rsakeyfind FILENAME [FILENAME2 ...]
Arguments:
FILENAME Memory dump, disk image, or raw binary to search
Output: RSA key components in hex, assembled PEM where possible
No options — single argument usage only.
Vue d’ensemble
rsakeyfind localise des clés privées RSA dans des dumps mémoire en recherchant la structure mathématique du matériel de clé RSA (spécifiquement les nombres premiers). Utile en analyse forensique quand des clés de chiffrement doivent être récupérées à partir d’images mémoire acquises.
Utilisation basique
# Rechercher des clés RSA dans un dump mémoire
rsakeyfind memory.dmp
# Rechercher dans un dump mémoire de processus
rsakeyfind process_memory.bin
# Rechercher dans une image disque
rsakeyfind disk.img
# Sortie vers un fichier
rsakeyfind memory.dmp > found_keys.txt
Ce que rsakeyfind trouve
# Composants de clé privée RSA :
# - Exposant privé (d)
# - Facteurs premiers (p, q)
# - Paramètres CRT (dp, dq, qinv)
# Ces éléments apparaissent comme de grands entiers avec des propriétés
# mathématiques spécifiques ; rsakeyfind utilise cette structure
# mathématique pour les identifier
# Les clés trouvées sont fournies au format PEM si elles sont complètes :
# -----BEGIN RSA PRIVATE KEY-----
# ...
# -----END RSA PRIVATE KEY-----
Acquisition de mémoire pour l’analyse
# Acquisition mémoire Linux
sudo avml /tmp/memory.lime
sudo dd if=/proc/kcore of=/tmp/memory.bin bs=1M
# Acquisition mémoire Windows
# → Utiliser winpmem, dumpit, FTK Imager
Fichier d’hibernation (Windows)
rsakeyfind hiberfil.sys
# Mémoire de processus (Linux)
gcore -o process_dump PID
rsakeyfind process_dump.PID
Cas d’usage courants
# Récupérer des clés privées SSH depuis un processus en cours d'exécution
# → Cible : mémoire du processus ssh-agent
pgrep ssh-agent # Trouver le PID
gcore -o ssh_dump PID
rsakeyfind ssh_dump.*
# Récupérer des clés OpenSSL depuis un serveur web
pgrep apache2
gcore -o apache_dump PID
rsakeyfind apache_dump.*
# Chercher dans toute la mémoire du système
sudo dd if=/dev/mem of=/tmp/full_memory.bin bs=1M
rsakeyfind /tmp/full_memory.bin
Conseils
- La récupération de clé RSA depuis la mémoire fonctionne car les clés persistent en RAM après utilisation
- Fonctionne mieux sur des dumps RAM pris pendant que le processus utilisant la clé est en cours d’exécution
- ssh-agent stocke les clés privées déchiffrées en mémoire : une cible de choix pour la récupération de clés
- OpenSSL conserve les clés en mémoire durant les sessions TLS : la mémoire d’un serveur web est précieuse
- Combiner avec AESkeyfind pour la récupération de clés symétriques depuis le même dump mémoire
Aide / Page de manuel
rsakeyfind FILENAME [FILENAME2 ...]
Arguments:
FILENAME Memory dump, disk image, or raw binary to search
Output: RSA key components in hex, assembled PEM where possible
No options — single argument usage only.