
Extrator de Chaves Criptográficas da Memória Linux

Propriedades:
Dependências:
Limitações:
Você pode já ter ouvido falar ou até usado meu projeto AES-REX que faz basicamente a mesma coisa, mas de forma diferente. Enquanto o AES-REX extrai chaves criptográficas dos registradores, o CryKeX as extrai da memória volátil (RAM).
Alguns trabalhos já foram publicados sobre o assunto da segurança de chaves criptográficas na DRAM. Basicamente, precisamos encontrar algo que se pareça com uma chave (entrópica e de comprimento específico) e então confirmar sua natureza analisando a estrutura de memória ao redor (tipos de dados C).
A ideia é despejar a memória ativa de um processo e usar essas técnicas para encontrar chaves prováveis, já que o mapeamento de memória não muda. Felizmente, existem ferramentas para esse propósito.
O script não é apenas capaz de injetar em processos já em execução, mas também de empacotar novos, lançando-os separadamente e injetando logo em seguida. Isso o torna capaz de despejar chaves de quase qualquer processo/binário no sistema.
Claro, o acesso à memória é limitado pelo kernel, o que significa que você ainda precisará de privilégios para um processo.
A criptografia de disco Linux (LUKS) usa uma técnica antiforense para mitigar esse problema, no entanto, extrair chaves de toda a memória ainda é possível.
O navegador Firefox usa um gerenciamento de memória um tanto similar, portanto parece não ser afetado.
O mesmo vale para PGP/GPG.
Infelizmente, soluções como Ansible são afetadas.
Você pode ler mais detalhes na eForensics.
Instalando dependências:
sudo apt install gdb aeskeyfind rsakeyfind || echo 'have you heard about source compiling?'
Um exemplo interativo para chaves AES do OpenSSL:
openssl aes-128-ecb -nosalt -out testAES.enc
Digite uma senha duas vezes, depois algum texto e antes de encerrar:
CryKeX.sh openssl
Finalmente, pressione Ctrl+D 3 vezes e verifique o resultado.
Chaves RSA do OpenSSL:
openssl genrsa -des3 -out testRSA.pem 2048
Quando solicitado a senha:
CryKeX.sh openssl
Verificar:
openssl rsa -noout -text -in testRSA.pem
Vamos extrair chaves do SSH:
echo 'Ciphers [email protected]' >> /etc/ssh/sshd_config
ssh user@server
CryKeX.sh ssh
Do OpenVPN:
echo 'cipher AES-256-CBC' >> /etc/openvpn/server.conf
openvpn yourConf.ovpn
sudo CryKeX.sh openvpn
TrueCrypt/VeraCrypt também é afetado: Selecione o arquivo "veracrypt" no VeraCrypt, monte com a senha "pass" e:
sudo CryKeX.sh veracrypt
Navegadores baseados em Chromium (obrigado Google):
CryKeX.sh chromium
CryKeX.sh google-chrome
Apesar do Firefox não ser explicitamente afetado, o Tor Browser Bundle ainda é suscetível devido ao tunelamento:
CryKeX.sh tor
Como dito, você também pode empacotar processos:
apt install libssl-dev
gcc -lcrypto cipher.c -o cipher
CryKeX.sh cipher
wrap
cipher
Sinta-se à vontade para contribuir e testar outras aplicações.
"A chave da persistência abre todas as portas fechadas pela resistência"
John Di Lemme