Volatility - CheatSheet

Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras maneiras de apoiar o HackTricks:

​​RootedCON é o evento de cibersegurança mais relevante na Espanha e um dos mais importantes na Europa. Com a missão de promover conhecimento técnico, este congresso é um ponto de encontro fervilhante para profissionais de tecnologia e cibersegurança em todas as disciplinas.

Se você deseja algo rápido e louco que lançará vários plugins do Volatility em paralelo, você pode usar: https://github.com/carlospolop/autoVolatility

python autoVolatility.py -f MEMFILE -d OUT_DIRECTORY -e /home/user/tools/volatility/vol.py # It will use the most important plugins (could use a lot of space depending on the size of the memory)

Instalação

volatility3

git clone https://github.com/volatilityfoundation/volatility3.git
cd volatility3
python3 setup.py install
python3 vol.py —h

volatility2

Download the executable from https://www.volatilityfoundation.org/26

Comandos do Volatility

Acesse a documentação oficial em Referência de comandos do Volatility

Uma nota sobre plugins "list" vs "scan"

O Volatility tem duas abordagens principais para plugins, que às vezes são refletidas em seus nomes. Os plugins "list" tentarão navegar pelas estruturas do Kernel do Windows para recuperar informações como processos (localizar e percorrer a lista encadeada das estruturas _EPROCESS na memória), identificadores do sistema operacional (localizando e listando a tabela de identificadores, desreferenciando quaisquer ponteiros encontrados, etc). Eles se comportam mais ou menos como a API do Windows se solicitada, por exemplo, para listar processos.

Isso torna os plugins "list" bastante rápidos, mas tão vulneráveis quanto a API do Windows à manipulação por malware. Por exemplo, se o malware usar DKOM para desvincular um processo da lista encadeada _EPROCESS, ele não aparecerá no Gerenciador de Tarefas e nem na lista de processos.

Os plugins "scan", por outro lado, adotarão uma abordagem semelhante à escultura da memória em busca de coisas que podem fazer sentido quando desreferenciadas como estruturas específicas. psscan, por exemplo, lerá a memória e tentará criar objetos _EPROCESS a partir dela (ele usa varredura de pool-tag, que procura por strings de 4 bytes que indicam a presença de uma estrutura de interesse). A vantagem é que ele pode encontrar processos que foram encerrados e, mesmo que o malware manipule a lista encadeada _EPROCESS, o plugin ainda encontrará a estrutura perdida na memória (pois ela ainda precisa existir para o processo ser executado). A desvantagem é que os plugins "scan" são um pouco mais lentos que os plugins "list" e às vezes podem fornecer falsos positivos (um processo que foi encerrado há muito tempo e teve partes de sua estrutura sobrescritas por outras operações).

De: http://tomchop.me/2016/11/21/tutorial-volatility-plugins-malware-analysis/

Perfis de SO

Volatility3

Como explicado no readme, você precisa colocar a tabela de símbolos do SO que deseja suportar dentro de volatility3/volatility/symbols. Os pacotes de tabelas de símbolos para os vários sistemas operacionais estão disponíveis para download em:

Volatility2

Perfil Externo

Você pode obter a lista de perfis suportados fazendo:

./volatility_2.6_lin64_standalone --info | grep "Profile"

Se deseja usar um novo perfil que baixou (por exemplo, um perfil linux), precisa criar em algum lugar a seguinte estrutura de pastas: plugins/overlays/linux e colocar dentro desta pasta o arquivo zip contendo o perfil. Em seguida, obtenha o número de perfis usando:

./vol --plugins=/home/kali/Desktop/ctfs/final/plugins --info
Volatility Foundation Volatility Framework 2.6


Profiles
--------
LinuxCentOS7_3_10_0-123_el7_x86_64_profilex64 - A Profile for Linux CentOS7_3.10.0-123.el7.x86_64_profile x64
VistaSP0x64                                   - A Profile for Windows Vista SP0 x64
VistaSP0x86                                   - A Profile for Windows Vista SP0 x86

Você pode baixar perfis do Linux e Mac em https://github.com/volatilityfoundation/profiles

No trecho anterior, você pode ver que o perfil é chamado LinuxCentOS7_3_10_0-123_el7_x86_64_profilex64, e você pode usá-lo para executar algo como:

./vol -f file.dmp --plugins=. --profile=LinuxCentOS7_3_10_0-123_el7_x86_64_profilex64 linux_netscan

Descobrir Perfil

volatility imageinfo -f file.dmp
volatility kdbgscan -f file.dmp

Diferenças entre imageinfo e kdbgscan

A partir daqui: Ao contrário do imageinfo, que simplesmente fornece sugestões de perfil, o kdbgscan é projetado para identificar positivamente o perfil correto e o endereço KDBG correto (se houver múltiplos). Este plugin escaneia as assinaturas do KDBGHeader vinculadas aos perfis do Volatility e aplica verificações de sanidade para reduzir falsos positivos. A verbosidade da saída e o número de verificações de sanidade que podem ser realizadas dependem se o Volatility pode encontrar um DTB, então, se você já conhece o perfil correto (ou se tiver uma sugestão de perfil do imageinfo), certifique-se de usá-lo a partir de .

Sempre dê uma olhada no número de processos que o kdbgscan encontrou. Às vezes, o imageinfo e o kdbgscan podem encontrar mais de um perfil adequado, mas apenas o válido terá algum processo relacionado (Isso ocorre porque para extrair processos é necessário o endereço KDBG correto).

# GOOD
PsActiveProcessHead           : 0xfffff800011977f0 (37 processes)
PsLoadedModuleList            : 0xfffff8000119aae0 (116 modules)
# BAD
PsActiveProcessHead           : 0xfffff800011947f0 (0 processes)
PsLoadedModuleList            : 0xfffff80001197ac0 (0 modules)

KDBG

O bloco de depuração do kernel, referido como KDBG pelo Volatility, é crucial para tarefas forenses realizadas pelo Volatility e vários depuradores. Identificado como KdDebuggerDataBlock e do tipo _KDDEBUGGER_DATA64, ele contém referências essenciais como PsActiveProcessHead. Esta referência específica aponta para o início da lista de processos, permitindo a listagem de todos os processos, o que é fundamental para uma análise de memória minuciosa.

Informações do SO

#vol3 has a plugin to give OS information (note that imageinfo from vol2 will give you OS info)
./vol.py -f file.dmp windows.info.Info

O plugin banners.Banners pode ser usado no vol3 para tentar encontrar banners linux no dump.

Hashes/Senhas

Extrair hashes SAM, credenciais em cache do domínio e segredos lsa.

./vol.py -f file.dmp windows.hashdump.Hashdump #Grab common windows hashes (SAM+SYSTEM)
./vol.py -f file.dmp windows.cachedump.Cachedump #Grab domain cache hashes inside the registry
./vol.py -f file.dmp windows.lsadump.Lsadump #Grab lsa secrets

O Volatility é uma ferramenta poderosa para análise de dumps de memória. Abaixo estão alguns comandos úteis para análise de dumps de memória com o Volatility:

  • Identificar o perfil do sistema operacional:

    volatility -f memdump.mem imageinfo
  • Listar todos os processos em execução:

    volatility -f memdump.mem --profile=PerfilDoSistema pslist
  • Analisar os sockets de rede abertos:

    volatility -f memdump.mem --profile=PerfilDoSistema sockscan
  • Analisar os handlers de arquivos abertos:

    volatility -f memdump.mem --profile=PerfilDoSistema filescan
  • Analisar os módulos carregados:

    volatility -f memdump.mem --profile=PerfilDoSistema modscan
  • Analisar as conexões de rede:

    volatility -f memdump.mem --profile=PerfilDoSistema connscan
  • Analisar os registros de eventos:

    volatility -f memdump.mem --profile=PerfilDoSistema evtlogs
  • Extrair um processo específico:

    volatility -f memdump.mem --profile=PerfilDoSistema procdump -p PID -D output_directory
  • Analisar o registro do Windows:

    volatility -f memdump.mem --profile=PerfilDoSistema printkey -K "RegistroDoWindows"
