Fundamentos da Forense Digital
4. Aquisição e análise de informação volátil
4.1. Processo de captura da informação volátil
Em primeiro lugar é necessário garantir a estabilidade da nossa máquina de trabalho. Um dos problemas que podem ser sentidos é o reinício automático da máquina, causado por atualizações automáticas do sistema operativo. Aconselha-se assim a desativação, não das atualizações do sistema operativo, mas a capacidade das mesmas de forçarem o reinício da máquina. Este reinício poderá por exemplo interromper uma aquisição de um disco ou uma análise de uma imagem.
Outra boa prática é negar o acesso de escrita a discos amovíveis, impedindo assim que os discos de origem sejam alterados.
Um dado volátil é qualquer dado que pode ser perdido quando o sistema é desligado, como por exemplo um registo de uma ligação a um site na Internet, que ainda esteja presente na memória RAM ou o conteúdo do clipboard do sistema. A recolha destes dados deve de ocorrer com o sistema em funcionamento.
Live-Data Forensics, é a técnica utilizada na recolha de dados voláteis e que podem ser perdidos caso o dispositivo deixe de ter energia.
DUMP da memória é o procedimento de armazenar num ficheiro, todos os dados presentes num determinado momento na memória física do computador.
Na recolha deste tipo de dados é necessário ter em conta a ordem de volatilidade dos dados, adaptando a recolha à categoria de dados que mais interessam. Caso o nosso objetivo seja identificar o envio de um e-mail para determinado endereço, não fará muito sentido dar prioridade à identificação de processos em vez da recolha de senhas, ou a credencias de acesso, que permitam acesso ao endereço de e-mail.
É muito importante que a recolha de dados em live data seja devidamente documentada, preferencialmente criando uma equipa de recolha de pelo menos dois elementos, de modo a garantir os procedimentos de recolha seja efetuado por um elemento enquanto o outro documenta o processo de recolha utilizado.
É também importante garantir a mínima alteração ao sistema a ser analisado e caso seja necessário efetuar alguma alteração que a mesma seja registada em relatório, para memória futura.
Recomendações na utilização de scripts:
·
Utilização de variáveis de
ambiente
(ex.: cmd: %COMPUTERNAME% / PS: $env:Computername)
· Execução em modo Administrador
4.1.1. Ferramentas Nativas de Sistema
Tendo em consideração a mínima pegada digital no dispositivo, devemos sempre que possível utilizar ferramentas de âmbito forense para a recolha de informações úteis que permitam uma análise mais eficiente. A exemplo disso temos informações relativas a full-disk encryption. No entanto o sistema operativo MS Windows permite a execução de comandos e scripts com ferramentas nativas, sendo uma excelente possibilidade de obter as informações necessárias com uma mínima pegada digital.
Linha de Comandos |
A linha de comandos do sistema MS Windows é nativamente uma das mais utilizadas na recolha de informação de sistema, possibilitando a execução de inúmeros programas para este fim. |
![]() |
Windows Management Instrumentation (WMI) |
Windows Management Instrumentation permite o acesso ao sistema operativo através do Windows Management Instrumentation Command-line, sendo uma excelente forma de obter informações do mesmo. |
|
Windows Batch File |
É um ficheiro de script que permite agrupar um conjunto de comandos, linha a linha. Permite a utilização de estruturas de repetição, estruturas condicionais, a utilização de variáveis, típicas de uma linguagem de script. |
|
Powershell |
PowerShell é atualmente a linguagem de script, inicialmente desenvolvida para os sistemas MS Windows, sendo disponibilizado o seu código-fonte aberto e com suporte multiplataforma, em 2016. Com uma Shell própria, o PowerShell foi desenvolvido para permitir a execução de cmdlets, permitindo também a execução de outras shells. |
|
4.1.2. Ferramentas Externas
Como recurso a ferramentas externas, deve existir o cuidado de testar exaustivamente cada uma destas ferramentas, de modo a saber exatamente o que as mesmas fazem no sistema. Quaisquer ferramentas externas utilizadas, deve ser anotado a data/hora de utilização, bem como descrever a intenção de utilização.
Windows Sysinternals |
Windows Sysinternals representa um conjunto de ferramentas originalmente criadas por Mark Russinovich, com intenções de ajudar os administradores de sistemas a gerir e monitorizar os sistemas Windows. |
![]() |
Nirsoft |
NirSoft representa um conjunto de ferramentas criadas por Nir Sofer, das quais destacamos as que o mesmo categorizou de âmbito forense. |
|
Mitec |
Mitec é também um site que disponibiliza um conjunto de ferramentas interessantes para recolha e análise de informação, a exemplo é o seu MiTeC System Information X e o Windows Registry Recovery |
|
Zimmerman |
Eric Zimmerman desenvolveu um conjunto de ferramentas de utilização gratuita, com a intenção de ajudar na resposta a incidentes e na análise forense. |
Eric Zimmerman Tools |
4.1.3. Data, Hora e outras informações do Sistema
Este elemento deve ser o primeiro a ser recolhido quando se executa uma investigação. A data do sistema permite contextualizar a informação recolhida mais tarde e permite ao investigador construir uma timeline de eventos ocorridos, não só no sistema em análise, mas através da correlação entre as informações de outros sistemas. Outro dado importante é o tempo decorrido desde o último boot (uptime).
Algumas ferramentas podem ajudar os investigadores nestas tarefas, como por exemplo MiTeC - System Information X[1] e WinAudit[2].
Recolha da data/hora do sistema que está a ser intervencionado (Figura 32).
Figura 32 - Obtenção da data e hora do sistema.
Recolha da data/hora do último arranque do sistema (Figura 33).
Figura 33 - Obtenção da data e hora do último boot do sistema
Comandos úteis para obtenção de dados do sistema:
· Versão do Windows: ver
· Variáveis de ambiente: set
· Informações de Sistema: systeminfo /fo list >> C:\tmp\info.txt
· Consulta ao registo: reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName
· Consulta através do WMI: wmic os get name, version
· Início e encerramento do sistema: TurnedOnTimesView.exe (Fonte: Nirsoft.net)
Comandos úteis para obtenção de dados sobre Utilizadores de Sistema
· Utilizadores:
o Net User [username]
o Userprofilesview.exe /shtml "f:\temp\profiles.html" /sort "User Name" (Fonte: Nirsoft.net)
· Utilizadores Logados:
o PSLoggedOn.exe (Fonte: SysInternals)
o LogonSessions.exe (Fonte: SysInternals)
4.1.4. Processos e Aplicações
É fulcral a enumeração dos processos em execução num Sistema potencialmente comprometido. Um processo é uma seção ou instância de uma aplicação que está a ser executado. A observação dos processos em execução no Task Manager dá algumas informações, no entanto pode ser obtida muito mais informação do que a aí observada.
Alguns dos tipos de informações sobre os processos em execução, possíveis de serem obtidos:
· O caminho absoluto do ficheiro executável
· O comando utilizado para lançar o processo
· A quantidade de tempo em que o processo está em execução
· Qual o utilizador que iniciou o processo e o seu nível de permissões no sistema
· Módulos que o processo tenha carregado
· Conteúdo da memória alocada ao processo
Exemplos de programas e comandos para aquisição de informações sobre os processos em execução no sistema:
· Psinfo.exe -h -s -d /accepteula (Fonte: SysInternals)
· PsList.exe (Fonte: sysinternals)
· CurrProcess.exe (Fonte: Nirsoft.net)
· tasklist /v
· Wmic process get name, processid, priority, threadcount, privatepagecount
Exemplos de programas e comandos para aquisição de informações sobre os serviços, tarefas agendadas e eventos do sistema:
· [serviços] PsService.exe (SysInternals)
· [serviços] net start
· [tarefas agendadas] schtasks
· [eventos] PsLogList.exe (SysInternals)
· [eventos] EventLogSourcesView.exe (Nirsoft)
· [eventos] wevtutil
4.1.5. Memória
Clipboard é uma área na memória onde podem ser armazenados dados para uso futuro. A maior parte das aplicações em Windows providenciam esta funcionalidade através do menu Edit e as escolhas Copiar, Colar ou Cortar. Esta funcionalidade é útil para mover dados entre aplicações ou documentos. Muitas vezes dados ficam na Área de Transferência durante dias, sem que o utilizador se aperceba.
Para recolher os dados persentes nesta zona da memória pode ser utilizada a aplicação InsideClipboard.exe (Nirsoft.net).
Analistas de malware pesquisam na memória quando lidam com malware ofuscado, pois quando este é executado é decifrado para a mesma memória. Além disso os Rootkits escondem processos, ficheiros, chaves de registo e até ligações de rede. É possível verificar o que está escondido da vista do utilizador através da análise da memória RAM. Estes dados são bastante úteis para contextualizar dados identificados em análises futuras.
4.1.6. Aquisição da Memória
O processo de Dump da Mémória (Figura 34) é também muito utilizado para diagnosticar bugs em programas, pois normalmente são criados esses dumps quando existe um erro e os programas deixam de inesperadamente de funcionar.
Estes dumps da memória são feitos em formato binário, octal ou hexadecimal. Pode ser feita uma investigação utilizando programas, como por exemplo:
· DumpIT (moonsols)
· AccessData FTK Imager
· Belkasoft Live RAM Capturer
Figura 34 - Exemplo do funcionamento do DumpIT
Existem outros ficheiros[3], de suporte à memória principal, que devem ser recolhidos, como por exemplo pagefile.sys, utilizado pelo Windows como "memória virtual". Sempre que o sistema necessita de utilizar mais memória do que a disponível na RAM. Ou hiberfil.sys é utilizado para armazenar os dados da memória quando o computador hiberna.
Para recolha da memória em ambiente Linux podem ser utilizados os programas dcfldd ou insmod.
· dcfldd if=/dev/fmem of=memory.dump
· insmod lime-XX.ko "path="memory.dump" format=raw"
4.1.7. Informação de Rede
Recolha de informações voláteis sobre o estado da rede do computador: conexões ativas, portos abertos, informações e configuração de encaminhamento, cache, ARP….
Assim que um incidente é reportado, o investigador deve recolher informações sobre o estado das ligações de rede com o sistema afetado.
Estas ligações podem expirar e a informação desaparecer com o passar do tempo. A observação destes dados pode ajudar a determinar se um atacante ainda está logado no sistema, se existe ligações relacionadas com malware, se existe algum processo a tentar encontrar outras máquinas na rede para propagação desse malware ou enviar informações de log para um servidor malicioso.
A recolha destas informações pode providenciar pistas importantes e acrescentar contexto a outras informações recolhidas.
Exemplos de comandos para recolha de informações de rede:
· Informação sobre placa de rede: ipconfig /all
· Cache do DNS: ipconfig /displaydns
· Ligações de Rede ativas: Netstat -a
· Cache do ARP: Arp -a
· Netsh int ipv6 show neigh
· Eventos wifi: Netsh wlan show all
· Redes Wireless: WifiInfoView.exe (Fonte: Nirsoft.net)
· Tabela de Routing: Route print
· Cache conexões: Netstat -c
· Lista as sessões de Cache: Netstat -s
· Net accounts
· Partilha de recursos: Net share
· Questiona o Servidor sobre DNS: Nslookup -d
· Lista as conexões atuais: Rasdial
· Lista os perfis: Netsh wlan show profiles