Você está na página 1de 25

Ebook: Análise Forense de Memória

Volátil utilizando Volatility

Um resumo sobre plugins utilizados nos sistemas


operacionais: Windows, Linux e Mac

1
Ebook criado por Caique Barqueta - https://www.linkedin.com/in/caique-barqueta-635613129/
Este e-book tem como finalidade auxiliar na compreensão sobre aquisição de
memória ao vivo (live) e sua análise forense. Lembrando que a aquisição de memória live
é um método usado para coletar dados quando o sistema é encontrado em estado ativo na
cena do crime.

A análise forense em memória é uma divisão da análise forense digital que


geralmente enfatiza a extração de artefatos da memória volátil de um sistema que foi
comprometido. Esse domínio está se espalhando rapidamente nas investigações de crimes
cibernéticos. A principal razão para isso é que certos artefatos são extraídos apenas da
memória do sistema e não podem ser localizados em nenhum outro local.

Analisar a memória após a captura da memória RAM é extremamente importante


quando se trata de coletar informações sobre as portas que estavam em uso, o número de
processos em execução e o caminho de determinados executáveis no sistema durante a
investigação. O Volatility Framework é uma dessas ferramentas de análise de memória
que funciona em linha de comando em sistemas Windows e Linux.

O Volatility Workbech é uma versão em GUI (interface) de uma mesma


ferramenta Volatility para analisar os artefatos de um despejo de memória. Está
disponível gratuitamente, é de código aberto e é executado no sistema operacional
Windows.

MEMORIA FORENSE

Memória forense é um campo emergente na Investigação Forense Digital que


envolve a recuperação, extração e análise de evidências, como imagens, documentos ou
históricos de bate-papo etc. da memória volátil estrutura em dispositivos não voláteis,
como discos rígidos ou unidades USB.

AQUISIÇÃO DE MEMÓRIA

• É o método de capturar e despejar o conteúdo de um conteúdo volátil em um


dispositivo de armazenamento não volátil para preservá-lo para investigação
posterior.
• Uma análise RAM só pode ser realizada com sucesso quando a aquisição foi
realizada com precisão sem corromper a imagem da memória volátil.
• Nesta fase, o investigador deve ter cuidado com suas decisões de coletar os dados
voláteis, pois eles não existirão após a reinicialização do sistema.
2
Ebook criado por Caique Barqueta - https://www.linkedin.com/in/caique-barqueta-635613129/
• A memória volátil também pode estar sujeita a qualquer tipo de alteração devido
aos processos contínuos executados em segundo plano.
• Qualquer movimento externo feito no sistema suspeito pode afetar negativamente
a memória RAM do dispositivo.

IMPORTANCIA DA AQUISIÇÃO DE MEMÓRIA

Quando uma memória volátil é capturada podem ser descobertos os seguintes


artefatos que podem ser úteis para a investigação:

• Processos em andamento e processos encerrados recentemente


• Arquivos mapeados na memória (.exe, .txt, arquivos compartilhados)
• Qualquer porta TCP/UDP aberta ou qualquer conexão ativa
• Caches (dados da área de transferência, banco de dados SAM, arquivos editados,
senhas, endereços da web, comandos)
• Presença de dados ocultos, malware etc.

VOLATILITY FRAMEWORK

O Volatility Framework processa despejos de RAM em vários formatos que


podem ser usados para processar despejo de memória, arquivos de hibernação, arquivos
de página (page files) que podem ser encontrados em despejo em unidades de
armazenamento. Despejos de RAM de máquinas virtuais ou hypervisors também podem
ser processados.

volatility -h

FORENSE EM SISTEMAS WINDOWS

IMAGEINFO

Quando um despejo de memória é feito é extremamente importante saber as


informações sobre o sistema operacional que estava em uso. Volatility tentará ler a
imagem e sugerir os perfis relacionados para o despejo de memória fornecido. O plugin
imageinfo exibe a data e hora da amostra que foi coletada, o número de CPUs presentes
etc.

volatility -f <arquivo de despejo> imageinfo

3
Ebook criado por Caique Barqueta - https://www.linkedin.com/in/caique-barqueta-635613129/
Um perfil é uma categorização de sistemas operacionais específicos, versões e sua
arquitetura de hardware. Um perfil geralmente inclui informações de metadados,
informações de chamadas do sistema etc. Você pode perceber que vários perfis seriam
sugeridos a você.

