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 !

sábado, 26 de junho de 2010

Virtualizacão e CAINE 2.0

Vamos matar dois coelhos com uma só paulada.

Quem teve a oportunidade de participar do YSTS4 deve ter assistido a minha palestra sobre Virtualizacão. Vamos conversar neste post sobre dois pontos que citei na palestra.

O primeiro deles é sobre a facilidade que as máquinas virtual trazem no contexto da Computação Forense. É muito mais fácil criar uma duplicação forense de um disco virtual do que de um disco real.

Tomando por referencia uma duplicação post-mortem, a duplicação de um HD real pode ser tão simples quanto usar um software de aquisição forense diretamente na mídia desligada, ou então tão complicado quanto encarar um monte de discos em um RAID xxx. Dessa forma, mesmo o caso mais simples dá um certo trabalho. Porém, quando se trata de duplicar um disco virtual, todo o trabalho se reduz em realizar a cópia e o hash do arquivo que representa o tal disco (um .vmdk para VMWare ou .vdi para VirtualBox).

Outro ponto que citei na palestra é uma nova possibilidade de aquisição. Colocando de maneira bem simplificada, podemos fazer a aquisição post mortem e ter uma visão estática dos dados do HD, ou então podemos fazer uma aquisição conhecida como Live, onde o computador continua ligado. Essa segunda modalidade é mais rápida e tem o benefício de não precisar desligar a máquina, mas a visão dos dados é dinâmica. Isso traz imediatas consequencias, pois antes da aquisição chegar ao final, o conteúdo capturado do início da mídia já pode ter sido alterado. Com isso, o hash não será capaz de comprovar integridade com a mídia, por exemplo.

Nesse caso, a captura de uma imagem forense de uma máquina virtual oferece uma terceira opção. Ela funciona como uma semi-live. A idéia é bem simples, no fim das contas. Basta ir no gerenciador da máquina virtual e interromper a execução dela temporariamente. Em geral, o comando que realiza essa tarefa é semelhante a uma pausa. Pode-se interromper e retornar a execução de uma máquina virtual a qualquer momento. Ao interromper, o arquivo de disco virtual pode ser copiado normalmente. Ao fim da cópia, retorna-se a máquina ao estado de execução sem mais demoras. O maior benefício dessa técnica pode ser a possibilidade de ter novamente uma visão estática da mídia, além de permitir retornar a máquina bem mais rápido que no caso de uma aquisição post-mortem.

Falarei em breve de como utilizar arquivos capturados segundo as técnicas acima. Com o aumento no uso de servidores virtuais, essas técnicas serão cada vez mais úteis.

Comentários ?

Até o próximo post !

quarta-feira, 16 de junho de 2010

LiveView ganha irmão mais novo ...

... e talvez tão útil quanto.

Eu já comentei aqui no blog sobre um utilitário que é capaz de criar, a partir de uma imagem raw (dd), um disco virtual para ser usado em qualquer máquina VMware. Na verdade, o LiveView cria toda a configuração de uma nova máquina que possa ser inicializada a partir da imagem. Além disso, essa máquina já vem criada com algumas facilidades voltadas para Forense Computacional. Por exemplo, a rede da máquina virtual fica desabilitada, de forma a impedir eventual propagação de malware. Além disso, ela já sobe com o snapshot ligado. Com isso, todas as modificações que podem acontecer serão descartadas e a imagem estará intacta ao final.

Até então, o LiveView era o único que oferecia funcionalidades com esse objetivo. Até então.

Um anuncio recentemente postado por Tasos Laskos avisa que há um novo software para esse mesmo fim (na verdade, semelhante). O raw2vmdk é um programa java que consegue converter um arquivo em formato raw para o formato vmdk, que é o disco virtual da VMWare. A bem da verdade, ele não converte de raw para vmdk, mas cria uma estrutura que permite o uso do arquivo .dd em uma vmware como um disco virtual que é baseado nela. Repare que o raw2vmdk não cria uma VM, nem suas estruturas. Apenas o disco virtual é criado. No entanto, o LiveView tem algumas exigências que o raw2vmdk não tem:

- O LiveView requer que o VMWare Server 1.x ou o VMWorkstation 5.xx estejam instalados; O raw2vmdk não depende deles;
- O LiveView não suporta VMWare 2.x; O raw2vmdk não tem problemas quanto a isso;
- O LiveView monta a máquina inteira, mas essa máquina virtual só roda no VMWare; O raw2vmdk cria o disco virtual apenas, mas que pode ser usado tanto em VMWare quanto em Virtual Box;

