Forense caso 00a: mudanças entre as edições
Sem resumo de edição |
Sem resumo de edição |
||
(23 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
Linha 1: | Linha 1: | ||
{{cabeçalho forense|00a - Análise avançada conduzida|Brasília, DF, 29 de março de 2011| | {{cabeçalho forense|00a - Análise avançada conduzida|Brasília, DF, 29 de março de 2011|24 de abril de 2015}} | ||
[[image:nao-a-pedofilia.jpg|left]]Este caso consiste em um exercício conduzido com o objetivo de utilizar algumas técnicas avançadas de manipulação de filesystems. O cenário está em torno de um pendrive apreendido. Tal pendrive pertencia a um pedófilo, que mantinha fotos eróticas e textos especializados armazenados. O objetivo de manter textos especializados era aprender como atrair crianças na Internet e entender como a polícia poderia rastreá-lo. Este objetivo foi levantado em interrogatório após a sua prisão. | [[image:nao-a-pedofilia.jpg|left]]Este caso consiste em um exercício conduzido com o objetivo de utilizar algumas técnicas avançadas de manipulação de filesystems. O cenário está em torno de um pendrive apreendido. Tal pendrive pertencia a um pedófilo, que mantinha fotos eróticas e textos especializados armazenados. O objetivo de manter textos especializados era aprender como atrair crianças na Internet e entender como a polícia poderia rastreá-lo. Este objetivo foi levantado em interrogatório após a sua prisão. | ||
Linha 15: | Linha 15: | ||
# Inicialmente, confira o hash do arquivo baixado. | # Inicialmente, confira o hash do arquivo baixado. | ||
# Qual é o esquema de particionamento do pendrive? (fdisk - | # Quais são os três primeiros bytes da imagem? | ||
# Sem montar as partições existentes, descubra qual é o inode referente à figura ''pic_1.jpg'', existente na primeira partição. (mmls + fls -ro + grep / fdisk - | # Qual é o esquema de particionamento do pendrive? (fdisk -l / mmls / file / disktype) | ||
# Qual é o tipo de filesystem de cada partição do pendrive? (fsstat -o / disktype) | |||
# Sem montar as partições existentes, descubra qual é o inode referente à figura ''pic_1.jpg'', existente na primeira partição. (mmls + fls -ro + grep / fdisk -l + fls -ro + grep) | |||
# Analisando os dados no inode levantado no item anterior, descubra o tamanho, o mactime e o primeiro setor do arquivo na imagem. (istat -o) | # Analisando os dados no inode levantado no item anterior, descubra o tamanho, o mactime e o primeiro setor do arquivo na imagem. (istat -o) | ||
# Monte cada partição do pendrive, em modo read-only, e verifique os conteúdos. (mount com ro e offset + find / tree -C) | |||
# Monte cada partição do pendrive, em modo read-only, e verifique os conteúdos. (mount com | # Calcule novamente os hashes MD5 e SHA256 de cada arquivo, atuando sobre o ponto de montagem. (find / hashdeep / hashrat) | ||
# Faça uma linha do tempo do conteúdo de cada partição existente. (fls -ro -m e mactime -z BRT) | # Faça uma linha do tempo do conteúdo de cada partição existente, usando o comando ''fls''. (fls -ro -m e mactime -z BRT) | ||
# Faça uma linha do tempo do conteúdo de cada partição existente, usando o comando ''mac-robber''. (mac-robber e mactime -z BRT) | |||
# Cite a diferença de utilização entre ''fls -m'' e ''mac-robber''. | |||
# Procure, na superfície do disco, por uma mensagem, criada pelo pedófilo, contendo um número de telefone. (1ª técnica: strings + egrep -o + sort -u / 2ª técnica: mcview / ambos utilizando expressões regulares) | # Procure, na superfície do disco, por uma mensagem, criada pelo pedófilo, contendo um número de telefone. (1ª técnica: strings + egrep -o + sort -u / 2ª técnica: mcview / ambos utilizando expressões regulares) | ||
# Recupere o trecho exato que contém a mensagem citada no item anterior. ({strings -td / hexedit} + grep + {dd ou dcfldd, ambos com bs=1 + count + skip}) | # Recupere o trecho exato que contém a mensagem citada no item anterior. ({strings -td / hexedit} + grep + {dd ou dcfldd, ambos com bs=1 + count + skip}) | ||
Linha 26: | Linha 30: | ||
# Escolha uma das figuras recuperadas com êxito no item anterior e procure-a na imagem de disco, utilizando uma assinatura. A seguir, recupere-a com o comando dd ou dcfldd. (hexedit + {dd ou dcfldd} + calculadora) | # Escolha uma das figuras recuperadas com êxito no item anterior e procure-a na imagem de disco, utilizando uma assinatura. A seguir, recupere-a com o comando dd ou dcfldd. (hexedit + {dd ou dcfldd} + calculadora) | ||
# Corrija, se for o caso, o tamanho da figura recuperada no item anterior, utilizando o GIMP. | # Corrija, se for o caso, o tamanho da figura recuperada no item anterior, utilizando o GIMP. | ||
# | # Com base no relatório do comando foremost (''audit.txt''), observando o offset, recupere qualquer figura utilizando o comando ''dd'' ou ''dcfldd''. | ||
# Tente obter dados EXIF das figuras existentes no primeiro filesystem. (metacam) | # Tente obter dados EXIF das figuras existentes no primeiro filesystem. (metacam / exiftool) | ||
# Verifique dados extras interessantes que possam existir na figura ''crianças.jpg'' (no primeiro filesystem). (hexedit / strings) | # Verifique dados extras interessantes que possam existir na figura ''crianças.jpg'' (no primeiro filesystem). (hexedit / strings / exiftool) | ||
# Verifique os dados referentes às propriedades dos arquivos .doc existentes na segunda partição. (file) | # Verifique os dados referentes às propriedades dos arquivos .doc existentes na segunda partição. (file / libreoffice / exiftool) | ||
# Relacione todas as URLs citadas na superfície do disco. (strings e egrep -o com expressões regulares e outros - dica: egrep -o | # Relacione todas as URLs citadas na superfície do disco. (strings e egrep -o com expressões regulares e outros - dica: egrep -o 'https?://[^ ]+') | ||
<br><br> | |||
<big>'''Questões complementares:'''</big> | <big>'''Questões complementares:'''</big> | ||
# Crie um arquivo que contenha todos os blocos não alocados | # Crie um arquivo que contenha todos os blocos não alocados existentes na primeira partição. (blkls -o) | ||
# Crie um arquivo que contenha todos os slack spaces existentes na primeira partição. (blkls -so) | |||
# Procure por figuras existentes na superfície do disco e que não pertençam aos filesystems existentes. (blkls -o + {foremost ou magicrescue}) | # Procure por figuras existentes na superfície do disco e que não pertençam aos filesystems existentes. (blkls -o + {foremost ou magicrescue}) | ||
# Explique quando devemos utilizar fls+icat ou foremost/magicrescue. | # Explique quando devemos utilizar fls+icat ou foremost/magicrescue. | ||
<br><br> | |||
<big>'''Estudo específico: comandos foremost e magicrescue'''</big> | |||
Os comandos foremost e magicrescue são conhecidos por realizarem a atividade denominada file carver. Esses comandos devem ser utilizados, principalmente, nas seguintes condições: | |||
* Quando não há um filesystem mas há arquivos na superfície do disco. | |||
* Depois de uma formatação acidental. | |||
* Quando há um filesystem mas desejamos arquivos gravados em formatações anteriores. | |||
* Quando o filesystem não é compatível com as ferramentas do TSK. | |||
<br> | |||
O comando foremost possui várias opções. Dentre elas, destacam-se: | |||
*'''-T''' cria um diretório, com a data e a hora do início da operação, para abrigar os arquivos recuperados. | |||
*'''-a''' recupera arquivos, inclusive danificados, podendo gerar falsos positivos. | |||
*'''-q''' não recupera quando considera que determinados arquivos estão englobados por outros. Um exemplo: uma figura JPG dentro de um arquivo .ppt. | |||
*'''-t''' permite selecionar um tipo de arquivo. Os tipos de arquivos estão descritos no manual on-line do comando. | |||
<br> | |||
O comando magicrescue denomina os tipos de arquivos como sendo ''recipes''. Os recipes possíveis estão diponíveis em /usr/share/magicrescue/recipes. | |||
<br><br> | |||
'''Assim sendo, resolva as questões:''' | |||
# Recupere as figuras existentes na superfície da imagem usando o comando: foremost -Tqt jpg. | |||
# Faça o mesmo usando: foremost -Tt jpg. | |||
# Faça, novamente, usando: foremost -Tat jpg. | |||
# Verifique a quantidade de arquivos em cada diretório ''output/jpg'', com o comando: ls | cat -n. | |||
# Crie um diretório ''teste'' e recupere as figuras existentes na superfície da imagem usando o comando: magicrescue -r jpeg-jfif -d teste caso_00a.dd. | |||
# Verifique a quantidade de arquivos no diretório ''teste'', com o comando: ls teste | cat -n. | |||
# Com o programa gwenview ou, alternativamente, mirage, veja o conteúdo dos quatro diretórios. | |||
# Crie um diretório ''fotos'' e mova todos os quatro diretórios criados anteriormente para dentro dele. A seguir, estando fora do diretório ''fotos'', remova as figuras duplicadas com o comando: fdupes -rdN fotos. | |||
# Veja novamente o conteúdo dos diretórios. | |||
# Explique como o fdupes atua (veja o manual on-line). |
Edição atual tal como às 02h58min de 14 de novembro de 2015
by (C) João Eriberto Mota Filho <eriberto (a) eriberto pro br>
Caso para estudo, ligado diretamente ao artigo perícia forense computacional, existente neste wiki.
Última atualização: veja o rodapé desta página.
Este caso consiste em um exercício conduzido com o objetivo de utilizar algumas técnicas avançadas de manipulação de filesystems. O cenário está em torno de um pendrive apreendido. Tal pendrive pertencia a um pedófilo, que mantinha fotos eróticas e textos especializados armazenados. O objetivo de manter textos especializados era aprender como atrair crianças na Internet e entender como a polícia poderia rastreá-lo. Este objetivo foi levantado em interrogatório após a sua prisão.
Serão feitas várias perguntas. Por tratar-se de um exercício avançado, serão citadas ferramentas e técnicas que deverão ser empregadas para obter resultados.
ALERTA: ESTE EXERCÍCIO CONTÉM FIGURAS E PALAVRAS ERÓTICAS.
Exercício: responda às perguntas a seguir, analisando a imagem de pendrive (22 MB comprimidos, 980 MB descomprimidos) disponibilizada. Antes de tudo, leia o conteúdo da página http://bit.ly/tsk-commands.
O hash MD5 da imagem comprimida é 59888d317634cd4b134e66333bf8d37a.
Perguntas básicas:
- Inicialmente, confira o hash do arquivo baixado.
- Quais são os três primeiros bytes da imagem?
- Qual é o esquema de particionamento do pendrive? (fdisk -l / mmls / file / disktype)
- Qual é o tipo de filesystem de cada partição do pendrive? (fsstat -o / disktype)
- Sem montar as partições existentes, descubra qual é o inode referente à figura pic_1.jpg, existente na primeira partição. (mmls + fls -ro + grep / fdisk -l + fls -ro + grep)
- Analisando os dados no inode levantado no item anterior, descubra o tamanho, o mactime e o primeiro setor do arquivo na imagem. (istat -o)
- Monte cada partição do pendrive, em modo read-only, e verifique os conteúdos. (mount com ro e offset + find / tree -C)
- Calcule novamente os hashes MD5 e SHA256 de cada arquivo, atuando sobre o ponto de montagem. (find / hashdeep / hashrat)
- Faça uma linha do tempo do conteúdo de cada partição existente, usando o comando fls. (fls -ro -m e mactime -z BRT)
- Faça uma linha do tempo do conteúdo de cada partição existente, usando o comando mac-robber. (mac-robber e mactime -z BRT)
- Cite a diferença de utilização entre fls -m e mac-robber.
- Procure, na superfície do disco, por uma mensagem, criada pelo pedófilo, contendo um número de telefone. (1ª técnica: strings + egrep -o + sort -u / 2ª técnica: mcview / ambos utilizando expressões regulares)
- Recupere o trecho exato que contém a mensagem citada no item anterior. ({strings -td / hexedit} + grep + {dd ou dcfldd, ambos com bs=1 + count + skip})
- Recupere as figuras apagadas no filesystem da primeira partição. (fls -rdFo + icat -o, podendo usar um loop for)
- Escolha uma das figuras recuperadas com êxito no item anterior e procure-a na imagem de disco, utilizando uma assinatura. A seguir, recupere-a com o comando dd ou dcfldd. (hexedit + {dd ou dcfldd} + calculadora)
- Corrija, se for o caso, o tamanho da figura recuperada no item anterior, utilizando o GIMP.
- Com base no relatório do comando foremost (audit.txt), observando o offset, recupere qualquer figura utilizando o comando dd ou dcfldd.
- Tente obter dados EXIF das figuras existentes no primeiro filesystem. (metacam / exiftool)
- Verifique dados extras interessantes que possam existir na figura crianças.jpg (no primeiro filesystem). (hexedit / strings / exiftool)
- Verifique os dados referentes às propriedades dos arquivos .doc existentes na segunda partição. (file / libreoffice / exiftool)
- Relacione todas as URLs citadas na superfície do disco. (strings e egrep -o com expressões regulares e outros - dica: egrep -o 'https?://[^ ]+')
Questões complementares:
- Crie um arquivo que contenha todos os blocos não alocados existentes na primeira partição. (blkls -o)
- Crie um arquivo que contenha todos os slack spaces existentes na primeira partição. (blkls -so)
- Procure por figuras existentes na superfície do disco e que não pertençam aos filesystems existentes. (blkls -o + {foremost ou magicrescue})
- Explique quando devemos utilizar fls+icat ou foremost/magicrescue.
Estudo específico: comandos foremost e magicrescue
Os comandos foremost e magicrescue são conhecidos por realizarem a atividade denominada file carver. Esses comandos devem ser utilizados, principalmente, nas seguintes condições:
- Quando não há um filesystem mas há arquivos na superfície do disco.
- Depois de uma formatação acidental.
- Quando há um filesystem mas desejamos arquivos gravados em formatações anteriores.
- Quando o filesystem não é compatível com as ferramentas do TSK.
O comando foremost possui várias opções. Dentre elas, destacam-se:
- -T cria um diretório, com a data e a hora do início da operação, para abrigar os arquivos recuperados.
- -a recupera arquivos, inclusive danificados, podendo gerar falsos positivos.
- -q não recupera quando considera que determinados arquivos estão englobados por outros. Um exemplo: uma figura JPG dentro de um arquivo .ppt.
- -t permite selecionar um tipo de arquivo. Os tipos de arquivos estão descritos no manual on-line do comando.
O comando magicrescue denomina os tipos de arquivos como sendo recipes. Os recipes possíveis estão diponíveis em /usr/share/magicrescue/recipes.
Assim sendo, resolva as questões:
- Recupere as figuras existentes na superfície da imagem usando o comando: foremost -Tqt jpg.
- Faça o mesmo usando: foremost -Tt jpg.
- Faça, novamente, usando: foremost -Tat jpg.
- Verifique a quantidade de arquivos em cada diretório output/jpg, com o comando: ls | cat -n.
- Crie um diretório teste e recupere as figuras existentes na superfície da imagem usando o comando: magicrescue -r jpeg-jfif -d teste caso_00a.dd.
- Verifique a quantidade de arquivos no diretório teste, com o comando: ls teste | cat -n.
- Com o programa gwenview ou, alternativamente, mirage, veja o conteúdo dos quatro diretórios.
- Crie um diretório fotos e mova todos os quatro diretórios criados anteriormente para dentro dele. A seguir, estando fora do diretório fotos, remova as figuras duplicadas com o comando: fdupes -rdN fotos.
- Veja novamente o conteúdo dos diretórios.
- Explique como o fdupes atua (veja o manual on-line).