KDGBSCAN

Este plugin encontra e analisa os perfis com base no bloco de dados do depurador
do kernel. O Kdgbscan fornece assim o perfil correto relacionado à imagem bruta. É
extremamente importante obter o perfil correto para análise de memória. Para fornecer o
perfil correto para a análise de memória digite:

volatility -f <arquivo de despejo> kdbgscan

4
Ebook criado por Caique Barqueta - https://www.linkedin.com/in/caique-barqueta-635613129/
PROCESSOS: Quando um sistema está em estado ativo, é normal que ele tenha
vários processos em execução em segundo plano possam ser encontrados na memória
volátil. Consiste em código de programa executável, bibliotecas importadas, memória
alocada e threads de execução. A presença de qualquer processo encerrados recentemente
antes da reinicialização também pode ser registrado e analisado no despejo da memória.
Existem alguns plugins que podem ser usados para listar os processos para realizar a
Investigação Forense.

PSlist

Para identificar a presença de quaisquer programas não autorizados e visualizar


quaisquer processos em execução de alto nível. Ao executar este comando, a lista de
processos em execução é exibida, seu respectivo ID de processo atribuído a eles e o ID
do processo pai também é exibido. Os detalhes sobre threads, sessões, handles também
são mencionados.

O timestamp de acordo com o início do processo também é exibido. Isso ajuda a


identificar se um processo desconhecido está em execução ou foi executado em um
horário incomum. Não fornecerá informações sobre processos que foram ocultados ao se
remover da lista de processos ou aqueles que foram encerrados antes.

volatility -f <arquivo de despejo> --profile=WinXPSP2x86 pslist -P

PSscan

Este plugin pode ser usado para fornecer uma lista detalhada dos processos
encontrados no despejo de memória. Ao executar este comando, a lista de processos em
execução é exibida, seu respectivo ID de processo atribuído a eles e o ID do processo pai
5
Ebook criado por Caique Barqueta - https://www.linkedin.com/in/caique-barqueta-635613129/
também é exibido. Os detalhes sobre os threads, sessões, handles também são
mencionados. O timestamp de acordo com o início do processo também é exibido. Isso
ajuda a identificar se um processo desconhecido está em execução ou foi executado em
um horário incomum.

volatility -f <arquivo de despejo> --profile=WinXPSP2x86 psscan

PStree

Neste plugin, a lista de processos é representada com um relacionamento pai-filho


e mostra quaisquer processos desconhecidos ou anormais. O processo filho é representado
por recuo e pontos.

volatility -f <arquivo de despejo> --profile=WinXPSP2x86 pstree

6
Ebook criado por Caique Barqueta - https://www.linkedin.com/in/caique-barqueta-635613129/
DLL: é extremamente importante saber quais DLLs (bibliotecas vinculadas
dinâmicas) são importadas para o processo durante a análise do despejo de memória. Uma
DLL pode conter código executável mal-intencionado que pode ter um processo benigno
para introduzir atividades mal-intencionadas. Portanto, examinar os vários processos
quanto à presença de DLLs maliciosas ou injeções de código semelhantes é crucial para
a análise. Volatility possui vários tipos de plugins para essa análise.

DLLLIST

Várias ferramentas só têm o potencial de detectar as DLLs que são usadas por um
processo consultando a primeira das três listas de DLL armazenadas no PEB, que rastreia
a ordem em que cada DLL é carregada. Como resultado, o malware às vezes modifica
essa lista para ocultar a presenta de uma DLL. Volatility possui um plugin que também
analisa a mesma lista.

volatility -f <arquivo de despejo> --profile=WinXPSP2x86 dlllist -p <numero do


PID>

DLLDump

Este plugin é usado para despejar as DLLs do espaço de memória dos processos
em outro local para analisá-lo. Para fazer um dump das DLLs que você pode digitar.
7
Ebook criado por Caique Barqueta - https://www.linkedin.com/in/caique-barqueta-635613129/
volatility -f <arquivo de despejo> --profile=WinXPSP2x86 dlldump --dump-dir
<local de despejar>

