quinta-feira, 8 de julho de 2010

Dois em um - WinTaylor 2.0 e Remnux


Vou aproveitar um post só para falar de duas novidades boas que acabaram de sair do forno.

A primeira delas serve como um petisco para o lançamento do CAINE 2.0. Trata-se da mais nova versão do WinTaylor, a interface montada pelo CAINE para resposta a incidentes. O novo WinTaylor não é apenas um conjunto com novas versões dos utilitários, ele foi totalmente renovado na interface (que está mais fácil de usar do que a anterior, segundo o site) , funcionalidades e conjunto de ferramentas.

A outra novidade apareceu documentada ainda hoje no blog do Sandro Suffert. Trata-se da primeira distribuição Linux no estilo máquina virtual dedicada especificamente à Forense de Malware, chamada de Remnux. Segundo o site do autor, a distribuição contém:
  • Analise de malware em Flash: swftools, flasm, flare
  • Analise de bots IRC: IRC server (Inspire IRCd) e client (Irssi).
  • Monitoramento de rede: Wireshark, Honeyd, INetSim, fakedns e fakesmtp scripts, NetCat
  • Desobfuscação de JavaScript: Firefox com Firebug, NoScript e JavaScript Deobfuscator extensions, Rhino debugger, 2 versões do patched SpiderMonkey, Windows Script Decoder, Jsunpack-n
  • Tratamento de malware de web no laboratório: TinyHTTPd, Paros proxy
  • Analisando shellcode: gdb, objdump, Radare (hex editor+disassembler), shellcode2exe
  • Tratando com executáveis protegidos: upx, packerid, bytehist, xorsearch, TRiD
  • Análise de PDF malicioso: Dider’s PDF tools, Origami framework, Jsunpack-n, pdftk
  • Memory forensics: Volatility Framework e plugins de malwares.
  • Outros utilitários: unzip, strings, ssdeep, feh image viewer, SciTE text editor, OpenSSH server
Alguém já baixou e testou ? Comentários ?

Até o próximo post !

quarta-feira, 7 de julho de 2010

Podcast StaySafe no ar

O podcast que gravamos recentemente, onde fui convidado pelos produtores Jordan Bonagura e Thiago Bordini, está no ar.

São cerca de duas horas de um bom bate papo sobre Computação Forense. O site do StaySafe também disponibiliza, além do MP3 do podcast para baixar, alguns links sobre assuntos que foram comentados no decorrer do episódio.

Deixo novamente o meu agradecimento por esse convite. Espero que vocês gostem de ouvir o podcast tanto quanto eu gostei de participar. Foi uma experiência muito bacana.

O "icing on the cake" do podcast foi a versão mixada da Carmina Burana. Nota 10 !!

Comentários ?

Até o próximo post !

terça-feira, 6 de julho de 2010

Virtualização e CAINE 2.0 - Parte 5

O título desse post poderia muito bem se chamar "Felipe Melo me deve um feriado". Eu deveria estar agora à beira de uma piscina, curtindo um churrasquinho enquanto Brasil x Uruguai não começa. Isso não vai acontecer por conta de alguns pisões e letargia em campo, e cá estou escrevendo esse bem humorado artigo.

A idéia, na verdade, é comentar que já saiu do forno o vdimount.pl, o script que criei para calcular os dados necessários para montar um arquivo vdi (disco virtual) tanto no Windows como no Linux. Vale lembrar que o funcionamento só é garantido para discos fixos, ou seja, aqueles que já tem seu tamanho final definido e criado desde o início. São a minoria, mas já é alguma coisa. Resta agora que a equipe do VirtualBox libere um utilitário como a VMWare fez em relação ao DiskMount.

O script está disponível no Byte Investigator, cujo link está aqui no blog, na seção de links.

Comentários ??

Até a próxima copa, ops, digo, próximo post ! :O

sexta-feira, 2 de julho de 2010

Virtualizacão e CAINE 2.0 - Parte 4

Estamos na quarta parte do nosso conjunto de artigos sobre Virtualização em Computação Forense. No último artigo, mostrei uma técnica que permite montar o arquivo .vdi, que é o disco virtual para Virtual Box, através de uma série de etapas que tem por objetivo localizar dentro do arquivo .vdi o offset da partição a ser montada.

Reconheço que cada uma das etapas vai dar um certo trabalho e, obviamente, poupa-se um pouco de trabalho comprando o WinMount. Porém, criei uma rotina para poupar nosso tempo e fazer o trabalho sujo daqueles cálculos todos. Em breve darei mais notícias dessa rotina.

Seguindo em frente na série de arquivos, imagino que já estejam se pergunto o que afinal faz o CAINE 2.0 no título. Hoje você saberá.

Segunda Técnica: Usando o Sleuth Kit com arquivos virtuais