volatility --profile=Win7SP1x86_23418 hashdump -f file.dmp #Grab common windows hashes (SAM+SYSTEM)
volatility --profile=Win7SP1x86_23418 cachedump -f file.dmp #Grab domain cache hashes inside the registry
volatility --profile=Win7SP1x86_23418 lsadump -f file.dmp #Grab lsa secrets

Despejo de Memória

O despejo de memória de um processo irá extrair tudo do estado atual do processo. O módulo procdump irá apenas extrair o código.

volatility -f file.dmp --profile=Win7SP1x86 memdump -p 2168 -D conhost/

​​​RootedCON é o evento de cibersegurança mais relevante na Espanha e um dos mais importantes na Europa. Com a missão de promover conhecimento técnico, este congresso é um ponto de encontro fervilhante para profissionais de tecnologia e cibersegurança em todas as disciplinas.

Processos

Listar processos

Tente encontrar processos suspeitos (por nome) ou inesperados processos filhos (por exemplo, um cmd.exe como filho de iexplorer.exe). Pode ser interessante comparar o resultado do pslist com o de psscan para identificar processos ocultos.

python3 vol.py -f file.dmp windows.pstree.PsTree # Get processes tree (not hidden)
python3 vol.py -f file.dmp windows.pslist.PsList # Get process list (EPROCESS)
python3 vol.py -f file.dmp windows.psscan.PsScan # Get hidden process list(malware)

A seguir estão alguns comandos úteis do Volatility para análise de despejo de memória:

  • imageinfo: exibe informações gerais sobre a imagem de memória.

  • pslist: lista os processos em execução.

  • pstree: exibe os processos em formato de árvore.

  • dlllist: lista as DLLs carregadas em cada processo.

  • handles: exibe os identificadores de objeto aberto para cada processo.

  • cmdline: exibe os argumentos da linha de comando de cada processo.

  • filescan: escaneia a memória em busca de estruturas de dados de arquivos.

  • dumpfiles: extrai arquivos da memória.

  • malfind: encontra possíveis malwares na memória.

  • apihooks: exibe os ganchos de API em cada processo.

  • ldrmodules: exibe os módulos carregados em cada processo.

  • svcscan: lista os serviços do Windows.

  • connections: exibe informações de conexão de rede.

  • connscan: escaneia a memória em busca de objetos de conexão de rede.

  • netscan: encontra sockets de rede e conexões.

  • autoruns: exibe os pontos de entrada de inicialização automática.

  • printkey: exibe as chaves do registro do Windows.

  • hivelist: exibe os hives do registro do Windows.

  • hashdump: extrai hashes de senha do sistema.

  • userassist: exibe programas frequentemente usados.

  • shellbags: exibe pastas acessadas recentemente.

  • mbrparser: analisa o Registro Mestre de Inicialização (MBR).

  • devicetree: exibe a árvore de dispositivos.

  • modscan: escaneia a memória em busca de módulos do kernel.

  • moddump: extrai módulos do kernel da memória.

  • yarascan: escaneia a memória em busca de padrões com o Yara.

  • yarascan: escaneia a memória em busca de padrões com o Yara.

  • yara: executa regras Yara em um arquivo ou processo.

  • memmap: exibe os intervalos de memória usados por um processo.

  • vadinfo: exibe informações sobre regiões de memória virtuais.

  • vaddump: extrai regiões de memória virtuais.

  • vadtree: exibe as regiões de memória virtuais em formato de árvore.

  • vadwalk: exibe as regiões de memória virtuais em um processo.

  • dlldump: extrai uma DLL específica da memória.

  • dumpregistry: extrai uma chave de registro específica.

  • dumpregistrykeys: extrai chaves de registro de um processo.

  • dumpregistryvalues: extrai valores de registro de um processo.

  • dumpcerts: extrai certificados da memória.

  • dumpfiles: extrai arquivos da memória.

  • dumpregistry: extrai uma chave de registro específica.

  • dumpregistrykeys: extrai chaves de registro de um processo.

  • dumpregistryvalues: extrai valores de registro de um processo.

  • dumpcerts: extrai certificados da memória.

  • hivedump: extrai um hive do registro.

  • hivelist: exibe os hives do registro.

  • printkey: exibe as chaves do registro.

  • printkey -K: exibe uma chave de registro específica.

  • printkey -o: exibe as subchaves de uma chave de registro.

  • printkey -v: exibe os valores de uma chave de registro.

  • printkey -y: exibe os valores de uma chave de registro em formato RAW.

  • hashdump: extrai hashes de senha do sistema.

  • hashdump -s: extrai hashes de senha do sistema em formato SAM.

  • hashdump -l: extrai hashes de senha do sistema em formato LSA.

  • hashdump -h: extrai hashes de senha do sistema em formato hexadecimal.

  • hashdump -a: extrai todos os hashes de senha do sistema.

  • hashdump -c: extrai hashes de senha do sistema em formato CrackMapExec.

  • hashdump -k: extrai hashes de senha do sistema em formato de chave de registro.

  • hashdump -d: extrai hashes de senha do sistema em formato de despejo de memória.

  • hashdump -p: extrai hashes de senha do sistema em formato de arquivo de texto.

  • hashdump -o: extrai hashes de senha do sistema em formato Ophcrack.

  • hashdump -j: extrai hashes de senha do sistema em formato John the Ripper.

  • hashdump -m: extrai hashes de senha do sistema em formato de matriz.

  • hashdump -b: extrai hashes de senha do sistema em formato de arquivo de backup.

  • hashdump -x: extrai hashes de senha do sistema em formato de arquivo XML.

  • hashdump -g: extrai hashes de senha do sistema em formato de arquivo GPG.

  • hashdump -u: extrai hashes de senha do sistema em formato de arquivo Unix.

  • hashdump -w: extrai hashes de senha do sistema em formato de arquivo de palavra-passe.

  • hashdump -r: extrai hashes de senha do sistema em formato de arquivo Rainbow.

  • hashdump -f: extrai hashes de senha do sistema em formato de arquivo de força bruta.

  • hashdump -e: extrai hashes de senha do sistema em formato de arquivo de exportação.

  • hashdump -i: extrai hashes de senha do sistema em formato de arquivo de importação.

  • hashdump -n: extrai hashes de senha do sistema em formato de arquivo de rede.

  • hashdump -m: extrai hashes de senha do sistema em formato de arquivo de matriz.

  • hashdump -t: extrai hashes de senha do sistema em formato de arquivo de texto.

  • hashdump -z: extrai hashes de senha do sistema em formato de arquivo ZIP.

  • hashdump -q: extrai hashes de senha do sistema em formato de arquivo de consulta.

  • hashdump -v: extrai hashes de senha do sistema em formato de arquivo de verificação.

  • hashdump -y: extrai hashes de senha do sistema em formato de arquivo YARA.

  • hashdump -u: extrai hashes de senha do sistema em formato de arquivo Unix.

  • hashdump -w: extrai hashes de senha do sistema em formato de arquivo de palavra-passe.

  • hashdump -r: extrai hashes de senha do sistema em formato de arquivo Rainbow.

  • hashdump -f: extrai hashes de senha do sistema em formato de arquivo de força bruta.

  • hashdump -e: extrai hashes de senha do sistema em formato de arquivo de exportação.

  • hashdump -i: extrai hashes de senha do sistema em formato de arquivo de importação.

  • hashdump -n: extrai hashes de senha do sistema em formato de arquivo de rede.

  • hashdump -m: extrai hashes de senha do sistema em formato de arquivo de matriz.

  • hashdump -t: extrai hashes de senha do sistema em formato de arquivo de texto.

  • hashdump -z: extrai hashes de senha do sistema em formato de arquivo ZIP.

  • hashdump -q: extrai hashes de senha do sistema em formato de arquivo de consulta.

  • hashdump -v: extrai hashes de senha do sistema em formato de arquivo de verificação.

  • hashdump -y: extrai hashes de senha do sistema em formato de arquivo YARA.

  • hashdump -u: extrai hashes de senha do sistema em formato de arquivo Unix.

  • hashdump -w: extrai hashes de senha do sistema em formato de arquivo de palavra-passe.

  • hashdump -r: extrai hashes de senha do sistema em formato de arquivo Rainbow.

  • hashdump -f: extrai hashes de senha do sistema em formato de arquivo de força bruta.

  • hashdump -e: extrai hashes de senha do sistema em formato de arquivo de exportação.

  • hashdump -i: extrai hashes de senha do sistema em formato de arquivo de importação.

  • hashdump -n: extrai hashes de senha do sistema em formato de arquivo de rede.

  • hashdump -m: extrai hashes de senha do sistema em formato de arquivo de matriz.

  • hashdump -t: extrai hashes de senha do sistema em formato de arquivo de texto.

  • hashdump -z: extrai hashes de senha do sistema em formato de arquivo ZIP.

  • hashdump -q: extrai hashes de senha do sistema em formato de arquivo de consulta.

  • hashdump -v: extrai hashes de senha do sistema em formato de arquivo de verificação.

  • hashdump -y: extrai hashes de senha do sistema em formato de arquivo YARA.

