Queira o Sr. Perito explicar como é feita a recuperação de arquivos apagados – Parte 02

No post anterior (para vê-lo, Clique Aqui!) nós tratamos sobre com recuperar arquivos apagados com base no método chamado de File Recovery. Este método utiliza informações armazenadas no Sistema de Arquivos para recuperar arquivos  “apagados”.

Hoje nós daremos continuidade a este tema abordando uma técnica conhecida como Data Carving. Esse método de recuperação não utiliza os metadados dos arquivos (entradas no sistema de arquivos), mas sim o seu conteúdo e estrutura.

Descrição dos softwares

FTK Imager: Software gratuito, distribuído pela AccessData, cuja principal função é gerar cópias forenses de dispositivos de armazenamento (E01, AD1, Cópia de registros e de memória RAM). Além disso, ele permite ao examinador navegar de forma estruturada dentro de uma imagem forense sem alterá-la, criar imagens personalizadas, gerar lista de hashes, etc.

Foremost: Software livre que tem como função recuperar arquivos com base no método Data Carving. Ele é capaz de recuperar arquivos cujas entradas de registro não se encontram mais no sistema de arquivo. Isso faz dele bastante útil para recuperar arquivos mais antigos, embora ele não seja capaz de localizar todas as propriedades originais do arquivo recuperado.

Recuperação com base na assinatura e estrutura de arquivos apagados

Data Carving é uma técnica utilizada para recuperar arquivos com base na sua assinatura (cabeçalho e rodapé) ou estrutura. Ela é bastante utilizada, principalmente quando não existem mais informações sobre os arquivos apagados no sistema de arquivos (FAT, NTFS, etc.).

O programa Foremost, utilizado nesse tutorial, é baseado na verificação de assinatura de arquivos. Para entendermos como esse método funciona, precisamos entender também como os arquivos são armazenados no disco rígido.

Os principais sistemas de arquivos armazenam dados sob a unidade mínima chamada Cluster que é um conjunto de setores (512 bytes na configuração padrão). Em sistemas de arquivos FAT 32, por exemplo, cada Cluster tem 4kb em sua configuração padrão. Arquivos maiores que 4kb, ou seja, que não cabem em um único Cluster, ocuparão quantos Clusters forem necessários. No exemplo a seguir, o arquivo Tutorial.txt tem 652kb, ou seja, ele ocupará 163 Clusters de 4kb cada (652kb / 4kb = 163 Clusters).

Ainda no exemplo acima, todos os Clusters ocupados pelo arquivo Tutorial.txt são sequenciais, ou seja, o arquivo não está fragmentado no disco. Obviamente alguns arquivos acabam sendo fragmentados no momento de sua gravação, contudo, os sistemas de arquivos modernos foram desenvolvidos de forma a evitarem a fragmentação de arquivos e é com essa premissa que os principais métodos de Data Carving trabalham.

Sabendo que a maioria dos arquivos têm cabeçalhos específicos que os identificam, os algoritmos de Data Carving leem o disco em busca desses cabeçalhos. Uma vez que um cabeçalho é encontrado, considera-se, então, o início de um possível arquivo.

A tarefa seguinte é saber onde esse possível arquivo acaba. Para isso dois métodos são comumente utilizados, o primeiro é para arquivos que não possuem rodapé. Nesse caso o algoritmo analisa a estrutura inicial do possível arquivo e continua lendo o disco a partir do cabeçalho até o momento em que essa estrutura mudar. No local da mudança de estrutura, o algoritmo considera a possível localização do final do arquivo. O segundo método é baseado na localização do rodapé do arquivo, mas esse funciona apenas para arquivos que possuem assinaturas únicas em seus rodapés.

Note que ambos os métodos são bem sucedidos em localizar arquivos gravados sequencialmente no disco. Para arquivos fragmentados existem outros métodos, mais custosos e complexos.

Determinação do final do arquivo por análise estrutural

