Extraindo Senhas do Porta-Chaves do OS X


Constantemente, as novas versões do EnCase expandem suas capacidades investigativas. As novas versões do EnCase tem expandido as capacidades de investigação de dispositivos OS X em Windows, adicionando a habilidade de decifrar e extrair senhas do Porta-Chaves do OS X. Neste artigo, mostrarei a informação que pode ser extraída dos porta-chaves e técnicas demonstrativas baseadas no EnScript para expor estes dados no EnCase.

Um ano atrás, Simon Key da divisão de treinamento da Guidance Software publicou um artigo informativo sobre como decifrar o Porta-Chaves do OS X. Essa postagem foi muito popular, e milhares de investigadores aderiram à técnica. Logo após, o aplicativo dumpkeychain, disponibilizado no EnCase App Central para extrair e analisar a informação dos arquivos porta-chaves, se transformou em um dos aplicativos mais baixados. Se você não pôde ler o artigo do Simon, leia este resumo:

Quando um usuário inicia sua sessão num dispositivo OS X, suas credenciais são armazenadas de maneira segura e protegidas pelo sistema operacional. Cada vez que um usuário inicia sua sessão em um site, se conecta a um ponto de acesso de WiFi, ou entra no seu servidor de e-mail, o sistema operativo OS X oferece guardar a senha para usá-la posteriormente. Estas senhas são guardadas em arquivos porta-chaves, tanto para cada usuário como para a totalidade do sistema. Naturalmente, os arquivos porta-chaves são protegidos com múltiplos níveis de segurança e não são fáceis de decifrar. Os arquivos não são acessíveis facilmente para os usuários dentro do OS X, mas EnCase pode acessá-los. Se um investigador consegue a credencial de acesso do usuário ao sistema operativo, acessar todas as senhas armazenadas no porta-chaves é simplesmente um processo mecânico e repetível.

Obviamente, existem ferramentas autônomas que fazem esta tarefa de maneira admirável. Uma ferramenta notável é Passware Forensic, que tem a habilidade de decifrar os arquivos usando as credenciais válidas ou atacando os arquivos, caso você não tenha suas credenciais de acesso. A Passware realmente criou um produto extraordinário, e a Guidance Software recomenda seu uso a todos os investigadores. Mas nem todos os investigadores têm acesso a licenças da Passware, e se você está entre estas pessoas: Este artigo está dirigido a você.

A partir da versão 7.09.04, EnCase inclui a habilidade de extrair senhas dos arquivos porta-chaves tanto de usuários como do sistema. Para conseguir acessar as mais novas versões do EnCase, cadastre o seu dongle e receberá um e-mail com os links de download.

Podemos dividir este processo em poucos passos:
  1. Analisar a sintática e decifrar os porta-chaves de usuário/sistema
  2. Extrair e guardar segredos
  3. Usar os segredos para encontrar mais evidência, combatir o mal, lutar pelo bem, etc., etc.
Esta imagem de tela mostra o porta-chaves do meu usuário na minha MacBook dentro de uma pré-visualização do EnCase:


Ainda não existe uma interface especializada para decifrar e analisar a sintática dos porta-chaves, mas podemos fazer isto através do API do EnScript.

Aprender EnScript realmente está além do escopo desta postagem, mas se você está interessado em aprender mais, a Guidance Software Training oferece o curso mais completo sobre programação com EnScript, ou caso você seja um desenvolvedor experto,  você pode cadastrar-se no EnCase App Central Developer Network para acessar sem nenhum custo ao SDK do EnCase Forensic, amostras de código, documentação para desenvolvedores e mais.

Aqui estão as partes importantes do código EnScript. O conteúdo completo pode ser baixado aqui.


Comecemos com a linha 42: Primeiro, queremos iterar através de todos os itens do nosso caso. Esta é a maneira mais direta de expor as entradas do sistema de arquivos para serem inspecionadas.