volatility --profile=PROFILE pstree -f file.dmp # Get process tree (not hidden)
volatility --profile=PROFILE pslist -f file.dmp # Get process list (EPROCESS)
volatility --profile=PROFILE psscan -f file.dmp # Get hidden process list(malware)
volatility --profile=PROFILE psxview -f file.dmp # Get hidden process list

Despejar proc

./vol.py -f file.dmp windows.dumpfiles.DumpFiles --pid <pid> #Dump the .exe and dlls of the process in the current directory

Linha de comando

Alguma coisa suspeita foi executada?

python3 vol.py -f file.dmp windows.cmdline.CmdLine #Display process command-line arguments

A seguir estão alguns comandos úteis do Volatility para análise de despejo de memória:

  • imageinfo: exibe informações gerais sobre a imagem de memória.

  • pslist: lista os processos em execução.

  • pstree: exibe os processos em formato de árvore.

  • psscan: verifica os processos ocultos.

  • dlllist: lista as DLLs carregadas em cada processo.

  • handles: exibe os identificadores de objeto aberto para cada processo.

  • cmdline: mostra os argumentos da linha de comando de cada processo.

  • consoles: lista os consoles associados a cada processo.

  • vadinfo: exibe informações sobre regiões de memória alocadas.

  • vadtree: exibe as regiões de memória em formato de árvore.

  • malfind: procura por possíveis malwares na memória.

  • apihooks: identifica possíveis ganchos de API.

  • ldrmodules: lista os módulos carregados em cada processo.

  • modscan: verifica módulos do kernel carregados.

  • ssdt: exibe a Tabela de Despacho de Serviços do Sistema.

  • callbacks: lista os callbacks do kernel.

  • devicetree: exibe a árvore de dispositivos.

  • driverirp: exibe IRPs de drivers do kernel.

  • svcscan: lista os serviços do Windows.

  • connections: exibe informações de conexões de rede.

  • connscan: verifica conexões de rede.

  • sockets: lista os sockets de rede.

  • sockscan: verifica sockets de rede.

  • netscan: verifica conexões de rede.

  • autoruns: lista os programas que são executados automaticamente.

  • printkey: exibe informações sobre uma chave de registro.

  • hivelist: lista as chaves de registro presentes na memória.

  • hashdump: extrai hashes de senha do SAM.

  • userassist: exibe informações sobre programas usados pelos usuários.

  • shellbags: lista pastas acessadas recentemente.

  • mbrparser: analisa o Registro Mestre de Inicialização.

  • mftparser: analisa a Tabela de Arquivos Mestra.

  • yarascan: executa varredura com Yara.

  • dumpfiles: extrai arquivos do espaço de endereço do kernel.

  • dumpregistry: extrai chaves de registro.

  • dumpcerts: extrai certificados.

  • memmap: exibe um mapa de memória.

  • memdump: faz o despejo da memória.

  • linux_bash: exibe comandos Bash executados.

  • linux_psaux: exibe informações sobre processos Linux.

  • linux_proc_maps: exibe mapas de memória de processos Linux.

  • linux_proc_maps: exibe mapas de memória de processos Linux.

  • linux_lsof: exibe arquivos abertos por processos Linux.

  • linux_check_afinfo: verifica informações de soquete AF_INET.

  • linux_check_creds: verifica credenciais de processos Linux.

  • linux_check_fop: verifica ponteiros de função de operações de arquivo.

  • linux_check_idt: verifica a Tabela de Despacho de Interrupção.

  • linux_check_modules: verifica módulos do kernel Linux.

  • linux_check_syscall: verifica a tabela de chamadas do sistema.

  • linux_check_syscalltbl: verifica a tabela de chamadas do sistema.

  • linux_check_sysctl: verifica variáveis de controle do sistema.

  • linux_check_sysmap: verifica o mapa de memória do kernel.

  • linux_check_task_struct: verifica a estrutura de tarefas do kernel.

  • linux_check_timer_list: verifica a lista de temporizadores do kernel.

  • linux_check_vma: verifica áreas de memória virtuais.

  • linux_lsmod: lista módulos do kernel Linux.

  • linux_pslist: lista processos Linux.

  • linux_pstree: exibe processos Linux em formato de árvore.

  • linux_check_tty: verifica terminais de controle de texto.

  • linux_ifconfig: exibe informações de configuração de rede.

  • linux_netstat: exibe estatísticas de rede.

  • linux_route: exibe tabela de roteamento.

  • linux_dump_map: faz o despejo de um mapa de memória.

  • linux_dump_mem: faz o despejo da memória.

  • linux_banner: exibe informações do kernel Linux.

  • linux_cpuinfo: exibe informações da CPU.

  • linux_dmesg: exibe mensagens do kernel.

  • linux_idt: exibe a Tabela de Despacho de Interrupção.

  • linux_interrupts: exibe interrupções.

  • linux_mount: exibe pontos de montagem.

  • linux_slabinfo: exibe informações sobre caches de objetos.

  • linux_uname: exibe informações do sistema.

  • linux_version: exibe a versão do kernel.

  • linux_check_afinfo: verifica informações de soquete AF_INET.

  • linux_check_creds: verifica credenciais de processos Linux.

  • linux_check_fop: verifica ponteiros de função de operações de arquivo.

  • linux_check_idt: verifica a Tabela de Despacho de Interrupção.

  • linux_check_modules: verifica módulos do kernel Linux.

  • linux_check_syscall: verifica a tabela de chamadas do sistema.

  • linux_check_syscalltbl: verifica a tabela de chamadas do sistema.

  • linux_check_sysctl: verifica variáveis de controle do sistema.

  • linux_check_sysmap: verifica o mapa de memória do kernel.

  • linux_check_task_struct: verifica a estrutura de tarefas do kernel.

  • linux_check_timer_list: verifica a lista de temporizadores do kernel.

  • linux_check_vma: verifica áreas de memória virtuais.

  • linux_lsmod: lista módulos do kernel Linux.

  • linux_pslist: lista processos Linux.

  • linux_pstree: exibe processos Linux em formato de árvore.

  • linux_check_tty: verifica terminais de controle de texto.

  • linux_ifconfig: exibe informações de configuração de rede.

  • linux_netstat: exibe estatísticas de rede.

  • linux_route: exibe tabela de roteamento.

  • linux_dump_map: faz o despejo de um mapa de memória.

  • linux_dump_mem: faz o despejo da memória.

  • linux_banner: exibe informações do kernel Linux.

  • linux_cpuinfo: exibe informações da CPU.

  • linux_dmesg: exibe mensagens do kernel.

  • linux_idt: exibe a Tabela de Despacho de Interrupção.

  • linux_interrupts: exibe interrupções.

  • linux_mount: exibe pontos de montagem.

  • linux_slabinfo: exibe informações sobre caches de objetos.

  • linux_uname: exibe informações do sistema.

  • linux_version: exibe a versão do kernel.

