Não sou designer nem acredito que tenha um gosto tão apurado em relação a layouts, mas manter a mesma cara o tempo todo cansa. Por isso, entramos o ano com um novo padrão e na esperança de termos, além de um ano maravilhoso, excelentes notícias e pesquisas para postar.
Para não ficar só no bla bla bla, aproveito para anunciar que Mark Mackinnon lançou nova versão do Parse Prefetch. Baixe aqui.
Keven Murphy também atualizou seu script de carving. Entre outras coisas, ele monta páginas em HTML com gifs animadas dos vídeos, DOCs e PDFs que encontrar (excelente para quem busca conteúdo indevido). Procure o script aqui.
No mais, FELIZ 2010 ! Esse ano promete. Quer comentar quais seriam os seus desejos para o novo ano ? Compartilhe conosco. Eu gostaria muito que a nova lei de crimes digitais saísse. Além dos benefícios óbvios para todos os brasileiros, isso vai expandir enormemente o nosso mercado.
Até o próximo post !
Blog bem humorado, na Lingua Portuguesa, destinado a assuntos de Segurança de Informações com ênfase em Resposta a Incidentes e Forense/Investigação Computacional.
Mostrando postagens com marcador carving. Mostrar todas as postagens
Mostrando postagens com marcador carving. Mostrar todas as postagens
sábado, 2 de janeiro de 2010
terça-feira, 12 de fevereiro de 2008
Carving
Carving é o nome de um procedimento/técnica muito importante para a Forense Computacional. Através do carving, podemos conseguir acessar um arquivo de forma independente da sua tabela de alocação, ou endereçamento; O carving age de forma independente do sistema de arquivos.
Vamos a um exemplo prático:
Uma feira de negócios é montada em um grande pavilhão. Para demarcar o local destinado ao estande de cada empresa, os organizadores dividem o espaço útil (as vias e corredores não contam) pelo tamanho mínimo de um estande, e com isso determinam que quantos estandes terá a feira. O espaço útil é então separado e dividido nos blocos de estandes.
Para facilitar a localização de cada estande, a organização associa letras aos corredores, e um número crescente a cada estande. Assim, o quarto estande do terceiro corredor seria o estande C4, e foi comprado pela empresa XXX. Na porta do pavilhão há uma lista com o nome de cada empresa em ordem alfabética e sua respectiva localização. Observamos, inclusive, que há empresas que compraram 3 estandes, para poder exibir seu material com mais liberdade.
Nessa pequena analogia, temos o seguinte:
- O pavilhão é a mídia, o HD.
- Os organizadores fazem o papel do sistema operacional.
- A divisão do pavilhão em corredores e unidades de locação (os estandes) é a formatação do disco.
- Uma empresa expositora seria um arquivo.
- A associação das letras e números seriam um endereço alocável.
- Uma empresa comprando um estande seria um arquivo alocado.
- A lista colocada na porta do pavilhão é a tabela de alocação do sistema de arquivos.
- Um estande não alugado é um setor livre para ser alocado.
- Uma empresa que aluga 3 estandes é um arquivo que ocupa 3 setores.
Pois bem, se você chega ao portão do pavilhão a procura da empresa XXX, você a procura na lista, verifica o endereço dela (C4) e se dirige até o local. Esse é o mesmo processo, de maneira resumida, é o que acontece quando se quer acessar determinado arquivo.
Agora, imagine o que aconteceria se a tal lista da entrada se perdesse ? O processo normal de busca da empresa não funcionaria mais, já que a lista sumiu.
Em termos de sistema de arquivos, é possível que a tabela seja corrompida, ou ainda que apenas uma parte do HD seja recuperada, e essa parte não tem a tabela de alocação. Nesses casos, entra em ação a técnica de carving, para achar arquivos no que parece um monte de bytes.
Como isso é feito ?
A técnica mais usada é baseada nos chamados magic numbers, são sequências de bytes que estão sempre presentes no arquivo, em geral no seu cabeçalho. Esses bytes funcionam como uma assinatura: Se forem achados, alguns itens são verificados e a estrutura é confirmada. Em geral, os programas de carving extraem os arquivos identificados das imagens para um diretório, disponibilizando-os para uso. Os arquivos JPEG sempre começam com ffd8 ffe0, por exemplo. Uma vez identificado que é o início de um JPEG, o cabeçalho é dissecado e o fim do arquivo determinado.
O grande problema é que em um sistema de arquivos nem sempre um arquivo ocupa setores contíguos. Conhecido como fragmentação de arquivos, isso acontece, por exemplo, quando um arquivo cujo tamanho ocupa 5 setores está para ser escrito no disco e encontra 3 setores contíguos livres, um setor já ocupado por um outro arquivo, e em seguida mais dois setores livres. O sistema operacional vai alocar o arquivo nesses 5 setores, marcando na tabela que esse arquivo ficou fragmentado. Tal situação ficaria mais ou menos assim:
Arquivo 1: AAAAA
Arquivo 2: B
No disco: AAABAA
Seguindo a técnica, os bytes do arquivo 2 vão parar no meio do arquivo 1 recuperado, estragando tudo !
Várias técnicas vem sendo pesquisadas para reduzir ou eliminar esse problema, e inclusive há um concurso anual de algoritmos e desafios envolvendo carving.
Algo que com certeza vai ajudar bastante é a técnica de montar hashsets dos arquivos conhecidos por setor. Essa técnica é baseada na filtragem de arquivos conhecidos por reconhecimento de seus hashes, como a biblioteca NSRL, só que, nesse caso, cada arquivo conhecido teria associado a ele o hashset de cada setor que esse arquivo ocupa em um disco. Durante uma operação de carving baseada nessa técnica, os setores seriam separados e reconhecidos contra a base de hashsets pelos seus hashes. No exemplo acima, calcularíamos o hash de cada um dos 6 setores, e depois o algoritmo verificaria o seguinte:
- O setor 1 é o primeiro setor do arquivo conhecido A
- O setor 2 é o segundo setor do arquivo conhecido A
- O setor 3 é o terceiro setor do arquivo conhecido A
- O setor 4 é o primeiro setor (ou único, no caso) do arquivo conhecido B
- O setor 5 é o quarto setor do arquivo conhecido A
- O setor 6 é o quinto setor do arquivo conhecido A
Facilita bastante. Logicamente, essa técnica tem alguns problemas; Os arquivos que não ocuparem um setor inteiro, bem como o último setor de um arquivo, não terão como serem reconhecidos, pois o calculo do hash seria influenciado pelo slack space (aquele espaço do setor que o arquivo não ocupou). Outro problema é que os hashsets serão criados para arquivos de programas, e não teremos obviamente hashsets para arquivos de fotos do usuário do HD, ou os seus documentos criados no editor de textos, por exemplo. Isso ajudará a eliminar setores, mas ainda pode não ser uma técnica definitiva.
Alguém tem alguma novidade com relação a essa técnica, ou conhece alguma iniciativa de montar hashsets para isso ? Por favor, compartilhe conosco nos comentários.
Até o próximo post !
Vamos a um exemplo prático:
Uma feira de negócios é montada em um grande pavilhão. Para demarcar o local destinado ao estande de cada empresa, os organizadores dividem o espaço útil (as vias e corredores não contam) pelo tamanho mínimo de um estande, e com isso determinam que quantos estandes terá a feira. O espaço útil é então separado e dividido nos blocos de estandes.
Para facilitar a localização de cada estande, a organização associa letras aos corredores, e um número crescente a cada estande. Assim, o quarto estande do terceiro corredor seria o estande C4, e foi comprado pela empresa XXX. Na porta do pavilhão há uma lista com o nome de cada empresa em ordem alfabética e sua respectiva localização. Observamos, inclusive, que há empresas que compraram 3 estandes, para poder exibir seu material com mais liberdade.
Nessa pequena analogia, temos o seguinte:
- O pavilhão é a mídia, o HD.
- Os organizadores fazem o papel do sistema operacional.
- A divisão do pavilhão em corredores e unidades de locação (os estandes) é a formatação do disco.
- Uma empresa expositora seria um arquivo.
- A associação das letras e números seriam um endereço alocável.
- Uma empresa comprando um estande seria um arquivo alocado.
- A lista colocada na porta do pavilhão é a tabela de alocação do sistema de arquivos.
- Um estande não alugado é um setor livre para ser alocado.
- Uma empresa que aluga 3 estandes é um arquivo que ocupa 3 setores.
Pois bem, se você chega ao portão do pavilhão a procura da empresa XXX, você a procura na lista, verifica o endereço dela (C4) e se dirige até o local. Esse é o mesmo processo, de maneira resumida, é o que acontece quando se quer acessar determinado arquivo.
Agora, imagine o que aconteceria se a tal lista da entrada se perdesse ? O processo normal de busca da empresa não funcionaria mais, já que a lista sumiu.
Em termos de sistema de arquivos, é possível que a tabela seja corrompida, ou ainda que apenas uma parte do HD seja recuperada, e essa parte não tem a tabela de alocação. Nesses casos, entra em ação a técnica de carving, para achar arquivos no que parece um monte de bytes.
Como isso é feito ?
A técnica mais usada é baseada nos chamados magic numbers, são sequências de bytes que estão sempre presentes no arquivo, em geral no seu cabeçalho. Esses bytes funcionam como uma assinatura: Se forem achados, alguns itens são verificados e a estrutura é confirmada. Em geral, os programas de carving extraem os arquivos identificados das imagens para um diretório, disponibilizando-os para uso. Os arquivos JPEG sempre começam com ffd8 ffe0, por exemplo. Uma vez identificado que é o início de um JPEG, o cabeçalho é dissecado e o fim do arquivo determinado.
O grande problema é que em um sistema de arquivos nem sempre um arquivo ocupa setores contíguos. Conhecido como fragmentação de arquivos, isso acontece, por exemplo, quando um arquivo cujo tamanho ocupa 5 setores está para ser escrito no disco e encontra 3 setores contíguos livres, um setor já ocupado por um outro arquivo, e em seguida mais dois setores livres. O sistema operacional vai alocar o arquivo nesses 5 setores, marcando na tabela que esse arquivo ficou fragmentado. Tal situação ficaria mais ou menos assim:
Arquivo 1: AAAAA
Arquivo 2: B
No disco: AAABAA
Seguindo a técnica, os bytes do arquivo 2 vão parar no meio do arquivo 1 recuperado, estragando tudo !
Várias técnicas vem sendo pesquisadas para reduzir ou eliminar esse problema, e inclusive há um concurso anual de algoritmos e desafios envolvendo carving.
Algo que com certeza vai ajudar bastante é a técnica de montar hashsets dos arquivos conhecidos por setor. Essa técnica é baseada na filtragem de arquivos conhecidos por reconhecimento de seus hashes, como a biblioteca NSRL, só que, nesse caso, cada arquivo conhecido teria associado a ele o hashset de cada setor que esse arquivo ocupa em um disco. Durante uma operação de carving baseada nessa técnica, os setores seriam separados e reconhecidos contra a base de hashsets pelos seus hashes. No exemplo acima, calcularíamos o hash de cada um dos 6 setores, e depois o algoritmo verificaria o seguinte:
- O setor 1 é o primeiro setor do arquivo conhecido A
- O setor 2 é o segundo setor do arquivo conhecido A
- O setor 3 é o terceiro setor do arquivo conhecido A
- O setor 4 é o primeiro setor (ou único, no caso) do arquivo conhecido B
- O setor 5 é o quarto setor do arquivo conhecido A
- O setor 6 é o quinto setor do arquivo conhecido A
Facilita bastante. Logicamente, essa técnica tem alguns problemas; Os arquivos que não ocuparem um setor inteiro, bem como o último setor de um arquivo, não terão como serem reconhecidos, pois o calculo do hash seria influenciado pelo slack space (aquele espaço do setor que o arquivo não ocupou). Outro problema é que os hashsets serão criados para arquivos de programas, e não teremos obviamente hashsets para arquivos de fotos do usuário do HD, ou os seus documentos criados no editor de textos, por exemplo. Isso ajudará a eliminar setores, mas ainda pode não ser uma técnica definitiva.
Alguém tem alguma novidade com relação a essa técnica, ou conhece alguma iniciativa de montar hashsets para isso ? Por favor, compartilhe conosco nos comentários.
Até o próximo post !
Assinar:
Postagens (Atom)