# Windows

***

## 📜 Histórico e Evolução do Windows

A Microsoft Corporation, fundada por Bill Gates e Paul Allen em 1975, iniciou sua trajetória no mundo dos sistemas operacionais com o **MS-DOS** (Microsoft Disk Operating System) em 1981. A evolução até o Windows 11 é marcada por avanços significativos em segurança, interface e arquitetura.

| **Versão**      | **Ano**   | **Principais Características**                              |
| --------------- | --------- | ----------------------------------------------------------- |
| Windows 1.0     | 1985      | Primeira GUI da Microsoft; frontend para MS-DOS.            |
| Windows 3.0/3.1 | 1990/1992 | Program Manager, File Manager, suporte a multimídia.        |
| Windows NT 3.0  | 1993      | Primeira versão 32 bits; não dependia do MS-DOS.            |
| Windows 95      | 1995      | Botão Start, barra de tarefas, plug-and-play.               |
| Windows 2000    | 2000      | NTFS 3.0, Active Directory, EFS (Encrypted File System).    |
| Windows XP      | 2001      | Nova interface, sistema de ativação, rápido boot-up.        |
| Windows Vista   | 2007      | Windows Search, Aero, Shadow Copy; exigia hardware potente. |
| Windows 7       | 2009      | Suporte a discos virtuais, melhor performance.              |
| Windows 8       | 2012      | Integração com nuvem, boot via UEFI, remoção do Menu Start. |
| Windows 10      | 2015      | Retorno do Menu Start, Microsoft Edge, Cortana.             |
| Windows 11      | 2021      | Inovações visuais, snap groups, integração com Android.     |

***

## 🏗️ Arquitetura do Windows

### 2.1 Modos de Operação: Ring 0 e Ring 3

A arquitetura de processadores Intel x86/x64 divide os níveis de privilégio em **rings**, garantindo proteção entre o sistema operacional e as aplicações.

| **Nível**  | **Nome**    | **Descrição**                                                                                                        |
| ---------- | ----------- | -------------------------------------------------------------------------------------------------------------------- |
| **Ring 0** | Kernel Mode | Acesso direto à memória, hardware e CPU. Executa o núcleo do sistema operacional (ntoskrnl.exe) e drivers.           |
| **Ring 3** | User Mode   | Acesso restrito a recursos. Aplicações solicitam acesso via APIs (Win32, ntdll.dll) que fazem a ponte para o kernel. |

**Exemplo de chamada de sistema:**

```
Aplicação → CreateFile → kernel32.dll → ntdll.dll → syscall → ntoskrnl.exe → driver de sistema de arquivos
```

### 2.2 Componentes Principais

| **Componente**             | **Função**                                                                  |
| -------------------------- | --------------------------------------------------------------------------- |
| **ntoskrnl.exe**           | Núcleo do sistema; gerencia processos, memória, drivers e E/S.              |
| **hal.dll**                | Camada de abstração de hardware; isola o kernel das diferenças de hardware. |
| **Win32k.sys**             | Subsistema gráfico; gerencia janelas, menus e interface.                    |
| **User32.dll / GDI32.dll** | APIs do modo usuário para interface gráfica.                                |
| **ntdll.dll**              | Ponte entre user mode e kernel mode; exporta funções nativas (Nt\*).        |
| **Registry**               | Banco de dados central de configurações.                                    |
| **Sistema de Arquivos**    | NTFS, FAT32, exFAT – gerenciam o armazenamento em disco.                    |

***

## 💾 Sistema de Arquivos do Windows

O sistema de arquivos é responsável por organizar, armazenar e recuperar dados em dispositivos de armazenamento. O Windows suporta múltiplos sistemas de arquivos, cada um com características específicas.

### 3.1 Visão Geral e Histórico