volatility --profile=PROFILE cmdline -f file.dmp #Display process command-line arguments
volatility --profile=PROFILE consoles -f file.dmp #command history by scanning for _CONSOLE_INFORMATION

Comandos executados no cmd.exe são gerenciados pelo conhost.exe (ou csrss.exe em sistemas anteriores ao Windows 7). Isso significa que se o cmd.exe for encerrado por um atacante antes que um despejo de memória seja obtido, ainda é possível recuperar o histórico de comandos da sessão da memória do conhost.exe. Para fazer isso, se atividades incomuns forem detectadas nos módulos do console, a memória do processo conhost.exe associado deve ser despejada. Em seguida, ao procurar strings dentro desse despejo, linhas de comando usadas na sessão podem ser potencialmente extraídas.

Ambiente

Obtenha as variáveis de ambiente de cada processo em execução. Pode haver alguns valores interessantes.

python3 vol.py -f file.dmp windows.envars.Envars [--pid <pid>] #Display process environment variables

Folha de dicas do Volatility

Comandos básicos

  • imageinfo: exibe informações básicas sobre a imagem de memória

  • pslist: lista os processos em execução

  • pstree: exibe os processos em formato de árvore

  • psscan: escaneia todos os processos

  • dlllist: lista as DLLs carregadas por cada processo

  • cmdline: exibe os argumentos da linha de comando de um processo

  • filescan: escaneia os handles de arquivo

  • handles: exibe os handles de arquivo de um processo

  • vadinfo: exibe informações sobre regiões de memória alocadas

  • vadtree: exibe as regiões de memória alocadas em formato de árvore

  • malfind: encontra possíveis malwares na memória

  • yarascan: escaneia a memória em busca de padrões com o Yara

Plugins úteis

  • malfind: encontra possíveis malwares na memória

  • timeliner: cria uma linha do tempo dos processos

  • dumpfiles: extrai arquivos da memória

  • apihooks: detecta possíveis ganchos de API

  • ldrmodules: lista os módulos carregados

  • svcscan: lista os serviços do Windows

  • connscan: escaneia as conexões de rede

  • autoruns: lista os programas que são executados automaticamente

  • printkey: exibe as subchaves e valores de uma chave de registro

  • hivelist: lista os hives de registro

Exemplos de uso

  • vol.py -f mem.raw imageinfo

  • vol.py -f mem.raw pslist

  • vol.py -f mem.raw --profile=Win7SP1x64 pstree

  • vol.py -f mem.raw --profile=Win7SP1x64 malfind

Dicas adicionais

  • Sempre especifique o perfil do sistema operacional ao usar o Volatility

  • Faça uma cópia da imagem de memória original para preservar a integridade dos dados

  • Documente todas as etapas do processo de análise de memória

  • Utilize plugins adicionais conforme necessário para uma análise mais aprofundada

volatility --profile=PROFILE envars -f file.dmp [--pid <pid>] #Display process environment variables

volatility --profile=PROFILE -f file.dmp linux_psenv [-p <pid>] #Get env of process. runlevel var means the runlevel where the proc is initated

Privilégios de Token

Verifique os tokens de privilégio em serviços inesperados. Pode ser interessante listar os processos que estão usando algum token privilegiado.

#Get enabled privileges of some processes
python3 vol.py -f file.dmp windows.privileges.Privs [--pid <pid>]
#Get all processes with interesting privileges
python3 vol.py -f file.dmp windows.privileges.Privs | grep "SeImpersonatePrivilege\|SeAssignPrimaryPrivilege\|SeTcbPrivilege\|SeBackupPrivilege\|SeRestorePrivilege\|SeCreateTokenPrivilege\|SeLoadDriverPrivilege\|SeTakeOwnershipPrivilege\|SeDebugPrivilege"

A seguir estão alguns comandos úteis do Volatility para análise de despejo de memória:

  • imageinfo: exibe informações gerais sobre a imagem de memória.

  • pslist: lista os processos em execução.

  • pstree: exibe os processos em formato de árvore.

  • dlllist: lista as DLLs carregadas em cada processo.

  • handles: exibe os identificadores de objeto aberto para cada processo.

  • cmdline: exibe os argumentos da linha de comando de cada processo.

  • filescan: escaneia a memória em busca de estruturas de dados de arquivos.

  • dumpfiles: extrai arquivos do espaço de endereço de um processo.

  • malfind: encontra possíveis malwares na memória.

  • apihooks: exibe os ganchos de API em cada processo.

  • ldrmodules: lista os módulos carregados em cada processo.

  • svcscan: lista os serviços do Windows.

  • connections: exibe informações de conexão de rede.

  • connscan: escaneia a memória em busca de objetos de conexão de rede.

  • netscan: encontra sockets de rede e conexões.

  • autoruns: lista os programas que são configurados para serem executados automaticamente.

  • printkey: exibe informações sobre uma determinada chave do registro.

  • hivelist: lista os hives do registro presentes na memória.

  • hashdump: extrai hashes de senha do SAM ou do LSASS.

  • userassist: exibe programas frequentemente executados.

  • shellbags: exibe informações sobre pastas acessadas.

  • timeliner: cria uma linha do tempo dos eventos do sistema.

  • mftparser: analisa o Master File Table (MFT) para informações sobre arquivos.

  • memmap: exibe um mapa de memória do processo.

  • vadinfo: exibe informações sobre regiões de memória alocadas virtualmente.

  • vaddump: extrai regiões de memória alocadas virtualmente.

  • yarascan: escaneia a memória em busca de padrões usando Yara.

  • yarascan: escaneia a memória em busca de padrões usando Yara.

  • modscan: escaneia a memória em busca de módulos do kernel.

  • moddump: extrai módulos do kernel.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos.

  • atomscan: escaneia a memória em busca de objetos de espaço de usuário atômicos