O Sleuth Kit (TSK) é uma ferramenta que suporta vários tipos de arquivos de imagens forenses. Em cada utilitário do TSK, é possível usar a option -i list para determinar qual tipo ele foi compilado para aceitar. As versões mais novas estão compiladas com a AFFLib que já suporta trabalhar com arquivos vmdk. Com isso, implementações TSK que tenham como resposta AFFLib ao usar o -i list permitem trabalhar diretamente com um arquivo vmdk, como se fosse um AFF, EWF ou mesmo dd. O único segredo nesse caso é colocar -i afflib e o restante fica da mesma forma como em qualquer outro formato.

Por exemplo:

# mmls -i afflib discovirtual.vmdk
# fls -o 63 -i afflib discovirtual.vmdk

Onde o CAINE 2.0 entra nisso ??

É que, dentro das diversas distros de Computação Forense em Live CDs, a única que já vem com os pré-requisitos necessários e já consegue manipular .vmdk sem problemas é a nova versão do CAINE, a versão 2.0. É só esperar para ver.

E o disco virtual .vdi, da Virtual Box ??

Não consegui, até agora, verificar nenhuma opção para o TSK que permita acesso direto para o .vdi. Caso o uso do TSK seja imperativo, pode-se usar as técnicas comentadas na parte 3 desse artigo para extrair uma imagem .dd de dentro do arquivo/disco virtual.

Comentários ?

Até o próximo post !

terça-feira, 29 de junho de 2010

StaySafe Podcast

O primeiro podcast a gente nunca esquece !

Eu tinha sido convidado para a gravação de um podcast com uma turma muito bacana. Jordan Bonagura e Thiago Bordini criaram um podcast bem bacana e tem feito usado esse instrumento ser útil na divulgação da Segurança de Informações. Nessa terça, foi a minha vez.

Gravamos de forma bem descontraída e aproveitamos para falar de uns assuntos muito interessantes, além de responder a perguntas que os ouvintes do StaySafe mandaram via Twitter. Tudo isso acompanhado de Carmina Burana !

Vamos aguardar a publicação. Assim que eu souber, aviso aqui no blog também.

Só depois pude perceber que esqueci, no final, de mandar um beijo para minha mãe, pro meu pai e para a Xuxa. Uma pena, não devo ganhar sobremesa por isso ... :PP

É, e você achando que todos os peritos eram normais, né ? Pois é ... :D

Até o próximo post !

segunda-feira, 28 de junho de 2010

Virtualizacão e CAINE 2.0 - Parte 3

Ainda na técnica do artigo anterior, queremos montar no Windows um disco virtual que é, na verdade, um arquivo colhido em uma aquisição forense. Como nossa máquina a ser investigada era uma máquina virtual, o que temos não é um arquivo no formato dd, EWF ou ainda AFF. Temos um arquivo que é o próprio disco virtual. No entanto, a técnica passada no artigo anterior (Parte 2), mamão com açúcar, acabou indo por água abaixo agora porque dessa vez o que temos é um arquivo .vdi.

VDI é a extensão do arquivo que constitui o disco virtual do VirtualBox, e nesse caso não tem um utilitário free no Windows que faça o que o DiskMount da VMWare faz. Vamos ter que quebrar pedra ...

Antes de sair na briga com o arquivo e ver quem vence, vou logo avisando que a técnica abaixo só funciona em arquivos .vdi fixos, ou seja, o tamanho atual é o pré-estabelecido desde sua criação. Todos os tipos de máquinas virtuais (VMWare, VirtualBox, VirtualPC, etc) fornecem a capacidade de criação de discos virtuais do tipo fixo, onde o arquivo assumirá o tamanho final já no momento de sua criação, ou então discos dinâmicos, onde o arquivo começa com um tamanho pequeno e vai crescendo conforme for recebendo conteúdo, até que finalmente atinja o tamanho final especificado. A bem da verdade, os discos (arquivos .vdi) mais comuns são criados no formato dinâmico, o que nos deixa na mão na técnica abaixo. O DiskMount, como foi desenvolvido diretamente pela VMWare, não enfrenta nenhuma dificuldade com o vmdk, mas a Sun não proveu nada parecido com o DiskMount para o VirtualBox, e acabamos com essa dificuldade a mais. Sem desesperos ! Ao final vou mostrar que nem tudo está perdido se o disco for dinâmico.

A técnica para montar arquivos .vdi fixos para Windows passa pelos seguintes passos:

1) Abra o .vdi em um editor Hexa. Recupere uma DWORD (4 bytes) a partir do offset 76 (em decimal). Esse valor informa o tipo de disco virtual, se dinâmico (1) ou fixo (2). Portanto, para essa técnica funcionar você deverá achar 00000001. Lembre-se que a informação estará em Little Endian, ficando invertido. Na prática, no editor hexa você verá 01000000.