Existem várias formas de análise estrutural. Em alguns casos essa análise é baseada simplesmente na representação simbólica utilizada pelo arquivo (ANSI, UNICODE, etc.), mas isso é muito pouco eficiente. Outra forma é a análise de entropia. Entropia é o nível de desordem de um sistema. Em computação, a comparação de níveis de entropia pode ser utilizada para determinar quais partes pertencem a um mesmo arquivo. Nesse caso, o algoritmo pode calcular o nível de entropia do início do arquivo onde o cabeçalho localizado e, em seguida, verificar o nível de entropia dos clusters subsequentes. No momento em que se alcançar um Cluster com nível de entropia muito diferente, supõe-se ter encontrado, também, o final do arquivo. Note que mesmo que um arquivo recuperado não possa ser aberto, seja por falto a uma ou de várias pequenas partes, ele deve ser considerado como recuperado, pois existem outras ferramentas e metodologias para reparar arquivos corrompidos.

Veja o exemplo a seguir. Se você abrir uma fotografia em um editor de textos hexadecimal, verá que esse tipo de arquivo é composto por milhares de caracteres diferentes. Esses caracteres são responsáveis por definir o tamanho e resolução da imagem, suas cores, formas e tudo mais que é visto no monitor do computador. Essa enorme possibilidade de caracteres garante que os Clusters da fotografia terão alto grau de entropia.

Mas, se agora você abrir um arquivo texto com extensão “txt” em um editor hexadecimal, você verá que ele é composto por um conjunto bastante limitado de caracteres (basicamente letras e números), garantindo que seu grau de entropia seja bastante baixo. Veja na figura abaixo um exemplo de visualização em hexadecimal de um arquivo de texto.

Se esses dois arquivos estiverem gravadas sequencialmente no disco, como exemplificado graficamente na figura abaixo, é possível, embora seja computacionalmente complexo, presumir qual o último Cluster ocupado por cada um deles e, portanto, recuperar ambos os arquivos.

Determinação do final do arquivo com base no seu rodapé

Para nossa sorte, muitos arquivos possuem cabeçalhos e rodapés. Isso facilita muito os processos de recuperação. Nesse caso, basta localizar o cabeçalho específico de um tipo de documento e, a partir de seu endereço, localizar o próximo rodapé válido.

No site http://www.garykessler.net/library/file_sigs.html você encontrará dezenas de cabeçalhos e rodapés dos principais tipos de arquivos existentes. Com base nas informações obtidas nesse site é possíve facilmente recuperar um arquivo, como mostra o exemplo nas figuras abaixo.

A primeira figura mostra a posição exata do início do cabeçalho de um arquivo com extensão “PNG”.  A partir dela, buscamos o conjunto de caracteres hexadecimais que representa o rodapé de um arquivo “PNG”, como mostra a figura a seguir.

Com base nessas informações é possível exportar o intervalo de dados entre o cabeçalho e o rodapé de um arquivo recuperado, restaurando-o como um novo arquivo recém recuperado. Isso pode ser feito em qualquer editor hexadecimal. Mas para que fazer isso manualmente se podemos utilizar o FTK Imager e o Foremost? Então, agora que já conhecemos a teoria, vamos ao procedimento.

Recuperação com FTK e Foremost

O programa Foremost foi desenvolvido originalmente para sistemas operacionais Linux. Contudo, esse tutorial será executado no Windows. Para isso, utilizaremos um emulador chamado Cygwin. Ele deve ser baixado do endereço http://duncanwinfrey.com/wp-content/uploads/2012/05/Foremost-1.5.3-Cygwin-Build.zip e instalado com suas configurações padrões. Se houver alguma dificuldade na instalação, consulte o material técnico produzido pelos desenvolvedores.

O Foremost deverá ser baixado no endereço http://cygwin.com/. Após baixar o programa, coloque o arquivos “foremost.exe” e “foremost.conf” dentro da pasta “C:\Cygwin\bin\”.

Por último, baixe o programa FTK Imager a partir do endereço: http://www.accessdata.com/support/product-downloads.