| **Sistema de Arquivos** | **Introdução**          | **Capacidade Máxima de Volume** | **Características**                                   |
| ----------------------- | ----------------------- | ------------------------------- | ----------------------------------------------------- |
| **FAT12**               | MS-DOS                  | 16 MB                           | Primeiro sistema de arquivos da Microsoft.            |
| **FAT16**               | MS-DOS 3.0              | 2 GB                            | Suporte a discos rígidos.                             |
| **FAT32**               | Windows 95 OSR2         | 2 TB                            | Suporte a clusters menores, mais eficiente.           |
| **NTFS**                | Windows NT 3.1          | 256 TB                          | Journaling, permissões, criptografia, compressão.     |
| **exFAT**               | Windows Embedded CE 6.0 | 128 PB                          | Otimizado para dispositivos flash e grandes arquivos. |
| **ReFS**                | Windows Server 2012     | 35 PB                           | Resiliência, integridade de dados, escalabilidade.    |

### 3.2 FAT32 – File Allocation Table 32

O FAT32 é um sistema de arquivos simples e amplamente compatível, utilizado em dispositivos removíveis.

**Características:**

* **Tabela de Alocação (FAT):** mapeia clusters usados/livres.
* **Diretório Raiz:** localizado em área fixa, com número limitado de entradas.
* **Sem journaling:** vulnerável a corrupção em caso de queda de energia.
* **Limitações:** arquivos individuais limitados a 4 GB.

**Estrutura:**

```
[Setor de Boot] → [FAT1] → [FAT2 (cópia)] → [Diretório Raiz] → [Área de Dados (clusters)]
```

### 3.3 NTFS – New Technology File System (Sistema de Arquivos Principal)

O NTFS é o sistema de arquivos padrão do Windows desde o NT 3.1, oferecendo recursos avançados de segurança, recuperação e escalabilidade.

#### 3.3.1 Estrutura do NTFS

```
[Setor de Boot] → [MFT (Master File Table)] → [Área de Dados]
```

| **Componente**              | **Descrição**                                                                    |
| --------------------------- | -------------------------------------------------------------------------------- |
| **Boot Sector**             | Localizado no primeiro setor da partição; contém o código de inicialização.      |
| **MFT (Master File Table)** | Banco de dados central que armazena metadados de todos os arquivos e diretórios. |
| **MFT Mirror**              | Cópia dos primeiros registros da MFT para recuperação.                           |
| **Log File ($LogFile)**     | Registro de transações (journaling) para recuperação após falhas.                |
| **Bitmap ($Bitmap)**        | Mapeamento de clusters livres e usados.                                          |

#### 3.3.2 Master File Table (MFT)

Cada arquivo ou diretório é representado por um **registro na MFT**, normalmente de 1 KB. Os primeiros 16 registros são reservados para metadados do sistema:

| **Registro** | **Nome** | **Função**                                     |
| ------------ | -------- | ---------------------------------------------- |
| 0            | $MFT     | Própria MFT                                    |
| 1            | $MFTMirr | Cópia dos primeiros 4 registros                |
| 2            | $LogFile | Journaling                                     |
| 3            | $Volume  | Nome e versão do volume                        |
| 4            | $AttrDef | Definição de atributos                         |
| 5            | $Root    | Diretório raiz                                 |
| 6            | $Bitmap  | Mapeamento de clusters                         |
| 7            | $Boot    | Setor de boot                                  |
| 8            | $BadClus | Clusters defeituosos                           |
| 9            | $Secure  | Segurança (ACLs)                               |
| 10           | $UpCase  | Tabela de caracteres maiúsculos                |
| 11           | $Extend  | Diretório de extensões (Quota, Reparse Points) |

#### 3.3.3 Atributos de Arquivo no NTFS

Cada registro MFT contém uma série de atributos que descrevem o arquivo:

