
Extractor de claves criptográficas de memoria Linux

Propiedades:
Dependencias:
Limitaciones:
Quizás ya hayas oído hablar o incluso usado mi proyecto AES-REX que hace prácticamente lo mismo, pero de manera diferente. Mientras que AES-REX extrae claves criptográficas de los registros, CryKeX las extrae de la memoria volátil (RAM).
Algunos trabajos ya se han publicado sobre el tema de la seguridad de las claves criptográficas en la DRAM. Básicamente, necesitamos encontrar algo que parezca una clave (entrópica y de longitud específica) y luego confirmar su naturaleza analizando la estructura de memoria a su alrededor (tipos de datos de C).
La idea es volcar la memoria en vivo de un proceso y usar esas técnicas para encontrar claves probables, ya que el mapeo de memoria no cambia. Afortunadamente, existen herramientas para ese propósito.
El script no solo es capaz de inyectarse en procesos ya en ejecución, sino también de envolver nuevos procesos, lanzándolos por separado e inyectándose poco después. Esto lo hace capaz de extraer claves de casi cualquier proceso/binario del sistema.
Por supuesto, el acceso a una memoria está limitado por el kernel, lo que significa que aún necesitarás privilegios para un proceso.
El cifrado de disco en Linux (LUKS) utiliza una técnica anti-forense para mitigar este problema, sin embargo, aún es posible extraer claves de toda la memoria.
Firefox utiliza una gestión de memoria algo similar, por lo que parece no verse afectado.
Lo mismo ocurre con PGP/GPG.
Desafortunadamente, soluciones como Ansible se ven afectadas.
Puedes leer más detalles en eForensics.
Instalando dependencias:
sudo apt install gdb aeskeyfind rsakeyfind || echo '¿has oído hablar de compilar desde el código fuente?'
Un ejemplo interactivo para claves AES de OpenSSL:
openssl aes-128-ecb -nosalt -out testAES.enc
Introduce una contraseña dos veces, luego algo de texto y antes de terminar:
CryKeX.sh openssl
Finalmente, presiona Ctrl+D 3 veces y verifica el resultado.
Claves RSA de OpenSSL:
openssl genrsa -des3 -out testRSA.pem 2048
Cuando se solicite la frase de contraseña:
CryKeX.sh openssl
Verifica:
openssl rsa -noout -text -in testRSA.pem
Extraigamos claves de SSH:
echo 'Ciphers [email protected]' >> /etc/ssh/sshd_config
ssh user@server
CryKeX.sh ssh
De OpenVPN:
echo 'cipher AES-256-CBC' >> /etc/openvpn/server.conf
openvpn yourConf.ovpn
sudo CryKeX.sh openvpn
TrueCrypt/VeraCrypt también se ve afectado: Selecciona el archivo "veracrypt" en VeraCrypt, monta con la contraseña "pass" y:
sudo CryKeX.sh veracrypt
Navegadores basados en Chromium (gracias Google):
CryKeX.sh chromium
CryKeX.sh google-chrome
A pesar de que Firefox no se ve afectado explícitamente, Tor Browser Bundle sigue siendo susceptible debido al tunelizado:
CryKeX.sh tor
Como se mencionó, también puedes envolver procesos:
apt install libssl-dev
gcc -lcrypto cipher.c -o cipher
CryKeX.sh cipher
wrap
cipher
Siéntete libre de contribuir y probar otras aplicaciones.
"La llave de la persistencia abre todas las puertas cerradas por la resistencia"
John Di Lemme