#Get enabled privileges of some processes
volatility --profile=Win7SP1x86_23418 privs --pid=3152 -f file.dmp | grep Enabled
#Get all processes with interesting privileges
volatility --profile=Win7SP1x86_23418 privs -f file.dmp | grep "SeImpersonatePrivilege\|SeAssignPrimaryPrivilege\|SeTcbPrivilege\|SeBackupPrivilege\|SeRestorePrivilege\|SeCreateTokenPrivilege\|SeLoadDriverPrivilege\|SeTakeOwnershipPrivilege\|SeDebugPrivilege"

SIDs

Verifique cada SSID possuído por um processo. Pode ser interessante listar os processos que usam um SID de privilégios (e os processos que usam algum SID de serviço).

./vol.py -f file.dmp windows.getsids.GetSIDs [--pid <pid>] #Get SIDs of processes
./vol.py -f file.dmp windows.getservicesids.GetServiceSIDs #Get the SID of services

O Volatility é uma ferramenta poderosa para análise de dumps de memória. Abaixo estão alguns comandos úteis para análise de dumps de memória com o Volatility:

  • Identificar o perfil do sistema operacional:

    volatility -f <dumpfile> imageinfo
  • Listar processos em execução:

    volatility -f <dumpfile> --profile=<profile> pslist
  • Analisar sockets de rede:

    volatility -f <dumpfile> --profile=<profile> netscan
  • Analisar registros de eventos:

    volatility -f <dumpfile> --profile=<profile> evnets
  • Analisar registros de registro:

    volatility -f <dumpfile> --profile=<profile> printkey -K 'HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run'
  • Analisar arquivos abertos:

    volatility -f <dumpfile> --profile=<profile> filescan
  • Analisar conexões de rede:

    volatility -f <dumpfile> --profile=<profile> connscan
  • Analisar cache de DNS:

    volatility -f <dumpfile> --profile=<profile> dnscache
  • Analisar drivers carregados:

    volatility -f <dumpfile> --profile=<profile> ldrmodules
  • Analisar módulos do kernel:

    volatility -f <dumpfile> --profile=<profile> modscan
  • Analisar tarefas agendadas:

    volatility -f <dumpfile> --profile=<profile> getsids
  • Analisar tokens de segurança:

    volatility -f <dumpfile> --profile=<profile> tokens
  • Analisar serviços:

    volatility -f <dumpfile> --profile=<profile> svcscan
  • Analisar portas abertas:

    volatility -f <dumpfile> --profile=<profile> portscan
  • Analisar registros de registro:

    volatility -f <dumpfile> --profile=<profile> printkey -K 'HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run'
  • Analisar arquivos de memória física:

    volatility -f <dumpfile> --profile=<profile> memdump -p <pid> -D <output_directory>
  • Analisar arquivos de memória virtual:

    volatility -f <dumpfile> --profile=<profile> memmap --output=dot --output-file=memmap.dot
  • Analisar arquivos de página:

    volatility -f <dumpfile> --profile=<profile> psscan
  • Analisar arquivos de registro:

    volatility -f <dumpfile> --profile=<profile> hivelist
  • Analisar arquivos de registro:

    volatility -f <dumpfile> --profile=<profile> printkey -K 'HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run'
  • Analisar arquivos de registro:

    volatility -f <dumpfile> --profile=<profile> printkey -K 'HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run'
  • Analisar arquivos de registro:

    volatility -f <dumpfile> --profile=<profile> printkey -K 'HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run'
  • Analisar arquivos de registro:

    volatility -f <dumpfile> --profile=<profile> printkey -K 'HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run'
  • Analisar arquivos de registro:

    volatility -f <dumpfile> --profile=<profile> printkey -K 'HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run'
  • Analisar arquivos de registro:

    volatility -f <dumpfile> --profile=<profile> printkey -K 'HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run'
  • Analisar arquivos de registro:

    volatility -f <dumpfile> --profile=<profile> printkey -K 'HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run'
  • Analisar arquivos de registro:

    volatility -f <dumpfile> --profile=<profile> printkey -K 'HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run'
volatility --profile=Win7SP1x86_23418 getsids -f file.dmp #Get the SID owned by each process
volatility --profile=Win7SP1x86_23418 getservicesids -f file.dmp #Get the SID of each service

Handles

Útil para saber a quais outros arquivos, chaves, threads, processos... um processo tem um handle (aberto)

vol.py -f file.dmp windows.handles.Handles [--pid <pid>]

O Volatility é uma ferramenta poderosa para análise de dumps de memória. Abaixo estão alguns comandos úteis para análise de memória com o Volatility:

  • Identificar o perfil do sistema operacional:

    volatility -f memdump.mem imageinfo
  • Listar processos em execução:

    volatility -f memdump.mem --profile=PROFILE pslist
  • Analisar conexões de rede:

    volatility -f memdump.mem --profile=PROFILE connections
  • Analisar registros de registro:

    volatility -f memdump.mem --profile=PROFILE hivelist
  • Extrair um arquivo específico da memória:

    volatility -f memdump.mem --profile=PROFILE dumpfiles -Q ADDRESS -D output_directory/
  • Analisar cache DNS:

    volatility -f memdump.mem --profile=PROFILE dnscache
  • Analisar histórico de navegação:

    volatility -f memdump.mem --profile=PROFILE iehistory
  • Analisar processos e módulos carregados:

    volatility -f memdump.mem --profile=PROFILE psxview
  • Analisar pools de etiquetas de segurança:

    volatility -f memdump.mem --profile=PROFILE privs
  • Analisar sockets de rede:

    volatility -f memdump.mem --profile=PROFILE sockets
  • Analisar tarefas e DLLs injetadas:

    volatility -f memdump.mem --profile=PROFILE malfind
  • Analisar chaves de registro recentemente modificadas:

    volatility -f memdump.mem --profile=PROFILE hivescan
  • Analisar processos e threads:

    volatility -f memdump.mem --profile=PROFILE pstree
  • Analisar manipulação de objetos:

    volatility -f memdump.mem --profile=PROFILE handles
  • Analisar drivers carregados:

    volatility -f memdump.mem --profile=PROFILE ldrmodules
  • Analisar registros de eventos:

    volatility -f memdump.mem --profile=PROFILE evtlogs
  • Analisar tokens de segurança:

    volatility -f memdump.mem --profile=PROFILE tokens
  • Analisar serviços e drivers:

    volatility -f memdump.mem --profile=PROFILE svcscan
  • Analisar arquivos abertos:

    volatility -f memdump.mem --profile=PROFILE filescan
  • Analisar cache de impressão:

    volatility -f memdump.mem --profile=PROFILE printkey
  • Analisar cache de registro:

    volatility -f memdump.mem --profile=PROFILE printkey -K "ControlSet001\Control\Print\Printers"
  • Analisar cache de registro (todos os valores):

    volatility -f memdump.mem --profile=PROFILE printkey -all
  • Analisar cache de registro (filtrar por valor):

    volatility -f memdump.mem --profile=PROFILE printkey -K "ControlSet001\Control\Print\Printers" -all
volatility --profile=Win7SP1x86_23418 -f file.dmp handles [--pid=<pid>]

DLLs

./vol.py -f file.dmp windows.dlllist.DllList [--pid <pid>] #List dlls used by each
./vol.py -f file.dmp windows.dumpfiles.DumpFiles --pid <pid> #Dump the .exe and dlls of the process in the current directory process

​​​​RootedCON é o evento de cibersegurança mais relevante na Espanha e um dos mais importantes na Europa. Com a missão de promover o conhecimento técnico, este congresso é um ponto de encontro fervilhante para profissionais de tecnologia e cibersegurança em todas as disciplinas.

Serviços