| **Atributo**               | **Tipo** | **Descrição**                                              |
| -------------------------- | -------- | ---------------------------------------------------------- |
| **$STANDARD\_INFORMATION** | 0x10     | Datas (criação, modificação, acesso), permissões básicas.  |
| **$ATTRIBUTE\_LIST**       | 0x20     | Lista de atributos quando o arquivo é fragmentado.         |
| **$FILE\_NAME**            | 0x30     | Nome do arquivo (até 255 caracteres Unicode).              |
| **$OBJECT\_ID**            | 0x40     | Identificador único (GUID).                                |
| **$SECURITY\_DESCRIPTOR**  | 0x50     | Permissões de segurança (ACLs).                            |
| **$VOLUME\_NAME**          | 0x60     | Nome do volume.                                            |
| **$VOLUME\_INFORMATION**   | 0x70     | Informações do volume.                                     |
| **$DATA**                  | 0x80     | Conteúdo do arquivo (pode ser residente ou não residente). |
| **$INDEX\_ROOT**           | 0x90     | Raiz do índice de diretórios.                              |
| **$INDEX\_ALLOCATION**     | 0xA0     | Alocação de índices para diretórios grandes.               |
| **$BITMAP**                | 0xB0     | Mapeamento de índices.                                     |

#### 3.3.4 Arquivos Residentes vs. Não Residentes

| **Tipo**          | **Condição**                                     | **Armazenamento**                                                                                                      |
| ----------------- | ------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------- |
| **Residente**     | Conteúdo ≤ 700-900 bytes (depende dos atributos) | Dentro do próprio registro MFT.                                                                                        |
| **Não Residente** | Conteúdo > limite                                | Dados armazenados em clusters externos; MFT aponta para VCN (Virtual Cluster Numbers) e LCN (Logical Cluster Numbers). |

#### 3.3.5 Timestamps no NTFS

O NTFS utiliza **64-bit timestamps** contados em intervalos de 100 nanosegundos a partir de **1º de janeiro de 1601**.

```powershell
# Converter timestamp NTFS para data legível em PowerShell
$ntfsTime = 131500000000000000
$epoch = Get-Date "1/1/1601"
$date = $epoch.AddSeconds($ntfsTime / 10000000)
```

### 3.4 exFAT – Extended File Allocation Table

Desenvolvido para dispositivos flash e cartões SD de alta capacidade.

**Características:**

* **Tamanho de arquivo:** até 16 EB (teórico).
* **Cluster de até 32 MB** para grandes volumes.
* **Sem journaling** – menor desgaste em dispositivos flash.
* **Compatibilidade:** Windows, macOS, Linux, câmeras, smartphones.

### 3.5 ReFS – Resilient File System

Projetado para servidores e armazenamento em nuvem, com foco em integridade e escalabilidade.

**Características:**

* **Integridade de dados:** checksums em metadados e dados.
* **Resiliência:** recuperação automática de corrupção (com Storage Spaces).
* **Escalabilidade:** volumes de até 35 PB.
* **Limitação:** não pode ser usado como volume de boot (exceto no Windows Server 2022+).

### 3.6 Estrutura de Armazenamento: Clusters, Setores e Blocos

| **Conceito** | **Descrição**                                                                                                         |
| ------------ | --------------------------------------------------------------------------------------------------------------------- |
| **Setor**    | Unidade mínima de armazenamento físico (tradicionalmente 512 bytes, discos modernos 4096 bytes).                      |
| **Cluster**  | Agrupamento de setores; unidade mínima de alocação lógica. Tamanho varia conforme o volume (4 KB por padrão em NTFS). |
| **Bloco**    | Termo genérico para unidade de alocação; sinônimo de cluster no contexto de sistemas de arquivos.                     |

**Exemplo de alocação:**

```
Arquivo de 5.200 bytes em volume com cluster de 4.096 bytes:
- 1º cluster: 4.096 bytes (espaço alocado)
- 2º cluster: 1.104 bytes de dados + 2.992 bytes de slack space (espaço não utilizado)
```

### 3.7 Metadados e Registros MFT

A MFT é o coração do NTFS. A ferramenta `mftdump` (do The Sleuth Kit) permite visualizar registros MFT:

```bash
# Listar registros MFT de uma imagem forense
tsk_mftdump -f ntfs /caminho/para/imagem.dd > mft.txt
```

