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.

https://docs.microsoft.com/en-us/sysinternals/


Nirsoft

NirSoft representa um conjunto de ferramentas criadas por Nir Sofer, das quais destacamos as que o mesmo categorizou de âmbito forense.

http://www.nirsoft.net/


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

https://www.mitec.cz/


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