Para realizar o procedimento deveremos gerar uma imagem forense em formato RAW do dispositivo onde estavam os arquivos que pretendemos recuperar. Esse procedimento será realizado com o FTK Imager.

Execute o FTK Imager. Na janela que surgirá, clique sobre a opção “Create Disk Image”, como mostra a figura a seguir.

Na janela seguinte, escolha a opção “Physical Drive” e clique em Next.

Em “Source Drive Selection” escolha o disco que deseja recuperar arquivos apagados.

Depois de selecionar o disco de origem, deveremos escolher o formato de imagem forense. Para isso, clique no botão “Add…”.

Na janela seguinte, escolha a primeira opção (“Raw”). Não se esqueça de que, para recuperar arquivos a partir de uma imagem forense, ela deve estar em formato RAW.

Em seguida, você deverá digitar as informações sobre a imagem forense. No nosso exemplo, isso não é necessário, portanto, apenas clique em Next. A próxima janela, mostrada abaixo, é muito importante. Nela você deverá escolher a pasta que acondicionará a nova imagem forense, o nome dessa imagem e o tamanho do fragmento que deverá ser configurado como “0” (zero), como mostrado na imagem a seguir. Para concluir clique em Finish.

Após finalizar todas as configurações para geração da imagem forense, marque as opção “Verify images after they are created” e “Precalculate Progress Statistics” e clique em Start.

Depois que a imagem forense for gerada será exibido um relatório indicando se o procedimento foi realizado com sucesso.

Agora iniciaremos o procedimento de recuperação de arquivos. Para isso, clique sobre o “Cygwin.bat” que poderá ser localizado em “C:\Cygwin\” depois da instalação correta do emulador. O programa será iniciado em um terminal onde deveremos digitar o seguinte comando: “foremost.exe –c foremost.conf –i /cygdrive/c/<Source/Forensic_Image.dd> -o /Cygwin/c/<Destination Directory>”.

O parâmetro –i significa “Input”, portanto, depois dele deverá ser indicado o endereço da imagem forense RAW recém criada. O parâmetro –o significa “Output” e em seguida a ele deverá ser indicado o endereço onde serão acondicionados os arquivos recuperados. Note que para acessar o disco local pelo emulador é necessário utilizar “/cygdrive/” e, em seguida, a letra da unidade.

Outra observação importante é que a pasta de saída indicada após o parâmetro –o deve ser recém criada pelo usuário. Nenhum arquivo ou subpasta pode ser criado nela antes do procedimento, senão o Foremost rejeitará a pasta.

Se o comando estiver completo, tecle Enter. O resultado é mostrado na figura a seguir.

Quando o Foremost concluir a verificação da imagem e localizar tantos arquivos quantos forem possíveis recuperar, será apresentado um sumário indicando a quantidade de arquivos recuperados por tipo, como mostra a figura a seguir.

O sumário também poderá ser encontrado na pasta utilizada como saída do Foremost. Lá, todos os arquivos recuperados serão separados em pastas onde cada pasta condiciona arquivos de mesma extensão.

Além disso, o Foremost nomeará cada arquivo com uma sequencia numérica hexadecimal. Esse nome é igual ao offset (índice) do setor onde o arquivo recuperado foi localizado. Isso acontece porque o Foremost não é capaz de identificar o nome e as propriedades originais do arquivo recuperado, uma vez que essas informações ficam armazenadas no sistema de arquivos. Lembre-se que o Foremost não recupera com base na verificação dos registros de arquivos apagados no sistema de arquivos e sim com base na análise de assinatura e estrutura tratada no início desse tutorial.

Comparação dos métodos

A tabela abaixo mostra uma breve comparação do método tratado na primeira parte deste artigo (File Recovery) e o método apresentado nesta segunda parte (Data Carving).

[1] Outros softwares de recuperação de arquivo, similares ao Recuva, são capazes de recuperar arquivos a partir de backups da tabela de alocação de arquivos. Contudo, a maior parte desses softwares não são gratuítos.

