
Estrattore di chiavi crittografiche dalla memoria Linux

Proprietà:
Dipendenze:
Limitazioni:
Potresti aver già sentito parlare o addirittura usato il mio progetto AES-REX che fa praticamente la stessa cosa, ma in modo diverso. Mentre AES-REX estrae le chiavi crittografiche dai registri, CryKeX le estrae dalla memoria volatile (RAM).
Alcuni lavori sono già stati pubblicati riguardo al tema della sicurezza delle chiavi crittografiche all'interno della DRAM. Fondamentalmente, dobbiamo trovare qualcosa che assomigli a una chiave (entropica e di lunghezza specifica) e poi confermarne la natura analizzando la struttura della memoria circostante (tipi di dati C).
L'idea è di scaricare la memoria live di un processo e utilizzare queste tecniche per trovare chiavi probabili, dato che il mapping della memoria non cambia. Fortunatamente, esistono strumenti per questo scopo.
Lo script non è solo in grado di iniettarsi in processi già in esecuzione, ma anche di fare il wrapping di nuovi, lanciandoli separatamente e iniettandosi poco dopo. Questo lo rende in grado di estrarre chiavi da quasi qualsiasi processo/binario sul sistema.
Ovviamente, l'accesso alla memoria è limitato dal kernel, il che significa che avrai comunque bisogno di privilegi per un processo.
La crittografia del disco Linux (LUKS) utilizza una tecnica anti-forense per mitigare questo problema, tuttavia, estrarre chiavi dall'intera memoria è ancora possibile.
Il browser Firefox utilizza una gestione della memoria in qualche modo simile, quindi sembra non essere influenzato.
Lo stesso vale per PGP/GPG.
Purtroppo, soluzioni come Ansible sono influenzate.
Puoi leggere maggiori dettagli da eForensics.
Installazione delle dipendenze:
sudo apt install gdb aeskeyfind rsakeyfind || echo 'have you heard about source compiling?'
Un esempio interattivo per le chiavi AES di OpenSSL:
openssl aes-128-ecb -nosalt -out testAES.enc
Inserisci una password due volte, poi del testo e prima di terminare:
CryKeX.sh openssl
Infine, premi Ctrl+D 3 volte e controlla il risultato.
Chiavi RSA di OpenSSL:
openssl genrsa -des3 -out testRSA.pem 2048
Quando viene richiesta la passphrase:
CryKeX.sh openssl
Verifica:
openssl rsa -noout -text -in testRSA.pem
Estraiamo chiavi da SSH:
echo 'Ciphers [email protected]' >> /etc/ssh/sshd_config
ssh user@server
CryKeX.sh ssh
Da OpenVPN:
echo 'cipher AES-256-CBC' >> /etc/openvpn/server.conf
openvpn yourConf.ovpn
sudo CryKeX.sh openvpn
Anche TrueCrypt/VeraCrypt è influenzato: Seleziona il file "veracrypt" in VeraCrypt, monta con password "pass" e:
sudo CryKeX.sh veracrypt
Browser basati su Chromium (grazie Google):
CryKeX.sh chromium
CryKeX.sh google-chrome
Nonostante Firefox non sia esplicitamente influenzato, Tor Browser Bundle è ancora suscettibile a causa del tunneling:
CryKeX.sh tor
Come detto, puoi anche fare il wrapping dei processi:
apt install libssl-dev
gcc -lcrypto cipher.c -o cipher
CryKeX.sh cipher
wrap
cipher
Sentiti libero di contribuire e testare altre applicazioni.
"La chiave della persistenza apre tutte le porte chiuse dalla resistenza"
John Di Lemme