A análise da memória RAM é uma etapa crucial na investigação [[Introdução|forense]]. Sendo um componente volátil, a RAM perde todos os dados armazenados assim que o computador é desligado. Por esse motivo, a coleta e análise devem ser realizadas o mais rápido possível enquanto o equipamento permanece ligado, evitando a perda irreversível das informações. ^60ce2f O Volatility Framework foi uma das primeiras ferramenta para analise de memória. Desenvolvida em Python, ela permite a extração de artefatos diretamente da memória. Atualmente, possui as versões 2.6.1 (Python 2) e 1.0 (Python 3). O [[Volatility]] oferece suporte a sistemas Windows, Linux e Mac OSX, atuando sobre os arquivos de dump obtidos durante o processo de coleta. ^7fedff Estruturas utilizadas pelo Windows ^4b50ec - :KDBG O **KDBG** (Kernel Debugger) é uma ferramenta de depuração utilizada pelo Windows para examinar o estado do kernel, analisando áreas da memória alocadas aos processos. Durante as nossas investigações, será necessário identificar a assinatura do KDBG, que varia de acordo com a versão do Windows. Para essa tarefa, utilizaremos o plugin **kdbgscan** do Volatility. - EPROCESS: O **EPROCESS (Executive Process)** está diretamente relacionado ao KDBG, sendo a estrutura responsável por armazenar as informações dos processos em execução no sistema. Cada EPROCESS contém um ponteiro para o **PEB (Process Environment Block)**, estrutura que guarda dados como o comando utilizado para iniciar o processo, o caminho do executável, e as DLLs carregadas. Além disso, o EPROCESS armazena o identificador do processo (PID), a região de memória alocada, os handles ativos — que podem representar arquivos, processos, chaves de registro, threads ou mutexes (objetos de exclusão mútua) — e os tokens de acesso associados ao processo. - Thread: Uma **Thread** é uma unidade de execução dentro de um processo, e cada processo pode conter múltiplas threads. Cada uma delas pode executar tarefas distintas, como escrever na tela ou estabelecer conexões de rede. As threads são importantes nas análises forenses porque ajudam a identificar quando determinados trechos de código de um processo foram executados. - Mutexes: **Mutexes** (objetos de exclusão mútua) são recursos de sincronização que permitem que apenas um processo ou thread os utilize por vez. No contexto de malware, eles foram amplamente utilizados no passado para evitar reinfecções em sistemas já comprometidos — o malware verificava se o mutex já existia e, caso positivo, encerrava sua execução para não duplicar a infecção. - Tokens: **Tokens** de acesso são as estruturas que, no contexto de segurança, fazem menção aos SID (Security Identifiers) de grupos ou usuários e os privilégios destes. - O **VAD (Virtual Address Descriptor)** é uma estrutura utilizada para gerenciar as regiões de memória virtual alocadas por cada processo. Cada processo mantém sua própria árvore VAD, onde são armazenadas informações detalhadas sobre as permissões de leitura, escrita e execução de cada segmento de memória. Em resumo: - o **VAD** controla e rastreia a memória virtual do processo; - o **EPROCESS** representa o próprio processo e suas informações de controle; - o **KDBG** atua como ferramenta de depuração, permitindo examinar o estado do kernel e das regiões de memória associadas aos processos.