./vol.py -f file.dmp windows.svcscan.SvcScan #List services
./vol.py -f file.dmp windows.getservicesids.GetServiceSIDs #Get the SID of services

A seguir estão alguns comandos comuns do Volatility que podem ser úteis durante a análise de um dump de memória:

  • imageinfo: exibe informações gerais sobre o dump de memória.

  • pslist: lista os processos em execução no dump de memória.

  • pstree: exibe os processos em formato de árvore.

  • dlllist: lista as DLLs carregadas em cada processo.

  • handles: exibe os identificadores de objetos abertos por cada processo.

  • cmdline: exibe os argumentos da linha de comando de cada processo.

  • filescan: escaneia a memória em busca de estruturas de dados de arquivos.

  • dumpfiles: extrai arquivos do dump de memória.

  • malfind: encontra possíveis injeções de malware na memória.

  • apihooks: identifica possíveis ganchos de API em processos.

  • ldrmodules: lista os módulos carregados em cada processo.

  • svcscan: lista os serviços do Windows.

  • connections: exibe informações de conexão de rede.

  • sockets: lista os sockets de rede.

  • devicetree: exibe a árvore de dispositivos.

  • registry: permite acessar o registro do Windows.

  • hivelist: lista os hives do registro.

  • printkey: exibe as subchaves e valores de uma determinada chave do registro.

  • hashdump: extrai hashes de senhas do dump de memória.

  • kdbgscan: encontra o valor KDBG para análise de pool.

  • gdt: exibe a tabela de descritores globais.

  • idt: exibe a tabela de descritores de interrupção.

  • ssdt: exibe a tabela de descritores de serviços do sistema.

  • callbacks: lista os callbacks do kernel.

  • driverirp: exibe as rotinas de tratamento de solicitação de E/S de driver.

  • modscan: encontra módulos do kernel carregados.

  • moddump: extrai um módulo do kernel.

  • yarascan: escaneia a memória em busca de padrões usando YARA.

  • mbrparser: analisa o registro de inicialização principal (MBR).

  • mftparser: analisa a tabela de arquivos mestre (MFT).

  • shellbags: analisa informações de pastas acessadas recentemente.

  • timeliner: cria uma linha do tempo dos eventos do sistema.

  • psxview: detecta processos ocultos.

  • autoruns: lista os programas configurados para serem executados durante a inicialização.

  • consoles: exibe informações sobre consoles de usuários.

  • desktops: lista os desktops interativos.

  • shimcache: analisa o cache de compatibilidade de aplicativos.

  • userassist: analisa informações sobre programas usados por usuários.

  • malfind: encontra possíveis injeções de malware na memória.

  • apihooks: identifica possíveis ganchos de API em processos.

  • ldrmodules: lista os módulos carregados em cada processo.

  • svcscan: lista os serviços do Windows.

  • connections: exibe informações de conexão de rede.

  • sockets: lista os sockets de rede.

  • devicetree: exibe a árvore de dispositivos.

  • registry: permite acessar o registro do Windows.

  • hivelist: lista os hives do registro.

  • printkey: exibe as subchaves e valores de uma determinada chave do registro.

  • hashdump: extrai hashes de senhas do dump de memória.

  • kdbgscan: encontra o valor KDBG para análise de pool.

  • gdt: exibe a tabela de descritores globais.

  • idt: exibe a tabela de descritores de interrupção.

  • ssdt: exibe a tabela de descritores de serviços do sistema.

  • callbacks: lista os callbacks do kernel.

  • driverirp: exibe as rotinas de tratamento de solicitação de E/S de driver.

  • modscan: encontra módulos do kernel carregados.

  • moddump: extrai um módulo do kernel.

  • yarascan: escaneia a memória em busca de padrões usando YARA.

  • mbrparser: analisa o registro de inicialização principal (MBR).

  • mftparser: analisa a tabela de arquivos mestre (MFT).

  • shellbags: analisa informações de pastas acessadas recentemente.

  • timeliner: cria uma linha do tempo dos eventos do sistema.

  • psxview: detecta processos ocultos.

  • autoruns: lista os programas configurados para serem executados durante a inicialização.

  • consoles: exibe informações sobre consoles de usuários.

  • desktops: lista os desktops interativos.

  • shimcache: analisa o cache de compatibilidade de aplicativos.

  • userassist: analisa informações sobre programas usados por usuários.

#Get services and binary path
volatility --profile=Win7SP1x86_23418 svcscan -f file.dmp
#Get name of the services and SID (slow)
volatility --profile=Win7SP1x86_23418 getservicesids -f file.dmp

Rede

./vol.py -f file.dmp windows.netscan.NetScan
#For network info of linux use volatility2

O seguinte é um resumo das principais funções do Volatility para análise de despejo de memória:

  • imageinfo: exibe informações gerais sobre o despejo de memória.

  • kdbgscan: localiza o ponteiro KDBG no despejo de memória.

  • kpcrscan: localiza o ponteiro KPCR no despejo de memória.

  • pslist: lista os processos em execução.

  • pstree: exibe os processos em execução em formato de árvore.

  • dlllist: lista os módulos DLL carregados em cada processo.

  • handles: exibe os identificadores de objeto abertos por cada processo.

  • filescan: localiza estruturas de arquivos no despejo de memória.

  • cmdline: exibe os argumentos da linha de comando de cada processo.

  • sockets: lista os sockets de rede abertos.

  • connections: exibe as conexões de rede ativas.

  • malfind: localiza possíveis artefatos de malware na memória.

  • apihooks: identifica possíveis ganchos de API.

  • ldrmodules: lista os módulos carregados em cada processo.

  • modscan: localiza módulos do kernel no despejo de memória.

  • ssdt: exibe a Tabela de Despacho de Serviços do Sistema.

  • callbacks: lista os callbacks do kernel.

  • devicetree: exibe a árvore de dispositivos.

  • driverirp: lista os IRPs de driver.

  • printkey: exibe as chaves do Registro de impressão.

  • privs: lista os privilégios de cada processo.

  • getsids: exibe os SIDs associados a cada processo.

  • dumpfiles: extrai arquivos do despejo de memória.

  • memmap: exibe um mapa de memória do despejo.

  • vadinfo: exibe informações sobre regiões de memória virtuais.

  • vaddump: extrai regiões de memória virtuais específicas.

  • yarascan: executa varreduras YARA na memória.

  • malfind: localiza possíveis artefatos de malware na memória.

  • apihooks: identifica possíveis ganchos de API.

  • ldrmodules: lista os módulos carregados em cada processo.

  • modscan: localiza módulos do kernel no despejo de memória.

  • ssdt: exibe a Tabela de Despacho de Serviços do Sistema.

  • callbacks: lista os callbacks do kernel.

  • devicetree: exibe a árvore de dispositivos.

  • driverirp: lista os IRPs de driver.

  • printkey: exibe as chaves do Registro de impressão.

  • privs: lista os privilégios de cada processo.

  • getsids: exibe os SIDs associados a cada processo.

  • dumpfiles: extrai arquivos do despejo de memória.

  • memmap: exibe um mapa de memória do despejo.

  • vadinfo: exibe informações sobre regiões de memória virtuais.

  • vaddump: extrai regiões de memória virtuais específicas.

  • yarascan: executa varreduras YARA na memória.

volatility --profile=Win7SP1x86_23418 netscan -f file.dmp
volatility --profile=Win7SP1x86_23418 connections -f file.dmp#XP and 2003 only
volatility --profile=Win7SP1x86_23418 connscan -f file.dmp#TCP connections
volatility --profile=Win7SP1x86_23418 sockscan -f file.dmp#Open sockets
volatility --profile=Win7SP1x86_23418 sockets -f file.dmp#Scanner for tcp socket objects