HANDLES

Este plugin é usado para exibir as alças abertas que estão presentes em um
processo. Este plugin se aplica a arquivos, chaves de registro, eventos, desktops, threads
e todos os outros tipos de objetos.

volatility -f <arquivo de despejo> --profile=WinXPSP2x86 handles

8
Ebook criado por Caique Barqueta - https://www.linkedin.com/in/caique-barqueta-635613129/
GETSIDS

Este plugin é usado para visualizar os SIDs para identificadores de segurança que
estão associados a um processo. Este plugin pode ajudar a identificar processos que têm
privilégios escalados de forma maliciosa e quais processos pertencem a usuários
específicos.

volatility -f <arquivo de despejo> --profile=WinXPSP2x86 getsids

NETSCAN

Este plugin ajuda a encontrar artefatos relacionados à rede presentes no despejo


de memória. Ele faz uso da verificação de tags de pool. Este plugin encontra todos os
terminais TCP, ouvintes TCP, terminais UDP e ouvintes UDP. Ele fornece detalhes sobre
o IP local e remoto e sobre a porta local e remota. Para obter detalhes sobre os artefatos
de rede:

volatility -f <arquivo de despejo> --profile=WinXPSP2x86 netscan

(Lembrando que este comando funciona para versões do windows a partir do Win7).
Para Windows XP utilize o connections.

volatility -f <arquivo de despejo> --profile=WinXPSP2x86 connection

HIVELIST

Este plugin pode ser usado para localizar os endereços virtuais presentes nos hives
de registro na memória e seus caminhos inteiros para hive no disco.

9
Ebook criado por Caique Barqueta - https://www.linkedin.com/in/caique-barqueta-635613129/
volatility -f <arquivo de despejo> --profile=WinXPSP2x86 hivelist

TIMELINER

Este plugin geralmente cria uma linha do tempo dos vários artefatos encontrados
no despejo de memória, onde foi visitado o que foi aberto etc.

volatility -f <arquivo de despejo> --profile= <perfil> timeliner

HASHDUMP

Este plugin pode ser usado para extrair e desciptografar credenciais de domínio em cache
armazenadas no registro que podem ser aproveitadas no despejo de memória. Os hashes
aproveitados do dump de memória podem ser quebrados usando John The Ripper,
Hashcat etc.

volatility -f <aquivo de despejo> --profile=<perfil> hashdump

10
Ebook criado por Caique Barqueta - https://www.linkedin.com/in/caique-barqueta-635613129/
LSADUMP

É um plugin usado para despejar segredos LSA do registro no despejo de memória. Este
plugin fornece informações como a senha padrão, chave pública RDP etc.

volatility -f <arquivo de despejo> --profile=<perfil> lsadump

MODSCAN

Este plugin é usado para localizar a memória do kernel e seus objetos


relacionados. Ele pode pegar todos os drivers descarregados anteriormente e os drivers
que foram ocultos ou desvinculados por rootkits no sistema.

volatility -f <arquivo de despejo> --profile=<perfil> modscan

11
Ebook criado por Caique Barqueta - https://www.linkedin.com/in/caique-barqueta-635613129/
FILESCAN

Este plugin é usado para localizar FILE_OBJECTs presentes na memória física


usando a verredura de tags de pool. Ele pode encontrar arquivos abertos mesmo se houver
um rootkit oculto presente nos arquivos.

volatility -f <arquivo de despejo> --profile=<perfil> filescan

SVCSCAN

Este plugin é usado para ver os serviços registrados em sua imagem de memória,
use o comando svcscan. A saída mostra o ID do processo de cada serviço, o nome do
serviço, nome do serviço, nome de exibição, tipo de serviço, estado do serviço e mostra
o caminho binário para o serviço registrado, que será um .exe para serviços de modo de
usuário e nome de driver para serviços executados no modo kernel.

volatility -f <arquivo de despejo> --profile=<perfil> scvscan

CMDSCAN

Este plugin pesquisa o despejo de memória do XP/2003/Vista/2008, Win7 e


Windows 10 para comandos que o invasor possa ter inserido por meio de um prompt de
comando (cmd.exe). É um dos comandos mais poderosos que se pode usar para obter
visibilidade das ações de um invasor em um sistema da vítima.