É possível partir do disco virtual criado pelo raw2vmdk e chegar no que seria o resultado final do LiveView. Entre outras coisas, será necessário verificar uma configuração de máquina virtual que consiga ser usada sem causar conflito no momento do boot. O snapshot precisa ser configurado na máquina virtual antes de ela ser usada pela primeira vez. Além disso, a interface de rede precisa ser desabilitada. Vai dar um pouco mais de trabalho do que os simples cliques do LiveView, mas pelo menos já se torna possível usar a estratégia com o Virtual Box.

Eu ainda não testei o produto, portanto ainda não consegui detectar se ele também faz a criação da tabela de partições, caso o arquivo .dd seja uma imagem lógica. O LiveView tem essa preocupação. Alguém já testou e viu se ele faz isso ? Comentem.

Até o próximo post !

quarta-feira, 9 de junho de 2010

Um pouco de filosofia

Estava lendo a notícia da prisão do cracker que tentou extorquir dinheiro de um banco. Há algumas lições aprendidas nesse assunto e algumas delas batem com o que conversei com uma animada turma durante o almoço no YSTS. Estávamos exatamente falando de crime perfeito e a falsa idéia de que é possível dominar técnicas avançadas de anti-forense de tal forma que se consiga eliminar todos os rastros. Algumas coisas que penso sobre isso:

- O Princípio de Locard é uma grande verdade. Você pode apagar todos os vestígios, mas haverá vestígios dessa sua ação de anti-forense, e isso por si só já pode ser usado;

- O atacante não está, em geral, com domínio total do ambiente atacado. Ele pode estar há anos trabalhando no local e desconhecer algum detalhe que vai deixar rastros na sua tentativa de explorar uma falha ou invadir algo. Em geral, o atacante domina um servidor ou grupos, mas pode não conseguir determinar o grau de monitoramento que há no ambiente, e isso acabar colhendo vestígios que levarão até ele;

- No fim das contas, não há crime perfeito (felizmente) porque as pessoas que o cometem ou o planejam são imperfeitas. Sempre pode acontecer um imprevisto que deixe o vestígio (ou grupo deles) e os rastros do que foi feito;

- Há, além disso, o questão do elo mais fraco. Sempre se falou no elo mais fraco da segurança ser pessoas, inclusive isso é a frase de entrada em muitos artigos e apresentações sobre Engenharia Social. Muito bem, felizmente o elo mais fraco também está presente no atacante. Esse acontecimento mostra como um tecnicamente muito bom e preparado cracker caiu depois de uma atitude bem estúpida, impensável para muitos. Além disso, crime é crime. Se começou no âmbito virtual, não quer dizer que só vamos dispor de técnicas de Forense Computacional para pegar o suspeito. Como nesse caso, em algum momento o atacante vai deixar um rastro que o ligue à ação.


Além dessas reflexões interessantes, vou ampliar o nosso "momento filosofia" do blog para comentar alguns outros pontos.

Será que já não era hora de colocarmos nos currículos escolares assuntos sobre ética na informática ? Esse rapaz acusado de extorsão tem apenas 24 anos e é a segunda passagem pela polícia. Pelo que consta, aos 21 ele já esteve em outro incidente parecido, onde fez um acordo com um banco e respondeu o processo em liberdade.

A sede de conhecimento da adolescencia, aliada ao acesso à tecnologia que temos hoje, pode criar um ambiente sem controle que produza jovens altamente qualificados tecnicamente, mas que não transferiram os bons conselhos dos pais e avós para os meios digitais. Jovens que seriam incapazes de morder uma fruta em um supermercado, mas que entram em bancos e desviam fundos como se fosse brincadeira sem nenhuma consequencia.

Outro ponto importante é sobre a formação e produção nacional na área de Perícia Forense. Continuo insistindo nisso porque dizem que o Brasil possui os melhores hackers (entenda-se crackers) do mundo. Se isso é assim mesmo, precisamos urgentemente de também formar os melhores peritos do mundo. Caso contrário, não haverá equilíbrio nessa balança, e todo mundo vai sair perdendo.

Perguntas para se refletir: Como Forense Computacional está sendo ensinado nas nossas academias de formação de policiais ? E de Peritos ? E de oficiais das Forças Armadas ? E da área de Inteligencia ? Isso me lembra que perito não se forma rápido. Não dá para sair da faculdade e ser perito, pois na maioria das vezes, o conhecimento adquirido nas áreas de TI é fundamental. Vale o mesmo para os especialistas em Segurança de Informações, os white hackers.

Precisamos formar agora aqueles que vão defender digitalmente a nossa nação nas próximas décadas.

Comentários ?

