Extrair chaves de criptografia na memória em Linux

Alguns trabalhos (aqui e aqui) já foram publicados sobre o assunto de segurança de chaves de criptografia na DRAM (Dynamic Random Access Memory). Basicamente, precisamos encontrar algo que pareça uma chave (entrópico e comprimento específico) e, em seguida, confirmar sua natureza, analisando a estrutura de memória em torno dela (tipos de dados C). O CryKeX permite extrair chaves de criptografia de memória.

A ideia é realizar um dump live memory de um processo e usar essas técnicas para encontrar chaves prováveis, pois o mapeamento de memória não muda.

O script não é só capaz de injetar em processos que já estão em execução, mas também envolvendo novos processos, lançando-os separadamente e injetando um pouco depois. Isso o torna capaz de despejar chaves de quase qualquer processo/binário no sistema.

Claro, o acesso a uma memória é limitado pelo kernel, o que significa que você ainda precisará de privilégios para um processo.

Linux Unified Key Setup (LUKS) utiliza técnica anti-forense para mitigar esse problema, no entanto, a extração de chaves de uma memória inteira ainda é possível.

O navegador Firefox usa algum gerenciamento de memória semelhante, portanto, não parece afetado.

O mesmo vale para PGP/GPG.

Instalação

Instalando dependências:

sudo apt install gdb aeskeyfind rsakeyfind || echo 'have you heard about source compiling?'

.

Um exemplo interativo para chaves OpenSSL AES:

openssl aes-128-ecb -nosalt -out testAES.enc

.

Digite uma senha duas vezes, em seguida, algum texto e, antes de terminar:

CryKeX.sh openssl

.

Finalmente, pressione Ctrl + D 3 vezes e verifique o resultado.

Chaves OpenSSL RSA:

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 em VeraCrypt, monte com a senha pass e:

sudo CryKeX.sh veracrypt

.

Navegadores baseados no Chromium (obrigado, Google):

CryKeX.sh chromium
CryKeX.sh google-chrome

.

Apesar do Firefox não ter sido explicitamente afetado, o Tor Browser Bundle ainda é passível de ser devido ao tunelamento:

CryKeX.sh tor

.

Como dito, você também pode envolver processos:

apt install libssl-dev
gcc -lcrypto cipher.c -o cipher
CryKeX.sh cipher
  wrap
  cipher

Download do script

Faça download da última versão diretamente no link do projeto no GitHub – Linux Memory Cryptographic Keys Extractor – CryKeX.

Propriedades

  • Cross-platform
  • Minimalismo
  • Simplicidade
  • Interatividade
  • Compatibilidade e Portabilidade
  • Aplicação Independente
  • Process Wrapping
  • Process Injection

Dependências

  • Unix: deve funcionar em qualquer sistema operacional baseado em Unix
  • BASH – todo o script
  • Pivilégios de root (opcional)

Limitações

  • Apenas chaves AES e RSA
  • Falha na maior parte do tempo no navegador Firefox
  • Não funcionará para criptografia de disco (LUKS) e PGP/GPG
  • Precisa de privilégios de usuário adequados e autorizações de memória

.


.

Disclaimer: Todas as informações aqui contidas são para fins didáticos e não para causar danos e prejuízos para alguém, usem sempre o conhecimento aqui compartilhado com ética e responsabilidade. Não nos responsabilizamos pela utilização indevida do conteúdo aqui exposto. Leia mais no aviso legal em nosso site.

.


1 comentários SobreExtrair chaves de criptografia na memória em Linux

Deixe uma resposta:

Seu endereço de e-mail não será publicado.

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.