# Volatility - CheatSheet
Aprenda hacking AWS do zero ao herói com htARTE (HackTricks AWS Red Team Expert)!
Outras maneiras de apoiar o HackTricks:
* Se você quiser ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Adquira o [**swag oficial PEASS & HackTricks**](https://peass.creator-spring.com)
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para os** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
[**RootedCON**](https://www.rootedcon.com/) é 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.
{% embed url="https://www.rootedcon.com/" %}
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](https://github.com/carlospolop/autoVolatility)
```bash
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
```bash
git clone https://github.com/volatilityfoundation/volatility3.git
cd volatility3
python3 setup.py install
python3 vol.py —h
```
#### volatilidade2
{% tabs %}
{% tab title="Método1" %}
```
Download the executable from https://www.volatilityfoundation.org/26
```
{% endtab %}
{% tab title="Método 2" %}
```bash
git clone https://github.com/volatilityfoundation/volatility.git
cd volatility
python setup.py install
```
{% endtab %}
{% endtabs %}
## Comandos do Volatility
Acesse a documentação oficial em [Referência de comandos do Volatility](https://github.com/volatilityfoundation/volatility/wiki/Command-Reference#kdbgscan)
### 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 de 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 possam 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 consiste em procurar 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 presente 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/](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:
* [https://downloads.volatilityfoundation.org/volatility3/symbols/windows.zip](https://downloads.volatilityfoundation.org/volatility3/symbols/windows.zip)
* [https://downloads.volatilityfoundation.org/volatility3/symbols/mac.zip](https://downloads.volatilityfoundation.org/volatility3/symbols/mac.zip)
* [https://downloads.volatilityfoundation.org/volatility3/symbols/linux.zip](https://downloads.volatilityfoundation.org/volatility3/symbols/linux.zip)
### Volatility2
#### Perfil Externo
Você pode obter a lista de perfis suportados fazendo:
```bash
./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:
```bash
./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](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:
```bash
./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**](https://www.andreafortuna.org/2017/06/25/volatility-my-own-cheatsheet-part-1-image-identification/): 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 faz uma varredura nas 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 de 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)
```bash
# GOOD
PsActiveProcessHead : 0xfffff800011977f0 (37 processes)
PsLoadedModuleList : 0xfffff8000119aae0 (116 modules)
```
```bash
# 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
```bash
#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](../../../windows-hardening/stealing-credentials/credentials-protections.md#cached-credentials) e [segredos lsa](../../../windows-hardening/authentication-credentials-uac-and-efs.md#lsa-secrets).
```bash
./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
```
{% endtab %}
{% tab title="vol2" %}Volatility Cheat Sheet
### Basic Volatility Commands
- **Image info:** `vol.py -f imageinfo`
- **Profile:** `vol.py -f --profile= imageinfo`
- **Process list:** `vol.py -f --profile= pslist`
- **Dump process:** `vol.py -f --profile= procdump -p -D `
- **File scan:** `vol.py -f --profile= filescan`
- **Malware scan:** `vol.py -f --profile= malscan`
- **Yara scan:** `vol.py -f --profile= yarascan --yara-rules=`
- **Registry hives:** `vol.py -f --profile= hivelist`
- **Dump registry hive:** `vol.py -f --profile= printkey -o `
- **Network connections:** `vol.py -f --profile= connections`
- **Command history:** `vol.py -f --profile= cmdscan`
- **User list:** `vol.py -f --profile= userassist`
- **API hooking:** `vol.py -f --profile= apihooks`
- **Driver modules:** `vol.py -f --profile= modscan`
- **Kernel drivers:** `vol.py -f --profile= kdbgscan`
- **SSDT:** `vol.py -f --profile= ssdt`
- **Crash dumps:** `vol.py -json -f --profile= dumpfiles --dump-dir=`
### Advanced Volatility Commands
- **Detecting rootkits:** `vol.py -f --profile= ldrmodules -p`
- **Detecting injected code:** `vol.py -f --profile= malfind`
- **Detecting hidden processes:** `vol.py -f --profile= psxview`
- **Detecting hidden drivers:** `vol.py -f --profile= ldrmodules`
- **Detecting hidden DLLs:** `vol.py -f --profile= ldrmodules -w`
- **Detecting API hooking:** `vol.py -f --profile= apihooks -s`
- **Detecting SSDT hooks:** `vol.py -f --profile= ssdt -s`
- **Detecting IRP hooks:** `vol.py -f --profile= irpfind`
- **Detecting fileless malware:** `vol.py -f --profile= fileless_malware`
- **Detecting process hollowing:** `vol.py -f --profile= hollowfind`
- **Detecting covert processes:** `vol.py -f --profile= psxview`
- **Detecting API inline hooking:** `vol.py -f --profile= apihooks -i`
- **Detecting driver IRP hooks:** `vol.py -f --profile= irpfind -s`
- **Detecting driver timers:** `vol.py -f --profile= timers`
- **Detecting driver callbacks:** `vol.py -f --profile= callbacks`
- **Detecting driver object types:** `vol.py -f --profile= driverirp`
- **Detecting driver object handles:** `vol.py -f --profile= driverirp -D`
- **Detecting driver object namespaces:** `vol.py -f --profile= driverirp -N`
- **Detecting driver object device objects:** `vol.py -f --profile= driverirp -D`
- **Detecting driver object driver objects:** `vol.py -f --profile= driverirp -D`
- **Detecting driver object file objects:** `vol.py -f --profile= driverirp -F`
- **Detecting driver object symbolic links:** `vol.py -f --profile= driverirp -S`
- **Detecting driver object key objects:** `vol.py -f --profile= driverirp -K`
- **Detecting driver object event objects:** `vol.py -f --profile= driverirp -E`
- **Detecting driver object mutant objects:** `vol.py -f --profile= driverirp -M`
- **Detecting driver object semaphore objects:** `vol.py -f --profile= driverirp -S`
- **Detecting driver object timer objects:** `vol.py -f --profile= driverirp -T`
- **Detecting driver object type objects:** `vol.py -f --profile= driverirp -O`
- **Detecting driver object process objects:** `vol.py -f --profile= driverirp -P`
- **Detecting driver object thread objects:** `vol.py -f --profile= driverirp -T`
- **Detecting driver object desktop objects:** `vol.py -f --profile= driverirp -D`
- **Detecting driver object section objects:** `vol.py -f --profile= driverirp -S`
- **Detecting driver object job objects:** `vol.py -f --profile= driverirp -J`
- **Detecting driver object session objects:** `vol.py -f --profile= driverirp -S`
- **Detecting driver object wmi objects:** `vol.py -f --profile= driverirp -W`
- **Detecting driver object filter objects:** `vol.py -f --profile= driverirp -F`
- **Detecting driver object device node objects:** `vol.py -f --profile= driverirp -D`
- **Detecting driver object power notify objects:** `vol.py -f --profile= driverirp -P`
- **Detecting driver object power request objects:** `vol.py -f --profile= driverirp -R`
- **Detecting driver object i/o completion objects:** `vol.py -f --profile= driverirp -I`
- **Detecting driver object i/o queue objects:** `vol.py -f --profile= driverirp -Q`
- **Detecting driver object i/o control objects:** `vol.py -f --profile= driverirp -C`
- **Detecting driver object i/o device objects:** `vol.py -f --profile= driverirp -D`
- **Detecting driver object i/o target objects:** `vol.py -f --profile= driverirp -T`
- **Detecting driver object i/o request objects:** `vol.py -f --profile= driverirp -R`
- **Detecting driver object i/o completion reserve objects:** `vol.py -f --profile= driverirp -C`
- **Detecting driver object i/o queue reserve objects:** `vol.py -f --profile= driverirp -Q`
- **Detecting driver object i/o control reserve objects:** `vol.py -f --profile= driverirp -C`
- **Detecting driver object i/o device reserve objects:** `vol.py -f --profile= driverirp -D`
- **Detecting driver object i/o target reserve objects:** `vol.py -f --profile= driverirp -T`
- **Detecting driver object i/o request reserve objects:** `vol.py -f --profile= driverirp -R`
- **Detecting driver object i/o completion reserve objects:** `vol.py -f --profile= driverirp -C`
- **Detecting driver object i/o queue reserve objects:** `vol.py -f --profile= driverirp -Q`
- **Detecting driver object i/o control reserve objects:** `vol.py -f --profile= driverirp -C`
- **Detecting driver object i/o device reserve objects:** `vol.py -f --profile= driverirp -D`
- **Detecting driver object i/o target reserve objects:** `vol.py -f --profile= driverirp -T`
- **Detecting driver object i/o request reserve objects:** `vol.py -f --profile= driverirp -R`
- **Detecting driver object i/o completion reserve objects:** `vol.py -f --profile= driverirp -C`
- **Detecting driver object i/o queue reserve objects:** `vol.py -f --profile= driverirp -Q`
- **Detecting driver object i/o control reserve objects:** `vol.py -f --profile= driverirp -C`
- **Detecting driver object i/o device reserve objects:** `vol.py -f --profile= driverirp -D`
- **Detecting driver object i/o target reserve objects:** `vol.py -f --profile= driverirp -T`
- **Detecting driver object i/o request reserve objects:** `vol.py -f --profile= driverirp -R`
- **Detecting driver object i/o completion reserve objects:** `vol.py -f --profile= driverirp -C`
- **Detecting driver object i/o queue reserve objects:** `vol.py -f --profile= driverirp -Q`
- **Detecting driver object i/o control reserve objects:** `vol.py -f --profile= driverirp -C`
- **Detecting driver object i/o device reserve objects:** `vol.py -f --profile= driverirp -D`
- **Detecting driver object i/o target reserve objects:** `vol.py -f --profile= driverirp -T`
- **Detecting driver object i/o request reserve objects:** `vol.py -f --profile= driverirp -R`
- **Detecting driver object i/o completion reserve objects:** `vol.py -f --profile= driverirp -C`
- **Detecting driver object i/o queue reserve objects:** `vol.py -f --profile= driverirp -Q`
- **Detecting driver object i/o control reserve objects:** `vol.py -f --profile= driverirp -C`
- **Detecting driver object i/o device reserve objects:** `vol.py -f --profile= driverirp -D`
- **Detecting driver object i/o target reserve objects:** `vol.py -f --profile= driverirp -T`
- **Detecting driver object i/o request reserve objects:** `vol.py -f --profile= driverirp -R`
- **Detecting driver object i/o completion reserve objects:** `vol.py -f --profile= driverirp -C`
- **Detecting driver object i/o queue reserve objects:** `vol.py -f --profile= driverirp -Q`
- **Detecting driver object i/o control reserve objects:** `vol.py -f --profile= driverirp -C`
- **Detecting driver object i/o device reserve objects:** `vol.py -f --profile= driverirp -D`
- **Detecting driver object i/o target reserve objects:** `vol.py -f --profile= driverirp -T`
- **Detecting driver object i/o request reserve objects:** `vol.py -f --profile= driverirp -R`
- **Detecting driver object i/o completion reserve objects:** `vol.py -f --profile= driverirp -C`
- **Detecting driver object i/o queue reserve objects:** `vol.py -f --profile= driverirp -Q`
- **Detecting driver object i/o control reserve objects:** `vol.py -f --profile= driverirp -C`
- **Detecting driver object i/o device reserve objects:** `vol.py -f --profile= driverirp -D`
- **Detecting driver object i/o target reserve objects:** `vol.py -f --profile= driverirp -T`
- **Detecting driver object i/o request reserve objects:** `vol.py -f --profile= driverirp -R`
- **Detecting driver object i/o completion reserve objects:** `vol.py -f --profile= driverirp -C`
- **Detecting driver object i/o queue reserve objects:** `vol.py -f --profile= driverirp -Q`
- **Detecting driver object i/o control reserve objects:** `vol.py -f --profile= driverirp -C`
- **Detecting driver object i/o device reserve objects:** `vol.py -f --profile= driverirp -D`
- **Detecting driver object i/o target reserve objects:** `vol.py -f --profile= driverirp -T`
- **Detecting driver object i/o request reserve objects:** `vol.py -f --profile= driverirp -R`
- **Detecting driver object i/o completion reserve objects:** `vol.py -f --profile= driverirp -C`
- **Detecting driver object i/o queue reserve objects:** `vol.py -f --profile= driverirp -Q`
- **Detecting driver object i/o control reserve objects:** `vol.py -f --profile= driverirp -C`
- **Detecting driver object i/o device reserve objects:** `vol.py -f --profile= driverirp -D`
- **Detecting driver object i/o target reserve objects:** `vol.py -f --profile= driverirp -T`
- **Detecting driver object i/o request reserve objects:** `vol.py -f --profile= driverirp -R`
- **Detecting driver object i/o completion reserve objects:** `vol.py -f --profile= driverirp -C`
- **Detecting driver object i/o queue reserve objects:** `vol.py -f --profile= driverirp -Q`
- **Detecting driver object i/o control reserve objects:** `vol.py -f --profile= driverirp -C`
- **Detecting driver object i/o device reserve objects:** `vol.py -f --profile= driverirp -D`
- **Detecting driver object i/o target reserve objects:** `vol.py -f --profile= driverirp -T`
- **Detecting driver object i/o request reserve objects:** `vol.py -f --profile= driverirp -R`
- **Detecting driver object i/o completion reserve objects:** `vol.py -f --profile= driverirp -C`
- **Detecting driver object i/o queue reserve objects:** `vol.py -f --profile= driverirp -Q`
- **Detecting driver object i/o control reserve objects:** `vol.py -f --profile= driverirp -C`
- **Detecting driver object i/o device reserve objects:** `vol.py -f