Até o próximo post !

terça-feira, 8 de junho de 2010

Novo CAINE vem aí

Essa é uma notícia das boas. O melhor Live CD de Forense Computacional de todos os tempos está com sua nova versão no forno. Acabei de receber o aviso de que a versão beta do CAINE 2.0 está disponível para meu download e dissecação.

Ainda não me inteirei das novidades. Sei que estaremos com a versão mais nova do Sleuth Kit e também do Byte Investigator (que estou portando para inglês, a pedido da turma). Há também um novo manual disponível no desktop e um grupo de scripts, o Nautilus.

Vou baixar hoje e começar a brincadeira. Em breve, teremos esse campeão disponível.

Quem já usa a versão atual ? O que você mais gostaria de ver no CAINE ?

Até o próximo post !

quinta-feira, 3 de junho de 2010

Histograma

O uso da linha do tempo para auxílio nas investigações de malware e invasões já está bastante disseminado e conhecido. Em resumo, nessa técnica pegamos os MAC timestamps (atributos de data/hora que indicam quando o arquivo foi criado, modificado pela última vez ou acessado pela última vez) e os ordenamos. Em geral, dado que temos uma idéia de quando aconteceu o incidente, podemos filtrar o conteúdo da linha do tempo de examinar a sequência de passos que pode ter sido usada na invasão ou infecção pelo malware.

Tudo bem até aqui ?

Acredito que sim, a menos que o investigador não tenha a menor idéia de quando pode ter sido o início do ataque/incidente. Analisar uma linha do tempo sem limitar as informações pode ser um processo penoso e até improdutivo. Outro ponto que complica, nesse sentido da quantidade de dados, é que a tendência atual é utilizar várias fontes de dados que contém data/hora e alinhar em uma única linha do tempo. Isso é ainda mais útil porque ajuda a perceber claramente a relação entre as ações do atacante (ou do malware), correlacionando melhor os vestígios encontrados. Nesse caso, logicamente temos muito mais informações para lidar e, sem a idéia de quando pode ter sido o início (chamamos de T-0 ou Time-0), a análise pode ficar comprometida.

É aí que entra uma outra técnica de análise: o histograma.

Um histograma é um gráfico que ilustra a quantidade de ocorrências em uma determinada série, ou unidade de tempo. Não faço a menor idéia se a definição correta e formal de histograma é exatamente essa, e que me perdoem os estatísticos se os deixei irado com essa explicação simplória, mas no fim das contas um histograma é exatamente isso.

No nosso caso, se fizermos um histograma das distribuições das MAC times, certamente haverá uma concentração maior de registros nas imediações do ataque, ou então notaremos um salto na quantidade quando a infecção estava no seu início. Isso porque temos, na prática, um certo padrão de uso nos computadores e servidores no que diz respeito aos arquivos, mas quando passamos por um ataque bem sucedido ou por uma infecção por malware, invarialvelmente esse padrão de uso vai se modificar. Vários arquivos serão atualizados ou acessados em um curto período de tempo, e isso salta aos olhos na análise via histograma.

Na prática, o histograma fica parecido com isso:
| #
| #
| #
| # #
| # # # # #
| # # # # # # #
-------------------------------------------------------------

Ou então, em um histograma vertical:

|
|##
|
|#
|
|###
|
|######
|
|##
|
|##
|
|#

Não importa se vertical ou horizontal, ambos demonstram visivelmente que há um período onde o uso dos arquivos (seja na criação, modificação ou acesso) foi muito maior. Nesse período devemos concentrar os esforços e avaliações mais detalhadas na linha do tempo.

A fim de facilitar a criação do histograma, eu criei uma rotina em Perl que dá conta do recado. O script fshistog2.pl recebe como parâmetro de entrada um arquivo que é a saída do utilitário fls, do The Sleuth Kit, chamado normalmente de bodyfile. Esse arquivo é a primeira etapa da criação de uma linha do tempo usando o TSK. Logicamente, deve-se gerar o bodyfile para todo o sistema de arquivo da mídia sendo investigada.

Além desse parâmetro, o script tem a possibilidade de usar apenas uma das MAC times (apenas a data de criação, ou ultima modificação, etc), permite agregar (contar) as MAC times por ano, mês, dia, hora e minuto e, por fim, também pode-se usar todo o arquivo de bodyfile ou filtrar por datas. Ao final, o script gera em modo texto um histograma vertical.

Inseri esse script no meu projeto Byte Investigator, que está disponível para download no SourceForge. O link está aqui mesmo no blog, na seção de links interessantes.

Aguardo feedback nos comentários.

Até o próximo post !