12
Ebook criado por Caique Barqueta - https://www.linkedin.com/in/caique-barqueta-635613129/
volatility -f <arquivo de despejo> --profile=<perfil> cmdscan

IEHISTORY

Este plugin recupera os fragmentos do histórico do Internet Explorer encontrando


o arquivo de cache do index.dat.

volatility -f <arquivo de despejo> --profile=<perfil> iehistory

DUMPREGISTRY

Este plugin permite despejar um hive de registro em um local de disco.

volatility -f <arquivo de despejo> --profile=<perfil> dumpregistry --dump-dir


<local de dump>

MODDUM

Este plugin é usado para extrair um driver de kernel para um arquivo.

volatility -f <arquivo de despejo> --profile=<perfil> moddump --dump-dir <local>

13
Ebook criado por Caique Barqueta - https://www.linkedin.com/in/caique-barqueta-635613129/
PROCDUMP

Este plugin é usado para despejar os processos executáveis em um único local. Se


houver malware presente, ele forjará intencionalmente campos de tamanho no cabeçalho
PE para que a ferramenta de despejo de memória falhe.

volatility -f <arquivo de despejo> --profile=<perfil> procdump --dump-dir <local>

MEMDUMP

O plugin memdump é usado para despejar as páginas residentes na memória de


um processo em um arquivo separado. Você também pode pesquisar um processo
específico usando -p e fornecer um caminho de diretório -D para gerar a saída.

volatility -f <arquivo de despejo> --profile=<perfil> memdump --dump-dir <local>

14
Ebook criado por Caique Barqueta - https://www.linkedin.com/in/caique-barqueta-635613129/
DETECÇÃO DE INJEÇÃO DE CÓDIGO MALICIOSO

Considerando que a função LoadLibrary é utilizado para carregar DLL, não há


como distinguir entre a DLL maliciosa e outros DLLs carregadas explicitamente por um
processo. As listas VAD e PEB parecem muito idênticas. A DLL injetada n]ao é
necessariamente escondida neste ponto, é possível vê-la com o dllist ou com outras
ferramentas rodando o processo. Existem dois fatores que podem ajudar na detecção, a
primeira é se a DLL faz tentativa de se esconder da ferramenta no sistema live após ser
carregado (desvinculando seu _LDR_DATA_TABLE_ENTRY de uma ou mais listas
ordenadas), podendo ser utilizado o ldrmodules para detectá-lo.

O segundo é se a DLL injetada é compactada e o procedimento de descompactação


copia o código descompactado para uma nova região da memória, neste caso poderá
detectá-lo usando o malfind.

volatility -f <arquivo de despejo> --profile=<perfil> malfind

A saída do comando poderá mostrar uma visualização de dados igual ao hexdump


mostrando o endereço da região de memória que houve injeção. Em alguns casos, poderá
utilizar o hexdump para determinar se a ação é maliciosa, verificando-se se existe
assinatura MZ. Observe ainda que irá apresentar o código em assembly, como instruções
MOV, PUSH, JMP... e assim por diante, enriquecendo mais ainda a análise.

EXTRAÇÃO DE LOGS DE EVENTOS - Win 2000, XP e 2003.

Lembrando que todos os registros de eventos são registrados durante todo o tempo
de execução de um sistema, logo poderá encontrar tais arquivos de eventos na memória.
O plugin evtlogs (somente XP e 2003) encontra e analisa os registros de log de
eventos automaticamente.

volatility -f <arquivo de despejo> --profile=<perfil> evtlogs -v --save-evt -D <saida


do arquivo>

Para o sistema Windows Vista, 2008 e 7 os logs de eventos poderão ser


exportados por meio do comando:

volatility -f <arquivo de despejo> --profile=<perfil> dumpfiles --regex .evtx $ --


ignore-case --dump-dir <local de despejo>

Uma dica é que os logs de eventos mais recentes são mapeados na memória, logo
você poderá realizar o dump completo dos eventos e realizar a análise ou recuperação dos

15
Ebook criado por Caique Barqueta - https://www.linkedin.com/in/caique-barqueta-635613129/
registros com uma ferramenta externa, como por exemplo o EVTXtract, pois irá tentar
além de analisar reconstruir eventos corrompidos ou ausentes.

