www.tirinhas.com

sábado, 22 de novembro de 2008

Habilitando o compartilhamento USB no VirtualBox

Estive quebrando a cabeça com o VirtualBox nos últimos dias...

Instalei a nova versão do Ubuntu, a 8.10 Intrepid Ibex, e nela uma VM Windows XP. Tudo funcionava bem, menos as portas USB: Simplesmente pareciam não existir, o hardware plugado não aparecia em Dispositivos USB.

A solução abaixo é válida para a Intrepid Ibex:

$ sudo gedit /etc/fstab

A este arquivo, adicionar a linha abaixo:

none /proc/bus/usb usbfs devgid=46,devmode=666 0 0

Salve e vá ao menu Sistema > Administração > Usuários e Grupos;

Clique em Gerenciar Grupos, selecione o grupo "vboxusers" e depois clique em Propriedades;

Marque o login do seu usuário e reinicie o sistema.

Resolvido!

quinta-feira, 20 de novembro de 2008

Forense Computacional para discos em RAID (Parte 2)

Em princípio, o sistema de armazenamento empregado em uma máquina parece não influenciar o processo de perícia. No entanto, analisando a atividade em seus detalhes, sob aspectos como finalidade (e a necessidade ou não do processo litúrgico de produção de provas), estado da máquina, criticidade do ativo e disponibilidade de meios, percebemos que a realização da perícia sob métodos usuais mostra-se inviável tecnicamente ou inválida nos seus aspectos legais.

O tipo de análise mais comum é a chamada post-mortem, realizada após o sistema ter sido desligado, retirado do seu ambiente de produção. Neste caso, a busca concentra-se nos discos, mais especificamente em arquivos, logs do sistema e MACtimes. É a mais indicada para incidentes antigos e para máquinas que não são críticas ou que podem ser facilmente substituídas.

Nesse momento se apresenta a primeira das dificuldades da perícia em RAID: Normalmente este sistema é empregado em servidores de missão crítica, difíceis de tirar de produção.

Um ponto fundamental da análise post-mortemé a cópia bit-a-bit dos discos rígidos, outra fase que pode tornar-se inviável quando falamos em máquinas de grande capacidade de armazenamento, que podem empregar desde dois até mais de uma dezena de discos.

Outra técnica de análise, a live analysis ou live acquisition, é muitas vezes utilizada antes de se iniciar a post-mortem, por ser a única chance de coletar certos tipos de informação, tais como: Conteúdos de memória RAM, cache, swap, processos em execução, usuários logados e conexões de rede. Sua filosofia também permite o uso de monitoramento de arquivos, processos, conexões, pacotes, etc.

Essa técnica pode ser adaptada para a pesquisa em máquinas RAID e em produção. Nesses casos, a análise se concentra no estudo de arquivos específicos, tornando-se óbvio dizer que a técnica de hash para validação da integridade dos dados é descabida. Se necessário, será preciso valer-se de um procedimento bem documentado acompanhado de Ata Notarial.

Forense Computacional para discos em RAID (Parte 1 - Conceitos básicos)

RAID Nível 0

Esse nível também é conhecido como "Striping" ou "Fracionamento". No RAID 0 os dados do são divididos em pequenos segmentos e distribuídos entre os diversos discos disponíveis, o que proporciona alta performance na gravação e na leitura de informações, porém não oferece redundância, ou seja, não é tolerante a falhas. O aumento da performance no RAID 0 é obtido porque se vários dados fossem gravados em um único disco esse processo aconteceria de forma "Seqüencial". Nesse nível os dados são distribuídos entre os discos ao mesmo tempo.
O RAID 0 pode ser usado para estações de alta performance (CAD, tratamento de imagens e vídeos), porém não é indicado para sistemas de missão-crítica.


retirado de http://www.conectiva.com/doc/livros/online/9.0/servidor/imagens/esq-raid0.jpg

RAID Nível 0+1

