Pular para o conteúdo

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ário em “Extrair chaves de criptografia na memória em Linux”

    1. Pingback: OWASP Top 10 2017 dos Principais Riscos à Segurança de Aplicações Web - Tiago Souza

    Deixe um comentário

    O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

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