volatilidade
Esta é a volatilidade do comando que pode ser executado no provedor de hospedagem gratuita OnWorks usando uma de nossas várias estações de trabalho online gratuitas, como Ubuntu Online, Fedora Online, emulador online do Windows ou emulador online do MAC OS
PROGRAMA:
NOME
volatilidade - estrutura forense de memória avançada
SINOPSE
volatilidade [opção]
volatilidade -f [imagem] --perfil= [perfil] [plug-in]
DESCRIÇÃO
O Volatility Framework é uma coleção completamente aberta de ferramentas para a extração de
artefatos digitais de amostras de memória volátil (RAM). É útil em análises forenses.
As técnicas de extração são realizadas de forma completamente independente do sistema que está sendo
investigados, mas oferecem visibilidade sem precedentes do estado de tempo de execução do sistema.
A volatilidade suporta várias versões do MS Windows, Linux e MAC OSX:
Microsoft Windows:
· Windows XP Service Pack 32 e 2 de 3 bits
· Windows 32 Server Service Pack 2003, 0, 1 de 2 bits
· Windows Vista Service Pack 32, 0, 1 de 2 bits
· Windows 32 Server Service Pack 2008, 1 de 2 bits (não há SP0)
· Windows 32 Service Pack 7, 0 de 1 bits
· Windows 32, 8 e 8.1 Atualização 8.1 de 1 bits
· Windows 32 de 10 bits (suporte inicial)
· Windows XP Service Pack 64 e 1 de 2 bits (não há SP0)
· Windows 64 Server Service Pack 2003 e 1 de 2 bits (não há SP0)
· Windows Vista Service Pack 64, 0, 1 de 2 bits
· Windows 64 Server Service Pack 2008 e 1 de 2 bits (não há SP0)
· Windows 64 R2008 Server Service Pack 2 e 0 de 1 bits
· Service Pack 64 e 7 do Windows 0 de 1 bits
· Windows 64, 8 e 8.1 Atualização 8.1 de 1 bits
· Windows Server 64 e 2012 R2012 de 2 bits
· Windows 64 de 10 bits (suporte inicial)
Linux:
· Kernels Linux de 32 bits 2.6.11 a 4.2.3
· Kernels Linux de 64 bits 2.6.11 a 4.2.3
· OpenSuSE, Ubuntu, Debian, CentOS, Fedora, Mandriva, etc.
Mac OS X:
· Leopard 32.x de 10.5 bits (o único 64 de 10.5 bits é o servidor, que não é compatível)
· Snow Leopard 32.x de 10.6 bits
· Snow Leopard 64.x de 10.6 bits
· Leão 32.x de 10.7 bits
· Leão 64.x de 10.7 bits
· 64.x Mountain Lion de 10.8 bits (não há versão de 32 bits)
· Mavericks 64.x de 10.9 bits (não há versão de 32 bits)
· 64 bits 10.10.x Yosemite (não há versão de 32 bits)
· 64 bits 10.11.x El Capitan (não há versão de 32 bits)
Os formatos de memória suportados são:
· Amostra linear bruta (dd)
· Arquivo de hibernação
· Arquivo de despejo de memória
· Core dump VirtualBox ELF64
· Estado salvo VMware e arquivos de instantâneo
· Formato EWF (E01)
· Formato LiME (Linux Memory Extractor)
· Formato de arquivo Mach-o
· Despejos de máquina virtual QEMU
· Fio de fogo
· HPAK (FDPro)
Os espaços de endereço suportados (tipos de RAM) são:
· AMD64PagedMemory - Espaço de endereço padrão AMD de 64 bits
· ArmAddressSpace - Espaço de endereço para processadores ARM
· FileAddressSpace - Este é um arquivo direto AS
· HPAKAddressSpace - Este AS suporta o formato HPAK
· IA32PagedMemoryPae - Esta classe implementa o espaço de endereço de paginação IA-32 PAE.
É responsável
· IA32PagedMemory - espaço de endereço de paginação IA-32 padrão
· LimeAddressSpace - espaço de endereço para Lime
· MachOAddressSpace - espaço de endereço para arquivos mach-o para suportar memória atc-ny
leitor
· OSXPmemELF - Este AS suporta o formato VirtualBox ELF64 coredump
· QemuCoreDumpElf - Este AS oferece suporte ao formato Qemu ELF32 e ELF64 coredump
· VirtualBoxCoreDumpElf64 - Este AS oferece suporte ao formato VirtualBox ELF64 coredump
· VMWareAddressSpace - Este AS suporta instantâneo VMware (VMSS) e estado salvo
(VMSS) arquivos
· VMWareMetaAddressSpace - Este AS suporta o formato VMEM com VMSN / VMSS
metadados
· WindowsCrashDumpSpace32 - Este AS suporta o formato Windows Crash Dump
· WindowsCrashDumpSpace64BitMap - Este AS oferece suporte ao Windows BitMap Crash Dump
formato
· WindowsCrashDumpSpace64 - Este AS suporta o formato Windows Crash Dump
· WindowsHiberFileSpace32 - Este é um espaço de endereço de hibernação para janelas
arquivos de hibernação
Existem imagens de memória exemplares para testes em
https://github.com/volatilityfoundation/volatilidade/ wiki / Amostras de memória.
OPÇÕES
-h, --Socorro
Liste todas as opções disponíveis e seus valores padrão. Os valores padrão podem ser definidos em
o arquivo de configuração (/ etc / volatilityrc).
--conf-file = / root / .volatilityrc
Arquivo de configuração baseado no usuário.
-d, --depurar
Depurar a volatilidade.
--plugins = PLUGINS
Adicional plug-in diretórios a serem usados (separados por dois pontos).
--informações Imprime informações sobre todos os objetos registrados.
--cache-directory = / root / .cache / volatility
Diretório onde os arquivos de cache são armazenados.
--cache
Use o cache.
--tz = TZ
Defina o fuso horário para exibir carimbos de data / hora usando pytz (se instalado) ou tzset
-f NOME DO ARQUIVO, --filename = FILENAME
Nome do arquivo a ser usado ao abrir um imagem.
--profile = WinXPSP2x86
Nome do perfil a carregar (use --informações para ver uma lista de perfis suportados).
-l LOCALIZAÇÃO, --location = LOCATION
Um local URN do qual carregar um espaço de endereço.
-C, --escrever
Ative o suporte de gravação.
--dtb = DTB
Endereço DTB.
--shift = SHIFT
Endereço de deslocamento Mac KASLR.
--output = text
Saída neste formato.
--output-file = OUTPUT_FILE
Grave a saída neste arquivo.
-dentro, --verbose
Informações detalhadas.
-g KDBG, --kdbg = KDBG
Especifique um endereço virtual KDBG específico. Para Windows 64 de 8 bits e superior, este é o
endereço de KdCopyDataBlock.
--força
Força a utilização do perfil suspeito.
-k KPCR, --kpcr = KPCR
Especifique um endereço KPCR específico.
--cookie = COOKIE
Especifique o endereço de nt! ObHeaderCookie (válido apenas para Windows 10).
PLUGINS E PERFIS
O apoiado plug-in comandos e perfis podem ser vistos usando o comando '$
volatilidade --informações'. Observe que os plug-ins permitidos para Linux e MAC OSX terão o 'linux_'
e prefixos 'mac_'. Plug-ins sem esses prefixos foram projetados para MS Windows.
Perfis são mapas usados pelo Volatility para entender os sistemas operacionais. O MS permitido
Os perfis do Windows são fornecidos pelo Volatility.
Você deve criar seus próprios perfis para Linux e MAC OSX. Para isso, em sistemas Debian, leia
o arquivo README.Debian fornecido por volatilidade- pacote de ferramentas.
No MS Windows, para determinar o tipo de sistema operacional, você pode usar:
$ volatilidade -f imageinfo
or
$ volatilidade -f kdbgscan
MEIO AMBIENTE VARIÁVEIS
Em um sistema GNU / Linux ou OS X, essas variáveis podem ser definidas:
· VOLATILITY_PROFILE - Especifica um perfil a ser usado como padrão, tornando
desnecessário a '--perfil' opção.
· VOLATILITY_LOCATION - Especifica o caminho de um imagem. Então, o comando de Volatilidade
não precisará de um nome de arquivo via '-f' opção.
· VOLATILITY_KDBG - Especifica um endereço KDBG. Veja PROCEDIMENTOS EXTRA para mais
Detalhes.
Outros plug-in sinalizadores podem ser utilizados desta forma, por exemplo KPCR, DTB ou PLUGINS. Quando
exportando variáveis, basta prefixar VOLATILITY_ antes do nome do sinalizador (por exemplo
VOLATILITY_KPCR). Caso contrário, o nome da bandeira permanece o mesmo ao adicioná-lo ao
arquivo de configuração.
Se você tiver um caminho com um espaço ou mais no nome, os espaços devem ser substituídos por% 20
em vez disso (por exemplo, LOCATION = file: ///tmp/my%20image.img).
Exemplo:
$ export VOLATILITY_PROFILE = Win7SP0x86
$ export VOLATILITY_LOCATION = file: ///tmp/myimage.img
$ export VOLATILITY_KDBG = 0x82944c28
CONFIGURAÇÃO ARQUIVOS
Os arquivos de configuração são normalmente 'volatilityrc' no diretório atual ou
'~ / .volatilityrc'no diretório inicial do usuário, ou no caminho especificado pelo usuário, usando o --conf-
lima opção. Um exemplo do conteúdo do arquivo é mostrado abaixo:
[PADRÃO]
PROFILE = Win7SP0x86
LOCATION = file: ///tmp/myimage.img
KDBG = 0x82944c28
Outros plug-in sinalizadores podem ser utilizados desta forma, por exemplo KPCR, DTB ou PLUGINS. Quando
exportando variáveis, basta prefixar VOLATILITY_ antes do nome do sinalizador (por exemplo
VOLATILITY_KPCR). Caso contrário, o nome da bandeira permanece o mesmo ao adicioná-lo ao
arquivo de configuração.
Se você tiver um caminho com um espaço ou mais no nome, os espaços devem ser substituídos por% 20
em vez disso (por exemplo, LOCATION = file: ///tmp/my%20image.img).
EXTRA PROCEDIMENTOS
Definir um fuso horário
Os carimbos de data / hora extraídos da memória podem estar no horário local do sistema ou no horário universal
Coordenadas (UTC). Se eles estiverem em UTC, a Volatilidade pode ser instruída a exibi-los em um tempo
zona de escolha do analista. Para escolher um fuso horário, use um dos fusos horários padrão
nomes (como América / São_Paulo, Europa / Londres, EUA / Leste ou a maioria dos fusos horários de Olson) com
o sinalizador --tz = TIMEZONE.
A volatilidade tenta usar o pytz se instalado, caso contrário, ele usa o tzset.
Observe que especificar um fuso horário não afetará como os horários locais do sistema são exibidos. Se
identificar um horário que você sabe que é baseado no UTC, registre-o como um problema no rastreador de problemas.
Por padrão, os carimbos de data / hora _EPROCESS CreateTime e ExitTime estão em UTC.
Configurando o DTB
O DTB (Directory Table Base) é o que o Volatility usa para traduzir endereços virtuais em físicos
endereços. Por padrão, um DTB de kernel é usado (do processo Ocioso / Sistema). Se você quiser usar um
DTB de processo diferente ao acessar dados, forneça o endereço para --dtb = ADDRESS.
Configurando o endereço KDBG (este é apenas para Windows opção)
Varreduras de volatilidade para a estrutura '_KDDEBUGGER_DATA64' usando assinaturas embutidas em código "KDBG" e
uma série de verificações de sanidade. Essas assinaturas não são críticas para o funcionamento do sistema operacional
corretamente, assim, o malware pode sobrescrevê-los na tentativa de descartar ferramentas que dependem do
assinatura. Além disso, em alguns casos, pode haver mais de um '_KDDEBUGGER_DATA64' (para
exemplo, se você aplicar uma atualização importante do sistema operacional e não reiniciar), o que pode causar confusão e levar a
listagens de processos e módulos incorretos, entre outros problemas. Se você sabe o endereço
adicione '_KDDEBUGGER_DATA64', você pode especificá-lo com --kdbg = ADDRESS e isto sobrescrever o automatizado
varreduras. Para obter mais informações, consulte o plug-in kdbgscan.
Configurando o endereço KPCR (este é apenas para Windows opção)
Há um KPCR (Kernel Processor Control Region) para cada CPU em um sistema. Alguma Volatilidade
plug-ins exibem informações por processador. Portanto, se você deseja exibir dados para uma CPU específica, para
exemplo CPU 3 em vez de CPU 1, você pode passar o endereço do KPCR dessa CPU com --kpcr = ADDRESS.
Para localizar os KPCRs para todas as CPUs, consulte o plug-in kpcrscan. Observe também que, a partir da Volatilidade 2.2,
muitos dos plug-ins, como idt e gdt, iteram automaticamente na lista de KPCRs.
Habilitando o suporte de gravação
O suporte de gravação em Volatilidade deve ser usado com cautela. Portanto, para ativá-lo de fato, você deve
não apenas digite --write na linha de comando, mas você deve digitar uma 'senha' em resposta a uma pergunta que
você será solicitado com. Na maioria dos casos, você não vai querer usar o suporte de gravação, pois pode levar a
corrupção ou modificação de dados em seu despejo de memória. No entanto, existem casos especiais que tornam isso
recurso realmente interessante. Por exemplo, você pode limpar um sistema ativo de certo malware
gravando na RAM através do firewire, ou você pode invadir uma estação de trabalho bloqueada corrigindo bytes no
DLLs do winlogon.
Especificando adicionais plug-in diretórios
A arquitetura de plug-in do Volatility pode carregar arquivos de plug-in de vários diretórios ao mesmo tempo. No
Código-fonte de volatilidade, a maioria dos plug-ins estão localizados em volatilidade / plug-ins. No entanto, existe outro
diretório (volatilidade / contrib) que é reservado para contribuições de desenvolvedores terceiros, ou
plug-ins com suporte fraco que simplesmente não são habilitados por padrão. Para acessar esses plug-ins você apenas
digite --plugins = contrib / plugins na linha de comando. Também permite que você crie um diretório separado
de seus próprios plug-ins que você pode gerenciar sem ter que adicionar / remover / modificar arquivos no núcleo
Diretórios de volatilidade.
Observações:
* Em sistemas Debian, o diretório contrib / plugins está em / usr / share / volatility / contrib / plugins.
* Subdiretórios também serão percorridos, desde que haja um arquivo __init__.py (que pode estar vazio)
no meio deles.
* O parâmetro para --plugins também pode ser um arquivo zip contendo os plug-ins como
como --plugins = myplugins.zip. Devido à forma como os plug-ins são carregados, o diretório de plug-ins externos
ou o arquivo zip deve ser especificado antes de quaisquer argumentos específicos do plugin (incluindo o nome do
plugar). Exemplo:
$ volatility --plugins = contrib / plugins -f exemplo XPSP3x86.vmem
Escolha de um formato de saída
Por padrão, os plug-ins usam renderizadores de texto para saída padrão. Se você deseja redirecionar para um arquivo, você
pode, é claro, usar o redirecionamento do console (isto é,> out.txt) ou você pode usar --output-file = out.txt.
A razão pela qual você também pode escolher --output = FORMAT é para permitir que os plug-ins também renderizem a saída como HTML,
JSON, SQL ou o que você escolher. No entanto, não há plug-ins com esses formatos de saída alternativos
pré-configurado para uso, então você precisará adicionar uma função chamada render_html, render_json, render_sql,
respectivamente para cada plugin antes de usar --output = HTML.
Opções específicas do plug-in
Muitos plug-ins aceitam argumentos próprios, que são independentes das opções globais. Para ver o
lista de opções disponíveis, digite o nome do plugin e -h / - help na linha de comando.
$ dlllist de volatilidade -h
Modo de depuração
Se algo não está acontecendo na Volatilidade da maneira esperada, tente executar o comando com -d / - debug.
Isso permitirá a impressão de mensagens de depuração para o erro padrão. Para mais níveis de depuração, como no uso de
depurador pdb), adicione -d -d -d ao comando.
Usando Volatilidade como uma Biblioteca
Embora seja possível usar a Volatilidade como uma biblioteca, (há planos para apoiá-la melhor no
futuro). Atualmente, para importar Volatilidade de um script Python, o seguinte código de exemplo pode ser usado:
$ píton
>>> importar volatility.conf como conf
>>> importar volatility.registry como registro
>>> registry.PluginImporter ()
>>> config = conf.ConfObject ()
>>> importar comandos de volatility.com como comandos
>>> import volatility.addrspace as addrspace
>>> registry.register_global_options (config, commands.Command)
>>> registry.register_global_options (config, addrspace.BaseAddressSpace)
>>> config.parse_options ()
>>> config.PROFILE = "WinXPSP2x86"
>>> config.LOCATION = "file: ///media/memory/private/image.dmp"
>>> import volatility.plugins.taskmods como taskmods
>>> p = taskmods.PSList (config)
>>> para processo em p.calculate ():
... processo de impressão
EXEMPLOS
Para ver todos os plug-ins, perfis, verificações de scanner e espaços de endereço disponíveis:
$ volatilidade --info
Para listar todos os processos ativos encontrados em um MS Windows 8 SP0 imagem:
$ volatility -f win8.raw --profile = Win8SP0x86 pslist
Para listar todos os processos ativos encontrados em um MS Windows 8 SP0 imagem, usando um fuso horário:
$ volatility -f win8.raw --profile = Win8SP0x86 pslist --tz = America / Sao_Paulo
Para mostrar o bnuffer do kernel de um Linux 3.2.63 imagem:
$ volatility -f mem.dd --profile = Linux_3_2_63_x64 linux_dmesg
NOTAS
Esta página de manual foi baseada em alguns testes e diversos documentos oficiais sobre Volatilidade. Para
outras informações e tutoriais, consulte:
· http://www.volatilityfoundation.org
· Https://github.com/volatilityfoundation/volatilidade/ Wiki
Use a volatilidade online usando os serviços onworks.net