FORENSE EM SISTEMAS LINUX

A aquisição da memória volátil no Linux pode ser realizada utilizando duas


ferramentas:

AVML

AVML que é uma ferramenta desenvolvida pela Microsoft, onde a referida


ferramenta foi é construída usando rust-lang.

Você pode fazer o download do avml diretamente do repositório da Microsoft:


https://github.com/microsoft/avml/releases

Para realizar a aquisição de memória com o avml, utilize os seguintes comandos:

sudo ./avml <nome do arquivo>.lime

Após a captura você terá um arquivo .lime que constam informações da memória
volátil obtida do referido sistema.

Aqui no exemplo abaixo, realizei a captura e redirecionei o despejo de memória


para uma unidade limpa para que posteriormente possa ser realizado a análise junto a
outro sistema operacional.

16
Ebook criado por Caique Barqueta - https://www.linkedin.com/in/caique-barqueta-635613129/
LiME

Disponível em: https://github.com/504ensicsLabs/LiME

Um Loadable Kernel Module (LKM) que permite a aquisição de memória volátil


de dispositivos Linux e baseados em Linux, como o Android. Isso torna o LiME único,
pois é a primeira ferramenta que permite capturas completas de memória em dispositivos
Android. Ele também minimiza sua interação entre os processos do usuário e do espaço
do kernel durante a aquisição, o que permite que ele produza capturas de memória que
são mais sólidas do ponto de vista forense do que as de outras ferramentas projetadas para
aquisição de memória do Linux.

git clone https://github.com/504ensicsLabs/LiME


Realize a descompactação, vá para a pasta /src
make e aguarde o fim da compilação.
Em seguida irá exibir um arquivo com extensão .ko

