Mostrando postagens com marcador forense. Mostrar todas as postagens
Mostrando postagens com marcador forense. Mostrar todas as postagens

domingo, 12 de agosto de 2012

Aquisição de dados através da rede

Na computação forense, a aquisição de dados é a cópia dos dados armazenados em um dispositivo que está sendo examinado. Esta cópia pode ser física, onde se realiza uma clonagem fiel de toda a unidade de armazenamento, gerando um arquivo imagem, ou pode ser lógica, onde se realiza a cópia arquivo por arquivo de toda a unidade de armazenamento.

Sempre, a cópia é realizada à uma outra unidade de armazenamento para que o examinador possa trabalhar sem prejudicar a evidência. Esta conduta serve para garantir o conteúdo da prova.

Em situações adversas, o examinador poderá encontrar uma máquina onde não se é possível retirar o disco rígido, seja por razões judiciais ou pela tecnologia aplicada no hardware, por exemplo, a tecnologia RAID. Nestes casos, será necessário iniciar esta máquina com algum sistema forense e assim realizar a aquisição dos dados para uma unidade de armazenamento externa. A distribuição DEFT Linux LiveCD (http://www.deftlinux.net/) pode ser usada para isso.

Se o examinador possui um dispositivo de armazenamento externo, poderá copiar os dados pela própria máquina suspeita. Se possui um computador portátil, poderá estabelecer uma rede entre as máquinas e realizar a aquisição pela rede. É neste segundo cenário que este artigo se aplica, em uma rede cabeada, para uma cópia física de todo o dispositivo. Será utilizado o DEFT Linux na máquina suspeita e um notebook com a distro Fedora. Conecte um cabo crossover entre as placas de rede.

Primeiramente vamos preparar o terreno, configurando a rede com IP estático no Fedora e no DEFT. Digamos que o Fedora, que está no computador portátil do examinador, esteja usando o NetworkManager para gerenciar a rede. Vamos desativá-lo para usar neste processo de coleta o serviço de rede tradicional do Linux.

Execute o script do NetworkManager com o parâmetro "stop":

# /etc/init.d/NetworkManager stop

Em seguida edite o arquivo de configuração do dispositivo de rede:

# vi /etc/sysconfig/network-scripts/ifcfg-eth0

Usando este conteúdo na configuração (adapte se necessário):

DEVICE="eth0"
ONBOOT="yes"
BOOTPROTO=static
IPADDR=192.168.1.10
NETMASK=255.255.255.0
GATEWAY=192.168.1.1

Inicie o serviço de rede:

# /etc/init.d/network start

O comando 'ifconfig' nos mostra se a rede está ativa corretamente. No exemplo a interface "eth0". Ainda no Fedora, é necessário liberar uma porta no firewall. Edite o arquivo de configuração do iptables, adicionando a linha para a porta 2222 e reinicie o serviço iptables:

# vi /etc/sysconfig/iptables

-A INPUT -m state --state NEW -m tcp -p tcp --dport 2222 -j ACCEPT

# /etc/init.d/iptables restart

Com o DEFT operando na máquina suspeita, precisa-se também configurar uma rede com IP estático. O DEFT Linux é compatível com a distro Debian, possui uma ligeira diferença na configuração em relação ao Fedora. Edite o arquivo de configuração da interface de rede, usando o conteúdo abaixo e reinicie o serviço de rede:

# vi /etc/network/interfaces

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.1.11
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1

# /etc/init.d/networking restart

Mais uma vez, o comando 'ifconfig' nos mostra se a rede está ativa corretamente. Os endereços IPs escolhidos nas duas configurações serão usados nos exemplos dos comandos de aquisição. A máquina com Fedora recebeu o IP 192.168.1.10 e a máquina suspeita, rodando o com DEFT, recebeu o IP 192.168.1.11.

Existem duas ferramentas para estabelecer uma conexão de rede e assim transferir dados: nc e ssh.

A ferramenta 'nc' (netcat) é capaz de abrir uma conexão TCP, enviar pacotes UDP e ouvir em uma porta arbitrária. Esta ferramenta será executada nos dois computadores que irão "conversar" pela rede.

Sinopse:

nc [opção]... [endereço] [porta]

Primeiramente, executa-se o 'nc' na máquina que vai receber, no nosso caso, no Fedora. Escolha uma das linhas de comandos abaixo, de acordo com a ferramenta "diskdump" de sua preferência:

$ nc -l 2222 | bunzip2 | dd of=Tempo/sda.dd
$ nc -l 2222 | bunzip2 | dc3dd of=Tempo/sda.dd
$ nc -l 2222 | bunzip2 | dcfldd of=Tempo/sda.dd

A opção -l define que o 'nc' vai ficar "ouvindo" pela porta 2222.

Depois, executar o 'nc' na máquina que vai enviar, no nosso caso, no DEFT. Use a respectiva linha de comando de acordo com a ferramenta "diskdump" usada acima:

# dd if=/dev/sda1 | bzip2 -c | nc 192.168.1.10 2222
# dc3dd if=/dev/sda1 | bzip2 -c | nc 192.168.1.10 2222
# dcfldd if=/dev/sda1 | bzip2 -c | nc 192.168.1.10 2222

O comando 'nc' vai enviar o fluxo de dados para o endereço e porta especificado.


Outro procedimento é utilizar a ferramenta 'ssh', para enviar o fluxo de dados à um arquivo em uma máquina remota. Considerando que o servidor sshd esteja em execução no computador portátil, com o Fedora, execute na máquina suspeita, com o DEFT, o comando para enviar o arquivo imagem. Escolha uma das linhas de comandos:

# dd if=/dev/sda | bzip2 -c | ssh usuario@192.168.1.10 dd of=/home/usuario/imagem.dd.bz2
# dc3dd if=/dev/sda | bzip2 -c | ssh usuario@192.168.1.10 dd of=/home/usuario/imagem.dd.bz2
# dcfldd if=/dev/sda | bzip2 -c | ssh usuario@192.168.1.10 dd of=/home/usuario/imagem.dd.bz2

Neste procedimento não é necessário executar qualquer comando na máquina que vai receber os dados, no nosso caso o notebook com Fedora, apenas o servidor sshd deve estar ativo e utilize uma conta de usuário do sistema Fedora. Será solicitada a senha deste usuário.


Como visto, é relativamente simples a aquisição de dados pela rede. Muitas vezes até compensa em relação a desmontar a máquina suspeita para a retirada do disco rígido. Os computadores portáteis costumam dar trabalho desta desmontagem. O único inconveniente pode ser a velocidade de transmissão, de acordo com a tecnologia da rede, pois uma rede de 100 Mbits a velocidade máxima teórica é 12,5 MB/s.

quinta-feira, 3 de maio de 2012

Extração de dados com o foremost e scalpel

Na computação forense, o procedimento de extração de dados, é uma etapa importante para o sucesso da perícia computacional. Um dado pode não estar mais alocado no sistema de arquivos, o que facilitaria a recuperação, mas pode estar ainda existente na superfície do disco.

A ferramenta foremost é um recuperador de arquivos usando uma base de dados com definições de cabeçalho, rodapé e estrutura dos dados de tipos de arquivos conhecidos. O foremost é independente de sistema de arquivos e pode recuperar dados de partições FAT, NTFS, ext2/3 ou RAW, tanto no acesso direto ao dispositivo como em imagem RAW.

A sinopse da linha de comando é:

foremost [opção]... [-o diretório] [-t tipo] [-i entrada]

Como principais opções, existem:

-d       Ativa a detecção indireta de blocos, recomendado para
         sistemas de arquivos Unix.
-i       Dispositivo ou imagem de entrada.
-o dir   Diretório onde serão gravados os arquivos recuperados.
-v       Ativa o modo verboso.

A opção -t especifica os tipos de arquivos que serão recuperados:

jpg    Suporte para os formatos JFIF, Exif e implementações de
       câmeras digitais modernas.
bmp    Suporte para o formato BMP do Windows.
exe    Suporte para arquivos executáveis do Windows, inclui DLLs.
mpg    Suporte para a maioria dos arquivos MPEG.
riff   Recupera arquivos AVI e RIFF pois possuem mesmo formato.
wmv    Recupera arquivos WMV e WMA pois possuem formatos similares.
ole    Esta opção recupera qualquer arquivo que use a estrutura OLE.
       Inclui PowerPoint, Word, Excel, Access, e StarWriter.
zip    Recupera ZIP e JAR pois possuem formatos similares.
       Inclui arquivos produzidos pelo OpenOffice pois são arquivos
       XML zipados. Arquivos do Office 2007 também são XML.
all    Utiliza todos os tipos de arquivos pré-definidos.
       Padrão se a opção -t não for usada.

E também: gif, png, avi, mp4, wav, mov, pdf, rar e htm

Caso um formato de arquivo não seja suportado internamente pelo foremost, seu tipo pode ser definido no arquivo de configuração '/etc/foremost.conf'. Este arquivo contém instruções para definição dos novos formatos.

Os arquivos recuperados serão gravados em subdiretórios de acordo com o seu tipo. Se não for usada a opção -o, será criado um diretório padrão.

Exemplos de uso do foremost:

# foremost -t jpg -i image.dd -o ~/recuperados

# foremost -t all -i /dev/sda3 -o ~/recuperados

# foremost -t gif,pdf -i image.dd

# foremost -vd -t ole,jpeg -i image.dd

# foremost image.dd


De forma semelhante, a ferramenta Scalpel é um recuperador de arquivos usando uma base de dados com definições de cabeçalho e rodapé de tipos de arquivos conhecidos. O Scalpel é independente de sistema de arquivos e pode recuperar dados de partições FAT, NTFS, ext2/3 ou RAW, tanto em dispositivos como em imagens RAW. O Scalpel é resultado de uma completa reedição da ferramenta foremost v0.69.

Antes de utilizar o Scalpel é necessário configurá-lo pelo arquivo '/etc/scalpel.conf', descomentando as linhas que definem os tipos de arquivos que serão recuperados. Também há instruções neste arquivo. Para recuperar os arquivos de uma partição, use um comando semelhante a:

# scalpel /dev/sda3 -o ~/recuperados


Nestas ferramentas, o processo pode ser demorado, dependendo do tamanho do HD e de quantos arquivos existem para serem recuperados. Os arquivos recuperados serão copiados para o diretório especificado pela opção -o, em subdiretórios de acordo com o tipo do arquivo.

O foremost e o Scalpel não estão interessados no sistema de arquivos contido na partição ou imagem. Estas ferramentas simplesmente esperam que os blocos de dados dos arquivos residam sequencialmente no disco ou imagem que está sob investigação.

Este processo é conhecido como extração de dados (data carving). "Carving" é um termo genérico para extração de arquivos em imagens RAW, baseado em características específicas do formato, presentes nos arquivos (dados estruturados). Alguns estudos indicam o foremost como mais confiável.

sábado, 7 de janeiro de 2012

LinEn e FTK Imager, aquisição forense em Linux

Na computação forense, a técnica de aquisição de dados consiste no procedimento de cópia da informação armazenada em um computador. Para a evidência digital estar preservada em sua forma original, a melhor forma de armazenamento é na criação de um arquivo imagem. Todo o conteúdo de um disco rígido pode ser armazenado em um único arquivo imagem, que é uma cópia exata bit-a-bit.

Apesar de existirem diversas ferramentas livres para criação de arquivo imagem, existem duas ferramentas proprietárias que são excelentes para aquisição forense, a EnCase Acquisition (Guidance Software) e a FTK Imager (AccessData). Estas duas ferramentas possuem versões para Linux.

O utilitário LinEn é uma versão para Linux da ferramenta de aquisição EnCase para DOS. O LinEn é similar ao EnCase para DOS mas oferece todas as vantagens de uma execução em ambiente Linux. Por rodar em um sistema 32-bit, o LinEn proporciona uma grande vantagem na performance, comparado ao sistema DOS. O LinEn possui dois modos de operação: o modo de linha de comando e o modo de interface.

No modo de linha de comando, todas as informações necessárias para aquisição da imagem devem ser especificadas em opções.

Principais opções:

-cl            Usada para executar o LinEn no modo de linha de comando.
               Requerida quando usadas as opções -k, -o ou -verify.
-k             Realiza a aquisição do dispositivo no modo de linha de comando.
-dev caminho   Caminho para o dispositivo para ser adquirido ou hasheado.
               Requerido para aquisição ou cálculo do hash.
-p caminho     Caminho para o arquivo de evidência quando usada -k ou -verify.
               Requerido para aquisição ou verificação.
-m nome        Nome da evidência. Requerido para aquisição.
-c número      Número do caso da evidência. Requerido para aquisição.
-x examinador  Nome do examinador. Requerido para aquisição.
-r número      Número do dispositivo da evidência. Requerido para aquisição.
-d compressão  Compressão usada na aquisição. Deve ser um número entre 0 e 2.
               0=sem, 1=rápido, 2=melhor. Requerido para aquisição.
-a caminho     Caminho alternativo se o caminho original ficar cheio.
-n nota        Notas para ser armazenadas no arquivo de evidência.
-l tamanho     Tamanho máximo para os arquivos de evidência em MB (mínimo=1, padrão=640).
-t             Desliga o hash MD5 enquanto calcula o hash ou na aquisição da evidência.
-1             Ativa cálculo hash SHA1 enquanto calcula o hash ou na aquisição da evidência.
-v             Modo verboso.
-o             Calcula o hash. Deve ser usada com -cl e -dev.
               As opções -t e -1  definem qual hash será calculado.
-verify        Verifica o arquivo de evidência. Deve ser usada com -cl e -p.

Exemplos:

Aquisição pela linha de comando:

# linen -cl -k -dev /dev/sda1 -p /root/tempo/evidencia.e01 -m "disco suspeito" -c Caso123 -x "Sr Perito" -r "HD 123" -d 2 -n "Adquirido pelo LinEn" -l 50 -1 -verify -v

Verificação do arquivo de evidência:

# linen -cl -verify -p /root/tempo/evidencia.e01

Calcular hash MD5 e SHA1 do dispositivo:

# linen -cl -o -dev /dev/hda -1

O modo de interface do LinEn é iniciado com a execução sem opções:


Para iniciar uma aquisição pressione o botão "Acquire" e prossiga com as informações sobre a evidência.

Interação da interface do LinEn:

Choose a drive             Escolha o dispositivo ou partição.
Path and file name         Escreva o caminho para o arquivo evidência.
Alternate Path             Escreva o caminho alternativo para o arquivo evidência.
Case Number                Escreva o número do caso.
Examiner Name              Escreva o nome do examinador.
Evidence Number            Escreva o número da evidência.
Name                       Escreva o nome da evidência.
Current Date (GMT)         Escreva a data.
Notes                      Escreva notas do caso.
Compress this file?        Escolha se deseja compressão do arquivo de evidência.
Acquisition Hash           Escolha o algoritmo hash para cálculo.
Password                   Escreva uma senha, opcional.
Total Sectors              Escreva o número total de setores.
Max File Size in MB        Escreva o tamanho máximo para o arquivo de evidência.
Block size                 Escreva o tamanho do bloco, em setores.
Error granularity          Escreva a granulação para erro, em setores.
Number of Worker Threads   Escreva o número de tarefas simultâneas de trabalho.
Number of Reader Threads   Escreva o número de tarefas simultâneas para leitura.
Do you want hashing to be
done in its own thread?    Escolha se o hash deve ser calculado em tarefa própria.
Do you want to verify
the evidence file?         Escolha se deseja verificar o arquivo de evidência.
Write this value to
a text file?               Escolha se deseja escrever o relatório em um arquivo texto.

O LinEn é um software proprietário desenvolvido pela Guidance Software Inc. e é fornecido junto com o EnCase (http://www.guidancesoftware.com/forensic.htm).


O ftkimager é uma versão para Linux da ferramenta FTK Imager. Sua interface é apenas em linha de comando. Esta ferramenta é capaz de criar uma imagem de disco no formato EnCase, SMART ou dd. As informações necessárias para aquisição da imagem devem ser especificadas em opções.

Sinopse:

ftkimager origem [destino] [opções]

Principais opções:

--list-drives     exibe os drives físicos detectados
--verify          verifica o hash da imagem de destino ou da imagem de origem,
                  se não for informado o destino
--print-info      exibe informações sobre o drive ou imagem
--no-sha1         não calcula o hash SHA1 durante a aquisição ou verificação
--s01             cria uma imagem no formato SMART ew-compressed
--e01             cria uma imagem no formato E01
--frag x{K|M|G|T} separa a imagem em fragmentos de x{K|M|G|T} de tamanho
--compress C      ativa o nível de compressão para C
                  (0=nenhum, 1=rápido, ..., 9=melhor)
--case-number X          metadados para imagem e01 e smart,
--evidence-number X      use aspas se conter espaço
--description X
--examiner X
--notes X

Exemplos:

# ftkimager --list-drives

# ftkimager --print-info /dev/sdb

# ftkimager /dev/sdb imagem --no-sha1 --s01 --frag 5M --compress 1

# ftkimager /dev/sdb imagem --e01 --compress 4 --case-number 123 --evidence-number 1 --description "disco notebook" --examiner "Sr Perito" --notes "copia backup"

# ftkimager /dev/sdb imagem

O FTK Imager é um software proprietário desenvolvido pela AccessData Corp. e é possível baixá-lo pela página de downloads da AccessData (http://accessdata.com/support/adownloads).


O LinEn e o FTK Imager são duas ótimas ferramentas para aquisição forense. As duas suportam o formato EWF para arquivo imagem, em todas as vantagens que este formato oferece. São ferramentas obrigatórias no laboratório forense computacional.

Ao usar estas ferramentas para criação de uma imagem forense, use também um dispositivo de bloqueio de escrita, para garantir que nenhuma alteração será feita pelo sistema operacional em algum dado no disco rígido conectado ao computador.

quinta-feira, 17 de novembro de 2011

Computação forense em Linux: arquivos e diretórios importantes

Muitos arquivos armazenados pelo sistema Linux podem fornecer informações valiosas sobre o perfil, propósito e uso do computador. Tais como arquivos de configuração de ambiente, configuração dos programas, arquivos gerados pelo sistema etc.

Também alguns locais específicos podem conter arquivos de interesse forense, como diretórios de arquivos temporários, de log, de uso da rede etc.

Configuração do sistema:

/etc/

O diretório '/etc/' contém todos os arquivos de configuração do sistema operacional. Também existe o subdiretório '/etc/skel/' que contém os arquivos que irão popular inicialmente o '/home/usuario' de um usuário recém criado. O diretório '/etc/' é um diretório importante pois contém todas as configurações realizadas pelo administrador do sistema.

Contas de usuários e grupos:

/etc/passwd

O arquivo '/etc/passwd' contém as contas dos usuários configurados no sistema. Cada definição de conta fica em uma linha e o conteúdo das linhas estão separados em campos.

/etc/shadow

O arquivo '/etc/shadow' armazena as senhas em um formato criptografado, com algumas informações adicionais relacionadas as senhas dos usuários. Contém uma entrada por linha, separada em campos, para cada usuário definido no '/etc/passwd'.

/etc/group

O arquivo '/etc/group' define os grupos os quais os usuários pertencem. Cada grupo é definido em uma linha separada por campos.

/etc/gshadow

O arquivo '/etc/gshadow' armazena as senhas dos grupos em um formato criptografado. Contém uma entrada por linha, separada em campos, para cada grupo definido no '/etc/group'.

Ambiente dos usuários:

/etc/bashrc

O arquivo '/etc/bashrc' é um arquivo de inicialização do shell de alcance em todo o sistema. É executado por todos os usuários quando um novo shell é aberto. É usado para definir funções e apelidos.

/etc/profile

O arquivo '/etc/profile' contém configurações de ambiente e chamadas de inicialização de programas de alcance em todo o sistema. É usado por todos os usuários. Este arquivo somente é executado durante o login do usuário. Configurações complexas devem ser definidas no diretório '/etc/profile.d/'.

/etc/profile.d/

Todas as configurações complexas de ambiente são colocadas em arquivos neste diretório. Os scripts deste diretório são acionados por um laço "for" no arquivo '/etc/profile'.

Os arquivos '/etc/bashrc' e '/etc/profile' possuem arquivos equivalentes para o diretório pessoal do usuário. São os arquivos '~/.bashrc' e '~/.bash_profile'. Existe também o arquivo '~/.bash_logout' que é lido e executado toda vez que o usuário sai de um shell. Estes arquivos funcionam apenas para a sessão do próprio usuário.

Serviços em execução:

Os serviços são programas (daemons) que são iniciados e mantidos em execução em segundo plano, ficam monitorando o computador e respondem às mudanças.

Para organizar o controle dos serviços, muitas variantes do Unix System V, e isto inclui diversas distribuições do Linux, usam scripts nos diretórios '/etc/rcN.d/' para controlar quais serviços serão iniciados dentre os níveis de execução.

Se um serviço deve ser iniciado no nível de execução 5 então é colocado o seu script em '/etc/rc5.d/'.

Existe também o script '/etc/rc.d/rc.local', que é executado após os outros scripts de inicialização de serviço.

Para evitar múltiplas cópias do mesmo script, foi adotado o padrão de colocar todos os scripts de controle dos serviços no diretório '/etc/init.d/' e usar links simbólicos para estes scripts nos diretórios '/etc/rcN.d/'.

Na distribuição Fedora os links e os scripts estão nos diretórios '/etc/rc.d/rcN.d/' e '/etc/rc.d/init.d/', porém é mantido no diretório '/etc/' os links simbólicos para estes diretórios.

Outras distros adotam uma estrutura distinta: No Slackware os scripts ficam em '/etc/rc.d/' e são executados se estiverem com permissão de execução. No Debian os scripts ficam em '/etc/init.d/' e são executados se tiverem links em '/etc/rcN.d/'. E no openSUSE os scripts ficam em '/etc/init.d/' e são executados se tiverem links em '/etc/init.d/rcN.d/'.

Configuração de rede:

Alguns arquivos, localizados a partir do diretório '/etc/', são para armazenar as configurações de rede. (estrutura Red Hat/Fedora)

/etc/hosts                       Lista de endereços IP e os nomes do host
/etc/host.conf                   Especifica como o sistema determina os nomes do host
/etc/resolv.conf                 Especifica o servidor do serviço de DNS
/etc/networks                    Lista de endereços IP e os nomes das redes
/etc/sysconfig/network           Ativa a rede, especifica nomes do host e do gateway
/etc/sysconfig/network-scripts/  Configurações e scripts do serviço "network"
/etc/sysconfig/networking/       Configurações geradas pela ferramenta gráfica de rede
/etc/sysconfig/iptables          Regras do firewall

Servidores de rede:

Uma máquina com sistema Linux pode estar preparada para prestar diversos serviços de rede. Cada servidor possui diretórios específicos para configuração do serviço:

/etc/samba/                      Software para operar com máquinas Windows pela rede
/etc/httpd/                      Servidor HTTP Apache
/etc/vsftpd/                     Servidor FTP vsftpd
/etc/squid/                      Servidor proxy Squid
/etc/ssh/                        Servidor SSH
/etc/dhcp/                       Servidor DHCP
/etc/ltsp/                       Servidor LTSP (Linux Terminal Server)

Os servidores possuem também diretórios para armazenamento dos arquivos compartilhados:

/var/www/                        Páginas servidas pelo Apache
/var/ftp/                        Arquivos servidos por FTP
/var/spool/squid/                Cache do Squid
/var/lib/dhcpd/dhcpd.leases      IPs atribuídos por DHCP
/var/lib/tftpboot/ltsp/          Configuração dos terminais LTSP
/opt/ltsp/                       Imagens de sistema para LTSP

Arquivos temporários e log:

Um sistema ativo, com diversos processos em execução, armazena automaticamente muitas informações e dados dos processos. Arquivos de log registram o uso do sistema, de uma forma geral ou especificamente para determinada aplicação. Diversas aplicações armazenam cópias dos arquivos processados em cache ou geram arquivos temporários.

/var/log/                        Arquivos de log diversos
/var/log/messages                Arquivo de log geral do sistema
/var/spool/                      Dados que esperam por processamento
/var/run/                        Dados que descrevem o sistema desde sua inicialização
/var/cache/                      Cache de dados de aplicativos
/var/tmp/                        Arquivos temporários preservados entre reinicializações
/tmp/                            Arquivos temporários gerais

Aplicações para Internet:

Todos os aplicativos de Internet para acesso à web, e-mail, mensagens instantâneas, possuem diretórios e arquivos para armazenar o conteúdo gerenciado. Os navegadores podem armazenar o histórico das páginas visitadas e os respectivos arquivos baixados em cache. Os mensageiros instantâneos podem armazenar a lista de contatos e as mensagens trocadas. Os clientes de e-mail podem armazenar o catálogo de endereços e os e-mails enviados e recebidos. Até alguns plugins podem armazenar o conteúdo multimídia acessado. Cada usuário terá o seu conjunto de diretórios para estes aplicativos.

Navegador Firefox

~/.mozilla/firefox/xxxxxxxx.default/Cache/
~/.mozilla/firefox/xxxxxxxx.default/

Navegador Opera

~/.opera/cache/
~/.opera/

Navegador Google Chrome

~/.cache/google-chrome/Cache/
~/.config/google-chrome/Default/

Comunicador aMSN

~/.amsn/

Comunicador Kopete

~/.kde/share/apps/kopete
~/.kde/share/config/kopeterc

Comunicador Pidgin

~/.purple/

Cliente de e-mail Thunderbird

~/.thunderbird/xxxxxxxx.default/
~/.thunderbird/xxxxxxxx.default/Mail/
~/.thunderbird/xxxxxxxx.default/Cache/

Plugin Adobe Flash Player

~/.macromedia/Flash_Player/#SharedObjects/

Plugin Java

~/.java/deployment/cache/6.0/

Conhecer os locais das configurações e demais dados das diversas aplicações é muito importante para o examinador forense. O sistema é capaz de armazenar informações valiosas, muitas de forma automática e transparente para o administrador e usuário.

quinta-feira, 14 de abril de 2011

DFF - Sistema para forense digital

O DFF, Digital Forensics Framework (http://www.digital-forensic.org/), é um projeto dedicado para a forense digital.

O propósito deste sistema é oferecer um ambiente modular de forense digital para os profissionais de TI, com capacidade de realizar análises e de extrair dados suspeitos dos arquivos.

Estes arquivos podem vir de aquisição de dados de mídias digitais, como discos rígidos, memória RAM, dispositivos móveis ou pacotes capturados pela rede. Também podem vir de dados deletados que foram recuperados.

A informação é processada em um recipiente virtual de somente leitura, que preserva a integridade e autenticidade dos dados.

Principais características:

- Visualizadores de imagens, vídeos, textos, sistemas de arquivos.
- Análise de linha do tempo.
- Visualizador hexadecimal.
- Gerenciamento de volumes, partições.
- Manipulação de arquivos.
- Leitura de metadados, EXIF, estrutura de dados etc.
- Memória volátil: Windows XP (volatility).
- Sistemas de arquivos FAT 12/16/32, NTFS, EXTFS 2/3/4.
- Recuperação de dados, "file carving".
- Análise do registro do Windows.

O DFF é dividido em três camadas distintas de software, que comunicam entre si através de uma API modular:

- O núcleo.
- As interfaces de usuário.
- Os módulos.

A primeira camada é o núcleo da aplicação. É usado para carregar e executar os plugins.

A segunda camada é composta de plugins e módulos, invocados pelo núcleo. Cada um é designado para analisar tipos específicos de dados, como dados da RAM e sistemas de arquivos.

A terceira camada é composta da interface ao usuário. Esta camada é usada para selecionar a origem dos dados que serão analisados e visualizar os resultados das análises. As interfaces são a gráfica e o shell para linha de comando.


O DFF ainda é um projeto novo mas já está bastante funcional. Se o projeto crescer, novos módulos devem ser desenvolvidos e assim, o DFF oferecerá muitos recursos para a computação forense.

terça-feira, 25 de janeiro de 2011

Recuperando e organizando os arquivos pelos tipos

Com o propósito de recuperar todos os arquivos, alocados e não alocados, de um computador, a coleção The Sleuth Kit (TSK) traz em seu repertório forense a ferramenta denominada sorter.

O sorter é um script em Perl que analisa um sistema de arquivos para organizar os arquivos alocados e não alocados pelos seus tipos. Este script classifica os arquivos de uma imagem ou dispositivo de armazenamento em categorias, executando o comando "file" em cada arquivo e organizando os arquivos de acordo com regras pré-estabelecidas.

A ferramenta sorter trabalha utilizando outras ferramentas do TSK. Basicamente, o script executa a ferramenta "fls" para identificar os arquivos, cada arquivo identificado é visualizado com a ferramenta "icat", e a seguir, o comando "file" é executado para identificar o tipo do arquivo, baseado nas informações do cabeçalho. O sorter utiliza as regras definidas em seu arquivo de configuração, para classificar os arquivos, e também compara a extensão de cada arquivo, se houver, com a regra para seu tipo identificado.

Após toda esta varredura os arquivos são copiados, se a linha de comando conter o argumento -s, para um diretório no computador forense, fornecido com o argumento -d. Dentro deste diretório são criados subdiretórios nomeados de acordo com as categorias. Cada arquivo é renomeado usando o nome do sistema de arquivos, seguido do endereço e da extensão original.

Pode-se também gerar um índice em HTML, com o argumento -h, e os arquivos não identificados podem ser ignorados utilizando o argumento -U.

O sorter trabalha com imagens ou acessando diretamente o dispositivo de armazenamento. Existem outros argumentos para sua linha de comando, conforme sua página manual, mas uma linha de comando básica é exemplificada a seguir:

$ sorter -i raw -f fat32 -o 63 -d ~/data-sorter -s -h imagem.dd

Ou, acessando diretamente o dispositivo (geralmente necessita estar como superusuário):

# sorter -i raw -f fat32 -o 63 -d ~/data-sorter -s -h /dev/sdb

O argumento -i especifica o tipo onde o sistema de arquivos está localizado. O argumento -f especifica o tipo do sistema de arquivos. O argumento -o especifica o setor onde inicia o sistema de arquivos. O argumento -d, como já descrito, especifica para onde irão os arquivos e o argumento -s salva os arquivos no diretório.

Para os arquivos não alocados, o sorter recupera o que ainda estiver disponível, o que ainda não foi sobreposto. Se o arquivo foi sobreposto parcialmente, o sorter consegue recuperar parte do arquivo, resultando em um arquivo incompleto.

O resultado da ferramenta sorter pode ocupar bastante espaço em disco, às vezes mais do que o tamanho da unidade de armazenamento. Já vi um disco rígido de 40 GB retornar 60 GB de dados. Portanto, certifique-se de possuir espaço suficiente.

Esta ferramenta é muito utilizada na computação forense nos casos que necessitam uma recuperação de todos os arquivos, incluindo imagens, vídeos e documentos.

sábado, 15 de janeiro de 2011

Ferramentas de linha de comando do The Sleuth Kit

O The Sleuth Kit (TSK) é uma coleção de ferramentas de linha de comando para Unix que permite investigar um computador, isto é, trata-se de uma coleção de ferramentas forenses. O objetivo destas ferramentas é o acesso aos arquivos e aos sistemas de arquivos. O TSK suporta os sistemas de arquivos FAT, Ext2/3, NTFS, UFS, e ISO 9660.

Ao todo são 27 ferramentas que fornecem informações ou conteúdo de arquivos, unidades de dados, volumes, partições, sistemas de arquivos e metadados como Mac times e inode. Veja abaixo uma lista das ferramentas com uma breve descrição da respectiva funcionalidade:

blkcalc - Converte entre números de unidades não alocadas no disco e números de unidades regulares no disco.
blkcat - Mostra o conteúdo da unidade de dados do sistema de arquivos (blocos) em uma imagem de disco.
blkls - Lista as unidades de dados do sistema de arquivos (blocos).
blkstat - Mostra os detalhes de uma unidade de dados do sistema de arquivos (bloco ou setor).
ffind - Encontra o nome de um arquivo ou diretório pelo inode.
fls - Lista os nomes dos arquivos e diretórios de uma imagem de disco.
fsstat - Mostra os detalhes gerais de um sistema de arquivo.
hfind - Consulta um valor de Hash em uma base de dados de Hash.
icat - Retorna o conteúdo de um arquivo baseado no seu número inode.
ifind - Encontra a estrutura de metadados que foi alocada para uma unidade de disco ou nome de arquivo.
ils - Lista a informação do inode.
img_cat - Retorna o conteúdo de um arquivo imagem.
img_stat - Mostra os detalhes de um arquivo imagem.
istat - Mostra os detalhes de uma estrutura de metadados, isto é, inode.
jcat - Mostra o conteúdo de um bloco journal em um sistema de arquivos com journal.
jls - Lista o conteúdo de um sistema de arquivos com journal
mactime - Cria uma linha do tempo ASCII das atividades dos arquivos.
mmcat - Retorna o conteúdo de uma partição para a saída padrão.
mmls - Mostra o esboço da partição de um volume do sistema (tabela de partição).
mmstat - Mostra os detalhes sobre volumes do sistema (tabela de partição).
sigfind - Encontra a assinatura binária em um arquivo.
sorter - Classifica os arquivos de uma imagem em categorias baseadas nos tipos de arquivo.
srch_strings - Mostra os caracteres imprimíveis das strings de um arquivo.
tsk_comparedir - Compara o conteúdo de um diretório com o conteúdo de uma imagem ou dispositivo local.
tsk_gettimes - Coleta os MAC times de uma imagem de disco para um arquivo.
tsk_loaddb - Popula um banco de dados SQLite com os metadados de uma imagem de disco.
tsk_recover - Exporta os arquivos de uma imagem para um diretório local.

Com estas ferramentas podemos recuperar arquivos deletados, montar uma linha do tempo do uso dos arquivos, procurar por determinada string, entre outras coisas, tarefas corriqueiras na computação forense.

As ferramentas funcionam acessando o conteúdo tanto na forma de imagem como diretamente ao dispositivo. Mas lembre-se, é sempre recomendável criar a imagem da unidade de armazenamento para preservar a integridade da prova.

O TSK pode ser obtido pelo endereço www.sleuthkit.org. Algumas distribuições Linux fornecem seu pacote pelos repositórios oficiais de software.

Existe o Autopsy que é a interface gráfica para esta coleção (http://dan-scientia.blogspot.com/2010/10/computacao-forense-com-o-sleuth-kit-e.html), entretanto, é possível com apenas poucos comandos realizar algumas tarefas do Autopsy, e em alguns casos, até de forma mais agilizada. Mas isto fica para uma outra postagem.

terça-feira, 19 de outubro de 2010

Proteção de escrita na aquisição de imagem forense

O Tableau Forensic USB Bridge modelo T8-R2 é um hardware bloqueador de escrita que permite que um dispositivo de armazenamento USB (por exemplo, pendrives e HD externos) seja conectado a um computador forense para aquisição de imagem ou análise dos dados. Os dados podem ser lidos, com proteção contra escrita, impossibilitando qualquer alteração durante a aquisição ou análise.

O T8-R2 suporta a conexão com o computador via interface FireWire ou USB. Também incorpora um visor LCD por onde são mostradas algumas informações técnicas. As informações fornecidas incluem nome do fabricante, modelo, capacidade e número serial do dispositivo USB conectado. Outras informações adicionais são fornecidas na intenção de ajudar em situações adversas.


Na computação forense este tipo de equipamento é recomendável pois os ambientes gráficos dos sistemas operacionais modernos tem o costume de montar o dispositivo automaticamente, com acesso total, de leitura e escrita. E isto pode ser um problema se o sistema executar, em segundo plano, algum processo com acesso aos dados armazenados, alterando por exemplo os metadados dos arquivos e assim prejudicando a evidência.

Em um sistema Linux é possível montar manualmente um dispositivo de armazenamento no modo de somente leitura. Este procedimento garante uma certa proteção aos dados. No sistema Windows dá um pouco mais de trabalho controlar o acesso aos dispositivos. O uso do Tableau Forensic USB Bridge torna a proteção facilitada e assegurada.

Informações oficiais sobre o Forensic USB Bridge podem ser encontradas na página da Tableau na Internet, pelo endereço http://www.tableau.com/. A marca Tableau pertence a Guidance Software (http://www.guidancesoftware.com/).

segunda-feira, 18 de outubro de 2010

Computação forense com o Sleuth Kit e Autopsy

O The Sleuth Kit (TSK) e o Autopsy são ferramentas livres para investigação digital, isto é, forense digital, que podem ser executadas em sistemas Windows, Linux, BSD, OS X e Solaris. São ferramentas para serem usadas em análise de sistemas de arquivos NTFS, FAT, HFS+, Ext2, Ext3 e outros.

O The Sleuth Kit é um conjunto de ferramentas forenses para linha de comando e o Autopsy é uma interface gráfica para estas ferramentas do TSK. O acesso à interface do Autopsy se dá por um navegador Web, o Autopsy cria um servidor Web e seus scripts geram as páginas da interface.

A instalação em um sistema Linux é bastante simples. Algumas distros disponibilizam os pacotes compilados, em outras podemos instalar a partir dos pacotes fontes disponíveis em http://www.sleuthkit.org/. Os arquivos para baixar são sleuthkit-x.y.z.tar.gz e autopsy-x.yz.tar.gz.

Na instalação a partir dos pacotes fontes, o conteúdo do Sleuth Kit deve ser extraído para um diretório qualquer e dentro dele executar os comando padrões de compilação: ./configure, make, make install. Dependências extras poderão ser requeridas e se tudo der certo, já está pronto. O conteúdo do Autopsy deve ser extraído para um diretório definitivo e basta executar os comandos ./configure e make. Durante sua instalação o Autopsy pede que se determine um diretório base para onde serão armazenados os casos. Após a conclusão da instalação, o servidor Web do Autopsy precisa ser iniciado e no navegador digita-se o endereço "http://localhost:9999/autopsy".

A interface do Autopsy é composta por várias páginas, por estas páginas o investigador vai criar um caso, adicionar as peças que serão examinadas e por fim realizar os diversos exames disponíveis. A seguir um pequeno passo a passo de como inserir uma unidade de armazenamento para a análise forense:

Na página inicial, crie um novo caso e dê um nome à ele. Opcionalmente pode-se preencher com a descrição, nome dos investigadores etc.

Em seguida, adicione um computador ao caso. Opcionalmente preencha a descrição e outras informações que julgar necessárias.

Por fim, adicione uma imagem da unidade de armazenamento deste computador que será investigado. A imagem não é necessariamente um arquivo imagem criado com um disk dump, pode ser também o caminho para o dispositivo físico, caso a unidade esteja conectada diretamente na controladora de disco ou via adaptador USB.

Adicionando uma imagem no Autopsy

Com estes três passos concluídos podemos realizar a investigação forense na unidade de armazenamento. Basicamente temos a análise da unidade e a linha do tempo das atividades dos arquivos.

Página de análise de imagens adicionadas

As partições reconhecidas recebem as identificações com letras de unidade, como no Sistema Windows. Selecionando a letra da unidade de armazenamento e clicando no botão "Analyze" vamos para uma página onde temos diversas opções de análise:

O botão "File Analysis" abre um conjunto de páginas onde podemos navegar pelo sistema de arquivos, possibilitando ver o conteúdo dos arquivos alocados e não alocados.

Página de análise de arquivos

O botão "Keyword Search" abre a página com um mecanismo de busca de palavra chave para o espaço alocado e não alocado.

O botão "File Type" abre um conjunto de páginas que fornecem uma ferramenta de separação dos arquivos pelo tipo e com a possibilidade de extração e recuperação de todos os arquivos, alocados e não alocados, para o diretório base onde os casos são armazenados.

Retornando à página inicial de análise das imagens, temos o botão "File Activity Time Lines". Clicando neste botão, abre-se um conjunto de páginas que fornecem ferramentas para a criação e visualização de uma linha do tempo das atividades de acesso dos arquivos. A linha do tempo é criada a partir das informações dos metadados dos arquivos e pode conter inclusive arquivos não alocados que foram recuperados.

Página de visualização da linha do tempo

Esta é uma pequena descrição de algumas das ferramentas contidas na dupla Sleuth Kit e Autopsy. Tratam-se de dois excelentes conjuntos de softwares que atendem em quase todas as necessidades do investigador forense e pode-se considerar indispensável em um laboratório forense computacional.

segunda-feira, 26 de julho de 2010

Repositório de ferramentas forenses para Linux

O CERT (http://www.cert.org/) é uma organização fundada pelo Departamento de Defesa dos Estados Unidos, juntamente com algumas outras agências federais civis. O CERT dedica-se em garantir treinamentos adequados sobre tecnologias usadas para conter ataques em sistemas de rede, limitar os danos e assegurar a continuidade dos serviços críticos.

O CERT mantém em seu website um repositório de softwares para uso em computação forense. O repositório contém pacotes prontos para ser instalados em uma distro Linux, contudo, atualmente só a distribuição Fedora é suportada.

Excelentes ferramentas estão disponibilizadas, entre elas o Sleuthkit/Autopsy, o dcfldd, o Volatility, o Glimpse etc. Confira nestes endereços:

http://www.cert.org/forensics/
http://www.cert.org/forensics/repository/
http://www.cert.org/forensics/repository/fedora/