volatility --profile=SomeLinux -f file.dmp linux_ifconfig
volatility --profile=SomeLinux -f file.dmp linux_netstat
volatility --profile=SomeLinux -f file.dmp linux_netfilter
volatility --profile=SomeLinux -f file.dmp linux_arp #ARP table
volatility --profile=SomeLinux -f file.dmp linux_list_raw #Processes using promiscuous raw sockets (comm between processes)
volatility --profile=SomeLinux -f file.dmp linux_route_cache

Registro do registro

Imprimir registros disponíveis

./vol.py -f file.dmp windows.registry.hivelist.HiveList #List roots
./vol.py -f file.dmp windows.registry.printkey.PrintKey #List roots and get initial subkeys

A seguir estão alguns comandos úteis do Volatility para análise de despejo de memória:

  • imageinfo: exibe informações gerais sobre a imagem de memória.

  • pslist: lista os processos em execução.

  • pstree: exibe os processos em formato de árvore.

  • psscan: verifica os processos ocultos.

  • dlllist: lista as DLLs carregadas em cada processo.

  • handles: exibe os identificadores de objeto aberto para cada processo.

  • cmdline: mostra os argumentos da linha de comando de cada processo.

  • consoles: lista os consoles associados a cada processo.

  • malfind: procura por possíveis malwares na memória.

  • apihooks: identifica possíveis ganchos de API.

  • ldrmodules: lista os módulos carregados em cada processo.

  • svcscan: verifica os serviços do Windows.

  • connections: exibe as conexões de rede.

  • sockets: lista os sockets de rede.

  • devicetree: mostra a árvore de dispositivos.

  • modscan: verifica módulos do kernel.

  • ssdt: exibe a Tabela de Despacho de Serviços do Sistema.

  • callbacks: lista os callbacks do kernel.

  • driverirp: exibe as estruturas de solicitação de pacote (IRP) do driver.

  • printkey: exibe as subchaves e valores de uma chave do Registro.

  • filescan: procura por arquivos abertos.

  • dumpfiles: extrai arquivos do espaço de endereço do processo.

  • memmap: exibe o mapeamento de memória física.

  • memdump: cria um despejo de memória de um processo específico.

  • hashdump: extrai hashes de senha do SAM ou do LSASS.

  • hivelist: lista os hives do Registro.

  • hivedump: extrai um hive do Registro.

  • userassist: exibe entradas do UserAssist.

  • shellbags: lista as pastas acessadas recentemente.

  • getsids: exibe os SIDs dos usuários.

  • getsidbysubject: encontra SIDs com base em um nome de usuário.

  • getsidbytype: encontra SIDs com base em um tipo.

  • getsidbyname: encontra SIDs com base em um nome.

  • apihooks: identifica possíveis ganchos de API.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: procura por possíveis malwares na memória.

  • malfind: pro

volatility --profile=Win7SP1x86_23418 -f file.dmp hivelist #List roots
volatility --profile=Win7SP1x86_23418 -f file.dmp printkey #List roots and get initial subkeys

Obter um valor

./vol.py -f file.dmp windows.registry.printkey.PrintKey --key "Software\Microsoft\Windows NT\CurrentVersion"

Despejar

#Dump a hive
volatility --profile=Win7SP1x86_23418 hivedump -o 0x9aad6148 -f file.dmp #Offset extracted by hivelist
#Dump all hives
volatility --profile=Win7SP1x86_23418 hivedump -f file.dmp

Sistema de Arquivos

Montagem

#See vol2

Análise de despejo de memória

./vol.py -f file.dmp windows.filescan.FileScan #Scan for files inside the dump
./vol.py -f file.dmp windows.dumpfiles.DumpFiles --physaddr <0xAAAAA> #Offset from previous command

Autoruns

Baixe em https://github.com/tomchop/volatility-autoruns

volatility --plugins=volatility-autoruns/ --profile=WinXPSP2x86 -f file.dmp autoruns

Mutexes

./vol.py -f file.dmp windows.mutantscan.MutantScan

O Volatility é uma ferramenta poderosa para análise de dumps de memória. Abaixo estão alguns comandos úteis para análise de dumps de memória com o Volatility:

  • Identificar o perfil do sistema operacional:

    volatility -f memdump.mem imageinfo
  • Listar todos os processos em execução:

    volatility -f memdump.mem --profile=Win7SP1x64 pslist
  • Analisar os sockets de rede:

    volatility -f memdump.mem --profile=Win7SP1x64 netscan
  • Analisar os registros de eventos:

    volatility -f memdump.mem --profile=Win7SP1x64 evnets
  • Analisar os drivers carregados:

    volatility -f memdump.mem --profile=Win7SP1x64 driverscan
  • Analisar os módulos do kernel:

    volatility -f memdump.mem --profile=Win7SP1x64 modules
  • Analisar os handles abertos por processos:

    volatility -f memdump.mem --profile=Win7SP1x64 handles
  • Analisar os objetos de segurança:

    volatility -f memdump.mem --profile=Win7SP1x64 getsids
  • Analisar os tokens de acesso:

    volatility -f memdump.mem --profile=Win7SP1x64 tokens
  • Analisar os processos e suas DLLs carregadas:

    volatility -f memdump.mem --profile=Win7SP1x64 dlllist
  • Analisar os registros do registro do Windows:

    volatility -f memdump.mem --profile=Win7SP1x64 printkey -K "Software\Microsoft\Windows\CurrentVersion\Run"
volatility --profile=Win7SP1x86_23418 mutantscan -f file.dmp
volatility --profile=Win7SP1x86_23418 -f file.dmp handles -p <PID> -t mutant
./vol.py -f file.dmp windows.symlinkscan.SymlinkScan

O Volatility é uma ferramenta poderosa para análise de dumps de memória. Abaixo estão alguns comandos úteis para análise de memória com o Volatility:

  • Identificar o perfil do sistema operacional:

    volatility -f memdump.mem imageinfo
  • Listar processos em execução:

    volatility -f memdump.mem --profile=PROFILE pslist
  • Analisar sockets de rede:

    volatility -f memdump.mem --profile=PROFILE netscan
  • Analisar registros de eventos:

    volatility -f memdump.mem --profile=PROFILE evnets
  • Analisar registros de registro:

    volatility -f memdump.mem --profile=PROFILE printkey -K 'HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run'
  • Analisar arquivos abertos:

    volatility -f memdump.mem --profile=PROFILE filescan
  • Analisar conexões de rede:

    volatility -f memdump.mem --profile=PROFILE connscan
  • Analisar cache de DNS:

    volatility -f memdump.mem --profile=PROFILE dnscache
  • Analisar módulos carregados:

    volatility -f memdump.mem --profile=PROFILE modscan
  • Analisar handlers de IRP:

    volatility -f memdump.mem --profile=PROFILE irpfind
  • Analisar processos e DLLs injetados:

    volatility -f memdump.mem --profile=PROFILE malfind
  • Analisar pool de tags:

    volatility -f memdump.mem --profile=PROFILE poolscan
  • Analisar objetos de kernel:

    volatility -f memdump.mem --profile=PROFILE kdbgscan
  • Analisar handlers de objetos:

    volatility -f memdump.mem --profile=PROFILE handles
  • Analisar drivers de kernel:

    volatility -f memdump.mem --profile=PROFILE driverscan
  • Analisar objetos de arquivo:

    volatility -f memdump.mem --profile=PROFILE filescan
  • Analisar VAD tree:

    volatility -f memdump.mem --profile=PROFILE vadtree
  • Analisar VAD nodes:

    volatility -f memdump.mem --profile=PROFILE vadinfo
  • Analisar VAD walker:

    volatility -f memdump.mem --profile=PROFILE vadwalk
  • Analisar VAD cross view:

    volatility -f memdump.mem --profile=PROFILE vad
