Este artigo introduz o Android forensics e as técnicas utilizadas para realizar investigações forenses com o Android. Vamos discutir sistemas de arquivos Android, aquisição de dados, análise e várias ferramentas disponíveis para extração de dados Android.
Introdução
O mercado de smartphones está crescendo cada vez mais alto. Com as mudanças drásticas na tecnologia, os telefones inteligentes estão se tornando alvos de criminosos. Devido ao fato de que a maioria das pessoas estão completamente viciadas nos dispositivos móveis para realizar nossas tarefas diárias, desde a criação de um lembrete para desejar felicidades aos nossos queridos em ocasiões especiais, até transações bancárias online, os dispositivos móveis contêm muitos dados sensíveis que são do interesse de um investigador. Como o Android é um dos principais sistemas operacionais de smartphones, é importante ter conhecimentos de forense Android.
Android forensics é diferente de forensics de disco normal por várias razões. Ele suporta vários sistemas de arquivos que são específicos para o Android. Podemos procurar os seguintes dados nos dispositivos Android: SMS, MMS, e-mails, registros de chamadas, contatos, fotos, calendários, notas, histórico do navegador, localização GPS, senhas, dados armazenados em cartões SD, etc.
É importante entender os sistemas de arquivos, estruturas de diretórios e como e onde os dados são armazenados nos dispositivos antes de entrar na forense real.
Estrutura de diretórios do Android
Android tem uma estrutura de diretórios específica para ele. Podemos ver a estrutura de diretórios do dispositivo usando a “adb shell”. Também é possível ver a estrutura de diretórios do dispositivo usando o DDMS. A figura seguinte mostra o sistema de arquivos do meu dispositivo “Sony Xperia E” usando “adb shell”.
A figura acima mostra muitos arquivos e pastas no dispositivo atual. Os locais mais importantes para um analista forense são /system, /data, /sdcard, /ext_card.
/system: Ele contém dados específicos do sistema operacional.
Como podemos ver na figura acima, este diretório contém vários subdiretórios para guardar informações sobre os aplicativos do sistema, fontes, bibliotecas, executáveis etc.
/dados: Ele contém dados específicos do usuário, tais como dados armazenados por uma aplicação SMS. Podemos ver os arquivos executáveis de cada aplicação instalada no diretório “/data/app”. Isto requer privilégios de root, o que significa que um utilizador sem um dispositivo enraizado não pode ver o conteúdo deste directório. A figura seguinte mostra como o binário de cada aplicação instalada pode ser visto no dispositivo (a saída é truncada).
Os dados do utilizador residem no directório “/data/data//”. Devido a razões de segurança, os dados em cada diretório não podem ser acessados por outras aplicações.
/sdcard e /ext_card: Neste caso específico, temos o sdcard para armazenamento interno e o ext_card para armazenamento externo. Normalmente, o sdcard é dado para armazenamento externo. Estes são usados para armazenar dados do usuário como imagens, arquivos de música, vídeos, etc.
Sistemas de arquivos andróides
Sistema de arquivos Android é sempre bom antes de mergulhar na perícia do Android. Isto é porque o Android tem suporte para vários sistemas de arquivos. A partição principal do sistema de arquivos Android é frequentemente particionada como YAFFS2 (Mais um sistema de arquivos Flash). O YAFFS2 é especificamente projetado para sistemas embarcados, como smart phones. Ele fornece maior eficiência e desempenho.
Para ver a lista de sistemas de arquivos suportados, podemos usar o seguinte comando em “adb shell”.
“cat /proc/filesystems”
Como podemos ver na figura acima, temos uma lista de sistemas de arquivos suportados pelo dispositivo. A entrada “nodev” ao lado do sistema de arquivos indica que não há nenhum dispositivo físico associado a esse sistema de arquivos em particular. O Android suporta sistemas de arquivo ext2, ext3 e ext4 (usados por sistemas Linux) e o sistema de arquivo vfat usado por sistemas baseados em Windows. Como ele é direcionado para dispositivos móveis, o Android suporta sistemas de arquivos YAFFS e YAFFS2, já que ele requer suporte a chips NAND usados nesses dispositivos.
O sistema de arquivos do Android é dividido em diferentes partições. Para ver as diferentes partições que são montadas em um dispositivo Android, nós podemos obter uma shell no dispositivo e executar o seguinte comando: “mount”. Isto é mostrado na figura seguinte.
Como podemos ver na figura acima, existem várias partições montadas no dispositivo.
Se observarmos a figura acima, existem poucas partições importantes do sistema de arquivos como /system, /cache, /data usando ext4 como seu tipo de sistema de arquivos ao invés de YAFFS. Isto porque, começando pelo Gingerbread, o Android substituiu o sistema de arquivos YAFFS por ext4.
Métodos de aquisição de dados
Aquisição de dados é o processo de extração de dados a partir da evidência. Como discutimos anteriormente, a aquisição de dados em dispositivos móveis não é tão simples quanto a aquisição forense padrão do disco rígido. Estas técnicas de aquisição de dados estão amplamente divididas nos seguintes tipos.
Aquisição manual:
O examinador utiliza a interface do usuário do dispositivo móvel para investigar o conteúdo. Enquanto navega no dispositivo, o examinador tira fotos de cada tela. Este método não requer nenhuma ferramenta para realizar a aquisição de dados. Além das vantagens, a maior desvantagem deste método é que somente os dados visíveis para os usuários no telefone podem ser recuperados, e obviamente é demorado.
Aquisição Física:
Similiar ao processo de aquisição física em forense digital padrão, o processo de aquisição física em dispositivos móveis cria uma cópia bit a bit de todo um sistema de arquivos. Cria uma cópia de todo o sistema de arquivos que contém dados presentes em um dispositivo, incluindo os dados excluídos e espaço não alocado.
Aquisição Lógica:
Aquisição Lógica adquire informações do dispositivo usando a interface de programação da aplicação do fabricante do equipamento original para sincronizar o conteúdo do telefone com um computador pessoal.
Maior parte das ferramentas disponíveis para realizar a Aquisição Lógica de forma gratuita. A Aquisição Lógica é o processo de extração de dados acessível aos usuários do dispositivo e, portanto, não pode adquirir dados apagados ou os dados em espaço não alocado. A afirmação acima tem limitações em alguns casos.
Imaging an SD card with FTK Imager
FTK Imager pode ser baixado do link a seguir. http://www.accessdata.com/support/product-downloads
É importante obter uma cópia bit a bit do cartão SD do telefone, uma vez que pode ser usado como um valioso tesouro de dados durante investigações. Como melhor prática, precisamos usar um bloqueador de escrita para manter a integridade da evidência.
Cartões SD geralmente são do sistema de arquivos FAT32. Assim, podemos usar ferramentas de imagem tradicionais e adquirir a imagem do cartão SD. Nesta seção, vamos usar uma ferramenta popular conhecida como FTK Imager para obter a imagem do cartão SD.
Aqui estão os passos:
- Safely remover o cartão SD do dispositivo móvel e conectá-lo à estação de trabalho usando um leitor de cartões.
-
Launch FTK Imager tool. Isto aparece como mostrado na figura abaixo.
-
Agora, navegue para “File” e clique em “Create Disk Image” como mostrado abaixo.
O passo acima abre uma nova janela para selecionar o tipo de aquisição.
Desde que estamos tentando criar uma imagem do cartão SD completo, eu escolhi “Physical Drive”. Ela abre uma nova janela para selecionar o Drive Físico como mostrado abaixo.
Eu escolhi “PHYSICALDRIVE 2” de 1GB que no nosso caso é o cartão SD. Após selecionar a opção apropriada, clique em finalizar. Ela exibe outra janela onde podemos adicionar o destino bem como o tipo de imagem a ser criada.
>
Botão “Add”, ela abre uma nova janela para selecionar o tipo de imagem de destino.
No nosso caso, escolhemos “Raw” que dá uma imagem “dd”. Ao contrário de outros formatos de imagem como “E01”, a imagem “dd” não irá armazenar os seus metadados na imagem. Ao clicar em “Next”, ele mostra outra janela onde o FTK Imager solicita informações do item de evidência. Podemos preencher os detalhes apropriados e clicar em “next” (próximo) ou ignorá-lo se o estivermos fazendo como uma trilha.
Como podemos ver na figura acima, fornecemos o caminho de destino e o nome do arquivo de saída. Finalmente, clique em finish para iniciar o processo.
Clique em “start” para iniciar o processo.
-
Após terminar o processo, o FTK Imager exibe uma nova janela onde mostra os resultados da verificação de hash. Isto é mostrado na figura abaixo.
Agora, a imagem criada pode ser analisada mais detalhadamente usando as ferramentas tradicionais de análise forense.
Imaging Android file system:
Nesta seção, veremos como realizar a aquisição de dados das partições do sistema de arquivos Android.
Nota: para seguir o processo abaixo, o dispositivo deve estar enraizado.
Usaremos a popular ferramenta “dd” para fazer nosso trabalho. O “dd” está presente no Android por defeito no local “/system/bin”. Isto é mostrado na seguinte figura.
>
Agora, vamos ver as localizações das partições do nosso interesse usando o comando mount.
Seguir é a entrada associada com a partição “/data” da saída acima.
/dev/block/plataforma/msm_sdcc.3/by-num/p16 /data ext4 rw,nosuid,nodev,relatime,noauto_da_alloc,data=ordered 0 0
Então, vamos usar o seguinte comando para extrair esta partição específica usando “dd”.
dd if=/dev/bloco/plataforma/msm_sdcc.3/by-num/p16 of=/mnt/sdcard/output.img
>O comando acima é explicado abaixo.
if = arquivo de entrada
of = arquivo de saída a ser criado
output.img = nome da imagem de saída a ser criada.
Podemos até especificar o tamanho do bloco usando a opção “bs” em dd.
Após terminar o processo acima, podemos puxar este arquivo para fora usando ferramentas como o Droid Explorer. Podemos até fazê-lo usando o comando adb pull.
A imagem abaixo mostra o comando para puxar a imagem para a nossa estação de trabalho usando o comando adb pull.
Agora, podemos usar esta imagem para fazer nossa análise posterior no dispositivo.