O RAID 0+1 é uma combinação dos níveis 0 (striping) e 1 (mirroring). No RAID 0+1 os dados são divididos entre os discos e duplicados para os demais discos. Assim temos uma combinação da performance do RAID 0 com a tolerância a falhas do RAID 1. Para a implantação do RAID 0+1 são necessários no mínimo 4 discos, o que torna o sistema um pouco caro.
Ao contrário do que muitos pensam, o RAID 0+1 não é o mesmo que RAID 10. Quando um disco falha em RAID 0+1 o sistema se torna basicamente um RAID 0.
O RAID 0+1 pode ser utilizado em estações que necessitam de alta performance com redundância como aplicações CAD e edição de vídeo e áudio.

retirado de http://www.fujitsu.com/img/STRSYS/system/glossary-raid-raid0-1.gif


RAID Nível 1

O nível 1 também é conhecido como "Mirror", "Duplexing" ou "Espelhamento". No RAID 1 os dados são gravados em 2 ou mais discos ao mesmo tempo, oferecendo portanto redundância dos dados e fácil recuperação, com proteção contra falha em disco. Uma característica do RAID 1 é que a gravação de dados é mais lenta, pois é feita duas ou mais vezes. No entanto, a leitura é mais rápida, pois o sistema pode acessar duas fontes para a busca das informações.

O RAID 1 pode ser usado para Servidores pelas características de ter uma leitura muito rápida e tolerância à falhas.


retirado de http://www.prepressure.com/images/raid1.gif


RAID Nível 2

O nível 2 também é conhecido como “Monitoring”. O RAID 2 é direcionado para uso em discos que não possuem detecção de erro de fábrica, pois “adapta” o mecanismo de detecção de falhas em
discos rígidos para funcionar em memória. O RAID 2 é muito pouco usado uma vez que todos os discos modernos já implementam de fábrica a detecção de erro.


RAID Nível 3

No RAID 3 os dados são divididos (em nível de bytes) entre os discos enquanto a paridade é gravada em um disco exclusivo. Como todos os bytes tem a sua paridade (acréscimo de 1 bit para identificação de erros) gravada em um disco separado é possível assegurar a integridade dos
dados para recuperações necessírias.


O RAID 3 também pode ser utilizado para Servidores e sistemas de missão-critica.

retirado de http://br.geocities.com/marcio_katan/raid3.png

RAID Nível 4

O RAID 4 é muito parecido com o nível 3. A diferença é que além da divisão de dados (em blocos e não bytes) e gravação da paridade em um disco exclusivo, esse nível permite que os dados sejam reconstruídos em tempo real utilizando a paridade calculada entre os discos. Além disso a paridade é atualizada a cada gravação, tornado-a muito lenta.

O RAID 4 pode ser utilizado para sistemas que geram arquivos muito grandes como edição de vídeo, porque a atualização da paridade a cada gravação proporciona maior confiabilidade no armazenamento.


RAID Nível 5

O RAID 5 é semelhante ao nível 4, exceto o fato de que a paridade não é gravada em um disco exclusivo para isso e sim distribuída por todos os discos da matriz. Isso faz com que a gravação de dados seja mais rápida, porque não existe um disco separado do sistema gerando um “gargalo”, porém, como a paridade tem que ser dividida entre os discos a performance é um pouco menor que no RAID 4.

O RAID 5 é amplamente utilizado em servidores de grandes corporações por oferecer uma performance e confiabilidade muito boa em aplicações não muito pesadas. E normalmente são utilizados 5 discos para aumento da performance.


retirado de http://www.pretaktovanie.sk/obr/hdd/seagate/07/raid5.png

RAID Nível 6

O RAID 6 é basicamente um RAID 5 porém com dupla paridade.

O RAID 6 pode ser utilizado para sistemas de missão-critica onde a confiabilidade dos dados é essencial.


retirado de http://www.fujitsu.com/img/STRSYS/system/glossary-raid-raid6.gif

RAID Nível 7

No RAID 7 as informações são transmitidas em modo assíncrono, controladas e cacheadas de maneira independente, obtendo performance altíssima.

O RAID 7 é raramente utilizado pelo custo do hardware necessário.


RAID Nível 10

O RAID 10 precisa de no mínimo 4 discos rígidos para ser implantado. Os dois primeiros discos trabalham com striping enquanto os outros dois armazenam uma cópia exata dos dois primeiros, mantendo a tolerância à falhas.

