ferramentas forense em sistemas gnu linux e microsoft windows
Transcrição
ferramentas forense em sistemas gnu linux e microsoft windows
FERRAMENTAS FORENSE EM SISTEMAS GNU LINUX E MICROSOFT WINDOWS Bolsista: Eric Barbosa Jales de Carvalho Coordenador: Nathan Franklin Saraiva de Sousa Teresina Dezembro/2009 SUMÁRIO 1 INTRODUÇÃO ........................................................................................................................6 2 JUSTIFICATIVA DE EXECUÇÃO DO PROJETO ..............................................................7 3 OBJETIVO E METAS .............................................................................................................8 4 COMPUTAÇÃO FORENSE ...................................................................................................9 4.1 PROCEDIMENTOS ............................................................................................................................. 9 5 GNU LINUX .......................................................................................................................... 11 5.1 Live Forense ................................................................................................................................... 11 5.1.1 Memória Principal do sistema ...................................................................................................... 11 5.1.2 Tráfego da rede do sistema........................................................................................................... 13 5.1.3 Informações sobre as tabelas de roteamento .............................................................................. 15 5.1.4 Informações sobre a tabela ARP ................................................................................................... 16 5.1.5 Informações de processos ativos .................................................................................................. 16 5.1.6 Informações de módulos do sistema ............................................................................................ 19 5.1.7 Informações de registro do sistema .............................................................................................. 19 5.1.8 Informações sobre o /proc e o boot ............................................................................................. 21 5.1.9 Informações sobre o Disco Rígido ................................................................................................. 21 5.1.10 Esterilizar as mídias para a cópia ................................................................................................ 22 5.1.11 Gerar imagem do Disco Rígido .................................................................................................... 23 5.2 Post Mortem .................................................................................................................................. 24 5.2.1 Camada Física ................................................................................................................................ 25 5.2.2 Camada de Dados ......................................................................................................................... 25 5.2.3 Camada de Sistema de Arquivos ................................................................................................... 27 5.2.3 Camada de Metadados ................................................................................................................. 28 5.2.3 Camada de Arquivos ..................................................................................................................... 30 6 MICROSOFT WINDOWS .................................................................................................. 32 6.1 Live Forense ................................................................................................................................... 32 6.1.1 Memória Principal do sistema ...................................................................................................... 33 6.1.2 Sistema Operacional ..................................................................................................................... 34 6.1.3 Usuários e Grupos do sistema ....................................................................................................... 37 6.1.4 Informações de processos ativos .................................................................................................. 40 6.1.5 Serviços em execução ................................................................................................................... 41 6.1.6 Tráfego da rede do sistema........................................................................................................... 43 6.1.7 Informações de registro do sistema .............................................................................................. 46 6.1.8 Informações de registro de Eventos ............................................................................................. 47 6.1.8 Analisando a Lixeira ...................................................................................................................... 48 6.1.9 Analisando histórico de navegação ............................................................................................... 49 6.2 Post Mortem .................................................................................................................................. 50 6.2.1 Geração da Timeline ..................................................................................................................... 50 6.2.2 Análise de arquivos com o HELIX .................................................................................................. 51 7 MICROSOFT WINDOWS - GUI ....................................................................................... 54 7.1 Informações sobre o sistema ......................................................................................................... 54 7.2 Informações sobre os dispositivos ................................................................................................. 57 7.3 Informações gerais sobre o sistema ............................................................................................... 58 7.4 Informações extras sobre o sistema ............................................................................................... 60 7.5 Informações senhas e históricos de navegação .............................................................................. 62 8 CONCLUSÃO ........................................................................................................................ 63 9 DIFICULDADES ENCONTRADAS................................................................................... 64 10 BIBLIOGRAFIA ................................................................................................................ 65 ANEXOS ................................................................................................................................... 67 ANEXO 1 – ADQUIRIR IMAGEM FORENSE ATRAVÉS DO HELIX ............................ 67 HELIX - DD ............................................................................................................................................ 67 HELIX – FTK IMAGER ............................................................................................................................ 68 ANEXO 2 – RECUPERAÇÃO DE ARQUIVOS EXT2 E EXT3 ......................................... 74 Descobrir informações sobre o sistema de arquivo.............................................................................. 74 Recuperar arquivos que não foram sobrescritos .................................................................................. 74 Recuperar arquivos que foram sobrescritos......................................................................................... 75 Recuperar arquivos que foram parcialmente sobrescritos ................................................................... 76 Recuperação de arquivos journaling .................................................................................................... 77 ANEXO 3 – FORENSE COM O AUTOPSY ......................................................................... 82 Iniciando o Autopsy ............................................................................................................................. 82 Criando um novo Caso a ser periciado ................................................................................................. 82 Adicionando um host ao caso .............................................................................................................. 84 Adicionando uma imagem ao caso ...................................................................................................... 85 Criação da Timeline ............................................................................................................................. 86 Recuperando strings da imagem .......................................................................................................... 89 Verificar arquivos baseados em assinaturas ........................................................................................ 93 Verificar os Metadados ........................................................................................................................ 95 Verificar Integridade ............................................................................................................................ 97 Abrir um caso....................................................................................................................................... 97 ANEXO 4 – USANDO A FERRAMENTA BMAP................................................................ 99 Criando um arquivo para testes ........................................................................................................... 99 Verificando conteúdo do arquivo ......................................................................................................... 99 Verificando o espaço ocupado pelo arquivo ........................................................................................ 99 Verificando informações do slack space............................................................................................... 99 Verificando informações do arquivo .................................................................................................. 100 Colocando informação no slack space do arquivo .............................................................................. 100 Verificando novamente informações do slack space .......................................................................... 100 Verificando informações do arquivo .................................................................................................. 100 Checando novamente o conteúdo do arquivo ................................................................................... 101 Verificando novamente o espaço ocupado pelo arquivo.................................................................... 101 ANEXO 5 – ALTERNATE DATA STREAMS .................................................................. 102 Criando um arquivo para testes ......................................................................................................... 102 Verificando tamanho do arquivo ....................................................................................................... 102 Verificando o conteúdo do arquivo .................................................................................................... 102 Adicionando um ADS ao arquivo........................................................................................................ 102 Verificando novamente tamanho do arquivo .................................................................................... 102 Verificando novamente o conteúdo do arquivo ................................................................................. 103 Verificando o conteúdo de um ADS no arquivo .................................................................................. 103 ÍNDICE DE FIGURAS Figura 1 – Executar o prompt do DOS ......................................................................................... 32 Figura 2 – Configurar variável PATH............................................................................................ 32 Figura 3 – Prompt do DOS alterado ............................................................................................ 33 Figura 4 – Tela inicial do HELIX .................................................................................................... 54 Figura 5 – Selecionar o opção pelo menu ................................................................................... 54 Figura 6 – Tela de confirmação do visualizador do sistema........................................................ 55 Figura 7 – Módulos Disponíveis .................................................................................................. 55 Figura 8 – Exportando um relatório ............................................................................................ 55 Figura 9 – Gerar relatório I .......................................................................................................... 56 Figura 10 – Gerar relatório II ....................................................................................................... 56 Figura 11 – Gerar relatório III ...................................................................................................... 56 Figura 12 – Relatório em HTML ................................................................................................... 57 Figura 13 – Selecionar o opção pelo menu ................................................................................. 57 Figura 14 – Tela de confirmação do Drive Manager ................................................................... 57 Figura 15 – Tela inicial do Drive Manager ................................................................................... 58 Figura 16 – Verificando a opção Disk Info ................................................................................... 58 Figura 17 – Selecionar o opção pelo menu ................................................................................. 58 Figura 18 – Tela de confirmação do Drive Manager ................................................................... 59 Figura 19 – Tela inicial do WinAudit ............................................................................................ 59 Figura 20 – Relatório finalizado................................................................................................... 59 Figura 21 – Exportar relatório ..................................................................................................... 60 Figura 22 – Segunda tela do menu de Respostas a Incidentes de Segurança ............................ 60 Figura 23 – Tela de confirmação do RootkitRevealer ................................................................. 60 Figura 24 – Tela do RootkiteRevealer ......................................................................................... 61 Figura 25 - Tela de confirmação do PC On/Off ........................................................................... 61 Figura 26 – Tela de exibição do PC On/Off.................................................................................. 61 Figura 27 – Terceira tela do menu de respostas a incidentes de segurança .............................. 62 Figura 28 – Aquisição da imagem pelo DD .................................................................................. 67 Figura 29 – Confirmação do comando DD .................................................................................. 67 Figura 30 – FTK Imager ................................................................................................................ 68 Figura 31 – Menu de opções do FTK ........................................................................................... 68 Figura 32 – Tipo evidência a ser periciada .................................................................................. 69 Figura 33 – Dispositivo a ser duplicado ....................................................................................... 70 Figura 34 – Tela de criação de imagem I ..................................................................................... 70 Figura 35 – Tipo de imagem ........................................................................................................ 71 Figura 36 – Informações para o relatório.................................................................................... 71 Figura 37 – Tela de criação de imagem II .................................................................................... 71 Figura 38 – Tela de criação de imagem III ................................................................................... 72 Figura 39 – Confirmação da integridade da imagem .................................................................. 72 Figura 40 – Relatório gerado pelo FTK ........................................................................................ 73 Figura 41 – Página inicial do Autopsy.......................................................................................... 82 Figura 42 – Criação de um novo caso.......................................................................................... 83 Figura 43 – Confirmação de criação de um novo caso................................................................ 83 Figura 44 – Adicionar um novo host ........................................................................................... 84 Figura 45 – Confirmação da adição de um novo host ................................................................. 84 Figura 46 – Adicionar uma nova imagem I .................................................................................. 85 Figura 47 – Adicionar uma nova imagem II ................................................................................. 85 Figura 48 – Confirmação da adição da imagem .......................................................................... 86 Figura 49 – Imagens adicionadas ao caso ................................................................................... 86 Figura 50 – Criação da Timeline I ................................................................................................ 86 Figura 51 – Criação da Timeline II ............................................................................................... 87 Figura 52 – Criação da Timeline III .............................................................................................. 87 Figura 53 – Criação da Timeline IV .............................................................................................. 88 Figura 54 – Confirmação da criação da Timeline ........................................................................ 88 Figura 55 – Visualização da Timeline .......................................................................................... 88 Figura 56 – Janela de análise de Imagens ................................................................................... 89 Figura 57 – Detalhes da Imagem I ............................................................................................... 89 Figura 58 – Confirmação da extração de strings da imagem ...................................................... 90 Figura 59 – Detalhes da Imagem II .............................................................................................. 90 Figura 60 – Confirmação da extração de fragmentos não alocados ........................................... 91 Figura 61 – Detalhes da Imagem III ............................................................................................. 91 Figura 62 – Confirmação da extração das strings de fragmentos não alocados ......................... 92 Figura 63 – Detalhes da Imagem IV............................................................................................. 92 Figura 64 – Informações gerais sobre a imagem ........................................................................ 93 Figura 65 – Análise de arquivos baseados em assinaturas I ....................................................... 93 Figura 66 – Análise de arquivos baseados em assinaturas II ...................................................... 94 Figura 67 – Análise de arquivos baseados em assinaturas III ..................................................... 94 Figura 68 – Link para visualização dos arquivos .......................................................................... 94 Figura 69 – Arquivos listados baseados em assinaturas ............................................................. 95 Figura 70 – Informações sobre os metadados I .......................................................................... 95 Figura 71 – Informações sobre os metadados II ......................................................................... 96 Figura 72 – Análise da Imagem ................................................................................................... 96 Figura 73 – Validação de algum item .......................................................................................... 97 Figura 74 – Abrir um caso............................................................................................................ 97 Figura 75 – Opções de casos a serem abertos ............................................................................ 98 Figura 76 – Opções de hosts a serem abertos ............................................................................ 98 1 INTRODUÇÃO Com a popularização da Internet, as barreiras físicas foram eliminadas e a falsa idéia do anonimato que esta proporciona, gerou um grande problema para as empresas e/ou instituições. Os crimes cibernéticos passaram a ser realizados independentes da localização geográfica (cidades, estados, países) e, recentemente, do nível de conhecimento do atacante. Já foi o tempo em que as ameaças aos servidores de uma instituição ou empresa – seja ela de pequena, média ou grande porte – estavam confinadas aos limites da LAN. As ameaças contavam com o limitador físico e para tanto era necessário estar fisicamente presentes na rede interna. Dessa forma, surge no mundo da segurança digital a forense computacional: um campo de pesquisa da Ciência da Computação que apóia a área Criminal, onde a preservação, coleta e análise dos dados periciais, juntamente com a apresentação de vestígios e a produção de um laudo técnico têm valor jurídico, desde que estas provas eletrônicas não sejam manipuladas sem padrões pré-estabelecidos, pois assim não haveria possíveis contestações. 6 2 JUSTIFICATIVA DE EXECUÇÃO DO PROJETO No Brasil, e não muito diferente no nosso estado, existem poucos profissionais que trabalham com Forense Computacional. Existem algumas empresas com a função de investigar crimes digitais, mas a grande maioria desses profissionais se encontra na Polícia Civil e na Polícia Federal. As utilizações de procedimentos Forenses na área da computação são de suma importância para a identificação de uma possível invasão em um computador. Através das técnicas Forenses podemos descobrir a forma como ocorreu à invasão, se houve alterações nos dados, que tipo de informação foi acessado e, como uma invasão corresponde a um crime eletrônico, podem-se tomar medidas legais contra o invasor. 7 3 OBJETIVO E METAS Esse projeto tem como objetivo o estudo de ferramentas FOSS (Free and Open Source Software) de Forenses aplicadas à Computação. As ferramentas utilizadas e os métodos aqui especificados não podem ser considerados como uma base para referência definitiva em Forense Computacional. As bibliografias indicadas servem de base para uma formação completa em uma pesquisa mais elaborada. As principais metas são investigar, preservar os dados periciados, coletar informações (inclusive artefatos), analisar e identificar as ações de um potencial invasor. Vale à pena lembrar que nem sempre a Forense Computacional serve para provar que certa pessoa cometeu um crime cibernético. Às vezes, ela funciona também para provar a inocência do acusado. 8 4 COMPUTAÇÃO FORENSE A Computação Forense pode ser dividia em três etapas: Forense In Vivo ou Live Forensic: Corresponde a forense realizada pelo perito quando o mesmo encontra a máquina a ser investigada ainda ligada. Usando ferramentas e boas práticas o perito poderá realizar a coleta e armazenar os dados coletados em outro local. Forense de Rede ou Network Forensic: Corresponde a forense realizada pelo perito nos ativos de rede envolvidos com a máquina alvo. Como a grande maioria dos ativos de rede registra suas ações, o perito poderá colher os artefatos, reconstruir comunicações de rede interceptada, verificar log´s gerados, entre outras ações. Forense Post Mortem ou Post Mortem Forensic: Corresponde a forense realizada pelo perito em todos os dados periciais coletados na máquina já desligada. Tarefa essa realizada na máquina do perito utilizando ferramentas com esse propósito. O perito busca cruzar as informações adquiridas nas três etapas da Forense. O intuito é adquirir um bom entendimento do caso estudado e elaborar do laudo pericial. 4.1 PROCEDIMENTOS Durante a elaboração desse material, grande parte das ferramentas utilizadas era encontrada na distribuição HELIX da empresa E-FENSE. A distribuição HELIX ainda era assegurada pela licença GPL e, com o decorrer do tempo, passou a ser cobrado um valor para se ter uma nova versão da sua distribuição. Isso não quer dizer que não iremos mais usufruir das ferramentas que se encontram na distribuição paga ou mesmo que é uma exclusividade da distribuição possuir tais ferramentas. Existem outras distribuições como CAINE, FCCU, FDTK que se não possuem as mesmas ferramentas da distribuição HELIX, possuem similares. As distribuições servem para eliminar o tempo que o perito ia perder montando o seu CD/DVD de ferramentas Forenses. Entre outras palavras, basta que o perito tenha as ferramentas compiladas estaticamente em um CD/DVD com as devidas permissões atribuídas. A metodologia que segue a Computação Forense serve para qualquer plataforma, se diferenciando apenas em alguns detalhes. A forma como uma máquina 9 com o sistema Microsoft Windows foi invadida, bem como o objetivo que o invasor busca, se difere e muito, por exemplo, de uma máquina invadida com o sistema GNU Debian, mas a metodologia aplicada nas máquinas permanece a mesma. O projeto faz um estudo em cima de duas plataformas mais utilizadas: GNU Debian e Microsoft Windows XP. Devido às diferenças e peculiaridades de cada plataforma existem ferramentas forenses específicas para cada uma delas. As técnicas do Modus Operandi do invasor, cadeia de custódia, assim como o procedimento de registro visual (fotos) e preservação do local fogem ao escopo desse projeto que visa apenas o estudo das ferramentas forense. 10 5 GNU LINUX 5.1 Live Forense Segundo a RFC 3227, o perito deve fazer a coleta das provas a partir do mais volátil para o menos volátil. Dentre a ordem de volatilidade podemos destacar: Registos, cache ; Memória de Periféricos ; Memória Principal do sistema ; Roteamento na tabela, arp cache, processo tabela, estatísticas kernel Sistemas de arquivos temporários ; Disco ; Log de dados de controle remoto que seja relevante para o sistema em causa; Configuração física, topologia ; Mídia (cd, dvd, pen drive, fitas magnéticas, etc). No cenário de teste foi usado um cd contento todas as ferramentas utilizadas nos testes e uma máquina com ip 10.10.10.100 como estação forense. 5.1.1 Memória Principal do sistema Na memória principal estão contidas todas as informações dos processos em execução, senhas em texto claro, dados e informações manipuladas antes mesmo da escrita no disco rígido. Essas informações só são obtidas através de dumps de memória, seja na captura de arquivos core ou pela interface virtual criada no diretório /proc. A ferramenta memdump faz uma cópia da memória RAM em uma imagem do tipo RAW. Por padrão ela realiza a cópia da memória física (/dev/mem), mas, através do parâmetro -k, é possível realizar o dump da memória do kernel (/dev/kmem). Enviando informações sobre a memória principal na máquina suspeita # /media/cdrom/memdump | /media/cdrom/nc 10.10.10.100 3232 # /media/cdrom/memdump -k | /media/cdrom/nc 10.10.10.100 3232 Recebendo informações sobre a memória principal na estação forense # nc -l -p 3232 | tee mem_princ | md5sum $1 > mem_princ.md5 # nc -l -p 3232 | tee mem_kernel | md5sum $1 > mem_kernel.md5 11 Obs.: O comando tee recebe como seu stdin o stdout do comando pipe (“|”). Joga o resultado para a saída padrão, no caso a tela do computador, e salva em um arquivo definido pelo usuário. Sendo assim o comando md5sum gera o hash do arquivo gerado pelo comando tee e o salva. Apesar da comunidade acadêmica ter provado que o hash MD5 pode ter colisões e ser descoberto, o perito pode optar por tirar mais um hash com um comando sha1sum e acrescentar juntamente com o hash gerado do comando md5sum, ou simplesmente usar hash´s mais robustos como sha224sum, sha256sum, sha384sum ou sha512sum. Outras formas de coletas de informações voláteis da memória RAM é através do comando dd. Este realiza bit-a-bit um copia de dados binários, que podem ser arquivos ou mesmos dispositivos físicos ou, dependendo da situação, virtuais. Enviando informações de memória da área de kernel na máquina suspeita # /media/cdrom/dd if=/dev/mem | /media/cdrom/nc 10.10.10.100 3232 # /media/cdrom/dd if=/dev/kmem | /media/cdrom/nc 10.10.10.100 3232 # /media/cdrom/dd if=/dev/rswap | /media/cdrom/nc 10.10.10.100 3232 # /media/cdrom/dd if=/proc/kcore | /media/cdrom/nc 10.10.10.100 3232 Recebendo informações de memória da área de kernel na estação forense # nc -l -p 3232 | tee mem_pric | md5sum $1 > mem_princ.md5 # nc -l -p 3232 | tee mem_kernel | md5sum $1 > mem_kernel.md5 # nc -l -p 3232 | tee rswap | md5sum $1 > rswap.md5 # nc -l -p 3232 | tee kcore | md5sum $1 > kcore.md5 Obs.: Se a máquina suspeita tiver 2 GB de RAM, o dump da memória deverá ter o mesmo tamanho. Isso não ocorre em algumas distribuições que utilizam o SELINUX devido à proteção este faz no /dev/mem. Vale salientar que é importante ter coerência nas informações de tempo que as evidências trazem. Por isso, após o dump de memória, é importante colher informações sobre o tempo da máquina suspeita. Enviando informações sobre a data da máquina suspeita # /media/cdrom/date | /media/cdrom/nc 10.10.10.100 3232 12 Obs.: Caso o perito opte por coletar a data usando o formato (UTC) deve-se fazer o uso do parâmetro -u no comando date. Recebendo informações sobre a data da máquina alvo na estação forense: # nc -l -p 3232 | tee data | md5sum $1 > data.md5 Enviando informações sobre o tempo em que a máquina suspeita está no ar # /media/cdrom/uptime | /media/cdrom/nc 10.10.10.100 3232 Recebendo informações sobre o tempo ativo da máquina alvo na estação forense # nc -l -p 3232 | tee uptime | md5sum $1 > uptime.md5 Enviando informações sobre o horário da BIOS da máquina suspeita # /media/cdrom/hwclock | /media/cdrom/nc 10.10.10.100 3232 Recebendo informações sobre o horário da BIOS da máquina alvo na estação forense # nc -l -p 3232 | tee bios | md5sum $1 > bios.md5 5.1.2 Tráfego da rede do sistema Com a utilização de sniffers, o perito tem a possibilidade de capturar os datagramas que trafegam na rede. Assim, é possível reconstruir a troca de informações entre a máquina atacante e a máquina alvo. Nesse tipo de procedimento, a máquina forense tem que estar no mesmo enlace da máquina alvo e conectada em uma porta do switch que faz espelhamento com a porta da máquina alvo. Isso se diz respeito a um ambiente tipicamente projetado para dar suporte à resposta a Incidente de Segurança. Na máquina alvo podemos levantar informações sobre os estados das conexões, tabelas de roteamento, processos ativos, entre outros. Enviando informações sobre as interfaces de rede da máquina suspeita # /media/cdrom/ifconfig -a | /media/cdrom/nc 10.10.10.100 3232 13 Obs.: O comando ifconfig juntamente com o parâmetro –a exibe as configurações da interfaces ativas ou não. Recebendo informações sobre as interfaces de rede na estação forense # nc -l -p 3232 | tee interfaces | md5sum $1 > interfaces.md5 Enviando informações sobre Conexões de Redes TCP ativas da máquina suspeita # /media/cdrom/netstat -natp | /media/cdrom/tee conexoes.tcp | /media/cdrom/nc 10.10.10.100 3232 Obs.: O comando netstat pode descobrir rapidamente a existência de portas abertas, conexões estabelecidas e rotas estáticas inseridas manualmente. Recebendo informações sobre as Conexões TCP ativas na estação forense # nc -l -p 3232 | tee conexoes.tcp | md5sum $1 > conexoes.tcp.md5 Enviando informações sobre Conexões de Redes UDP ativas da máquina suspeita # /cdrom/netstat -naup | tee conexoes.udp | /cdrom/nc 10.10.10.100 3232 Recebendo informações sobre as Conexões UDP ativas na estação forense # nc -l -p 3232 | tee conexoes.udp | md5sum $1 > conexoes.udp.md5 Enviando informações sobre Conexões de Redes RAW ativas da máquina suspeita # /media/cdrom/netstat -nawp | /media/cdrom/tee conexoes.raw | /media/cdrom/nc 10.10.10.100 3232 Recebendo informações sobre as Conexões RAW ativas na estação forense # nc -l -p 3232 | tee conexoes.raw | md5sum $1 > conexoes.raw.md5 14 5.1.3 Informações sobre as tabelas de roteamento Enviando atividades sobre as rotas estáticas da máquina suspeita # /media/cdrom/route -n | /media/cdrom/tee rotas_estaticas | /media/cdrom/nc 10.10.10.100 3232 # /media/cdrom/cat /proc/net/route | /media/cdrom/tee rotas_estaticas_proc | /media/cdrom/nc 10.10.10.100 3232 Obs.: O comando route exibe e manipula a tabela de roteamento IP. O diretório virtual /proc/net/route contém as informações sobre os roteamentos IP realizados pelo kernel. Recebendo informações sobre as rotas estáticas na estação forense # nc -l -p 3232 | tee rotas_estaticas | md5sum $1 > rotas_estaticas.md5 # nc -l -p 3232 | tee rotas_estaticas_proc | md5sum $1 > rotas_estaticas_proc.md5 Enviando informações em cache de rotas estáticas da máquina suspeita # /media/cdrom/route -n -C | /media/cdrom/tee cache_rotas_estaticas | /media/cdrom/nc 10.10.10.100 3232 # /media/cdrom/cat /proc/net/rt_cache | /media/cdrom/tee rotas_rt_cache | /media/cdrom/nc 10.10.10.100 3232 Recebendo informações sobre o cache das rotas estáticas da máquina suspeita na estação forense # nc -l -p 3232 | tee cache_rotas_estaticas | md5sum $1 > cache_rotas_estaticas.md5 # nc -l -p 3232 | tee rotas_rt_cache | md5sum $1 > rotas_rt_cache.md5 15 5.1.4 Informações sobre a tabela ARP Enviando informações sobre a tabela ARP da máquina suspeita # /media/cdrom/arp -an | /media/cdrom/nc 10.10.10.100 3232 Obs.: O comando arp exibe e manipula o cachê ARP do sistema. Recebendo informações sobre a tabela ARP na estação forense # nc -l -p 3232 | tee tabela_arp | md5sum $1 > tabela_arp.md5 5.1.5 Informações de processos ativos As informações dos processos podem ser coletadas pelos comandos ps, pstree e lsof. O primeiro, utilizando alguns parâmetros, mostra o estado dos processos naquele momento. O segundo tem a função de exibir a árvore de processos. E o terceiro, mas não menos importante, consegue integrar funcionalidades de diversas ferramentas como netstat, ps e ainda listar todos os arquivos abertos (parâmetro -l), listar todos os arquivos de rede abertos (parâmetro -i), listar todos os processos com socket Unix aberto (parâmetro -U), entre outros. Enviando informações sobre os processos ativos na máquina suspeita # /media/cdrom/ps -aufex | /cdrom/nc 10.10.10.100 3232 # /media/cdrom/pstree | /cdrom/nc 10.10.10.100 3232 # /media/cdrom/lsof -l | /cdrom/nc 10.10.10.100 3232 # /media/cdrom/lsof -i | /cdrom/nc 10.10.10.100 3232 # /media/cdrom/lsof -U | /cdrom/nc 10.10.10.100 3232 Recebendo informações sobre os processos ativos da máquina suspeita na estação forense # nc -l -p 3232 | tee psaufex | md5sum $1 > psaufex.md5 # nc -l -p 3232 | tee pstree | md5sum $1 > pstree.md5 # nc -l -p 3232 | tee lsof_todos | md5sum $1 > lsof_todos.md5 16 # nc -l -p 3232 | tee lsof_rede_aberto | md5sum $1 > lsof_rede_aberto.md5 # nc -l -p 3232 | tee lsof_socket_aberto | md5sum $1 > lsof_socket_aberto.md5 Obs.: É importante, em alguns momentos, capturar possíveis processos excluídos. Esses processos podem ter sido gerados por algum Malware e para não ser identificado, foi apagado. Enviando informações sobre os processos excluídos na máquina suspeita # /media/cdrom/lsof | grep -i DEL | /cdrom/nc 10.10.10.100 3232 Recebendo informações sobre os processos excluídos da máquina suspeita na estação forense # nc -l -p 3232 | tee lsof_del | md5sum $1 > lsof_del.md5 Caso o perito desconfie de algum processo e queira obter mais informações poderá realizar alguns procedimentos. De forma simples, uma verificação com o comando fuser. Esse comando identifica através do diretório /proc, os arquivos ou sockets que estão sendo usados como processo. # fuser -v [porta]/tcp ou fuser -v [porta]/udp # /media/cdrom/fuser -v 2261/udp | /cdrom/nc 10.10.10.100 3232 Outra forma de recuperar informações sobre os processos é mexendo diretamente com o diretório /proc. Para cada processo, é criado um diretório dentro do /proc contendo diversos dados sobre ele. # /media/cdrom/ls /proc/1883 17 A saída desse comando demonstra as diversas informações disponíveis sobre o processo de pid 1883. Alguns desses arquivos contêm dados importantes sobre o processo em execução. Análise de conteúdo de alguns arquivos do processo no diretório /proc. Caso algum processo com um nome comum não esteja sendo executado a partir do seu diretório comum, basta verificar no arquivo cwd. Esse arquivo é um link para o diretório corrente do processo. # /media/cdrom/ls -l /proc/1883/cwd Caso se deseja verificar a linha de comando que foi utilizada para dar início ao processo, devido a uma diferença ou não no comando acima, basta verificar o conteúdo do arquivo cmdline. # /media/cdrom/cat /proc/1883/cmdline As variáveis de ambiente utilizadas no momento da execução do programa se encontram no arquivo environ. # /media/cdrom/cat /proc/1883/environ O status do processo como: usuário que executou, grupo que pertence, quantidade de memória e processador utilizados, entre outras informações se encontram no arquivo status. # /media/cdrom/cat /proc/1883/status Pelo /proc também é possível recuperar um processo que está em memória sem precisar do arquivo correspondente em disco realizando apenas alguns passos. Descobrir o número do processo ao qual aquele serviço está vinculado # /media/cdrom/ps aux | /media/cdrom/grep telnet Com o número do processo, salvar o binário do serviço # /media/cdrom/cat /proc/1596/exe | /media/cdrom/nc 10.10.10.100 3232 18 5.1.6 Informações de módulos do sistema Os módulos no sistema servem para diversas funcionalidades. Dentre elas podemos destacar a ativação de um novo recurso ao kernel, reconhecimento de um novo dispositivo adicionado a máquina, reconhecimento de uma nova linguagem ao sistema e também manipular as chamadas do sistema operacional. Esta última funcionalidade é uma característica presente nos rootkit´s LKM (Loadable Kernel Modules). Enviando informações sobre os módulos ativos da máquina suspeita: # /media/cdrom/lsmod | /media/cdrom/nc 10.10.10.100 3232 Obs.: O comando lsmod exibe os módulos ativados do sistema. # /media/cdrom/cat /proc/modules | /media/cdrom/nc 10.10.10.100 3232 Recebendo informações sobre os módulos ativos da máquina suspeita na estação forense # nc -l -p 3232 | tee modulos | md5sum $1 > modulos.md5 # nc -l -p 3232 | tee proc_modulos | md5sum $1 > proc_modulos.md5 5.1.7 Informações de registro do sistema Por mais que existam técnicas anti-forense com o intuito de não deixar vestígios e por conseqüência apagar os logs do sistema, os logs têm papeis relevantes para uma análise forense. Enviando informações sobre os registros do sistema da máquina suspeita # /media/cdrom/w | /media/cdrom/nc 10.10.10.100 3232 # /media/cdrom/who -a | /media/cdrom/nc 10.10.10.100 3232 Obs.: O comando w mostra quem está logado no sistema e o que este usuário está fazendo. Já o comando who exibe quem está conectado no sistema. Ambos recorrem às informações contidas no arquivo /var/run/utmp. 19 # /media/cdrom/last | /media/cdrom/nc 10.10.10.100 3232 # /media/cdrom/lastb | /media/cdrom/nc 10.10.10.100 3232 # /media/cdrom/lastlog | /media/cdrom/nc 10.10.10.100 3232 Obs.: O comando last recorre das informações contidas no arquivo /var/log/wtmp para exibir uma lista dos usuários que entraram e saíram do sistema. Em confronto com o comando last usa-se o comando lastb. O comando lastb informa baseado no arquivo /var/log/btmp, as informações sobre as ultimas entradas malsucedidas no sistema. O comando lastlog levanta as informações das ultimas entradas e saídas de todos os usuários cadastrados no sistema. # /media/cdrom/cat /var/log/syslog | /media/cdrom/nc 10.10.10.100 3232 # /media/cdrom/cat /var/log/messages | /media/cdrom/nc 10.10.10.100 3232 # /media/cdrom/cat /root/.bash_history | /media/cdrom/nc 10.10.10.100 3232 Obs.: As informações contidas no syslog, no messages e o histórico dos usuários acrescentam mais riqueza na coleta das informações sobre no registro. No exemplo acima foi coletado apenas o histórico do usuário root. Recebendo informações sobre os registros do sistema da máquina suspeita na estação forense # nc -l -p 3232 | tee last | md5sum $1 > last.md5 # nc -l -p 3232 | tee lastb | md5sum $1 > lastb.md5 # nc -l -p 3232 | tee lastlog | md5sum $1 > lastlog.md5 # nc -l -p 3232 | tee syslog | md5sum $1 > syslog.md5 # nc -l -p 3232 | tee messages | md5sum $1 > messages.md5 # nc -l -p 3232 | tee root_history | md5sum $1 > root_history.md5 20 5.1.8 Informações sobre o /proc e o boot Algumas informações sobre o sistema ainda podem ser coletadas no /boot. Informações como versão do kernel, do processador, partição SWAP e outras partições, informações do boot, entre outras. Enviando informações sobre o diretório virtual do sistema da máquina suspeita # /media/cdrom/cat /proc/version | /media/cdrom/nc 10.10.10.100 3232 # /media/cdrom/cat /proc/sys/kernel/domainname | /media/cdrom/nc 10.10.10.100 3232 # /media/cdrom/cat /proc/cpuinfo | /media/cdrom/nc 10.10.10.100 3232 # /media/cdrom/cat /proc/swaps | /media/cdrom/nc 10.10.10.100 3232 # /media/cdrom/cat /proc/partitions | /media/cdrom/nc 10.10.10.100 3232 # /media/cdrom/cat /proc/self/mounts | /media/cdrom/nc 10.10.10.100 3232 # /media/cdrom/cat /proc/uptime | /media/cdrom/nc 10.10.10.100 3232 # /media/cdrom/dmesg | /media/cdrom/nc 10.10.10.100 3232 Recebendo informações sobre o diretório virtual do sistema da máquina suspeita na estação forense # nc -l -p 3232 | tee kernel_versao | md5sum $1 > kernel_versao.md5 # nc -l -p 3232 | tee dominio | md5sum $1 > dominio.md5 # nc -l -p 3232 | tee cpuinfo | md5sum $1 > cpuinfo.md5 # nc -l -p 3232 | tee swap | md5sum $1 > swap.md5 # nc -l -p 3232 | tee particoes | md5sum $1 > particoes.md5 # nc -l -p 3232 | tee mout_proc | md5sum $1 > mount_proc.md5 # nc -l -p 3232 | tee uptime_proc | md5sum $1 > uptime_proc.md5 # nc -l -p 3232 | tee dmesg | md5sum $1 > dmesg.md5 5.1.9 Informações sobre o Disco Rígido Informações sobre o que estão montadas ou não no disco também são relevantes. 21 Enviando informações sobre a montagem do HD da máquina suspeita # /media/cdrom/cat /etc/fstab | /media/cdrom/nc 10.10.10.100 3232 # /media/cdrom/cat /etc/mtab | /media/cdrom/nc 10.10.10.100 3232 Recebendo informações sobre a montagem do HD da máquina suspeita # nc -l -p 3232 | tee fstab | md5sum $1 > fstab.md5 # nc -l -p 3232 | tee mtab | md5sum $1 > mtab.md5 Enviando informações sobre as partições do HD da máquina suspeita # /media/cdrom/fdisk -l /dev/sda | /media/cdrom/nc 10.10.10.100 3232 # /media/cdrom/file -s /dev/sda{1,2,4,5,6,7,8,9} | /cdrom/nc 10.10.10.100 3232 Recebendo informações sobre as partições do HD da máquina suspeita # nc -l -p 3232 | tee fdisk | md5sum $1 > fdisk.md5 # nc -l -p 3232 | tee file_HD | md5sum $1 > file_HD.md5 5.1.10 Esterilizar as mídias para a cópia As informações voláteis já foram coletadas. O próximo passo seria realizar uma cópia de qualquer dispositivo conectado a máquina suspeita. A análise desses dispositivos é processo mais demorado. Nessa análise a busca por vestígios, instalação de ferramentas, análise de binários, análise de slack space, logs e outros dados pertinentes se torna um pouco cansativa. O projeto da ênfase na cópia do Disco Rígido da máquina suspeita, mas não quer dizer que não precise realizar a coleta dos dados do pen-drive, CDs, DVDs e outros dispositivos de armazenamento. As cópias devem ser realizadas em mídias esterilizadas e, portanto o procedimento abaixo deve ser realizado para “zerar” o conteúdo que irá armazenar a imagem do disco. # dd if=/dev/zero of=/dev/<dispositivo> bs=512 conv=noerror 22 Obs.: O comando dd realiza uma cópia bit a bit da origem para o destino. No caso acima ele esta colocando bits zeros no dispositivo de saída, especificando o tamanho dos blocos lidos e a conversão sem erros. 5.1.11 Gerar imagem do Disco Rígido Existem diversas formas de realizar a cópia da imagem a ser periciada. As cópias podem ser feitas por hardware ou software. Algumas das cópias realizadas por software será exemplificado no decorrer desse material. A cópia do Disco Rígido, feita nesse material, será feita utilizando uma unidade de armazenamento conectada fisicamente a máquina periciada. Esse procedimento também pode ser realizado em uma unidade de armazenamento na rede. Gerando uma imagem de todo do disco # dd if=/dev/sda of=/dev/sdb/imagem_disco.dd bs=512 conv=noerror Gerando uma imagem apenas de uma partição do disco # dd if=/dev/sda1 of=/dev/sdb/imagem_sda1.dd bs=512 conv=noerror Gerando uma imagem de todo do disco pela rede # dd if=/dev/sda | /media/cdrom/nc 10.10.10.100 3232 Verificando a integridade na estação forense # dd if= imagem_disco.dd | md5sum -b > imagem_disco.dd.md5 Outra forma # dcfldd if=/dev/sda of=/dev/sdb/imagem_disco.dd bs=512 conv=noerror Obs.: O comando dcfldd realiza a cópia da mesma forma do comando dd, mas com a diferença de tirar um hash SHA1 automaticamente. Existe também o Adpeto que serve de interface gráfica para ele. 23 5.2 Post Mortem Todo o trabalho de análise Post Mortem é realizado na estação forense. O perito já esta de posse de todos, se não da grande maioria dos dados a serem analisados. A análise do disco em si é baseada no conceito de cinco camadas da SUN MICROSYSTEMS. Alguns softwares, para facilitar a vida do perito, ocultam algumas camadas, como é o caso do FTK comercializado pela AccessData ou do EnCase comercializado pela Guidance Software. Extrair mensagens dos arquivos O dump de memória contem informações relevantes, mas ele se encontra de uma forma inteligível. Usando o comando strings é possível extrair mensagens de um arquivo. Isto é claro se for usando uma codificação ASCII, pois caso contrário teria que ser realizado outro procedimento. # strings -a mem_pric > mem_pric.strings # strings -a mem_kernel > mem_kernel.strings Utilizando o comando grep e com o auxílio do REGEX, o perito pode realizar comandos bastante poderosos. # grep -i --color “\.bz2$” mem_pric.strings # grep -i --color “\.rar$” mem_pric.strings # grep -i --color “\/exploits\/” mem_pric.strings # grep -i --color “rootkit\/” mem_pric.strings # grep “\/\.\.\.\/” mem_pric.strings De uma forma mais prática, bastaria colocar todas as possíveis ocorrências em um arquivo texto e chamar com o comando grep. # grep -i -f arquivo.txt --color mem_pric.strings 24 Utilizando o conceito de camadas No conceito proposto pela SUN MICROSYSTEMS a análise Post Mortem pode ser realizada em cinco camadas: Física, Dados, Sistema de Arquivos, Metadados e Arquivos. 5.2.1 Camada Física Reunir e documentar informações sobre os dispositivos de armazenamento de dados relacionados. Ex.: No disco rígido documentar informações como: modelo, ano de fabricação, fabricante, capacidade, interface, velocidade de rotação, entre outros. 5.2.2 Camada de Dados Logo após a coleta das imagens é iniciada essa camada. Tem como características a verificação da integridade das imagens geradas e análise do setor de boot e particionamento do disco e/ou imagem. Uso de Ferramentas # file -s /dev/sda # lshw Informações sobre o disco # disk_stat /dev/sda Obs.: o comando disk_stat mostra as informações sobre ATA e Serial-ATA. Capaz também de mostrar área Host Protected Area – HPA (normalmente uma área reservada onde os fabricantes instalam arquivos de recuperação do S.O.). # disktype /dev/sda # cat /proc/scsi/scsi Informações sobre as partições # fdisk -lu imagem_disco.dd # sfdisk -luS imagem_disco.dd 25 Informações sobre o layout do disco/imagem, incluindo espaços não particionados # mmls /dev/sda # mmls imagem_disco.dd Montando a Imagem de uma única partição # mount imagem_disco.dd /img/ -t ext3 -o loop,ro,noatime,nodev,noexec Montando a Imagem de um disco com múltiplas partições associando a um dispositivo físico # loosetup /dev/loop0 imagem_sda1_dd Obs.: O comando losetup juntamente como o comando mount possibilitam a manipulação de imagens Listar os dispositivos # losetup -a Obter informações dessa partição # fdisk -lu /dev/loop0 Disk /dev/loop0: 1407 MB, 1407476736 bytes 16 heads, 63 sectors/track, 2727 cylinders, total 2748978 sectors Units = sectors of 1 * 512 = 512 bytes Disk identifier: 0x00000000 Device Boot /dev/loop0p1 * Start 63 End Blocks Id System 72575 36256+ 83 Linux /dev/loop0p2 72576 2116799 1022112 5 Extended /dev/loop0p5 72639 278207 102784+ 83 Linux /dev/loop0p6 278271 410255 65992+ 82 Linux swap / Solaris /dev/loop0p7 410319 513071 51376+ 83 Linux /dev/loop0p8 513135 2116799 801832+ 83 Linux 26 Montando a partição sem conhecer o FileSystem # losetup /dev/loop0 imagem_disco.dd Calcula-se o offset para podemos ver uma nova alocação # expr 72639 \* 512 37191168 Obs.: O primeiro número corresponde ao valor de início da partição e o segundo corresponde ao valor do tamanho do bloco. Ambos foram coletados pelo comando fdisk. O resultado da expressão corresponde ao offset que será usado para montar a partição. # losetup -o 37191168 /dev/loop1 imagem_disco.dd # mount /dev/loop1 /mnt/forense/ -o loop,ro,noexec,noatime,nodev Exemplos de outras ferramentas: Visualizar informações do tamanho da imagem # img_stat imagem_disco.dd Exibir tipo de partição presente no disco # mmstat /dev/sda Remover bloqueio de acesso ao HPA # disk_sreset /dev/sda 5.2.3 Camada de Sistema de Arquivos Responsável por verificar as informações da estrutura do FileSystem. # fsstat imagem_disco.dd | less Obs.: O comando fsstat mostra detalhes e estatísticas do FileSystem. Existem também outros comandos com o jcat e jls que informam a estrutura de arquivos journaling. 27 5.2.3 Camada de Metadados Metadados está relacionado à tabela de inodes. Os inodes contem as informações necessárias aos processos para acessar um arquivo. Informações como permissões de dono, grupo, MACtime(Mudança nos metadados, Acesso e Criação de Arquivo), localização no disco ficam armazenadas nos inodes. Como o sistema de arquivos já está montado, poderemos ir atrás de arquivos alocados ou não alocados pelo sistema (quando se apaga um arquivo, os dados continuam no disco e podem ser recuperados desde que não sejam reescritos), bem como gerar a Timeline do sistema. Com a Timeline do sistema é possível obter as seguintes informações: mactime dos arquivos; Data de instalação do sistema operacional; Ultimas atualizações do sistema; Últimos acessos ao sistema; Etc. Informações gerais de Inode # ils -r -f linux-ext2 imagem_disco.dd Obs.: o comando acima lista de forma recursiva os inodes da imagem, sejam eles alocados ou não. Recuperar, pelo endereçamento de inode, arquivos apagados # icat -f linux-ext2 imagem_disco.dd 4444 Obs.: O último número corresponde ao número do endereço do inode em que o arquivo se encontrava. O inode do arquivo pode ser recuperado pelo comando fls ou ls -i. Informações estruturais de Inode. # istat imagem_disco.dd 4444 28 Obs.: O número ao final do comando istat corresponde ao número do inode. O range de inode pode ser coletado a partir do comando fsstat. Criar uma timeline # mactime -b imagem_disco.dd.mac -p /etc/passwd -z GMT-3 Obs.: O comando mactime pode ser utilizado em conjunto com os comandos ils ou fls para a criação da timeline. Mostrar detalhes sobre um de bloco de dados # mactime -b imagem_disco.dd.mac -p /etc/passwd -z GMT-3 # dstat -f linux-ext2 imagem_disco.dd 2034 Obs.: o ultimo número corresponde ao endereço do bloco. Este endereço pode ser recuperado pelo comando dls. Listar informações de áreas alocadas, não alocadas e slack space. Alocadas # dls -a -f ext imagem_disco.dd > imagem_disco.dd.dls.alocadas # strings -a imagem_disco.dd.dls.alocadas > imagem_disco.dd.dls.alocadas.strings # less imagem_disco.dd.dls.alocadas.strings Não Alocadas # dls -A -f ext imagem_disco.dd > imagem_disco.dd.dls. naoalocadas # strings -a imagem_disco.dd.dls.naoalocadas > imagem_disco.dd.dls.naoalocadas.strings # less imagem_disco.dd.dls.naoalocadas.strings Extrair blocos de dados do disco # dcat -f linux-ext2 imagem_disco.dd 2034 29 Encontrar bloco original na imagem # dcalc -u 18511 imagem_disco.dd Obs.: O comando dcalc recupera o número de bloco de endereço correspondente na imagem a partir da imagem de arquivos não alocados. 5.2.3 Camada de Arquivos Diz respeito à recuperação e análise de possíveis artefatos. Listar nomes de arquivos alocados ou não alocados em uma imagem # fls -a -r -d -f linux-ext2 imagem_disco.dd Procura por nomes de arquivos que apontem para uma dada estrutura de metadados # ffind -f linux-ext2 imagem_disco.dd 4444 Obs.: O resultado do campo acima pode ser: * /bin/ls Buscar informações de estruturas de Inode # ifind -a imagem_disco.dd -d 50 Obs.: O resultado acima pode retornar 4444. Jogando esse valor no comando ffind obtêm-se o: * /bin/ls Analisar os arquivos de uma imagem baseado em um banco de assinaturas # sorter -d /dados/forense/arquivos imagem_disco.dd Recuperar artefatos # sorter -d /dados/forense/arquivos imagem_disco.dd # foremost -o /dados/forense/artefatos -c /dados/forense/foremost.conf imagem_disco.dd.dls.alocadas 30 Verificando possibilidade de dados ocultos no slack space # bmap --mode slack /tmp/arquivo Gerando Timeline Criando uma linha do tempo da imagem # fls -alrpm / imagem_disco.dd | mactime -z GMT-3 01/01/2000 31/12/2007 | tee timeline.txt 31 6 MICROSOFT WINDOWS O tipo de incidente em uma máquina Windows se difere um pouco de uma máquina Linux (servidora ou não). Toda a metodologia empregada para forense pode ser utilizada para ambos os casos, a diferença é que em uma máquina Windows as informações mais “preciosas” são voláteis e por isso o foco maior está na Live Forense. 6.1 Live Forense Quanto menos interação do perito com o ambiente a ser periciado, melhor. Ferramentas gráficas não são recomendadas, pois como elas serão carregadas em memória e sendo assim poderão sobrescrever alguma evidência que lá se encontra. Em todo caso, serão apresentadas períficas com e sem interface gráfica. Executando ferramentas a partir do CD Figura 1 – Executar o prompt do DOS Alterar o valor da variável PATH para apontar apenas para os diretórios de ferramentas do CD. Figura 2 – Configurar variável PATH Obs.: Para verificar a alteração da variável PATH, basta colocar o comando env no prompt alterado. 32 O prompt alterado já pode ser usado Figura 3 – Prompt do DOS alterado 6.1.1 Memória Principal do sistema Assim como visto no GNU Linux, também será necessária a realização do dump de memória. Com a alteração da variável PATH e o uso do comando dd, essa tarefa pode ser realizada sem dificuldades. No Windows, existe um dispositivo especial que dá acesso a memória física do sistema. Esse dispositivo se chama \\.\PhysicalMemory. Enviando informações sobre a memória principal na máquina suspeita D:\IR\xp> dd if=\\.\PhysicalMemory conv=noerror | nc 10.10.10.100 3232 D:\IR\xp> mem | nc 10.10.10.100 3232 D:\IR\xp> pclip | nc 10.10.10.100 3232 Recebendo informações sobre a memória principal na estação forense # nc -l -p 3232 | tee mem_princ | md5sum $1 > mem_princ.md5 # nc -l -p 3232 | tee mem | md5sum $1 > mem.md5 # nc -l -p 3232 | tee area_transf | md5sum $1 > area_transf.md5 Obs.: O comando mem fornece algumas informações básicas sobre a memória principal do sistema, enquanto o comando pclip exibe textos que estão na Área de Transferência. 33 6.1.2 Sistema Operacional Enviando informações sobre a máquina suspeita D:\IR\xp> ver | nc 10.10.10.100 3232 D:\IR\xp> hostname | nc 10.10.10.100 3232 D:\IR\xp> whoami | nc 10.10.10.100 3232 Obs.: O primeiro comando informa a versão do sistema operacional. O comando hostname retorna o nome da máquina, enquanto o comando whoami exibe na tela quem é o usuário logado naquele momento. Recebendo informações sobre a máquina alvo na estação forense: # nc -l -p 3232 | tee versao_so | md5sum $1 > versao_so.md5 # nc -l -p 3232 | tee hostname | md5sum $1 > hostname.md5 # nc -l -p 3232 | tee whoami | md5sum $1 > whoami.md5 Enviando informações sobre a data da máquina suspeita D:\IR\xp> date /t | nc 10.10.10.100 3232 Recebendo informações sobre a data da máquina alvo na estação forense: # nc -l -p 3232 | tee data | md5sum $1 > data.md5 Enviando informações sobre o horário da máquina suspeita D:\IR\xp> time /t | nc 10.10.10.100 3232 Recebendo informações sobre o horário da máquina alvo na estação forense: # nc -l -p 3232 | tee time | md5sum $1 > time.md5 34 Enviando informações sobre o timezone da máquina suspeita D:\IR\xp> reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Time ZoneInformation | nc 10.10.10.100 3232 Recebendo informações sobre o timezone da máquina alvo na estação forense: # nc -l -p 3232 | tee timezone | md5sum $1 > timezone.md5 Caso a máquina suspeita sincronize o horário com um servidor de NTP remoto, também será relevante coletar essa informação. Enviando informações sobre o NTP remoto da máquina suspeita D:\IR\xp> net time \\<hostname> | nc 10.10.10.100 3232 D:\IR\xp> net time \\<hostname> /querysntp | nc 10.10.10.100 3232 Recebendo informações sobre o NTP remoto da máquina alvo na estação forense # nc -l -p 3232 | tee sntp | md5sum $1 > sntp.md5 # nc -l -p 3232 | tee sntp_query | md5sum $1 > sntp_query.md5 Enviando informações sobre o tempo em que a máquina suspeita está no ar D:\IR\xp> uptime | nc 10.10.10.100 3232 Recebendo informações sobre o tempo ativo da máquina alvo na estação forense # nc -l -p 3232 | tee uptime | md5sum $1 > uptime.md5 Enviando informações sobre tarefas agendadas na máquina suspeita D:\IR\xp> at | nc 10.10.10.100 3232 35 Recebendo informações sobre tarefas agendadas da máquina alvo na estação forense # nc -l -p 3232 | tee tarefas_agendadas_at | md5sum $1 > tarefas_agendadas_at.md5 Outra forma: Enviando informações sobre tarefas agendadas na máquina suspeita D:\IR\xp> schtasks | nc 10.10.10.100 3232 Recebendo informações sobre tarefas agendadas da máquina alvo na estação forense # nc -l -p 3232 | tee tarefas_agendadas_sch | md5sum $1 > tarefas_agendadas_sch.md5 Enviando informações gerais sobre o sistema da máquina suspeita D:\IR\xp> psinfo | nc 10.10.10.100 3232 Obs.: Dentre as informações que o comando psinfo retorna, pode se coletar as informações referentes à atualização do sistema e por quem ele foi autenticado. Recebendo informações gerais sobre o sistema da máquina alvo na estação forense # nc -l -p 3232 | tee psinfo | md5sum $1 > psinfo.md5 Enviando informações básicas sobre o disco da máquina suspeita D:\IR\xp> ntfsinfo c: | nc 10.10.10.100 3232 Obs.: O comando ntfsinfo exibe informações de um disco ou partição formatado em NTFS. 36 Recebendo informações gerais sobre o sistema da máquina alvo na estação forense # nc -l -p 3232 | tee info_disco | md5sum $1 > info_disco.md5 6.1.3 Usuários e Grupos do sistema Os usuários em sistemas Microsoft Windows são identificados pelo SID (Secure Identification). Este identificador corresponde uma parte para identificar o host da máquina e o outro para identificar o usuário ligado ao host. Ele é único e normalmente é utilizado para tratar as permissões de recursos em diversos sistemas. Enviando informações sobre todos os usuários da máquina suspeita D:\IR\xp> net users | nc 10.10.10.100 3232 Obs.: O comando net vem como pacote básico nos sistemas Microsoft Windows. Ele possui diversos parâmetros para interagir com o sistema. Recebendo informações sobre todos os usuários da máquina alvo na estação forense: # nc -l -p 3232 | tee usuarios | md5sum $1 > usuarios.md5 Enviando informações sobre todos os grupos locais da máquina suspeita D:\IR\xp> net localgroup | nc 10.10.10.100 3232 Recebendo informações sobre todos os grupos locais da máquina alvo na estação forense: # nc -l -p 3232 | tee grupos_locais | md5sum $1 > grupos_locais.md5 Enviando informações básicas sobre determinado usuário da máquina suspeita D:\IR\xp> net user <usuario> | nc 10.10.10.100 3232 37 Recebendo informações básicas sobre determinado usuário da máquina alvo na estação forense: # nc -l -p 3232 | tee usuario | md5sum $1 > usuario.md5 Obs.: Caso se opte por um detalhamento maior na coleta de certo usuário, pode se usar a ferramenta userdump. Enviando informações gerais sobre determinado usuário da máquina suspeita D:\IR\xp> userdump \\<hostname> <usuario> | nc 10.10.10.100 3232 Recebendo informações gerais sobre determinado usuário da máquina alvo na estação forense: # nc -l -p 3232 | tee usuario | md5sum $1 > usuario.md5 Enviando informações sobre o SID da máquina suspeita D:\IR\xp> psgetsid | nc 10.10.10.100 3232 Obs.: O comando psgetsid retorna informações relacionadas ao Secure Identificantion (SID) Recebendo informações sobre o SID da máquina alvo na estação forense: # nc -l -p 3232 | tee sid | md5sum $1 > sid.md5 Enviando informações sobre o SID de um usuário da máquina suspeita D:\IR\xp> psgetsid <usuario> | nc 10.10.10.100 3232 Recebendo informações sobre o SID de um usuário da máquina alvo na estação forense: # nc -l -p 3232 | tee sid_usuario | md5sum $1 > sid_usuario.md5 38 Enviando informações sobre os usuários logados na máquina suspeita D:\IR\xp> psloggedon | nc 10.10.10.100 3232 Obs.: O comando psloggedon quais usuários locais ou remotos estão conectados na máquina. Recebendo informações sobre os usuários logados da máquina alvo na estação forense: # nc -l -p 3232 | tee users_logados | md5sum $1 > users_logados.md5 Enviando informações sobre os registros do sistema da máquina suspeita D:\IR\xp> ntlast -s | nc 10.10.10.100 3232 D:\IR\xp> ntlast -f | nc 10.10.10.100 3232 D:\IR\xp> ntlast -r | nc 10.10.10.100 3232 Obs.: O comando ntlast retorna informações relacionadas à entrada e saída de usuários no sistema. Entre os diversos parâmetros disponíveis podemos destacar: s – correspondente ao logons de sucesso; f – correspondente aos logons falhos; r – correspondente aos logons remotos. Recebendo informações sobre os registros do sistema da máquina suspeita na estação forense # nc -l -p 3232 | tee login_sucesso | md5sum $1 > login_sucesso.md5 # nc -l -p 3232 | tee login_falha | md5sum $1 > login_falha.md5 # nc -l -p 3232 | tee login_remoto | md5sum $1 > login_remoto.md5 Obs.: As informações sobre os logons só serão exibidas se as políticas de auditoria da máquina suspeita estiverem ativas. Caso contrário, será retornada apenas a informação para verificação dessas políticas. 39 6.1.4 Informações de processos ativos As informações dos processos podem ser coletadas, em linha de comando, pelos comandos ps e pslist. O primeiro funciona da mesma maneira que no GNU Linux, modificando apenas os parâmetros a serem utilizados. O segundo, bem mais avançado, permite listar a utilização de memória de cada processo ou os threads que cada mantém. Enviando informações sobre os processos ativos na máquina suspeita D:\IR\xp> ps -a -W | nc 10.10.10.100 3232 D:\IR\xp> pslist -m -d | nc 10.10.10.100 3232 Recebendo informações sobre os processos ativos da máquina suspeita na estação forense # nc -l -p 3232 | tee psaW | md5sum $1 > psaW.md5 # nc -l -p 3232 | tee pslist | md5sum $1 > pslist.md5 Obs.: Existe também a possibilidade de verificar as bibliotecas compartilhadas que o processo está usando. O comando listdlls retorna essa informação. Enviando informações sobre as DLLs de um processo ativo na máquina suspeita D:\IR\xp> listdlls calc | nc 10.10.10.100 3232 Recebendo informações sobre um processo ativo da máquina suspeita na estação forense # nc -l -p 3232 | tee calc_dll | md5sum $1 > calc_dll.md5 Outra forma: Enviando informações sobre as DLLs de um processo ativo na máquina suspeita D:\IR\xp> ..\winfingerprint\procinterrogate -pid 2000 | nc 10.10.10.100 3232 40 Recebendo informações sobre um processo ativo da máquina suspeita na estação forense # nc -l -p 3232 | tee calc_dll | md5sum $1 > calc_dll.md5 Enviando informações sobre arquivos abertos na máquina suspeita D:\IR\xp> handle -a -u calc | nc 10.10.10.100 3232 Obs.: Um processo desconhecido pode manter alguns arquivos abertos. Durante sua execução arquivos de logs, pipes e outros arquivos podem estar abertos. O comando handle exibe essas informações. Recebendo informações sobre arquivos abertos da máquina suspeita na estação forense # nc -l -p 3232 | tee calc_arq_aberto | md5sum $1 > calc_arq_aberto.md5 Enviando informações sobre ultimo arquivo acessado na máquina suspeita D:\IR\xp> afind c:\windows\system32 | nc 10.10.10.100 3232 Obs.: O comando afind exibe o último arquivo que foi acessado em um determinado diretório. Recebendo informações sobre ultimo arquivo acessado da máquina suspeita na estação forense # nc -l -p 3232 | tee sys32_ultimo | md5sum $1 > sys32_ultimo.md5 6.1.5 Serviços em execução Existem diversas formas de verificar a execução de um serviço na inicialização do sistema. Podendo ser simples, apenas exibindo qual serviço está iniciado, até mais completas, em que exibe chaves do registro do sistema. Abaixo são usadas algumas ferramentas para esse propósito. 41 Usando o comando net Enviando informações sobre os serviços ativos na máquina suspeita D:\IR\xp> net start | nc 10.10.10.100 3232 Recebendo informações sobre os serviços ativos da máquina suspeita na estação forense # nc -l -p 3232 | tee netstart | md5sum $1 > netstart.md5 Obs.: O comando net traz apenas informações básicas dos serviços. Usando o comando servicelist Enviando informações sobre os serviços ativos na máquina suspeita D:\IR\xp> servicelist \\<hostname> | nc 10.10.10.100 3232 Obs.: O comando servicelist uma listagem mais abrangente do que com o comando net. Recebendo informações sobre os serviços ativos da máquina suspeita na estação forense # nc -l -p 3232 | tee servicelist | md5sum $1 > servicelist.md5 Usando o comando psservice Enviando informações sobre os serviços ativos na máquina suspeita D:\IR\xp> psservice | nc 10.10.10.100 3232 Obs.: O comando psservice possui um controle maior sobre a listagem dos serviços. Recebendo informações sobre os serviços ativos da máquina suspeita na estação forense # nc -l -p 3232 | tee psservice | md5sum $1 > psservice.md5 42 Obtendo pelo registro Enviando informações sobre os serviços ativos na máquina suspeita D:\IR\xp> reg HKLM\Software\Microsoft\Windows\CurrentVersion\Run query | nc 10.10.10.100 3232 Recebendo informações sobre os serviços ativos da máquina suspeita na estação forense # nc -l -p 3232 | tee registro_serv | md5sum $1 > registro_serv.md5 Obtendo pelo registro através do comando autorunsc Enviando informações sobre os serviços ativos na máquina suspeita D:\IR\xp> autorunsc | nc 10.10.10.100 3232 Obs.: O comando autorunsc procura por chaves no registro do Windows que iniciem automaticamente um serviço. Recebendo informações sobre os serviços ativos da máquina suspeita na estação forense # nc -l -p 3232 | tee autorunsc | md5sum $1 > autorunsc.md5 6.1.6 Tráfego da rede do sistema Na máquina alvo deve ser levantado todas as informações sobre o os estados das conexões, tabelas de roteamento, processos ativos, entre outros. Enviando informações sobre as interfaces de rede da máquina suspeita D:\IR\xp> ipconfig /all | nc 10.10.10.100 3232 Obs.: O comando ipconfig juntamente com o parâmetro /all funciona da mesma forma que o comando ifconfig no sistema GNU Linux. 43 Recebendo informações sobre as interfaces de rede na estação forense # nc -l -p 3232 | tee interfaces | md5sum $1 > interfaces.md5 Outra forma: Enviando informações sobre as interfaces de rede da máquina suspeita D:\IR\xp> iplist | nc 10.10.10.100 3232 Obs.: O comando iplist exibe apenas as configurações de IP para as interfaces presentes no sistema. Recebendo informações sobre as interfaces de rede na estação forense # nc -l -p 3232 | tee interfaces_iplist | md5sum $1 > interfaces_iplist.md5 Enviando informações sobre Conexões de Redes ativas da máquina suspeita D:\IR\xp> netstat -na | nc 10.10.10.100 3232 Obs.: O comando netstat com o parâmetro -na exibe todas as conexões, estabelecidas e outras que já foram fechadas, sem resolver nomes. Recebendo informações sobre as Conexões de Redes ativas na estação forense # nc -l -p 3232 | tee conexões_gerais | md5sum $1 > conexões_gerais.md5 Enviando informações sobre os executáveis com conexões ativas da máquina suspeita D:\IR\xp> netstat -nbv | nc 10.10.10.100 3232 Obs.: O comando netstat com o parâmetro -nbv exibe informações sobre os executáveis envolvidos na criação da conexão, bem como os componente envolvidos. 44 Recebendo informações sobre os executáveis com conexões na estação forense # nc -l -p 3232 | tee conexões_proc | md5sum $1 > conexões_proc.md5 Enviando informações sobre portas abertas ativas da máquina suspeita D:\IR\xp> openports -netstat | nc 10.10.10.100 3232 Obs.: O comando openports exibe as portas abertas do sistema. O uso do parâmetro netstat serve apenas para formatação. Recebendo informações sobre as portas abertas na estação forense # nc -l -p 3232 | tee portas_abertas | md5sum $1 > portas_abertas.md5 Outra forma: Enviando informações sobre portas abertas ativas da máquina suspeita D:\IR\xp> fport | nc 10.10.10.100 3232 Obs.: O comando fport exibe de forma simples as portas que estão abertas. Ele não faz o mapeamento completo de portas para processos. Recebendo informações sobre as portas abertas na estação forense # nc -l -p 3232 | tee portas_abertas | md5sum $1 > portas_abertas.md5 Enviando informações sobre interfaces em modo promíscuo da máquina suspeita D:\IR\xp> promiscdetect | nc 10.10.10.100 3232 Obs.: Alguma interface de rede pode estar configurada para capturar todos os pacotes que trafegam na rede. O comando promiscdetect exibe quais interfaces estão configuradas para esse fim. 45 Recebendo informações sobre interfaces em modo promíscuo na estação forense # nc -l -p 3232 | tee int_promisc | md5sum $1 > inter_promisc.md5 6.1.7 Informações de registro do sistema Sistemas Microsoft Windows possuem uma base hierárquica e centralizada de dados para armazenar informações sobre as configurações do sistema para os usuários, aplicações e dispositivos de hardware. Essa base se chama registro do Windows e normalmente não podem ser copiada. Enviando informações sobre o registro do sistema na máquina suspeita D:\IR\xp> regdmp | nc 10.10.10.100 3232 Obs.: O comando regdmp realiza um dump do registro para um formato de texto. Recebendo informações sobre o registro do sistema na estação forense # nc -l -p 3232 | tee registro | md5sum $1 > registro.md5 Enviando informações sobre algumas chaves de registro na máquina suspeita D:\IR\xp> reg query HKLM\Software\Microsoft\Windows\ CurrentVersion\Run | nc 10.10.10.100 3232 D:\IR\xp> reg query HKLM\Software\Microsoft\Windows\ CurrentVersion\RunOnce | nc 10.10.10.100 3232 D:\IR\xp> reg query HKCU\Software /s | nc 10.10.10.100 3232 D:\IR\xp> reg query HKCU\Software\Microsoft\Windows\ CurrentVersion\Run | nc 10.10.10.100 3232 D:\IR\xp> reg query HKCU\Software\Microsoft\Internet Explorer\TypedURLs | nc 10.10.10.100 3232 D:\IR\xp> reg query HKCU\Software\Microsoft\CurrentVersion\ Explorer\RunMRU | nc 10.10.10.100 3232 46 D:\IR\xp> reg query HKCU\Software\Microsoft\CurrentVersion\ Explorer\ComDlg32\OpenSaveMRU\* | nc 10.10.10.100 3232 Recebendo informações sobre algumas chaves de registro na estação forense # nc -l -p 3232 | tee hklm_run | md5sum $1 > hklm_run.md5 # nc -l -p 3232 | tee hklm_runonce | md5sum $1 > hklm_runonce.md5 # nc -l -p 3232 | tee hkcu_soft | md5sum $1 > hkcu_soft.md5 # nc -l -p 3232 | tee hkcu_run | md5sum $1 > hkcu_run.md5 # nc -l -p 3232 | tee hkcu_EType | md5sum $1 > hkcu_EType.md5 # nc -l -p 3232 | tee hkcu_ERun | md5sum $1 > hkcu_ERun.md5 # nc -l -p 3232 | tee hkcu_ESaveMRU | md5sum $1 > hkcu_ESaveMRU.md5 6.1.8 Informações de registro de Eventos Diferentemente como é no Linux, sistemas Microsoft Windows armazena os seus registros de eventos em formato binário e sendo assim, precisa de ferramentas específicas para extraí-los. Enviando informações sobre o registro do sistema na máquina suspeita D:\IR\xp> psloglist security | nc 10.10.10.100 3232 Obs.: O comando psloglist pode extrair informações dos eventos para um formato em texto. Recebendo informações sobre o registro do sistema na estação forense # nc -l -p 3232 | tee event_security | md5sum $1 > event_security.md5 Outra forma: Enviando informações sobre o registro do sistema na máquina suspeita 47 D:\IR\xp> ..\2k\res_kit\dumpel -l security -t | nc 10.10.10.100 3232 Obs.: O comando dumpel realiza uma consulta mais completa nos eventos (system, application, security). Pode ser realizada uma consulta por datas, padrões de texto e ainda formatar a saída. Recebendo informações sobre o registro do sistema na estação forense # nc -l -p 3232 | tee event_security | md5sum $1 > event_security.md5 Obs.: Os arquivos de log´s em sistemas Microsoft Windows de alguns processos, antivírus ou outro programa qualquer geralmente possuem a extensão .evt e ficam armazenados no diretório c:\windows\system32\config. D:\IR\xp> dir c:\windows\system32\config\*.evt 6.1.8 Analisando a Lixeira Existe um diretório oculto em sistemas Microsoft Windows chamado de RECYCLER (representado pela lixeira no Desktop). Esse diretório está presente em cada partição de disco. Descendo um nível encontram-se subdiretórios de SID de usuários. Esses diretórios correspondem aos arquivos apagados por cada usuário. Enviando informações sobre quais usuários tem informações na lixeira na máquina suspeita D:\IR\xp> dir /a c:\RECYCLER | nc 10.10.10.100 3232 Recebendo informações sobre quais usuários tem informações na lixeira na estação forense # nc -l -p 3232 | tee users_lixeira | md5sum $1 > users_lixeira.md5 Descobrindo a quem pertence o SID da lixeira Obs.: Caso o sid seja S-1-5-21-790525478-1060284298-1801674531-500 48 # sid2user 5 21 790525478 1060284298 1801674531 500 Enviando informações dos arquivos da lixeira de um usuário na máquina suspeita D:\IR\xp> rifiuti c:\recycler\<SID>\info2 | nc 10.10.10.100 3232 Obs.: O comando rifiuti exibe o nome original do arquivo que foi apagado. Recebendo informações dos arquivos da lixeira de um usuário na estação forense # nc -l -p 3232 | tee usuario_lixeira | md5sum $1 > usuario_lixeira.md5 6.1.9 Analisando histórico de navegação Através dos históricos de navegação e dos cookies é possível saber se a máquina suspeita visitou algum site que contenha um malware e a infectou, se o usuário acessou páginas indevidas, entre outros. Enviando informações sobre o histórico de navegação do Internet Explorer de um usuário na máquina suspeita D:\IR\xp> pasco -d “c:\Documents and Settings\<usuario>\Cookies\index.dat” | nc 10.10.10.100 3232 Obs.: O comando pasco exibe informações de forma legível do histórico de navegação do Internet Explorer. Recebendo informações sobre o histórico de navegação do Internet Explorer de um usuário na estação forense # nc -l -p 3232 | tee usuario_hist_IE | md5sum $1 > usuario_hist_IE.md5 Enviando informações sobre o cookies do Firefox de um usuário na máquina suspeita 49 D:\IR\xp> galleta “c:\Documents and Settings\<usuario>\Application Data\Mozzila\Firefox\Profiles\1jwwc64.default\cookies.txt” | nc 10.10.10.100 3232 Obs.: O comando galleta exibe informações do comando pasco, a diferença é que ele é destinado ao Mozilla Firefox Recebendo informações sobre os cookies do Firefox de um usuário na estação forense # nc -l -p 3232 | tee usuario_hist_firefox | md5sum $1 > usuario_hist_firefox.md5 6.2 Post Mortem Como grande parte das informações “preciosas” está na Live Forense, resta apenas à árdua análise de arquivos e geração da timeline. Essas duas etapas serão feitas em uma máquina Windows por questão de exemplificação. Nada impede de coletar as informações e analisar em outra plataforma como estava sendo feito na coleta da Live Forense. 6.2.1 Geração da Timeline Para realizar essa tarefa, a imagem foi montada com as devidas permissões de leitura em outro computador. A partição do drive suspeito passará a se chamar E:. Serão gerados três arquivos para a criação da Timeline. Um contendo informações de todos os arquivos que foram acessados, outro contendo as informações para os arquivos criados e o último contendo informações sobre todos os arquivos que foram modificados. Coletando informações sobre todos os arquivos criados no drive suspeito C:\ > dir/t:c/a/s/o e: > c:\arquivos_criados.txt Obs.: O comando dir, nativo dos sistemas Microsoft Windows, pode ter diversas funcionalidades. O comando acima irá realizar uma busca por tempo de criação 50 (parâmetro /t:c), exibindo todos os atributos (parâmetro /a), todos os diretórios e subdiretórios (parâmetro /s) e de forma ordenada (parâmetro /o). Coletando informações sobre todos os arquivos acessados no drive suspeito C:\ > dir/t:a/a/s/o e: > c:\arquivos_acessados.txt Obs.: Segue da mesma forma do que foi utilizado para se obter os arquivos criados. A diferença estar em usar a busca por tempo de ultimo acesso (parâmetro /t:a). Coletando informações sobre todos os arquivos modificados no drive suspeito C:\ > dir/t:w/a/s/o e: > c:\arquivos_modificados.txt Obs.: Segue da mesma forma do que foi utilizado para se obter os arquivos criados e acessados. A diferença em relação aos outros dois esta em usar a busca por tempo de ultima gravação (parâmetro /t:w). De posse dos arquivos gerados, será possível realizar algumas consultas usando o comando find. O comando find pode utilizar uma sequência de strings para descobrir se tem alguma ocorrência do que se procura. C:\ > find “.jpg” c:\arquivos_criados.txt C:\ > find “.dll” c:\arquivos_modificados.txt C:\ > find “@” c:\arquivos_criados.txt Obs.: Essas consultadas podem ser realizadas de acordo com o item a ser analisado. Pode ser concatenados e armazenados em outro de texto. 6.2.2 Análise de arquivos com o HELIX Coletando MACtime de arquivos ou diretórios 51 D:\IR\xp> mac -d e:\windows\system32 > c:\system32_mac.txt Obs.: O comando mac exibe informações relacionadas ao tempo de acesso, criação, modificação e a que usuário pertence. Coletando informações sobre arquivos D:\IR\xp> file -m ..\Cygwin\magic c:\boot.ini > c:\bootini_file.txt Obs.: O comando file funciona semelhante ao usado em sistemas GNU Linux, a diferença é que tem que especificar os padrões de tipos de arquivos. Coletando informações completas sobre arquivos D:\IR\xp> filestat c:\boot.ini > c:\bootini_filestat.txt Obs.: O comando filestat exibe informações referentes a permissões, mactimes, dono do arquivo, entre outros. Verificando possibilidade de dados ocultos (ADS) D:\IR\xp> ads c:\boot.ini > c:\bootini_ads.txt Obs.: Os Alternate Data Streams (ADS) foram criados inicialmente para armazenar informações extras sobre o arquivo, mas pessoas mal intencionadas podem colocar códigos para serem executados por algum malware. Outras formas: Verificando possibilidade de dados ocultos (ADS) D:\IR\xp> sfind c:\boot.ini > c:\bootini_ads.txt D:\IR\xp> streams c:\boot.ini > c:\bootini_ads.txt 52 Obs.: Também é possível remover as streams através do comando streams com o parâmetro -d. formas. Outra forma seria apagando o arquivo que contem as streams. 53 7 MICROSOFT WINDOWS - GUI Como dito anteriormente às ferramentas que usam interface gráfica são carregadas na memória e geralmente podem sobrescrever informações preciosas que estavam presentes nela. Abaixo serão exemplificadas algumas ferramentas gráficas de diversos propósitos. 7.1 Informações sobre o sistema Executando o HELIX Figura 4 – Tela inicial do HELIX Acesso rápido pelo menu Figura 5 – Selecionar o opção pelo menu 54 Figura 6 – Tela de confirmação do visualizador do sistema Módulos disponíveis para análise Figura 7 – Módulos Disponíveis Gerar relatório dos módulos Figura 8 – Exportando um relatório 55 Telas de geração do relatório Figura 9 – Gerar relatório I Figura 10 – Gerar relatório II Figura 11 – Gerar relatório III 56 Figura 12 – Relatório em HTML 7.2 Informações sobre os dispositivos Acesso rápido pelo menu Figura 13 – Selecionar o opção pelo menu Figura 14 – Tela de confirmação do Drive Manager 57 Figura 15 – Tela inicial do Drive Manager Figura 16 – Verificando a opção Disk Info 7.3 Informações gerais sobre o sistema Acesso rápido pelo menu Figura 17 – Selecionar o opção pelo menu 58 Figura 18 – Tela de confirmação do Drive Manager Figura 19 – Tela inicial do WinAudit Obs.: Para começar a examinar basta clicar na descrição “Aqui” Ou no botão simbolizado por uma seta. Figura 20 – Relatório finalizado Obs.: O relatório pode ser exportado para diversas extensões. Basta clicar no botão guardar ou aguardar a tela que aparece após fechar a aplicação WinAudit. 59 Figura 21 – Exportar relatório 7.4 Informações extras sobre o sistema Acesso pelo 2ª página do menu de respostas a incidentes do HELIX Figura 22 – Segunda tela do menu de Respostas a Incidentes de Segurança Obs.: Clicando em Rootkit Revealer para descobrir rootkits, aparece a tela abaixo. Figura 23 – Tela de confirmação do RootkitRevealer 60 Figura 24 – Tela do RootkiteRevealer Obs.: Ainda no segunda tela do menu de respostas a incidentes de segurança, é possível saber quanto tem o PC ficou ligado. Basta clicar em PC On/Off Time e confirmar a tela abaixo. Figura 25 - Tela de confirmação do PC On/Off Figura 26 – Tela de exibição do PC On/Off 61 7.5 Informações senhas e históricos de navegação Acesso pelo 3ª página do menu de respostas a incidentes do HELIX Figura 27 – Terceira tela do menu de respostas a incidentes de segurança Obs.: Como a usabilidade é bem intuitiva, abaixo segue apenas uma definição de cada item que aparece nessa tela. PST Password Viewer – Visualiza senhas em arquivos do Microsoft Outlook; Messenger Password – Visualiza logins e senhas de usuários do MSN; Protected Storage Viewer – Visualiza arquivos protegidos por senhas; IE History Viewer – Visualiza o histórico de navegação do Internet Explorer; IE Cookie Viewer – Visualiza os cookies armazenados pelo Internet Explorer; IE Password Viewer – Visualiza as senhas que foram armazenadas pelo Internet Explorer; Mail Password Viewer – Visualiza login e senha de usuários configurados no Hotmail ou MSN; Network Password Viewer – Visualiza as senhas de rede; Asterisk Logger – Visualiza senhas mascaradas por asteriscos (*). Mozilla Cookie Viewer – Visualiza os cookies armazenados pelo Mozilla Firefox; Registro Viewer – Scanner para buscas no registro do sistema; USB Deview – Visualiza dispositivos USB. 62 8 CONCLUSÃO Para ser ter sucesso na investigação é preciso que o ambiente seja propício à Forense. Quanto mais informações úteis puderem ser coletadas, melhor será o trabalho da Forense e, para garantir que o que será coletado irá preservar a evidência existe a cadeia de custódia. Essa priva por garantir a originalidade dos dados. O perito sempre deve ser imparcial, por mais que outras formas de prova (como a testemunhal) acusem o infrator. Jamais outro tipo de prova poderá intervir na produção do laudo pericial. O perito deverá produzir o laudo a partir das suas conclusões e resultados coletados durante a perícia, usando técnicas e ferramentas destinadas à perícia forense computacional. As ferramentas forense foram criadas para ajudar o perito no tempo de análise da máquina suspeita. Cabe ao perito estudar e definir as suas ferramentas. Sempre é bom ter as principais ferramentas atualizadas e compiladas estaticamente em um cd ou drive USB. Cabe ao perito usar da forma que achar mais propício, seja com pouca intervenção no ambiente periciado ou de uma forma mais intrusiva. 63 9 Dificuldades Encontradas Apesar de a Computação Forense ser uma área muito nova e ainda estar “engatinhando” no nosso país, existem dezenas de ferramentas para diversos fins. Inicialmente as dificuldades encontradas eram relacionadas à definição de uma linha de pesquisas para usar as ferramentas. Ferramentas com propósito geral e com propósitos específicos foram analisadas e estudadas. 64 10 Bibliografia [1] Autopsy Forensic Browser. Disponível em: http://www.sleuthkit.org/autopsy/ [2] The Sleuth Kit. Disponível em: http://www.sleuthkit.org/ [3] HELIX: Incident Response & Computer Forensics Live CD. Disponível em: http://www.e-fense.com/products.php [4] HELIX from Forensics Wiki. Disponível em: http://www.forensicswiki.org/index.php?title=Helix [5] The Coroner´s Toolkit. Dipodies em: http://www.porcupine.org/forensics/tct.html [6] New version of EnCase includes stand-alone utility to capture RAM. Disponível em: http://www.forensickb.com/2008/06/new-version-of-encase-includes-stand.html [7] Suiche, Matthieu, “Win32dd : Challenges of Windows physical memory acquisition and exploitation”. Disponível em: http://www.shakacon.org/talks/NFI-Shakaconwin32dd0.3.pdf [8] Oliveira, Flávio de Souza, “Forense Computacional: Aspectos Legais e Padronização”. Disponível em: http://www.buscalegis.ufsc.br/revistas/index.php/buscalegis/article/viewFile/6018/5587 [9] Heredia,Tomás, “Gestión y tratamiento de Incidentes de Seguridad de la Información”. Disponível em: http://www.arcert.gov.ar/ncursos/material/gestion_de_incidentes-parte_3v2.1.1-6pp.pdf [10] Melo, Sandro “Computação Forense com Software Livre”, editora Alta Books, 2009. [11] Rohr, Altieres “Additional Data Streams”. Disponível em: http://www.linhadefensiva.org/2005/02/streams/ [12] Elias, Wagner, “Alternate Data Stream”. Disponível em: http://wagnerelias.com/2005/12/29/alternate-data-stream/ [13] Slack space data: Subversive Technologies & Countermeasures. Disponível em: http://www.wikistc.org/wiki/Slack_space_data [14] RFC 3227 (Fevereiro de 2002). Disponível em: http://www.ietf.org/rfc/rfc3227.txt [15] Kamoshida, Akiteru, “Analyze an Unknown Binary, Perform Sfind Tool Validation and Legal Issue of Incident Handling in Japan”. Disponível em: https://computerforensics.sans.org/community/papers/evaluation_of_the_forensic_toolkit_118 [16] WINDOWS FORENSIC TOOLCHEST. Disponível em: http://www.foolmoon.net/security/wft/ 65 [17] Stratikopoulos, Alexandre, “Técnicas anti-forense para ocultação de dados”. Disponível em: http://www.dicas-l.com.br/dicas-l/20091105.php [18] Chuvakin, Anton, “Linux Data Hiding and Recovery”. Disponível em: http://www.linuxsecurity.com/content/view/117638/49/ [19] How to get information about your file system in Ubuntu. Disponível em: http://www.ubuntugeek.com/how-to-get-information-about-your-file-system-in-ubuntu.html [20] Levy, Jamie, “/dev/crash Driver”. Disponível em: http://gleeda.blogspot.com/2009/08/devcrash-driver.html [21] Linux Memory Forensics. Disponível em: http://volatilesystems.blogspot.com/2008/07/linux-memory-analysis-one-of-major.html [22] Crash. Disponível em: http://people.redhat.com/anderson/ [23] Creating disk image for Jari OS. Disponível em: http://jarios.org/node/33 [24] RIP Thinkpad / Mount partition of whole-disk-dd-image. Disponível em: http://pronweb.de/node/15 [25] Packt Storm. Disponível em: http://www.packetstormsecurity.org/linux/security/ 66 ANEXOS ANEXO 1 – Adquirir imagem forense através do HELIX HELIX - DD A primeira opção especifica-se o dispositivo. Na segunda opção opta-se se a cópia dos dados será feita sob a forma de conexão física ou via rede. A opção que se segue requer a informação aonde será armazenada a imagem. O nome que será dado à imagem vem logo abaixo. Ao final, especificar o tamanho dos blocos lidos e a conversão sem erros. Figura 28 – Aquisição da imagem pelo DD Clicando em Acquire, uma janela de confirmação dos campos preenchidos para serem usados com o comando dd irá aparecer. Figura 29 – Confirmação do comando DD 67 HELIX – FTK IMAGER O botão IMAGER iniciará o modo de utilização do FTK. Figura 30 – FTK Imager Figura 31 – Menu de opções do FTK Para adicionar uma evidência, basta clicar no ícone correspondente a uma lupa com um símbolo de “+”, localizado no lado superior esquerdo. Ao lado deste ícone, encontre outro capaz de adicionar todos os dispositivos (particionamentos, mídias) ligados à máquina que será periciada. Os ícones correspondentes a lupas com sinais vermelhos são utilizados para cancelar a utilização da evidência. Após os ícones simbolizados pelas lupas, encontra-se o ícone de criar disco de imagem. É com ele que se inicia o processo de duplicação da mídia e aquisição da imagem para a análise. Caso os dispositivos analisados possuam arquivos protegidos, o FTK possui um artifício para a quebra dessa proteção, basta clicar no ícone correspondente a um cofre na cor amarela. O ícone ao lado do cofre, correspondente a uma chave amarela, pode detectar sistemas criptografados em EFS. 68 Para exportar um arquivo que está sendo investigado em seu formato original, basta clicar no ícone correspondente a uma página branca, ao lado da chave na cor amarela. Os três ícones que possuem um óculos possibilitam a visualização dos dados de forma original, em texto e hexadecimal. Obs.: O versão do FTK quem vem na distribuição do HELIX modifica o MACtime ao se manipular a árvore de diretórios e arquivos diretamente nele. Para poder visualizar e manipular a árvore será necessário pegar uma versão mais nova do FTK. De posse de uma versão que possibilite a navegação na árvore de arquivo e diretórios, já pode ser realizada a busca, recuperação e análise dos arquivos a serem periciados. Sendo assim, podem-se visualizar arquivos em formato texto, arquivos pdf, imagens jpg, jpeg, bmp, tif e em formato hexadecimal. Aquisição da Imagem Clicando no botão correspondente a Create Disk Image para iniciar o processo de aquisição da imagem. Na tela que se abre será questionado o tipo de evidência que se está tratando. No exemplo criado nesse material foi selecionada a opção de uma partição. Figura 32 – Tipo evidência a ser periciada 69 Seleciona o dispositivo de origem que será duplicado e clicar em Finish. Figura 33 – Dispositivo a ser duplicado A tela a segui serve para adicionar o destino da imagem e marcar as três caixas de seleção. Elas servem para acionar os comandos de verificação, calcular o tempo do desenvolvimento do trabalho e criar uma lista contendo todos os arquivos e diretórios. Figura 34 – Tela de criação de imagem I 70 Clicando no botão Add... da Figura 8, a tela a seguir questiona o formato da imagem que se quer adquirir. No exemplo demonstrado foi escolhido o tipo de imagem dd. Figura 35 – Tipo de imagem Preencher os campos que serão utilizados na criação do relatório Figura 36 – Informações para o relatório A próxima tela diz respeito ao local de destino da imagem e o nome que a mesma terá ao ser armazenada. Figura 37 – Tela de criação de imagem II 71 Após todos os quesitos preenchidos, basta clicar em Start para iniciar a aquisição da imagem forense. Esse processo pode demorar, dependendo muito do tamanho da mídia que está sendo duplicada. Figura 38 – Tela de criação de imagem III Quando a duplicação termina, o FTK exibe a informação de verificação do hash da imagem e confirma a sua integridade. Perceba que os dados que estão inseridos, estão constantes no relatório final Figura 39 – Confirmação da integridade da imagem 72 No mesmo local em que se encontra a imagem, conta o relatório com todos os campos anteriormente preenchidos. Figura 40 – Relatório gerado pelo FTK 73 ANEXO 2 – Recuperação de Arquivos Ext2 e Ext3 Para recuperar arquivos é necessário saber em qual inode o arquivo estava armazenado. Caso não seja possível descobrir o inode, ainda assim existem possibilidades de recuperar apenas parte do arquivo, usar ferramentas para vasculhar o disco e recuperar arquivos ou mesmo utilizar os comandos grep e strings para saber onde à informação a que se procura está armazenada. Descobrir informações sobre o sistema de arquivo # fsstat -f linux-ext2 imagem_disco.dd Obs.: Entre outras informações que o comando fsstat traz, as informações sobre os metadados como range e tamanho do bloco são bastante relevantes. Recuperar arquivos que não foram sobrescritos Encontrar o inode onde o arquivo estava armazenado # fls -adpr imagem_disco.dd Mais informações sobre o arquivo # istat imagem_disco.dd 4444 Nome original do arquivo # ffind -a imagem_disco.dd 4444 Recuperar o arquivo no inode encontrado # icat imagem_disco.dd 4444 > /dados/arquivo.tgz Obs.: Utiliza-se o comando icat quando se tem o valor do inode. Caso não o possua, utiliza-se o comando dcat. 74 Recuperar arquivos que foram sobrescritos Recuperar informações dos blocos não alocados # dls -A -f linux-ext2 imagem_disco.dd > imagem_disco.dd.dls.naoalocadas Descobrir a posição do arquivo # grep -ab “rm -rf” imagem_disco.dd.dls.naoalocadas Obs.: Irá retornar o offset em bytes onde a sequência “rm -rf” pode ser encontrada. Recuperar o tamanho do bloco do disco # fsstat -f linux-ext2 imagem_disco.dd | grep “Block Size” Block Size: 4096 Recuperar o endereço do bloco no disco # echo $((75821667/4096)) 18511 Obs.: o primeiro número usado foi encontrado em uma das ocorrências do comando grep. O segundo corresponde ao tamanho do bloco do disco. O resultado é o endereço do bloco. Encontrar a posição original na imagem # dcalc -u 18511 imagem_disco.dd 30978 Obs.: O resultado obtido pelo comando dcalc corresponde ao bloco de dados na imagem original, obtido a partir do bloco de endereço da imagem de arquivos não alocados. 75 Recuperando arquivo # dcat -f linux-ext2 imagem_disco.dd 30978 > /data/arquivo Recuperar arquivos que foram parcialmente sobrescritos Geralmente o sistema operacional tenta alocar blocos consecutivos para um arquivo. O método especificado abaixo se baseia nessa alocação e recupera parcialmente um arquivo do tipo TAR(baseado na assinatura do arquivo). Caso o arquivo não esteja alocado em blocos consecutivos, talvez seja impossível recuperá-lo totalmente. Recuperar informações dos blocos não alocados # dls -A -f linux-ext2 imagem_disco.dd > imagem_disco.dd.dls.naoalocadas Analisar diversos blocos ao redor do bloco encontrado # dcat -f linux-ext2 imagem_disco.dd 39341 1000 Obs.: O ultimo número corresponde ao número de blocos próximos ao bloco indicado no primeiro número. Procurar por um texto que esteja próximo do fim do arquivo # grep -ab './udhss -f ./s' imagem_disco.dd.dls.naoalocadas Obs.: Irá retornar o offset em bytes onde a sequência “./udhss -f ./s” pode ser encontrada. Recuperar o tamanho do bloco do disco # fsstat -f linux-ext2 imagem_disco.dd | grep “Block Size” Block Size: 4096 76 Recuperar o endereço do bloco no disco # echo $((68975440/4096)) 16839 Obs.: o primeiro número usado foi encontrado em uma das ocorrências do comando grep. O segundo corresponde ao tamanho do bloco do disco. O resultado é o endereço do bloco. Encontrar a posição original na imagem # dcalc -u 16839 imagem_disco.dd 39943 Exibir o número do bloco a ser recuperado # echo $((39943-39341)) 602 Recuperar o bloco de arquivo # dcat -f linux-ext2 imagem_disco.dd 39341 602 > /data/recuperado.tar Obs.: Ao se executar o comando tar -tvf /data/recuperado.tar será exibido o conteúdo armazenado no arquivo. Pode ser que no fim gere uma saída de erro. Isso se deve ao fato do arquivo estar parcialmente sobrescrito, mas pode ser recuperado quase que totalmente. Recuperação de arquivos journaling A forma de recuperação de arquivos em filesystem ext2 é um pouco diferente em filesystem ext3. Quando um arquivo é apagado em um filesystem ext3, a lista de blocos que apontam para o seu conteúdo é zerada. Não sendo mais possível a recuperação pelas informações do inode. No entanto, as informações ficam armazenadas no journaling do filesystem e assim será possível recuperar informações que foram 77 apagadas do inode original. Será utilizado um exemplo para mostrar como se deve proceder. Descobrindo o tamanho do bloco no disco # dumpe2fs /dev/sda1 | more Obs.: O arquivo usado para teste será criado em /dev/sda1, por isso é necessário saber o tamanho do bloco nessa partição. Atentar-se para o campo Block Size. Criando um arquivo # gzip -9 -c /bin/nc > /tmp/file.gz Informações sobre os metadados como o comando li # ls -li /tmp/file.gz 242703 -rw-r--r-- 1 root root 10611 2009-12-12 13:28 /tmp/file.gz Informações sobre os metadados como o comando istat # istat /dev/sda1 242703 inode: 242703 Allocated Group: 15 Generation Id: 519868635 uid / gid: 0 / 0 mode: -rw-r--r-size: 10611 num of links: 1 Inode Times: Accessed: Sat Dec 12 13:28:51 2009 File Modified: Sat Dec 12 13:28:51 2009 Inode Modified: Sat Dec 12 13:28:51 2009 78 Direct Blocks: 520756 520757 520758 Obs.: Entre outras informações atentar para o MACtime, Direct Blocks e size. Apagando o arquivo # rm -rf /tmp/file.gz Exibir novamente as informações dos metadados com o comando li # ls -li /tmp/file.gz ls: /tmp/file.gz: Arquivo ou diretório não encontrado Exibir novamente as informações dos metadados com o comando istat # istat /dev/sda1 242703 inode: 242703 Not Allocated Group: 15 Generation Id: 519868635 uid / gid: 0 / 0 mode: -rw-r--r-size: 0 num of links: 0 Inode Times: Accessed: Sat Dec 12 13:28:51 2009 File Modified: Sat Dec 12 13:30:23 2009 Inode Modified: Sat Dec 12 13:30:23 2009 Deleted: Sat Dec 12 13:30:23 2009 Direct Blocks: Obs.: Pode se constatar que o arquivo não está mais alocado. Também não há mais informações sobre o tamanho e a lista de blocos onde o arquivo foi armazenado. 79 Acessando as informações do Journal do FileSystem # debugfs /dev/sda1 Obs.: O debugfs abre um prompt e fica aguardando comandos para acessar diretamente o dispositivo. No prompt do debugfs localizar o arquivo corresponde ao inode debugfs: logdump -i <242703> A saída do comando logdump -i pode ser bem extensa, dependendo do inode pesquisado. O importante é procurar informações mais próximas ao MACtime coletado com o comando istat. Dentre um dos registros próximos a MACtime identificado, encontra-se o registro de uma cópia do inode original do arquivo, bem como o seu tamanho e lista de blocos. Identificar os campos size: 10611 Blocks: (0+3): 520756 Obs.: O campo size corresponde ao tamanho do arquivo. O campo Blocks identifica quantos blocos de endereço comporta o arquivo e o primeiro bloco de endereço associado a ele. Recuperar arquivo # dcat /dev/sda1 520756 3 > /tmp/arquivo_recuperado.gz Obs.: É passado o valor do primeiro bloco de endereço e da quantidade de blocos que se quer recuperar. 80 Checando informações do arquivo recuperado com o comando file # file /tmp/arquivo_recuperado.gz /tmp/arquivo_recuperado.gz: gzip compressed data, was "nc", from Unix, last modified: Fri Mar 24 14:29:13 2006, max compression Checando informações do arquivo recuperado com o comando ls # ls -l /tmp/arquivo_recuperado.gz -rw-r--r-- 1 root root 12288 2009-12-12 13:45 /tmp/arquivo_recuperado.gz Obs.: O comando dcat consegue recuperar apenas blocos inteiros de endereço. O tamanho do bloco de endereço no sistema para esse exemplo é de 4096 bytes. Como ele recuperou três blocos, o valor do arquivo vai ser de 12288 bytes. Recuperando o valor exato do arquivo # dd if=/tmp/arquivo_recuperado.gz of=/tmp/arquivo_recuperado_real.gz bs=1 count=10611 Verificando compreensão do arquivo # gzip -l -t /tmp/arquivo_recuperado_real.gz compressed 10611 uncompressed ratio uncompressed_name 20192 47.6% /tmp/arquivo_recuperado_real 81 ANEXO 3 – Forense com o Autopsy A ferramenta Autopsy nada mais é que um front end para a suíte SleuthKit. O SleuthKit está presente em diversas distribuições de live-cd forenses. Seu desenvolvimento foi baseado em uma ferramenta muito parecida, porém descontinuada, chamada de The Coroner's Toolkit. Instalação do Autopsy # aptitude install autopsy Obs.: A distribuição testada com as ferramentas já possuía essa ferramenta. O comando acima serve apenas para exemplificar a sua instalação em uma distribuição GNU Debian. Iniciando o Autopsy # autopsy O Autopsy utiliza o browser para poder manipular as ferramentas do Sleuthkit. Ao iniciá-lo, ela passa a escutar na porta 9999 através do caminho http://localhost:9999/autopsy. Figura 41 – Página inicial do Autopsy Criando um novo Caso a ser periciado Clicar em New Case e preencher os campos da próxima tela. Entre os campos se encontra o Nome do caso, a sua descrição e os nomes dos investigadores. 82 Figura 42 – Criação de um novo caso Após preencher os campos, clicar em New Case e aguardar verificar onde o caso está sendo criado e selecionar o investigador que vai tratar do caso. Figura 43 – Confirmação de criação de um novo caso Obs.: O Autopsy não vem com a opção de deleção do caso criado. Caso ocorra algum erro no momento da sua criação, a deleção do caso terá que ser feita vinha linha de comando aonde a informação Case directory está apontando. 83 Adicionando um host ao caso Clica-se em Add Host para passar as informações do host a ser periciado. Informações como nome do host, sua descrição, time zone utilizado, banco com hash conhecidos, entre outros podem ser utilizados. Figura 44 – Adicionar um novo host Ao clicar em Add Host ocorre a confirmação da criação do host na pasta definida no caso. Após isso será necessário adicionar a imagem do disco, partição ou mídia da máquina suspeita. Figura 45 – Confirmação da adição de um novo host 84 Adicionando uma imagem ao caso No exemplo usado para a elaboração desse material do projeto foi usado a imagem de uma partição /boot, separada previamente para a análise. Figura 46 – Adicionar uma nova imagem I Como é a primeira vez no caso e o hash já foi tirado anteriormente, basta apenas preencher os campos pertinentes a ao ponto de montagem, tipo de FileSystem e deixando a forma da integridade da mídia como padrão. Figura 47 – Adicionar uma nova imagem II 85 Ao clicar no botão Add surge uma nova janela com o a confirmação da adição da imagem ao caso, além da opção da adição de novas imagens. Para o nosso exemplo usaremos apenas essa partição, mas o procedimento que irá se seguir terá que ser usado para todas as partições que serão adicionadas. Figura 48 – Confirmação da adição da imagem Ao clicar OK, o Autopsy exibe as imagens referentes aquele caso e abre as opções de manuseio da imagem. Figura 49 – Imagens adicionadas ao caso Criação da Timeline Para se criar a timeline basta clicar no campo File Activity Time Lines e seguir as instruções que se segue na janela que irá aparecer. Figura 50 – Criação da Timeline I 86 Primeiro será necessário criar o arquivo de dados do FileSystem. Basta Clicar no botão superior esquerdo com a descrição Create Data File. Entre outras opções que aparecem pode se optar pela imagem que será gerada a timeline, a opção por arquivos alocados ou não e escolher o local onde essas informações ficarão armazenadas. Figura 51 – Criação da Timeline II A janela seguinte exibe a confirmação da tarefa realizada e gera o hash para garantir a integridade dos arquivos. Figura 52 – Criação da Timeline III Ao se clicar em OK o próximo passo será a definição do início e final das datas para a geração da timeline, bem como o seu nome. Se, a imagem contiver os arquivos /etc/passwd e /etc/group deverá ser especificado, caso contrário, basta apenas deixar conforme a figura abaixo. 87 Figura 53 – Criação da Timeline IV Clicando em OK aparecerá à confirmação das opções escolhidas na janela anterior. Figura 54 – Confirmação da criação da Timeline Clicando em OK novamente o Autopsy retorna a timeline formatada conforme escolhido anteriormente. Figura 55 – Visualização da Timeline Clicando em Close no canto superior direito, acarretará na volta das opções do host. 88 Figura 56 – Janela de análise de Imagens Recuperando strings da imagem Em details pode-se obter informações referentes à imagem, bem como dados que ainda podem ser coletados. Figura 57 – Detalhes da Imagem I Para se extrair as strings da imagem basta clicar em Extract String e aguardar a tela de confirmação a confirmação a seguir. 89 Figura 58 – Confirmação da extração de strings da imagem Clicando na opção de Image Details a próxima tela irá retornar a confirmação e abrir a opção de extrair fragmentos não alocados. Figura 59 – Detalhes da Imagem II 90 Para se extrair fragmentos não alocados basta clicar na opção Extract Unallocated e aguardar a confirmação da tela a seguir. Figura 60 – Confirmação da extração de fragmentos não alocados Novamente clicando em clicando em Image Details será possível exibir as informações referentes à imagem e ainda abre a opção de extrair as string dos fragmentos não alocados. Figura 61 – Detalhes da Imagem III Clicando em Extract Strings será possível extrair as strings dos fragmentos não alocados. 91 Figura 62 – Confirmação da extração das strings de fragmentos não alocados Clicando em Image Details pode se visualizar todas as informações da imagem e opções que foram utilizadas para extrair strings. Figura 63 – Detalhes da Imagem IV Clicando em File System podem-se obter informações gerais sobre a imagem periciada. 92 Figura 64 – Informações gerais sobre a imagem Verificar arquivos baseados em assinaturas Ao entrar na opção File System, novas opções aparecem no menu superior. No campo descrito como File Type será possível analisar os arquivos da imagem baseado em um banco de assinaturas. Figura 65 – Análise de arquivos baseados em assinaturas I Para analisar os arquivos baseados em assinaturas basta apenas clicar em Sort Files by Type e selecionar as opções a seguir. 93 Figura 66 – Análise de arquivos baseados em assinaturas II A confirmação de que as opções foram executadas com êxito aparecem na próxima tela e ver os arquivos basta clicar na opção View Sorted Files. Figura 67 – Análise de arquivos baseados em assinaturas III O Autopsy apenas exibirá o caminho em HTML onde os arquivos poderão ser visualizados. Figura 68 – Link para visualização dos arquivos 94 Basta copiar o link e colocar no Browser para poder visualizá-los. Figura 69 – Arquivos listados baseados em assinaturas Verificar os Metadados Voltando para a figura anterior a essa acima, também é possível trabalhar na camada de Metadados clicando em Meta Data. Colando o número do inode no campo correspondente, será possível visualizar informações referentes a ele. Figura 70 – Informações sobre os metadados I 95 Para saber como estar à lista completa dos inode, seja ele alocado ou não alocado, basta clicar em Allocation List no canto esquerdo. Figura 71 – Informações sobre os metadados II Clicando em Close no canto superior esquerdo, volta para a tela de opções do host. Figura 72 – Análise da Imagem 96 Verificar Integridade Para obter a validade da integridade da imagem, timeline ou de alguns dos arquivos extraídos, basta apenas clicar na opção Image Integrity e na janela seguinte clicar em Validate naquele arquivo que se deseja validar. Figura 73 – Validação de algum item Dessa forma está finalizada o conceito de cinco camadas na análise Post Mortem elaborada pela SUN MICROSYSTEMS, só que de uma forma transparente para o perito. Abrir um caso Para abrir novamente o caso ou mesmo para modificá-lo, basta escolher a opção de Open Case na tela inicial do Autopsy. Figura 74 – Abrir um caso 97 Seleciona-se o caso que será aberto e clica-se em OK. Figura 75 – Opções de casos a serem abertos Na janela seguinte basta escolher umas das opções para modificar o caso se não, basta apenas clicar em OK para se exibir o caso novamente. Figura 76 – Opções de hosts a serem abertos 98 ANEXO 4 – Usando a ferramenta bmap O slack space é o espaço não alocado por um dado em um bloco de endereço do sistema. Atacantes mais astutos podem usar esse espaço no bloco para injetar códigos maliciosos ou até um sistema operacional inteiro. A ferramenta bmap é capaz de manipular o slack space. Ela se encontra de forma gratuita na internet e na distribuição mais nova, e proprietária, do HELIX. Criando um arquivo para testes # echo “teste” > /tmp/arquivo.txt Verificando conteúdo do arquivo # cat /tmp/arquivo.txt teste Verificando o espaço ocupado pelo arquivo # ls -lh /tmp/arquivo.txt -rw-r--r-- 1 root root 6 Dez 18 10:52 /tmp/arquivo.txt Verificando informações do slack space # bmap --mode slack /tmp/arquivo.txt getting from block 2561 file size was: 6 slack size: 1018 block size: 1024 Obs.: O comando usando esse parâmetro exibe informações sobre o número do bloco de endereço, tamanho ocupado pelo arquivo, espaço que ainda sobra no bloco de endereço e tamanho do bloco de endereço. Uma forma apenas para recuperar o espaço que ainda tem no slack space seria: 99 # bmap --mode slackbytes /tmp/arquivo.txt 1018 Verificando informações do arquivo # dcat /dev/sda6 2561 | hexdump -C 00000000 74 65 73 74 65 0a 00 00 00 00 00 00 00 00 00 00 |teste...........| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00000400 Obs.: Esse comando servirá apenas para confrontar a verificação quando tiver alguma informação no slack space. Os primeiros 6 bytes correspondem ao arquivo original. Colocando informação no slack space do arquivo # echo “Exemplo de texto de codigo injetado no slack space” | bmap -mode putslack /tmp/arquivo.txt Verificando novamente informações do slack space # bmap --mode slack /tmp/teste.txt getting from block 2561 file size was: 6 slack size: 1018 block size: 1024 Exemplo de texto de codigo injetado no slack space Verificando informações do arquivo # dcat /dev/sda6 2561 | hexdump -C 00000000 74 65 73 74 65 0a 45 78 65 6d 70 6c 6f 20 64 65 |teste.Exemplo de| 100 00000010 20 74 65 78 74 6f 20 64 65 20 63 6f 64 69 67 6f | texto de codigo| 00000020 20 69 6e 6a 65 74 61 64 6f 20 6e 6f 20 73 6c 61 | injetado no sla| 00000030 63 6b 20 73 70 61 63 65 0a 00 00 00 00 00 00 00 |ck space........| 00000040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00000400 Checando novamente o conteúdo do arquivo # cat /tmp/arquivo.txt teste Verificando novamente o espaço ocupado pelo arquivo # ls -lh /tmp/arquivo.txt -rw-r--r-- 1 root root 6 Dez 18 10:52 /tmp/arquivo.txt Obs.: Não foi alterado nem o tamanho do arquivo e muito menos o seu conteúdo. Um HIDS não detecta este tipo de ataque, pois ele irá checar a integridade do arquivo e como foi demonstrada, essa integridade permanece intacta. 101 ANEXO 5 – Alternate Data Streams Os Alternate Data Streams (ADS) foram criados inicialmente para armazenar informações extras sobre o arquivo, como uma forma de descrição dos arquivos. Um exemplo do uso de ADS é o Thumbnail ou o ícone de uma imagem. A idéia parte do presuposto de que qualquer arquivo ou pasta possui uma stream principal. Cada stream principal pode ter várias streams adicionais. Essas streams adicionais são identificas por qualquer nome e até o que parece tem um tamanho ilimitado. Sendo assim, pessoas mal intencionadas podem colocar códigos para serem executados por algum malware. Criando um arquivo para testes D:\IR\xp> echo teste > c:\teste.txt Verificando tamanho do arquivo D:\IR\xp> dir c:\teste.txt 18/12/2009 12:24 8 testes.txt Verificando o conteúdo do arquivo D:\IR\xp> type c:\teste.txt teste Adicionando um ADS ao arquivo D:\IR\xp> echo texto oculto > c:\teste.txt:nomeads Verificando novamente tamanho do arquivo D:\IR\xp> dir c:\teste.txt 18/12/2009 12:26 8 testes.txt 102 Verificando novamente o conteúdo do arquivo D:\IR\xp> type c:\teste.txt teste Obs.: Apenas o MACtime é alterado. O tamanho do arquivo, conteúdo e o seu nome permanecem o mesmo. Verificando o conteúdo de um ADS no arquivo D:\IR\xp> less < c:\teste.txt:nomeads texto oculto Outra forma: Verificando com a ferramenta streams D:\IR\xp> streams c:\teste.txt :nomeads:DATA 15 Obs.: Caso fosse um arquivo executável basta usar o comando demonstrado abaixo. D:\IR\xp> start c:\teste.txt:arquivo.exe 103