===== Fuerza bruta a llaves privadas / certificados cifrados en formato PEM =====
Un archivo .PEM es un certificado y/o llave codificado en Base64 acotado por las siguientes líneas.
CSR en formato PEM.
-----BEGIN CERTIFICATE REQUEST-----
...
-----END CERTIFICATE REQUEST-----
Llave privada en formato PEM.
-----BEGIN RSA PRIVATE KEY-----
...
-----END RSA PRIVATE KEY-----
Certificado en formato PEM.
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
El formato .PEM es ampliamente utilizado por ejemplo en servidores OpenVPN, HTTPS, FTPES, etc.
* Formato PEM: [[https://en.wikipedia.org/wiki/Privacy-enhanced_Electronic_Mail]]
* Documentación OpenSSL sobre PEM: [[https://www.openssl.org/docs/manmaster/crypto/pem.html]]
**Utilidades**: [[https://github.com/magnumripper/JohnTheRipper|John the Ripper]] (bleeding-jumbo - Git Versión) / [[https://github.com/bwall/pemcracker|pemcracker]] / [[http://leidecker.info/projects/phrasendrescher/index.shtml|"phrasen|drescher / PD" ]] (deprecated).
==== John the Ripper ====
Web: [[https://github.com/magnumripper/JohnTheRipper]]
Se debe instalar la versión John the Ripper de GIT denonimada bleeding-jumbo.
utilizar la herramienta ssh2john para pasar el fichero en formato PEM a un formato compatible con JtR.
Iniciar JtR con la opción "%%--%%format=ssh".
./configure && make -s clean && make
cd ../run
./ssh2john key.pem > password_pem
# Ejemplo utilizando un diccionario.
./john --format=ssh --wordlist=rockyou.txt password_pem
NOTA: Recordar que la opción %%--%%fork puede obtener mejores resultados que el multihilo (Activado por defecto en la versión bleeding-jumbo).
==== PemCracker ====
Web: [[https://github.com/bwall/pemcracker|pemcracker]]
Tiene un rendimiento algo inferior a JtR pero muy aceptable, solo permite usar ataques de diccionario. Utiliza todos los núcleos del sistema.
pemcracker private.pem rockyou.txt
# Número de hashes / Segundos / Número de hashes por segundo. (66170.7 x 1.51124 = 100000)
Hashes(100000) Per Second(1.51124s): 66170.7
Hashes(200000) Per Second(2.9956s): 66764.6
Hashes(300000) Per Second(4.50154s): 66643.9
...
**Diferencias de rendimiento con un diccionario (wordlist) de 14944393 contraseñas**.
Procesador: Intel(R) Core(TM) i7-4770K CPU @ 3.50GHz
* JtR en modo fork: 2 Minutos.
* JtR multihilo: 2 Minutos + 20 segundos.
* PemCrack: 2 Minutos + 26 segundos.