A diferença básica desse nível para o RAID 0+1 é que sobre certas circunstâncias o RAID 10 pode sustentar mais de uma falha simultânea e manter o sistema.


O RAID 10 pode ser utilizado em servidores de banco de dados que necessitem de alta performance e alta tolerância a falhas como em sistemas integrados e bancos.


retirado de http://www.madeira.eng.br/storage/users/3/3/images/34/10.gif

segunda-feira, 17 de novembro de 2008

Diferenciando mac-robber, fls e ils

É sabido que as três ferramentas são utilizadas como geradoras de fonte de informação para o mactime. No entanto, elas trazem informações diferentes e é preciso saber identificar tais diferenças para enriquecer o trabalho pericial.

mac-robber: Localiza apenas arquivos existentes/ativos na imagem analisada, fornecendo a estrutura de diretórios.

ils: Procura por cabeçalhos e fragmentos de arquivos, fornecendo como saída arquivos deletados ou não. Não se preocupa em encontrar estrutura de diretórios, por isso exibe quaisquer arquivos que ainda contenham fragmentos no disco, mesmo que sua localização na árvore seja impossível de determinar. É a ferramenta que retorna o maior número de resultados.

fls: Assim como o ils, busca arquivos ativos ou apagados. A diferença consiste na procura pela localização de cada arquivo na árvore de diretórios e, por este motivo, retorna menos resultados que o ils, apenas os que têm sua localização determinada.

Geração manual da linha do tempo

(por Eduardo Gomes de Barros)

Em uma investigação forense, o dado bruto muitas vezes não nos fornece nenhuma informação sobre um fato ocorrido. Porém, a ordenação dos dados, de acordo uma linha de tempo pode fazer com que o conjunto possua alguma informação.

MACtimes é uma maneira abreviada de nos referirmos aos três atributos que compõem um arquivo em ambientes Unix-like: tempo de modificação (mtime), tempo de acesso (atime) e tempo de criação (ctime). Note que os atributos registram apenas o último momento que algo ocorreu. A recuperação de informações anteriores só é possível, na maioria dos casos, em sistemas de arquivos com jounal. Abaixo uma descrição de cada um dos atributos.

  • atime - último momento em que ocorreu acesso ao arquivo. Exemplo: cat arquivo
  • ctime - último momento em que ocorreram modificações no conteúdo e meta-informações de um arquivo. Exemplo: chown usuario arquivo
  • mtime - último momento em que ocorreu alguma modificação no conteúdo do arquivo. Exemplo: echo ” ” >> arquivo
A ferramenta mactime, parte do conjunto de aplicações forenses sleuthkit, possui a capacidade de construir uma linha do tempo de acordo com uma base de dados criada previamente. A criação da base de dados pode ser feita através da ferramenta mac-robber ou ils -m ou fls -m.

A linha do tempo pode ser extremamente útil para perceber que eventos isolados podem ter correspondência, e assim poder reconstruir o fato ocorrido.
O uso de mac-robber requer que a imagem, ou o dispositivo, esteja montado em algum diretório. Supondo que se tenha uma imagem img.dd e que a mesma será montada em /mnt:

#mount -oloop,ro,noatime,nodiratime,noexec -tauto img.dd /mnt
#mac-robber /mnt > saida.txt

O uso de ils é interessante mas o default da ferramenta é o resgate de arquivos apagados. O nome dos arquivos é complementada pelo número do inode. Seu uso não é o mais adequado quando comparado com o resultado de foremost uma vez que os números de inode não batem.

A alternativa é usar o comando fls que permite recuperar o que foi apagado e o que existe no disco.

#fls -dr -m / img.dd > fls.mactime

Este comando iria recuperar somente os arquivos apagados e

#fls -r -m / img.dd > fls.mactime

recuperaria todos os arquivos, apagados e existentes no disco.

A geração da linha do tempo é dada por

#mactime -b fls.mactime> timeline.txt

O problema com este comando é que ele irá pegar todos os arquivos apagados inclusive aqueles em que há somente fragmentos gerando um grande número de entradas. Para minimizar a saída pode-se atribuir um período para a geração da linha do tempo