2) Ainda no mesmo editor hexa, vá para o offset 344 (em decimal). Recupere uma DWORD (4 bytes) que refere-se ao offset de onde a tabela de partições do disco efetivamente começa. Lembre-se que o valor vai estar invertido (little endian) e em hexadecimal. Por exemplo, em um dos meus arquivos .vdi o valor no editor hexa é 00C80100, o que equivale à 0001C800 em hexa, ou a 116736 em decimal.

3) Vá até esse offset no editor hexa e visualize o início da MBR. Daqui em diante, pode-se fazer alguma técnica de extração que crie um novo arquivo a partir desse ponto até o final, gerando um arquivo .dd que pode ser pesquisado no TSK (SleuthKit) e montado por outras ferramentas, como o ImDisk. Uma maneira de extrair pode ser usando o próprio editor hexa. Outra prática é usando um utilitário dd para Windows como no ex:

c:/>dd if=arquivo.vdi of=minhaimagem.dd offset=116736

4) O exemplo acima funciona, mas vai tomar muito tempo e espaço, já que estamos extraindo todo o disco, praticamente, jogando para um novo arquivo. Para evitar isso, podemos fazer o seguinte: Extraia uma porção bem menor, 1Mb, por exemplo. Novamente, isso pode ser feito tanto do editor hexa quanto do utilitário dd.

c:/>dd if=arquivo.vdi of=pedaco.dd offset=116736 count=1M

5) Esse pequeno pedaço da nossa imagem contém a tabela de partições, que pode ser consultada pelo utilitário mmls do TSK para se determinar onde cada partição está e qual o offset (em setores) de cada uma. No meu exemplo:

c:/>mmls pedaco.dd

6) Localize o offset da partição desejada e o tamanho de cada setor. Em geral, cada setor tem 512 bytes e as partições costumam ter offset 63, o que faz offset da minha partição a ser montada (em relação ao início da MBR) ser 63 x 512 = 32256. Com esse valor calculado, o pedaco.dd pode ser apagado.

7) Agora temos onde a MBR começa dentro do arquivo (116736, no meu exemplo) e onde, a partir daí, está a minha partição a ser montada. Com isso, o offset dessa partição é, a partir do início do arquivo .vdi, igual a 116736+32256= 148992

8) Com esse número, podemos finalmente usar o ImDisk para montar a partição. Verifique que o ImDisk pede o offset da partição em bytes. Nesse campo, informamos o valor calculado acima. Logicamente, o arquivo usado é o .vdi. Prontinho, a partição desejada estará disponível com a letra escolhida no ImDisk.

9) Se você quiser pular toda a trabalheira e ciência acima, há um atalho. Basta buscar pela string NTFS a partir do início do arquivo .vdi (logicamente, se a partição a ser montada for NTFS). O primeiro a ser achado deverá ser um conjunto de bytes EB 52 90 4E 54 46 53. Esse é o offset da partição a ser montada. Lembre-se de pegar o offset em decimal. Outro detalhe: Essa dica rápida só funciona em NTFS. FAT, ext2, ext3, etc tem assinaturas diferentes.

Bem, fechando o artigo, eu diria que além do problema de só funcionar para arquivos .vdi fixos, essa técnica é por demais trabalhosa. Quer um atalho ??? O WinMount faz tudo isso automaticamente, só com um clique, e custa apenas U$ 40 doletas. Monta .vdi dinâmico e estático. Além disso, monta vmdk e VHD também. Uma pechicha e ainda vem com um trial de 15 dias.

Comentários ?

Para o próximo artigo, vamos explorar outras possibilidades de trabalho com arquivos de discos virtuais.

Até o próximo post !

domingo, 27 de junho de 2010

Virtualizacão e CAINE 2.0 - Parte 2

Agora vamos ver como se usa o resultado de uma aquisição forense em máquinas virtuais. Se você já leu o artigo anterior, sabe que estamos falando especificamente em como usar em nossa investigação um arquivo que é um disco virtual (vmdk, vdi, etc).

Primeira técnica: Montando um disco virtual no Windows

É muito comum termos ferramentas de investigação que só funcionem em Windows. Uma das opções quando queremos usar tais ferramentas é montar a imagem no Windows e usar nela os utilitários. Para montar um arquivo .vmdk usamos um utilitário chamado VM DiskMount. Esse utilitário pode ser encontrado disponível no site da VMWare e possui uma interface bem simples que permite que um arquivo vmdk ser montado, inclusive como read-only. Após ser montado, o conteúdo fica acessível em uma letra como um drive local. Para desmontar o disco virtual, há também uma aba com essa opção no VMWare DiskMount.

O ponto negativo é que essa técnica é dependente do utilitário da VMWare. Por conta disso, só funciona com arquivos vmdk. Para trabalhar com ela em arquivos .vdi, vamos tratar no próximo artigo.

Até o próximo post !