**Exemplo de saída MFT (simplificada):**

```
MFT Entry 100:
File name: relatorio.docx
Standard Info: Created: 2025-02-15 10:30:22, Modified: 2025-02-15 14:45:10
Data runs: VCN 0-10, LCN 2048-2058 (size: 45056 bytes)
```

### 3.8 Formatação e Alocação de Espaço

**Formatação Lógica:** Cria as estruturas do sistema de arquivos (MFT, FAT, diretório raiz).

**Alocação de Espaço:**

* **Alocação contígua:** arquivos ocupam clusters sequenciais (melhor performance).
* **Fragmentação:** arquivos espalhados por clusters não contíguos (impacta performance).

**Exclusão de Arquivos:**

* No NTFS, a exclusão apenas marca os registros MFT como "disponíveis" e atualiza o bitmap de clusters livres.
* Os dados permanecem até serem sobrescritos – base para recuperação forense.

***

## 🔍 Artefatos Forenses do Windows

### 4.1 Registry – O Banco de Dados do Windows

O Registry é um banco de dados hierárquico que armazena configurações do sistema, hardware, software e perfis de usuário.

#### 4.1.1 Hives e Localização

| **Hive**                      | **Arquivo**            | **Localização**                |
| ----------------------------- | ---------------------- | ------------------------------ |
| HKEY\_LOCAL\_MACHINE\SAM      | SAM, SAM.LOG           | `%SystemRoot%\System32\config` |
| HKEY\_LOCAL\_MACHINE\SECURITY | SECURITY, SECURITY.LOG | `%SystemRoot%\System32\config` |
| HKEY\_LOCAL\_MACHINE\SOFTWARE | SOFTWARE, SOFTWARE.LOG | `%SystemRoot%\System32\config` |
| HKEY\_LOCAL\_MACHINE\SYSTEM   | SYSTEM, SYSTEM.LOG     | `%SystemRoot%\System32\config` |
| HKEY\_USERS.DEFAULT           | DEFAULT, DEFAULT.LOG   | `%SystemRoot%\System32\config` |
| HKEY\_CURRENT\_USER           | NTUSER.DAT             | `%UserProfile%\NTUSER.DAT`     |

#### 4.1.2 Chaves Forenses de Interesse

| **Localização**                                                                    | **Informação**                                      |
| ---------------------------------------------------------------------------------- | --------------------------------------------------- |
| `HKLM\SYSTEM\Select`                                                               | Última configuração válida (Current, LastKnownGood) |
| `HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation`                        | Fuso horário e ajustes de horário de verão          |
| `HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall`                         | Aplicativos instalados                              |
| `HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall`             | Aplicativos 32 bits em sistema 64 bits              |
| `HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist`               | Últimos aplicativos executados (ROT13)              |
| `HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs`               | Documentos recentes (MRU)                           |
| `HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\RunMRU`                   | Comandos executados via "Executar"                  |
| `HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32\OpenSavePidlMRU` | Arquivos abertos/salvos por aplicativo              |
| `HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces`               | Configurações de rede (IP, DHCP)                    |

#### 4.1.3 Timestamps no Registry

| **Formato**               | **Descrição**                                                  |
| ------------------------- | -------------------------------------------------------------- |
| **Windows 64-bit**        | Intervalos de 100 ns desde 01/01/1601. Usado em LastWriteTime. |
| **Windows/MS-DOS 32-bit** | 16 bits para data, 16 bits para hora.                          |
| **Unix 32-bit**           | Segundos desde 01/01/1970 (usado em algumas chaves).           |

### 4.2 Windows Search Index

O Windows Indexing Service armazena dados de pesquisa em arquivos `.EDB` (Extensible Storage Engine Database).