#mactime -b fls.mactime1 2008-11-01..2008-11-17 > timeline.txt

O arquivo timeline.txt possui a linha do tempo contendo os arquivos apagados e os existentes na partição. Os apagados não se está garantindo sua recuperação mas tão somente sua existência em algum momento naquele sistema de arquivos.

Corrigindo...

Na verdade, o que acontece é que uma flag do disco é alterada quando o mesmo é montado, alterando o hash. Cabe ressaltar que isso só acontece quando está ativada a montagem automática, através dos daemons hal e dbus.

Quando se faz a montagem manualmente, nada é alterado. Para desativar a montagem automática devemos parar o hal e o dbus.

# sudo /etc/init.d/hal stop
# sudo /etc/init.d/dbus stop


Além disso, quando o disco é desmontado, a flag em questão retorna ao valor inicial e o hash volta a ser o original.

quinta-feira, 13 de novembro de 2008

Montar/desmontar disco altera o hash

Você sabia?

Mesmo que se monte um disco em modo read-only, esta ação pode modificar o conteúdo do disco, fazendo com que o hash, antes e depois de montar, não seja o mesmo.
Isso depende do tipo de file system existente no disco. Se empregar journaling, partes do journal podem mudar mesmo que não haja escrita, invalidando, mesmo que involuntariamente, uma prova judicial.

quarta-feira, 4 de junho de 2008

Algumas considerações acerca de Copyright/Copyleft/Copyfraud

Em determinadas situações desejamos proteger a propriedade intelectual sobre conteúdo publicado na Internet. A primeira dúvida que surge é se há meios legais de fazê-lo e a segunda é, se sim, como fazê-lo. Há uma infinidade de tipos de licenças criadas pelo universo digital visando proteger a autoria ou a utilização do conteúdo. A Free Software Foundation, por exemplo, protege a autoria do conteúdo de seu site através do seguinte disclaimer de Copyright:
"Verbatim copying and distribution of this entire article are permitted worldwide, without royalty, in any medium, provided this notice is preserved."
Já a InfoSecurity Task Force protege o conteúdo do seu site com seguinte a mensagem, sem especificar situações:
"InfoSecurity TaskForce ©2001-2007, Todos os direitos reservados."
Isto significa que, mesmo citada a fonte, nada pode ser reproduzido. O CERT/CC patenteou sua denominação e tem um disclaimer detalhado acerca do que o usuário pode e o que não pode fazer com o conteúdo disponível no site.

A legislação brasileira não amarra os direitos autorais a registros formais, vide Art. 18 da Lei 9.610 de 1998, o que, no âmbito da Internet torna inexigível, por exemplo, o registro de conteúdo de um website, bastando que seu autor discrimine em sua página os direitos que alega sobre a obra. Para evitar este trabalho, uma boa solução é utilizar as licenças do Creative Commons, no qual o usuário seleciona as condições de sua licença e o site retorna aquela que mais se adequa às suas necessidades. Assim, basta colocar na página o link para o tipo de licença desejado.

O Copyleft é um tipo de Copyright voltado a garantir a liberdade, pois define que um determinado trabalho é livre e que todas as modificações/versões do referido trabalho devem ser igualmente livres. Difere do domínio público na medida em que impede intermediários de transformarem a produção em propriedade privada, garantindo que todos os usuários gozem da liberdade de copiar e distribuir trabalho baseado em algo Copyleft.

Dessa história surgiu o termo Copyfraud, outro neologismo (assim como o Copyleft), que significa reivindicar indevidamente direitos autorais. São quatro as formas de Copyfraud:
  • Reinvidicação de direitos autorais sobre o que já se encontra em domínio público;
  • Quando quem possui a propriedade de direitos autorais tenta impor restrições de uso mais elevadas do que as previstas por leis
  • Reinvidicar direitos autorais baseando-se no falso argumento de possuir uma cópia de um dado material;
  • Reinvidicar direitos autorais por ter publicado um material que se encontra em domínio público em uma mídia diferente da original.
Espero ter ajudado a esclarecer um pouco este assunto...

Leia mais ...