Fundamentos da Forense Digital
4. Aquisição e análise de informação volátil
4.2. Análise da Aquisição da Memória
Existem algumas ferramentas para análise do dump da memória que se baseiam apenas nos conteúdos da RAM. Estes conteúdos poderão estar incompletos, já que partes da memória são armazenadas em disco quando esta não é suficiente para o armazenamento de todos os dados. Para ultrapassar este problema, Nicholas Paul Maclean publicou na sua tese, “Acquisition and Analysis of Windows Memory”, o funcionamento da gestão da memória em sistemas Windows e providenciou uma ferramenta, open-source, com o nome de vtop para reconstruir na íntegra o espaço virtual da memória de um processo.
Para a análise do Dump de Memória podemos utilizar o programa Volatility[1], onde é possível realizar tarefas como a obtenção de informações de alto nível sobre a imagem, onde é deduzida a identificação do sistema operativo (Figura 35), service pack, arquitetura de hardware, endereço de memória e a hora do Dump.
Figura 35 - Obter informação acerca de um dump de memória
Comandos úteis para efetuar o dump do registo:
Exportação para texto:
C:\Regdmp.exe > e:\registryDump.txt
Localizar Expressões no ficheiro exportado:
C:\Find/i "URL" registryDump.txt
Cópia dos ficheiros de registo em utilização:
C:\RawCopy.exe C:\WINDOWS\system32\config\SYSTEM E:\output -AllAttr
Outros comandos úteis:
Obter um screenshot do ambiente de trabalho:
C:\nircmd.exe savescreenshot screen1.png (Nirsoft.net)
Verificação se o disco está protegido com Encriptação (Figura 36)
C:\EDD.exe /accepteula /Batch > e:\EncryptedDiskDetector.txt
C:\Manage-bde –protectors c: -get
Figura 36 - Identificação de um disco encriptado
4.2.1. Sintaxe do programa Volatility
A primeira versão do The Volatility Framework foi lançada numa conferência Black Hat. O software está baseado em anos de investigação académica em análise avançada de memória e forense. O Volatility passou a permitir aos investigadores analisar o estado em que a máquina estava, na altura em que a aquisição foi feita, com base em dados recolhidos da memória volátil.
O The Volatility Framework é baseada na linguagem de programação Python, sendo desenvolvida em Python 2 a sua versão mais maturada, sendo esta que iremos abordar neste tópico. Com o aparecimento do Python 3, surgiu também a necessidade de atualizar a versão do Volatility, aproveitando as vantagens da utilização da nova versão do Python e dotando-o de uma maior automatização. Na versão 2 do The Volatility Framework, o primeiro passo para proceder à análise da memória é a identificação do tipo de Sistema Operativo. Para tal podemos utilizar o comando imageinfo do programa Volatility (Figura 37). Este comando é útil para obtenção de informações de alto nível sobre a imagem, indica a provável identificação do sistema operativo (perfil), service pack, arquitetura de hardware, endereço de memória e a hora do Dump.
Figura 37 - Volatility - Exemplo de output do comando imageinfo
Posteriormente devemos passar os conteúdos da memória para ficheiros de texto para que seja possível uma análise aos seus conteúdos. O Volatility disponibiliza uma série de plugins com essa finalidade.
Sintaxe: volatility -f <nome_da_imagem> -profile=<tipo_de_OS> <plugin> > <output>
· -f: Ficheiro resultante da aquisição do sistema
· -profile: instrução para utilizar o perfil de sistema operativo (previamente identificado)
· plugin: plugin a ser executado
· output: ficheiro para exportar os resultados
4.2.2. Plugins Volatility - Extração
Os plugins que o volatility utiliza são específicos para a identificação das respetivas informações no conteúdo do dump da memória RAM. Iremos aqui abordar alguns desses plugins.
Pslist Listar processos em Execução
Pstree Exibir processos, diferenciando-os na sua origem (Figura 38)
Figura 38 - Plugin pstree do volatility
Psxview Comparar processos (Figura 39)
Figura 39 - Plugin psxview do volatility
Netscan Exibir conexões de rede
Cmdline Comparar processos (Figura 40)
Figura 40 - Plugin cmdline do volatility
Cmdscan Comparar processos (Figura 41)
Figura 41 - Plugin cmdscan do volatility
Consoles. Comparar processos (Figura 42)
Figura 42 - Plugin consoles do volatility
Dumpregistry Extrair arquivos de registo
4.2.3. Plugins Volatility – Análise
Com os ficheiros de registo que foram extraídos da memória, é possível proceder à sua análise com as mesmas ferramentas que os ficheiros de registo extraídos do sistema operativo. A exemplo disso é o RegRipper, o próprio volatility, ou o RegistryReport, cuja imagem se apresenta na Figura 43.
Figura 43 - Análise dos ficheiros com o RegistryReport
Na análise da memória é ainda possível obter ficheiros que tenham sido processados, existindo alguns programas com a possibilidade de identificar e extrair ficheiros da memória, tal como apresentado na figura seguinte com o software Belkasoft, onde é possível verificar que o mesmo identificou endereços de navegação nos Browsers, dados de conversação em chats, ficheiros de email e ficheiros de imagem (Figura 44).
Figura 44 - Análise dos ficheiros com o Belkasoft
A SANS publicou um Poster (Figura 45) alusivo à análise de memória com Volatility, que resume muitos dos plugins úteis neste tipo de análise.
Figura 45 - Poster SANS - Memory Forensics Cheat Sheet v2.0
Criar uma TimeLine de eventos na memória
Com os dados extraídos da memória volátil é útil criar uma Timeline, para possibilitar datar e ordenar os indícios no sistema. Sendo este um processo que envolve os procedimentos descritos de seguida:
Timeliner criar uma timeline
C:\> volatility_2.6_win64_standalone.exe -f IE8WIN7.dmp --profile=Win7SP1x86_23418 timeliner -- output=body > timeliner.body
Ler mais: https://volatility-labs.blogspot.com/2013/05/movp-ii-23-creating-timelines-with.html
Mftparser Obter a atividade da MFT (Master File Table).
C:\> volatility_2.6_win64_standalone.exe -f IE8WIN7.dmp --profile=Win7SP1x86_23418 mftparser -- output=body > mftparser.body
Combinar os ficheiros relativos aos plugins timeliner e mftparser.
# cat timeliner.body mftparser.body >> timeline.log
Mactime[2] Gerar a timeline a partir da combinação dos ficheiros
# mactime -d -b timeline.log > timeline.csv
Resultado final dos procedimentos de TimeLine (Figura 46)
Figura 46 - Conteúdo do timeline.csv
Com esta tabela é possível identificar facilmente as ações passadas na memória do dispositivo, sendo que estas irão complementar as informações obtidas na análise ao dispositivo em dead-box forensics.
Exemplo de identificação de acessos à rede TOR
A exemplo de análise de dados da memória, temos a utilização do Tor Browser, uma vez que o mesmo não guarda informações de navegação no disco rígido, apesar de ser possível a sua identificação e análise através da memória.
Começamos por confirmar o perfil do sistema (Figura 47).
Figura 47 - Plugin imageinfo do volatility
Recorremos ao plugin pstree para verificar os processos em execução, filtrando os processos pelo nome “firefox.exe” (Figura 48), já que o Tor Browser utiliza este processo, ou então diretamente pelo nome “tor.exe”. Para obtermos mais informação sobre os processos no dispositivo em análise, ainda temos a possibilidade de utilizar os plugins pslist, psscan.
Figura 48 - Utilização do volatility na pesquisa de processos
Getsids Informação sobre o início do processo, relacionando o processo com o utilizador (Figura 49).
Figura 49 - Utilização do volatility na identificação de processos
netscan exibir as ligações de rede
Neste caso, o processo “tor.exe” indica uma conexão concluída ao IP de destino "54.37.17.235" no porto 9001 (Figura 50).
Figura 50 - Utilização do volatility na identificação de rede
Firefoxhistory Listar os endereços (URLs) consultados (Figura 51).
Figura 51 - Utilização do volatility na obtenção de URL da memória
Fonte: https://blog.superponible.com/2014/08/31/volatility-plugin-firefox-history/