| **Versão**        | **Localização**                                              | **Arquivo**   |
| ----------------- | ------------------------------------------------------------ | ------------- |
| Windows 7/8/10/11 | `C:\ProgramData\Microsoft\Search\Data\Applications\Windows\` | `Windows.edb` |

**Comandos úteis:**

```powershell
# Verificar serviço de indexação
Get-Service WSearch

# Forçar reconstrução do índice (administrador)
Stop-Service WSearch
Remove-Item "C:\ProgramData\Microsoft\Search\Data\Applications\Windows\Windows.edb" -Force
Start-Service WSearch
```

### 4.3 Thumbs.db e Thumbcache

O Windows gera miniaturas de imagens para visualização rápida.

| **Versão** | **Arquivo**                                                                       | **Localização**                                           |
| ---------- | --------------------------------------------------------------------------------- | --------------------------------------------------------- |
| Windows XP | `thumbs.db`                                                                       | Mesmo diretório das imagens (oculto)                      |
| Windows 7+ | `thumbcache_32.db`, `thumbcache_96.db`, `thumbcache_256.db`, `thumbcache_1024.db` | `%UserProfile%\AppData\Local\Microsoft\Windows\Explorer\` |

### 4.4 Recycle Bin (Lixeira)

| **Versão**     | **Estrutura**                                                                                                  |
| -------------- | -------------------------------------------------------------------------------------------------------------- |
| Windows XP     | `C:\RECYCLER\SID\` – arquivos renomeados para `D[letra]-[número].[extensão]`                                   |
| Windows Vista+ | `C:\$Recycle.Bin\SID\` – arquivos: `$R[aleatório].[extensão]` (dados) e `$I[aleatório].[extensão]` (metadados) |

### 4.5 Prefetch e Superfetch

Localização: `%SystemRoot%\Prefetch\`

**Arquivos:** `.pf` (Prefetch) e `.db` (Superfetch)

**Informações:** nome do executável, data/hora da última execução, número de execuções, DLLs carregadas.

```powershell
# Listar arquivos Prefetch
Get-ChildItem C:\Windows\Prefetch\*.pf | Select-Object Name, LastWriteTime
```

### 4.6 Arquivos de Spool de Impressão

Localização: `%SystemRoot%\System32\spool\PRINTERS\`

| **Extensão** | **Conteúdo**                                            |
| ------------ | ------------------------------------------------------- |
| `.SHD`       | Metadados: nome do usuário, impressora, nome do arquivo |
| `.SPL`       | Dados de impressão (RAW, EMF, XPS)                      |

### 4.7 Arquivos Link/Shortcut (.LNK)

Os arquivos de atalho armazenam informações valiosas sobre arquivos acessados.

**Estrutura:** contém caminho do arquivo original, número de série do volume, datas de criação/modificação/acesso, tamanho, nome do host.

```powershell
# Extrair informações de atalhos (PowerShell)
$shell = New-Object -ComObject WScript.Shell
$shortcut = $shell.CreateShortcut("C:\Users\user\Desktop\arquivo.lnk")
$shortcut.TargetPath
$shortcut.WorkingDirectory
```

### 4.8 Jump Lists

Localização: `%UserProfile%\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations\`

* Arquivos `.automaticDestinations-ms`
* Armazenam itens recentemente acessados por aplicativos (atalhos na barra de tarefas)

### 4.9 Shellbags

Registro do Windows que mantém preferências de visualização de pastas e pode indicar pastas acessadas mesmo após exclusão.

**Localização Registry:**

* `HKCU\Software\Microsoft\Windows\Shell\BagMRU`
* `HKCU\Software\Microsoft\Windows\Shell\Bags`

### 4.10 User Assist

Registro que armazena informações sobre execução de aplicativos via interface gráfica.

**Localização:** `HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{GUID}\Count`

**Dados:** valores em ROT13 (cifra de César); cada entrada contém contagem de execuções e data/hora da última execução.

### 4.11 MRU Lists (Most Recently Used)

| **Localização**                              | **Conteúdo**                         |
| -------------------------------------------- | ------------------------------------ |
| `HKCU\...\Explorer\RecentDocs`               | Arquivos acessados recentemente      |
| `HKCU\...\Explorer\RunMRU`                   | Comandos digitados no "Executar"     |
| `HKCU\...\Explorer\ComDlg32\OpenSavePidlMRU` | Arquivos abertos/salvos por extensão |

### 4.12 Event Logs (Evtx/Evt)

| **Log**     | **Localização (Windows Vista+)**                     | **Eventos de Interesse**                             |
| ----------- | ---------------------------------------------------- | ---------------------------------------------------- |
| Application | `%SystemRoot%\System32\Winevt\Logs\Application.evtx` | Erros de aplicativos                                 |
| System      | `%SystemRoot%\System32\Winevt\Logs\System.evtx`      | Eventos do SO e serviços                             |
| Security    | `%SystemRoot%\System32\Winevt\Logs\Security.evtx`    | Logons, criação de usuários, alterações de políticas |

**Eventos de Segurança (IDs):**

| **Evento ID** | **Descrição**                    |
| ------------- | -------------------------------- |
| 4624          | Logon bem-sucedido               |
| 4625          | Logon com falha                  |
| 4720          | Criação de usuário               |
| 4722          | Usuário habilitado               |
| 4726          | Usuário removido                 |
| 4732          | Membro adicionado a grupo local  |
| 4768          | Ticket Kerberos (TGT) solicitado |
| 4769          | Ticket Kerberos (TGS) solicitado |

### 4.13 Arquivos de E-mail Locais

| **Aplicação**     | **Arquivos**    | **Localização**                          |
| ----------------- | --------------- | ---------------------------------------- |
| Microsoft Outlook | `.pst`, `.ost`  | `%UserProfile%\Documents\Outlook Files\` |
| Thunderbird       | `.mbox`, `.msf` | `%AppData%\Thunderbird\Profiles\`        |

***

## 🌐 Navegadores e Atividades de Internet

### 5.1 Internet Explorer e Edge

**Evolução dos artefatos:**

| **Versão** | **Histórico**    | **Cache**                              | **Cookies**   |
| ---------- | ---------------- | -------------------------------------- | ------------- |
| IE4-IE9    | `Index.dat`      | `Temporary Internet Files\Content.IE5` | `Cookies`     |
| IE10-IE11  | `WebCacheV*.dat` | `INetCache\IE`                         | `INetCookies` |
| Edge       | `WebCacheV*.dat` | `INetCache\IE`                         | `INetCookies` |

**Chaves Registry de interesse:**

* `HKCU\Software\Microsoft\Internet Explorer\TypedURLs` (últimos 25-50 URLs digitadas)
* `HKCU\Software\Microsoft\Internet Explorer\TypedURLsTime` (timestamp das URLs digitadas)

### 5.2 Mozilla Firefox

**Localização dos perfis:** `%AppData%\Mozilla\Firefox\Profiles\*.default\`

| **Arquivo (SQLite)** | **Conteúdo**                    |
| -------------------- | ------------------------------- |
| `places.sqlite`      | Histórico, favoritos, downloads |
| `formhistory.sqlite` | Dados de formulários            |
| `cookies.sqlite`     | Cookies                         |
| `logins.json`        | Credenciais (senhas)            |

### 5.3 Google Chrome

**Localização:** `%LocalAppData%\Google\Chrome\User Data\Default\`

| **Arquivo**   | **Formato** | **Conteúdo**                 |
| ------------- | ----------- | ---------------------------- |
| `History`     | SQLite      | Histórico de navegação       |
| `Bookmarks`   | JSON        | Favoritos                    |
| `Cookies`     | SQLite      | Cookies                      |
| `Login Data`  | SQLite      | Credenciais armazenadas      |
| `Preferences` | JSON        | Configurações e autocomplete |

***

## 🧠 Análise de Memória Volátil (Live Forensics)

### 6.1 Metodologia e Ferramentas

A análise de memória captura dados voláteis que podem ser perdidos após o desligamento do sistema.

**Ferramentas de aquisição:**

* **DumpIt** – dump físico da memória RAM
* **FTK Imager** – aquisição de memória e discos
* **WinPmem / LinPmem** – aquisição multiplataforma
* **SnapShot de VM** – para máquinas virtuais

### 6.2 Volatility Framework

O Volatility é a principal ferramenta para análise de memória.

**Identificação de profile:**

```bash
vol.py -f memory.dmp imageinfo
vol.py -f memory.dmp kdbgscan
```

**Comandos essenciais:**

| **Comando** | **Função**                                               |
| ----------- | -------------------------------------------------------- |
| `pslist`    | Lista processos ativos                                   |
| `psscan`    | Escaneia por processos (incluindo terminados)            |
| `pstree`    | Hierarquia de processos                                  |
| `psxview`   | Compara múltiplas fontes para detectar processos ocultos |
| `netscan`   | Conexões de rede (Windows Vista+)                        |
| `connscan`  | Conexões TCP (Windows XP/2003)                           |
| `dlllist`   | DLLs carregadas por processo                             |
| `malfind`   | Detecta injeção de código em processos                   |
| `procdump`  | Extrai executável da memória                             |
| `memdump`   | Extrai páginas de memória de um processo                 |
| `hashdump`  | Extrai hashes de senhas (SAM)                            |
| `autoruns`  | Identifica persistência                                  |
| `apihooks`  | Detecta hooks de API                                     |
| `yarascan`  | Busca padrões YARA na memória                            |

### 6.3 Processos, Conexões e Handles

**Exemplo de detecção de processo oculto:**

```bash
# Comparar listagens para detectar rootkits
vol.py -f memory.dmp pslist > pslist.txt
vol.py -f memory.dmp psscan > psscan.txt
vol.py -f memory.dmp psxview --apply-rules
```

**Exemplo de análise de conexões:**

```bash
# Identificar conexões suspeitas
vol.py -f memory.dmp netscan | grep -E "ESTABLISHED|LISTENING"
```

### 6.4 Injeção de Código e Rootkits

O comando `malfind` identifica áreas de memória com características suspeitas (executável, sem correspondência em disco).

```bash
# Extrair regiões injetadas
vol.py -f memory.dmp malfind --dump-dir=./dumps
```

***

## 🦠 Análise de Malware e Técnicas de Ofuscação

### 7.1 Tipos de Malware

| **Tipo**                     | **Descrição**                                    |
| ---------------------------- | ------------------------------------------------ |
| **Vírus**                    | Infecta arquivos hospedeiros (.exe, .com).       |
| **Worm**                     | Auto-replicável via rede.                        |
| **Trojan**                   | Disfarçado como software legítimo.               |
| **Ransomware**               | Criptografa dados e exige resgate.               |
| **Keylogger**                | Captura teclas digitadas.                        |
| **Spyware**                  | Coleta informações do usuário.                   |
| **Rootkit**                  | Oculta atividades maliciosas (Ring 3 ou Ring 0). |
| **Downloader/Dropper**       | Baixa ou instala outros malwares.                |
| **RAT (Remote Access Tool)** | Permite controle remoto do sistema.              |

### 7.2 Metodologia de Análise

```mermaid
graph LR
    A[Análise Preliminar] --> B[Análise Automatizada]
    B --> C[Análise Estática]
    C --> D[Análise de Comportamento]
    D --> E[Análise de Código]
    E --> F[Relatório e IOCs]
