Procedimentos | Auditoria e Análise Forense - A computação forense na análise de crimes e incidentes | Page 2 of 3
Procedimentos para a Computação Forense
WhatsApp com Crypt7 e Crypt8 – Android
Foram muitos os contatos sobre o post do WhatsApp, muitos com dúvidas e queixas sobre o funcionamento do método. Então, com a chegada da nova versão do WhatsApp com Crypt8, do novo script do Abinash Bishoyi versão 2.2 e da nova versão do WhatsApp Viewer, resolvi atualizar o post anterior e detalhar um pouco mais a operação, para tentar ajudar aqueles que não conseguiram efetivar a extração. O WhatsApp implementou algumas alterações na sua última versão (arquivos Crypt8), desabilitando a permissão de backup com o ADB. Já existe opções para burlar esta dificuldade, como veremos adiante, então vamos nos concentrar nos arquivos de backup Crypt7 e Crypt8. Não é possível descriptografar os arquivos sem ter acesso a chave de criptografia, portanto não basta copiar o conteúdo da pasta WhatsApp.
A solução apresentada a seguir só funciona para o Android, versão 4.0 ou posterior, visto que é utilizada a funcionalidade de realização de backup via USB. Não é necessário fazer root no dispositivo. Para que seja possível realizar a operação de cópia, abra o dispositivo e carregue as configurações do sistema. Selecione a opção "Opções do Programador" ("Developer options") ou "Programador" ("Developer"). Caso você esteja utilizando um celular que não apresente esta opção, acesse "Sobre o dispositivo" ("About phone" ou "About device") ou "Sobre" ("About") e toque de 7 a 10 vezes na opção "Número de compilação" ("Build number" para o Samsung) ou "Número da versão". Retorne e encontrará "Opções do programador" habilitada. Selecione "Opções do programador" e marque a opção "Depuração USB" ("USB debugging"). Conecte o dispositivo móvel e aguarde ele carregar todos os drivers.
Obtendo a chave de criptografia e os arquivos de mensagem
NO LINUX – O Abinash Bishoyi oferece um shell script para extrair a chave e os arquivos criptografados.
PRÉ-REQUISITOS: Java, Phyton, ADB e o script do Abinash Bishoyi.
EXECUTANDO A EXTRAÇÃO: Crie uma pasta com um nome qualquer (Ex.: /home/user/WHATSAPP) e extraia o conteúdo do arquivo do script para ela. Conecte o dispositivo via USB, ative o "USB debugging" e execute o script WhatsAppKeyExtract.sh. Aceite a solicitação de backup e os arquivos serão extraídos para a pasta "extracted" situada na pasta onde você extraiu os arquivos do script (/home/user/WHATSAPP/extracted).
NO WINDOWS – Temos duas opções: O script de Abinash Bishoyi (Requer Java) ou o script do WhatCrypt (Não requer Java).
PRÉ-REQUISITOS: Java, ADB e o script do Abinash Bishoyi ou do WhatCrypt.
EXECUTANDO A EXTRAÇÃO: Caso opte pelo script de Abinash Bishoyi, instale o Java. Então crie uma pasta com um nome qualquer (Ex.: C:\WHATSAPP) e extraia o conteúdo do arquivo do script para ela. Em seguida vá até a pasta que você criou e execute o arquivo "WhatsAppCryptKeyExtract.bat". Os arquivos serão extraídos para a pasta "C:\WHATSAPP/extracted". Caso opte pelo script do WhatCrypt, crie a pasta para extrair o arquivo baixado e em seguida vá até ela e execute o arquivo "WhatsAppCryptKeyExtractor.bat". Os arquivos serão extraídos para a pasta "C:\WHATSAPP/extracted".
Utilize o site do WhatCrypt para abrir os arquivos, ou então o WhatsApp Viewer na versão 1.7. Ambos suportam os arquivos Crypt5, Crypt7 e Crypt8. Opcionalmente você pode utilizar o app do WhatsCrypt (Veja no site deles). Será preciso ativar nas configurações, na opção "Segurança" ("Security"), "Fontes desconhecidas" ("Unknown sources") e então executar o app baixado. Ele oferece a opção de descriptografar os arquivos e disponibilizá-lo para ser visualizado por um dos métodos citados (WhatCrypt ou WhatsApp Viewer).
O WhatsApp desabilitou a permissão de backup pelo ADB de seus arquivos no app manifesto, entretanto já existe uma solução para contornar esta dificuldade, fazendo com que o método mostrado acima continue funcionando.
PRÉ-REQUISITOS: Java, Windows Vista, 7 ou 8, desinstalar versões anteriores. (Obs.: Não exclua o cache ou dados, apenas desinstale e instale o novo, aceitando a recuperação das mensagens anteriores)
Baixe o arquivo WhatsAppADBPatch.zip;
Baixe a última versão do WhatsApp do site oficial (WhatsApp.apk)
Extraia o arquivo WhatsAppADBPatch.zip preservando sua estrutura de diretórios;
Copie o arquivo WhatsApp.apk para a pasta onde você extraiu oWhatsAppADBPatch.zip;
Arraste o arquivo WhatsApp.apk sobre o arquivo ADBPatch.bat;
Instale o arquivo WhatsApp_Patched.apk criado, no dispositivo;
Execute a extração vista anteriormente pelo método que desejar
OBS.: O procedimento acima foi testado em um Moto X 2ª geração com Android 5. Veja a galeria de imagens abaixo:
WhatsApp com Crypt7
Desde a publicação sobre extração e análise de mensagens do WhatsApp, muita coisa mudou. O app alterou suas chaves de criptografia e a técnica apresentada no ano passado não mais resolve o problema. É possível a aplicação de uma nova técnica apoiada no recurso de backup por USB presente em dispositivos com Android 4.0 ou superior, sem root. Se o aparelho é antigo e/ou possui Android inferior, então esta técnica não irá funcionar.
Para descriptografar arquivos de backup do WhattsApp em formato crypt7 é necessário ter acesso à chave de criptografia. O script desenvolvido por Abinash Bishoyi, extrai os arquivos e a chave para uma pasta designada no script (Exported). É possível utilizá-lo tanto sob o windows quanto sob o linux, visto que é fornecido um arquivo .BAT e um arquivo .SH, entretanto deve ser observado alguns requisitos para seu funcionamento, como a existência do java no computador, assim como do ADB (Android Debug Bridge) que pode ser encontrado aqui e da habilitação do USB debugging através do ícone de configuração, clicando sobre a opção "{} Programador" ou "{} Desenvolvedor" ("Developer options"), marcando a opção "Depuração USB" ("USB debugging"). Certos aparelhos não oferecem esta opção diretamente, sendo necessário habilitá-la indo ao item da configuração "Sobre o telefone" ("About device") e clicando sobre a opção "Número de compilação" (para o Samsung) ou "Número da versão" de sete a dez vezes.
Depois de satisfeita as condições necessárias, conecte seu telefone ao computador com um cabo USB e execute o script correspondente ao seu sistema operacional e aguarde a finalização. Pronto! os arquivos e a chave foram extraídas e copiadas.
Descriptografando e acessando os diálogos
Uma vez com os dados extraídos você pode acessar o site do WhatCrypt e descriptografar o conteúdo. O site oferece algumas opções, inclusive o download do pacote de scripts. A opção "Export WhatsApp Database" produz um relatório em html, no formato original do WhatsApp. É necessário inserir algumas informações, mas todas autoexplicativas.
Algumas pessoas que acompanham o blog me contataram perguntando sobre como proceder com os casos do crypt7, portanto aí está a resposta e continuem com a gente. Novos posts estão vindo. Até o próximo.
O Python é necessário. Acabei não citando-o pois este post é uma continuidade do anterior de 27/10/2013.
Outra opção ao WhatCrypt é utilizar o WhatsApp Viewer
Extração e análise de mensagens do WhatsApp
O Whatsapp é um aplicativo multiplataforma de mensagens instantâneas para smartphones com muitos recursos adicionais como envio de fotos, vídeos, áudio, mapas, etc., sem pagar por isso (Parece que não por muito tempo). O app é uma presença comum e importante em aparelhos de telefonia móvel e está disponível para iOS, BlackBerry OS, Android, Windows Phone, Symbian e Nokia. Tornou-se uma ferramenta de sucesso na categoria de instant messengers, chegando em 2013 a 30 bilhões de mensagens por dia. Todos utilizam o programa e nesta esteira de sucesso apareceram também os problemas, pois toda vez que algo é documentado, pode ser utilizado como prova em disputas judiciais.
A extração, recuperação e análise de mensagens do WhatsApp é procedimento relativamente simples, mas pode trazer alguma dificuldade para quem nunca fez. Os arquivos de mensagens do WhatsApp podem variar de localização. Dispositivos de telefonia móvel possuem uma memória interna e uma memória externa, como um micro SD e ambas pode ser utilizadas para armazenar os arquivos de mensagens, dependendo do sistema do aparelho onde está instalado.
Os procedimentos a seguir são específicos para os sistemas Android e iOS.
Nos aparelhos com sistema Android os arquivos de mensagens ficam gravados tanto na memória do aparelho quanto no cartão. Na memória do aparelho o arquivo de mensagens, msgstore.db e o arquivo com a lista de contatos, wa.db, ficam na pasta /data/data/com.whatsapp/databases, situada na partição do sistema, entretanto o acesso ao seu conteúdo através do aparelho só é possível se estiver em modo root, se não estiver é bom lembrar que as boas práticas forenses não recomendam colocar o Android em modo root. Caso esteja configurado para manter backup das mensagens, o WhatsApp armazena o arquivo de mensagens no cartão de memória, na pasta /sdcard/WhatsApp/Databases, sob o nome msgstore.db.crypt indicando que o mesmo encontra-se sob criptografia, ou nomeado como msgstore-yyyy-mm-dd.X.db.crypt caso haja mais de um arquivo de backup. Caso os arquivos msgstore.db e wa.db possam ser recuperados é possível extrair a lista das mensagens com o nome associado na lista de contatos do aplicativo.
Nos iPhones os arquivos de mensagens também ficam gravados tanto na memória do aparelho quanto no cartão. O arquivo ChatStorage.sqlite fica armazenado na pasta /net.whatsapp.WhatsApp/Documents.
A extração dos arquivos pode ser feita de diversas maneiras:
Conectando o dispositivo diretamente a um computador;
Conectando o cartão de memória a um leitor de cartões;
Utilizando um gerenciador de arquivos no dispositivo.
Após recuperar os arquivos é necessário copiá-los para a estação onde o conteúdo será recuperado. Esta estação deve ter instalado o ActivePython 32 bits, que pode ser baixado aqui. Mesmo que você tenha Windows de 64 bits, instale a versão de 32 bits. Em seguida baixe o WhatsApp Extract 2.1 aqui e extraia na pasta C:\Whatsapp (Por exemplo).
Após extrair o arquivo acesse a pasta onde você colocou seu conteúdo e execute o arquivo "install pyCrypto.bat" para instalar a biblioteca Pycrypto, que será utilizada para descriptografar arquivos crypt.
Os arquivos criptografados utilizam uma chave de 192 bits AES conhecida, cujo valor é 346a23652a46392b4d73257c67317e352e3372482177652c e podem ser descriptografados utilizando OpenSSL , seguindo o comando abaixo.
~$ openssl enc -d -aes-192-ecb -in msgstore.db.crypt -out msgstore.db -K 346a23652a46392b4d73257c67317e352e3372482177652c
O OpenSSL é pré-instalado no linux e no Mac, e no Windows deve ser baixado aqui e instalado.
O WhatsApp Extract 2.1 também possui um script para realizar esta tarefa e pode ser executada através do arquivop de lote whatsapp_xtract_android_crypted.bat.
Execute então os arquivos de lote whatsapp_xtract_android.bat e whatsapp_xtract_android_crypted.bat para o sistema Android e o whatsapp_xtract_iphone.bat para os iOS. O arquivo whatsapp_xtract_console.bat carrega o command do Windows, com instruções para que possa ser utilizado para ambos. Existe ainda o arquivo whatsapp_xtract_drag'n'drop_database(s)_here.bat para ambos os sistemas, que como o nome indica permite o uso do recurso arrastar e soltar para extrair o conteúdo das mensagens.
A extração é realizada e é gerado um arquivo html contendo as mensagens de forma estruturada, organizadas por número do interlocutor, data da mensagem, direção das mensagens (de/para), conteúdo da mensagem, status da mensagem, tipo da mídia enviada/recebida e tamanho desta mídia.
Procedimentos para a Computação Forense – Final
Neste último post vamos abordar a finalização dos exames e a emissão do relatório final (o Laudo Pericial).
Finalizado os exames, é o momento da preparação do Laudo Pericial, que deverá conter os seguintes itens:
Informações sobre o solicitante da perícia, como nome, lotação e número do documento que requisita a perícia;
Citar de forma clara e concisa o objetivo dos exames. (Note que o expediente legal que requisita os exames deverá conter o objetivo da perícia bem definido);
Descrição dos objetos que serão periciados e seu estado atual;
Descrição da metodologia empregada nos exames;
Descrição dos exames em linguagem simples e de fácil compreensão (lembre-se que quem for ler o seu relatório pode não ter o seu conhecimento). Se houver necessidade da utilização de termos técnicos, coloque seu significado sob a forma de notas de rodapé;
Conclusão do relatório informando sucintamente aquilo que foi encontrado, encerrando o Laudo.
Após a emissão do relatório, todos os documentos gerados devem ser arquivados juntamente com uma cópia do Laudo Pericial e uma cópia da mídia que eventualmente acompanhe o relatório (Esta mídia pode conter arquivos extraídos do dispositivo analisado, principalmente quando as quantidades dos achados impossibilitem a impressão completa do material).
A documentação deverá conter o expediente que solicita a perícia, o mandado judicial (se houver), contagem e descrição das provas, cadeia de custódia, informações sobre o estado das mesmas e todo e qualquer documento que venha a ser acrescentado no decorrer da perícia.
Após a revisão final por um segundo perito, o Laudo Pericial estará pronto para ser encaminhado ao solicitante. Em caso de discordância por parte do revisor deverá ser adotado o procedimento da instituição para esse tipo de situação.