volatility --profile=Win7SP1x86_23418 -f file.dmp symlinkscan

Bash

É possível ler do histórico do bash na memória. Você também pode fazer dump do arquivo .bash_history, mas se estiver desativado, você ficará feliz em saber que pode usar este módulo de volatilidade.

./vol.py -f file.dmp linux.bash.Bash
volatility --profile=Win7SP1x86_23418 -f file.dmp linux_bash

Linha do Tempo

./vol.py -f file.dmp timeLiner.TimeLiner

O Volatility é uma ferramenta poderosa para análise de dumps de memória. Abaixo estão alguns comandos úteis para análise de dumps de memória com o Volatility:

  • Identificar o perfil do sistema operacional:

    volatility -f memdump.mem imageinfo
  • Listar todos os processos em execução:

    volatility -f memdump.mem --profile=PerfilDoSistema pslist
  • Analisar os sockets de rede abertos:

    volatility -f memdump.mem --profile=PerfilDoSistema sockscan
  • Analisar os drivers carregados:

    volatility -f memdump.mem --profile=PerfilDoSistema ldrmodules
  • Analisar os registros de eventos:

    volatility -f memdump.mem --profile=PerfilDoSistema evnets
  • Analisar os arquivos abertos por processos:

    volatility -f memdump.mem --profile=PerfilDoSistema filescan
  • Analisar os registros do registro do Windows:

    volatility -f memdump.mem --profile=PerfilDoSistema hivelist
  • Extrair um arquivo específico da memória:

    volatility -f memdump.mem --profile=PerfilDoSistema dumpfiles -Q EndereçoDoArquivo -D DiretórioDestino

Certifique-se de substituir memdump.mem pelo nome do arquivo de dump de memória e PerfilDoSistema pelo perfil do sistema operacional alvo.

volatility --profile=Win7SP1x86_23418 -f timeliner

Drivers

./vol.py -f file.dmp windows.driverscan.DriverScan

A seguir estão alguns comandos úteis do Volatility para análise de despejo de memória:

  • imageinfo: exibe informações gerais sobre a imagem de memória.

  • pslist: lista os processos em execução.

  • pstree: exibe os processos em formato de árvore.

  • psscan: verifica os processos ocultos.

  • dlllist: lista as DLLs carregadas em cada processo.

  • handles: exibe os identificadores de objeto aberto para cada processo.

  • cmdline: exibe os argumentos da linha de comando de cada processo.

  • consoles: lista os consoles associados a cada processo.

  • filescan: verifica os arquivos mapeados na memória.

  • svcscan: lista os serviços do Windows.

  • connections: exibe as conexões de rede.

  • malfind: procura por possíveis malwares na memória.

  • apihooks: identifica possíveis ganchos de API.

  • ldrmodules: lista os módulos carregados em cada processo.

  • modscan: verifica os módulos do kernel.

  • ssdt: exibe a Tabela de Despacho de Serviço do Sistema.

  • callbacks: lista os callbacks do kernel.

  • driverirp: exibe as IRPs (Pacotes de Solicitação de E/S) de drivers do kernel.

  • devicetree: exibe a árvore de dispositivos.

  • printkey: exibe as chaves do Registro de impressão.

  • privs: lista os privilégios de cada processo.

  • getsids: exibe os SIDs (Identificadores de Segurança) de cada processo.

  • dumpfiles: extrai arquivos do espaço de endereço de um processo.

  • yarascan: executa uma varredura YARA na memória.

  • memmap: exibe os intervalos de endereços mapeados na memória.

  • vadinfo: exibe informações sobre regiões de memória virtuais.

  • vaddump: extrai uma região de memória virtual específica.

  • vadtree: exibe as regiões de memória virtuais em formato de árvore.

  • vadwalk: exibe as páginas de memória em uma região de memória virtual.

  • dlldump: extrai uma DLL específica da memória.

  • dumpregistry: extrai uma parte ou todo o Registro do Windows da memória.

  • hivelist: lista os hives do Registro do Windows.

  • printkey: exibe as chaves do Registro de impressão.

  • hashdump: extrai hashes de senha do SAM e do sistema.

  • kdbgscan: verifica a presença de estruturas KDBG.

  • kpcrscan: verifica a presença de estruturas KPCR.

  • gdt: exibe a Tabela de Descritores Globais.

  • idt: exibe a Tabela de Descritores de Interrupção.

  • ss: exibe a Tabela de Seletores de Segmento.

  • userassist: exibe informações do UserAssist.

  • shellbags: exibe informações do ShellBags.

  • mbrparser: analisa o Registro de Mestre de Boot.

  • mftparser: analisa a Tabela de Arquivos Mestres.

  • usnparser: analisa o Jornal de Atualização do Sistema.

  • $logfile: analisa o arquivo $LogFile.

  • $mft: analisa o arquivo $MFT.

  • $boot: analisa o arquivo $Boot.

  • $bitmap: analisa o arquivo $Bitmap.

  • $logfile: analisa o arquivo $LogFile.

  • $volume: analisa o arquivo $Volume.

  • $attrdef: analisa o arquivo $AttrDef.

  • $data: analisa o arquivo $DATA.

  • $boot: analisa o arquivo $Boot.

  • $badclus: analisa o arquivo $BadClus.

  • $secure: analisa o arquivo $Secure.

  • $upcase: analisa o arquivo $UpCase.

  • $extend: analisa o arquivo $Extend.

  • $quota: analisa o arquivo $Quota.

  • $objid: analisa o arquivo $ObjId.

  • $reparse: analisa o arquivo $Reparse.

  • **$quota

volatility --profile=Win7SP1x86_23418 -f file.dmp driverscan

Obter área de transferência

#Just vol2
volatility --profile=Win7SP1x86_23418 clipboard -f file.dmp

Obter histórico do IE

#Just vol2
volatility --profile=Win7SP1x86_23418 iehistory -f file.dmp

Obter texto do bloco de notas

#Just vol2
volatility --profile=Win7SP1x86_23418 notepad -f file.dmp

Captura de tela

#Just vol2
volatility --profile=Win7SP1x86_23418 screenshot -f file.dmp

Registro Mestre de Inicialização (MBR)

volatility --profile=Win7SP1x86_23418 mbrparser -f file.dmp

O Master Boot Record (MBR) desempenha um papel crucial na gestão das partições lógicas de um meio de armazenamento, que são estruturadas com diferentes sistemas de arquivos. Ele não apenas mantém informações de layout de partição, mas também contém código executável atuando como um carregador de inicialização. Esse carregador de inicialização inicia diretamente o processo de carregamento da segunda etapa do SO (consulte carregador de inicialização de segunda etapa) ou trabalha em harmonia com o registro de inicialização de volume (VBR) de cada partição. Para conhecimento mais aprofundado, consulte a página da Wikipedia sobre MBR.

Referências

RootedCON é o evento de cibersegurança mais relevante na Espanha e um dos mais importantes na Europa. Com a missão de promover o conhecimento técnico, este congresso é um ponto de encontro fervilhante para profissionais de tecnologia e cibersegurança em todas as disciplinas.

Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!

Outras maneiras de apoiar o HackTricks:

Last updated