[2] O Foremost não recupera o nome e as propriedades dos arquivos, pois ele não analisa as entradas do sistema de arquivos. Contudo, alguns documentos possuem informações em sua estrutura interna, com os documentos Microsoft Office.

[3] A capacidade de recuperar arquivos fragmentados vai depender do sistema de arquivos do disco submetido ao processo de recuperação.

[4] A capacidade de recuperar arquivos fragmentados vai depender do quão próximo os fragmentos estão e da estrutura do documento localizado.

7 comentários sobre “Queira o Sr. Perito explicar como é feita a recuperação de arquivos apagados – Parte 02

  1. Parabéns, Everson, muito útil seu site.
    Costumo usar o foremost montando a imagem em ambiente LInux, não sabia da possibilidade de usá-lo em ambiente Windows.
    Para carving também uso o OSForensics. Ambos me ajudam muito nas investigações.

    • É uma honra saber que estamos ajudando um grande especialista como o sr. Sobre o OSForensics, além de recuperar arquivos ele tem ótimas funções de emissão de relatórios com base nos registros de sistema. Vale a pena explorar. Em breve pretendo trazer alguma coisa sobre isso.

      Abraços

  2. Olá, Everson. Primeiramente, gostaria de dizer que gostei muito do seu texto. Achei a linguagem bastante clara e de fácil acesso, mesmo com as dificuldades inerentes à própria natureza do conteúdo. Eu tive um problema com um arquivo de texto esta semana e pretendo experimentar o que você expôs aqui para tentar recuperá-lo. Ainda assim, eu gostaria que você me sinalizasse, se possível, uma alternativa um pouco menos rebuscada para o meu caso. Eu estava digitando um texto e o salvei normalmente antes de desligar o computador. Isso ocorreu pouco depois das 17h da segunda-feira. Quando eu liguei o computador novamente, pouco depois das 18h, eu não conseguia mais abrir o arquivo. Aparecia uma mensagem com o título “Opções de Filtro ASCII”, e no lugar do meu texto, havia milhares de #. Eu trabalho com o OpenOffice, e o meu sistema operacional é o Windows 8. Eu já tentei inúmeras coisas: já baixei programas como o recuva e o shadowexplorer; já alterei a extensão do meu arquivo; já restaurei a pasta em que estava o arquivo para versões anteriores, e por aí vai. Eu acredito que possa haver uma solução menos complicada que o foremost no meu caso por conta de todos os detalhes que eu posso fornecer a respeito do incidente. Eu ficarei grato se você tiver alguma sugestão para mim.

    Abraços.

    • Caro Deyvison, bom dia e obrigado por acompanhar nosso blog.

      Acredito que haja formas mais simples, de fato, para você restaurar seu arquivo. Pela sua descrição, tudo indica que ele está apenas corrompido e, portanto, o programa de leitura está encontrando dificuldade de indentificar a codificação correta.

      Para eu te ajudar melhor, consegue me responder as seguintes perguntas:

      1) qual programa uso para criar e salvar o arquivo?
      2) qual extensão do arquivo?
      3) ele ainda está no computador?

      Com isso, terei um enorme pazer em ajudá-lo.

      Abs

      Everson Probst

      • Olá, Everson. Desde já, agradeço a boa vontade. As respostas para as suas perguntas são as seguintes: 1) o programa que usei para criar e salvar o arquivo foi o OpenOffice; 2) a extensão do arquivo é odt.; 3) sim, ele ainda está no computador, e eu não fiz alterações no texto depois do ocorrido. O tamanho do arquivo também é o mesmo. Por favor, perdoe-me se eu vier a confundir algum termo técnico – na verdade, eu me aventuro na informática, mas sou um tanto leigo na área.

        Abs

        Deyvison.

  3. Tinha umas fotos no meu celular. Só que ao passar para o computador, deu arquivo corrompido. Para verificar se haveria chances de salvá-las, abri um editor hexadecimal e estava tudo zerado. Isso significa que não há chance nenhuma de salvar as fotos?

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s