Uma vez entramos no laço FOR, e seguindo o propósito deste exemplo, queremos identificar um arquivo porta-chaves específico para analisá-lo. Eu conheço a localização do porta-chaves do meu usuário a partir do item TruePath identificado na primeira imagem de tela, por tanto preenchemos esta informação na variável “keychainTruePath”.


Na linha 44, instanciamos a classe CredentialClass para facilitar a armazenagem dos segredos extraídos do porta-chaves.

Nas linhas 45 e 46, instanciamos uma classe EntryFileClass e a preenchemos com o conteúdo do arquivo porta-chaves.

Na linha 47, chamamos um novo método, “DumpMacKeyChain”, o qual aceita a classe EntryFileClass que acabamos de criar, e um parâmetro de senha, uma variável de cadeia de caracteres previamente preenchida.

O método DumpMacKeyChain decifra o porta-chaves e analisa a sintática dos segredos que estão armazenados, mas eles ainda não estão prontos para que o usuário os use na investigação. Neste ponto, poderíamos começar a imprimir na consola cada uma das senhas, mas podemos fazer algo muito melhor.


Finalmente, na linha 48, fazemos uma chamada ao método AddToSecureStorage, que está definido no nosso script demonstrativo. O método AddToSecureStorage criará o item Credentials, dentro da ficha Secure Storage do seu caso, facilitando a revisão dos segredos extraídos. Uma vez terminado o processo, Secure Storage aparecerá assim:


Como você pode observar, existe uma quantidade amedrontadora de informação guardada no porta-chaves. Sem ficar brincando: existem mais senhas guardadas no porta-chaves das que você sabe, é por isso que você pediu ao porta-chaves que as guarde! Por exemplo:

    •    As linhas 41 e 42 acima representam uma senha armazenada no cache de um servidor interno da Guidance Software
    •    As linhas 45 e 46 representam senhas guardadas no Safari (por exemplo, senhas de sites)
    •    As linhas 39 e 40 representam credenciais para decifrar um arquivo DMG chamado “MyEncriptedStash.dmg”


Quando vemos a ficha “Text” vemos o segredo decifrado à primeira vista. Esta é a senha do arquivo DMG cifrado. Podemos simplesmente pegar esta senha, decifrar e montar o arquivo DMG dentro do nosso caso. Localizamos o arquivo DMG, e vemos a estrutura de arquivos desta entrada (Entries > View File Structure):


A seguir, escrevemos a senha que conseguimos em Secure Storage


Esta imagem mostra o arquivo DMG cifrado, decifrado e montado no EnCase, os dados são totalmente visíveis.


A pesar de que a capacidade de decifrado e extração descrita em esta postagem funciona atualmente através do API do EnScript, sabemos que um acesso mais simples a esta tecnologia é ainda mais eficiente. Durante este inverno, planejamos tornar esta poderosa tecnologia ainda mais fácil de usar mediante:

    •    Análise sintática dos arquivos porta-chaves mediante a interface do EnCase, preenchimento automático do item Secure Storage com os segredos extraídos.
    •    Decifrado automático de arquivos como DMG, bundles e sparsebundles quando as senhas estão localizadas dentro de Secure Storage

Espero que isto lhes dê uma perspectiva sobre como trabalhamos para fazer que o EnCase encontre mais evidência e faça suas investigações mais eficientemente.


Este artigo foi adaptado do original em inglês “EnCase 7.09.04: Extracting Passwords from OS X Keychains” escrito por Ken Mizota, Gerente de Produto na Guidance Software. Siga Ken no twitter, @kenm_encase

Se tiver alguma dúvida ou comentário, escreva para nosso e-mail: sales-latam@encase.com
 


TEMAS RELACIONADOS

Mudando as Propriedades de Arquivo do Seu Agente EnCase 

Curta Nossa Página em Português no Facebook

Guidance Software reconhecida pela Gartner como líder do mercado de ferramentas de detecção e resposta em dispositivos 

Faça Parte do Nosso Grupo de Usuários do EnCase em Português

No comments :

Post a Comment