(Caso enfrente problemas com o headers do linux, este guia poderá te auxiliar:
https://hackersgrid.com/2022/01/install-linux-headers-kali-2022.html )

sudo insmod ./lime.ko patch=<nome do despejo>.lime format=lime

Pode variar o formato, podendo ser .raw, padded e lime.

Observe ainda que você pode realizar a aquisição baseada em rede, fornecendo o
seguinte comando para um soquete de escuta na porta TCP 4444.

sudo insmod ./lime.ko patch= tcp:4444 lime format=lime

Logo a sua estação forense estará pronta para utilizar o netcat para adquirir o
arquivo, por meio do comando, por exemplo:

17
Ebook criado por Caique Barqueta - https://www.linkedin.com/in/caique-barqueta-635613129/
nc <ip> 4444 > <arquivo do despejo>.lime

Montar a livraria para realizar a extração:


https://www.kernel.org/doc/Documentation/kbuild/modules.txt

Usando o Lime:
https://www.youtube.com/watch?v=_7Tq8dcmP0k

PERFIS DO LINUX PARA O VOLATILITY

Lembrando que antes de analisar uma amostra de memória recém-adquirida, você


precisa criar um perfil para o sistema operacional de destino. Cofnorme abordado no
sistema Windows, o volatility possui alguns perfis para o referido sistema operacional
integrado, porém no linux devido ao grande número de versões de kernel, versão de
subkernel e kernels personalizados é necessário realizar a criação do perfil.

Um pesquisador lançou uma ferramenta que pode auxiliar em uma automtização


para compilação de perfis do volatility e módulos LiME quando executa a partir do
sistema kernel de destino, essa ferramenta pode ser acessada em:
https://github.com/halpomeranz/lmg onde poderá realizar a criação por meio de pen-drive
bootável.

Mas claro que você pode realizar a criação de perfil de forma manual, conforme
abaixo utilizando alguns softwares, como o dwarfdump, ferramentas de compilador e
claro o cabeçalho do kernel.

UTILIZANDO O VOLATILITY

LISTA DE PROCESSOS ATIVOS

O plugin linux_pslist enumera processos percorrendo a lista de processos ativos


apontando para variável global ini_task.

volatility --profile=Linux<build> -f <despejo da memória> linux_pslist

PROCESSOS PAIS E FILHOS

Para o Linux também existe a possibilidade de analisar o plugin para visualização


de relação de processos pai e filho, igual ao do Windows, eles são representados pelos
pontos.

18
Ebook criado por Caique Barqueta - https://www.linkedin.com/in/caique-barqueta-635613129/
volatility --profile=Linux<build> -f <despejo da memória> linux_pstree

IDENTIFICAÇÃO PROCESSOS NA REGIÃO DA MEMÓRIA

É possível identificar da lista de map de cada processo e com isto consegue relatar
e descrever cada região específica da memória relacionado ao referido processo. O plugin
linux_proc_map percorre a task_struct -> mm -> lista de map.

volatility --profile=Linux<build> -f <despejo da memória> linux_proc_map

EXTRAÇÃO DE DADOS DE MEMÓRIA RELACIONADO A UM


PROCESSO

Em determinadas análises, você pode desejar extrair os mapeamentos de memória


de um processo. Para auxiliar a isto existe o plugin linux_dump_maps, podendo ainda
especificar o processo que deseja extrair utilizando o -p. Para especificar o local que será
realizado a despeja poderá utilizar o -D.

volatility --profile=Linux<build> -f <despejo da memória> linux_dump_map -p


<numero PID> -D <local de despejo>

ANALISANDO ARGUMENTOS DE LINHA DE COMANDO PARA


PROCESSOS

O plugin linux_pslist reúne o nome do processo apenas, logo o plugin linux_psaux


pode auxiliar a buscar informações adicionais que foram passadas ao processo antes de
iniciar, por exemplo a inicialização do apache2, na qual irá mostrar como resultado por
exemplo o seguinte: /usr/sbin/apache2 -k start.

volatility --profile=Linux<build> -f <despejo da memória> linux_psaux

O importante deste comando é que pode ver vários processos que tem opções de
configurações importantes, como o local em que foi executado ou qualquer outra
informação ou parâmetro repassado que auxilia na análise.

IDENTIFICANDO VARIÁVEIS DE AMBIENTE DE PROCESSO


19
Ebook criado por Caique Barqueta - https://www.linkedin.com/in/caique-barqueta-635613129/
Sabemos que um conjunto inicial de variáveis de ambiente de um processo é
passado como o terceiro parâmetro para a função principal do programa. Mesmo que o
processo não faça referência às variáveis em tempo de execução, o kernel ainda consegue
rastrear seus endereços. Com isto você pode utilizar o plugin linux_psenv para encontrar
e imprimir valores das variáveis.

volatility --profile=Linux<build> -f <despejo da memória> linux_psenv

IDENTIFICADORES DE ARQUIVO

Lembrando que o sistema operacional Linux segue a filosofia de "tudo é um


arquivo". A recuperação de identificadores de arquivos fornece uma riqueza de análises
forenses. Os descritores de arquivo de um processo são armazenados na memória do
kernel. Cada processo tem uma tabela dedicada que indica uma matriz de índices, em que
cada índice é o número do descritor de arquivo e o valor correspondente é um ponteiro
para a instância da estrutura do arquivo. O plugin linux_lsof irá mostrar os identificadores
de arquivos abertos pelo processo escolhido.

volatility --profile=Linux<build> -f <despejo da memória> linux_lsof -p <numero


do processo>

HISTÓRICO DO BASH

Lembrando que durante as operações normais, o bash registrará os comandos no


arquivo de histórico do usuário (~/.Bash_history). Os invasores obviamente não querem
que comandos sejam gravados, com tanta frequência onde você irá encontrar tentativas
de desabilitar esse registro. O uso destas técnicas tem efeito negativo na análise forense
de disco, mas como sabemos pode não afetar na análise forense de memória.

O plugin linux_bash recupera as estruturas _hist_entry da memória. Poderá ser


executado o comando abaixo para analisar o histórico do bash.

volatility --profile=Linux<build> -f <despejo da memória> linux_bash -p <numero


do processo>

ARTEFATOS DE REDE

Conexões TCP e UDP

20
Ebook criado por Caique Barqueta - https://www.linkedin.com/in/caique-barqueta-635613129/
O plugin linux_netstat mostra a saída para a conexão TCP estabelecida, um
ouvindo conexão TCP e uma conexão UDP.

volatility --profile=Linux<build> -f <despejo da memória> linux_netstat

LISTANDO TAMANHO DE CADA PACOTE RECUPERADO

O plugin linux_pkt_queues lista os pacotes de cada conexão e acaba identificando


quantos bytes fora recebido ou escrito por dado IP.

volatility --profile=Linux<build> -f <despejo da memória> linux_pkt_queue

INTERFACES DE REDE

O sistema Linux suporta várias interfaces de rede que você pode configurar para
diferentes rotas e subredes. Para entender completamente o fluxo de dados da rede por
meio de um serviço com várias interfaces, você deve recuperar informações sobre cada
dispositivo.

volatility --profile=Linux<build> -f <despejo da memória> linux_ifconfig

BUFFER DE DEPURAÇÃO DE KERNEL

Quando os drives e componentes do kemel gravam mensagens de log, eles


armazenam as mensagens dentro o buffer de anel de depuração do kernel dentro da
memória do kernel. Neste plugin poderá fazer a recuperação de números de séries de USB
(números de série, nomes de unidades e assim por diante) sobre dispositivos de mídia
removíveis que foram inseridos recentemente no computador. Examine a atividade de
rede você normalmente encontra vestígios de dispositivos de rede entrando em modo
promíscuo no buffer de depuração. É possível ainda criar cronogramas de eventos além
do conteúdo das mensagens de depuração, cada entrada o buffer também inclui um
carimbo de data/hora que indica quando a entrada foi registrada.

volatility --profile=Linux<build> -f <despejo da memória> linux_dmesg

RECUPERAÇÃO COM O MOUNT LINUX

O plugin linux_mount recupera cada sistema de arquivos e lista os dispositivos,


ponto de montagem, arquivo tipo de sistema e opções de montagem.

21
Ebook criado por Caique Barqueta - https://www.linkedin.com/in/caique-barqueta-635613129/
volatility --profile=Linux<build> -f <despejo da memória> linux_mount

Cada uma das colunas apresentada pelo plugin é recuperada da seguinte maneira:

• Dispositivo: o nome do dispositivo montado, preenchido a partir do membro


mnt_devname de vfsmount ou mount.
• Ponto de montagem: o diretório no qual o sistema de arquivos é montado.
• Tipo FS: O tipo de sistema de arquivos. O sistema de arquivos de discos comuns
no Linux inclui ext3, ext4 e XFS.
• Opções de montagem: as opções passadas ao comando de montagem para montar
o arquivo sistema.

FORENSE EM SISTEMAS MAC

A exposição anterior é relacionada a diversos plugins do Linux, porém adiante, irei


abordar alguns dos principais plugins que podemos utilizar para investigação da memória
forense do MAC.

AQUISIÇÃO DE MEMÓRIA

Vale salientar que o Mac em seu início permitiu que programas de software
realizassem aquisição de memória física por meio de um dispositivo exposto ao userland.
Em sistemas MAC antes da mudança completa para a Arquitetura Intel, fato que ocorreu
com o lançamento do 10.6, a memória física foi exposta por meio do /dev/mem e o espaço
de endereço virtual do kernel foi exposto por meio do /dev/kmem. Por razões de
segurança, esta funcionalidade não foi realizada para o MAC baseado em sistemas Intel.
Assim, para adquirir memória das máquinas, você deve utilizar uma ferramenta que
carrega o módulo do kernel para acessar os dados.

Para realizar a aquisição segura da RAM e evitar áreas não mapeadas de memória
física e memória do dispositivo, ferramentas de aquisição muitas vezes encontram onde
a RAM é mapeada dentro do sistema. Ferramentas utilizadas para aquisição são:
OSXPmem, Mac Memory Reader e Mac Memoryze.

Mac Memoryze: https://www.fireeye.de/services/freeware/memoryze.html


OSXPmem: https://code.google.com/archive/p/pmem/wikis/OSXPmem.wiki

UTILIZANDO PERFIS MAC

22
Ebook criado por Caique Barqueta - https://www.linkedin.com/in/caique-barqueta-635613129/
Utilize o curl para download do pacote e posteriormente realize o armazenamento
dos mesmos em pasta correta do Volatility.

curl -o MacProfiles.zip\ downloads.volatilityfoundation.org/MacProfiles.zip

Em seguida descompacte o arquivo deste modo:

unzip MacProfiles.zip

Copie os perfis desejados em sua pasta mac, como abaixo:

cp XXX_10.5.3_Intel.zip ~/volatility/volatility/plugins/overlays/mac

Agora você precisa verificar se a ativação foi bem-sucedida listando os perfis


disponíveis:

vol.py --info | grep Mac

PERFIS DE CONSTRUÇÃO

A geração de um perfil Mac requer acesso ao kit de depuração do kernel da Apple.


Porém, existe atraso entre o momento em que um novo kernel é lançado e quando o kit
de depuração estiver disponível. Logo você precisa criar um perfil do kernel compilado.

No subdiretório tools/mac do código fonte Volatility, você encontrará um script


chamado create_mac_profile.py. Este script automatiza o processo de criação de perfis.

python mac_create_all_profiles.py ~/Desktop/kits ~/Desktop/temp ~/volatility


~/volatility/plug-ins/overlays/mac

ANÁLISE MAC x LINUX

Saliento que o Mac e Linux compartilham muitas semelhanças, incluindo a adesão


ao padrão de interface de sistema operacional portátil (POSIX), que influencia muito a
operação de design no sistema de gerenciamento, bem como o uso de libc, bash e outras
bibliotecas e aplicativos que são a base dos respectivos sistemas operacionais. Devido ao
grande número de semelhanças e bases de códigos sobrepostas, muitas das técnicas de
análise e plug-ins que você utiliza no Linux poderá ser aplicado ao Mac. Para ajudar a
transição, muitos dos plugins do Mac são nomeados da mesma forma que seus
equivalentes do Linux com o prefixo Linux, ou seja, mudando para mac.

23
Ebook criado por Caique Barqueta - https://www.linkedin.com/in/caique-barqueta-635613129/
ENUMERAÇÃO DE PROCESSOS

O plugin mac_psxview pode enumerar processos de amostras de memórias Mac


usando vários métodos.

vol.py --profile=Mac<profile> -f <despejo da memória> mac_psxview

RELAÇÕES DE PROCESSOS

Você pode utilizar o plugin mac_pstree para visualização de processo pai/filho.

vol.py --profile=Mac<profile> -f <despejo da memória> mac_pstree

Como mostrado acima, os plugins do Mac poderão apenas ter substituição de


Linux por Mac, auxiliando assim a análise de memória forense do MAC.

CONCLUSÃO

Diante de todo o exposto, este guia é um orientativo em português para auxiliar a


todos com relação ao uso de plugins de modo ágil do Volatility. Caso surjam quaisquer
dúvidas ou sugestões, estou disponível a conversas por meio do meu perfil do LinkedIn:
https://www.linkedin.com/in/caique-barqueta-635613129/

REFERENCIAS:

https://www.amazon.com.br/Art-Memory-Forensics-Detecting-
Malware/dp/1118825098/ref=asc_df_1118825098/?tag=googleshopp00-
20&linkCode=df0&hvadid=379726160779&hvpos=&hvnetw=g&hvrand=1630136717
4813560020&hvpone=&hvptwo=&hvqmt=&hvdev=c&hvdvcmdl=&hvlocint=&hvlocp
hy=1031510&hvtargid=pla-451268129738&psc=1
https://github.com/volatilityfoundation/volatility3
https://downloads.volatilityfoundation.org/volatility3/symbols/linux.zip
https://downloads.volatilityfoundation.org/volatility3/symbols/mac.zip
https://downloads.volatilityfoundation.org/volatility3/symbols/windows.zip
https://volatility3.readthedocs.io/en/latest/
https://www.volatilityfoundation.org/
https://www.volatilityfoundation.org/releases

24
Ebook criado por Caique Barqueta - https://www.linkedin.com/in/caique-barqueta-635613129/
https://www.youtube.com/watch?v=Uk3DEgY5Ue8
https://www.youtube.com/watch?v=3xAEsDT-4NA
https://github.com/volatilityfoundation/volatility/wiki/Mac-Command-Reference
https://github.com/volatilityfoundation/volatility/wiki/Linux-Command-Reference
https://github.com/volatilityfoundation/volatility/wiki/Command-Reference

25
Ebook criado por Caique Barqueta - https://www.linkedin.com/in/caique-barqueta-635613129/

Você também pode gostar