```

**Análise Preliminar:**

* Hash (MD5, SHA-1, SHA-256)
* Busca OSINT (VirusTotal, Hybrid-Analysis)
* Identificação de packer (Detect It Easy, ExeinfoPE)

**Análise Estática:**

* Strings (Sysinternals Strings, pestr)
* Entropia (Shannon)
* Análise de seções PE
* Imphash (import hash)

**Análise de Comportamento:**

* Monitoramento de processos (Process Monitor, Process Hacker)
* Monitoramento de rede (Wireshark, FakeNet-NG)
* Monitoramento de registro (RegShot)
* Persistência (Autoruns)

**Análise de Código:**

* Disassembler (IDA Pro, Ghidra)
* Debugger (x64dbg, WinDbg)
* Decompiladores (Ghidra, IDA Pro com plugins)

### 7.3 Injeção de Código em Memória

| **Técnica**                  | **Descrição**                                        |
| ---------------------------- | ---------------------------------------------------- |
| **DLL Injection**            | Carrega DLL em processo remoto via `LoadLibrary`     |
| **Reflective DLL Injection** | Mapeia DLL manualmente sem chamar `LoadLibrary`      |
| **Process Hollowing**        | Cria processo suspenso, substitui código por malware |
| **PE Injection**             | Injeta código executável em processo existente       |
| **APC Injection**            | Usa Async Procedure Calls para executar código       |

### 7.4 Anti-Debug e Anti-VM

| **Técnica**                    | **Descrição**                                           |
| ------------------------------ | ------------------------------------------------------- |
| **IsDebuggerPresent**          | Verifica PEB BeingDebugged flag                         |
| **NtQueryInformationProcess**  | Consulta ProcessDebugPort, ProcessDebugFlags            |
| **CheckRemoteDebuggerPresent** | Verifica debugger em outro processo                     |
| **NtSetInformationThread**     | Esconde thread do debugger                              |
| **Timing Attacks (RDTSC)**     | Detecta diferenças de tempo causadas por debugger       |
| **VM Detection**               | CPUID, registradores específicos, dispositivos virtuais |
| **Breakpoint Scanning**        | Verifica opcode 0xCC (INT 3) em código                  |

### 7.5 Packing e Unpacking

**Packers** comprimem/criptografam o código original, executando uma rotina de descompactação (stub) antes de transferir controle ao OEP (Original Entry Point).

| **Técnica**       | **Descrição**                              |
| ----------------- | ------------------------------------------ |
| **Oligomorfismo** | Pequenas variações no stub                 |
| **Polimorfismo**  | Gera stubs diferentes a cada infecção      |
| **Metamorfismo**  | Modifica o próprio código sem criptografia |

**Identificação do OEP:**

* Breakpoint em `pushad` → esperar por `popad`
* Breakpoint em `VirtualProtect` (alterações de permissão)
* Hardware breakpoint em ESP
* Tail Jump (JMP, CALL para área de memória recém-descompactada)

**Ferramentas de Unpacking:**

* Scylla (x64dbg plugin)
* OllyDumpEx
* ImpREC (Import Reconstruction)

***

## 📚 Referências e Ferramentas

### Documentação Oficial

* [Microsoft Docs – Windows File Systems](https://learn.microsoft.com/en-us/windows/win32/fileio/file-systems)
* [Microsoft Docs – NTFS Overview](https://learn.microsoft.com/en-us/windows-server/storage/file-server/ntfs-overview)

### Forense Digital

* **The Sleuth Kit** – <https://www.sleuthkit.org>
* **Autopsy** – <https://www.autopsy.com>
* **IPED** – <https://github.com/sepinf-inc/IPED>
* **Volatility Framework** – <https://www.volatilityfoundation.org>

### Análise de Malware

* **IDA Pro** – <https://hex-rays.com/ida-pro>
* **x64dbg** – <https://x64dbg.com>
* **Ghidra** – <https://ghidra-sre.org>
* **Detect It Easy** – <https://github.com/horsicq/Die>
* **Capa** – <https://github.com/mandiant/capa>

### Repositórios e Threat Intelligence

* **VirusTotal** – <https://www.virustotal.com>
* **MalwareBazaar** – <https://bazaar.abuse.ch>
* **VX Underground** – <https://vx-underground.org>
* **YARA Rules** – <https://github.com/Yara-Rules/rules>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://0xmorte.gitbook.io/bibliadopentestbr/conceitos/ambientes/windows.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
