<summary><strong>Aprenda hacking AWS do zero ao herói com</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Se você deseja ver sua **empresa anunciada no HackTricks** ou **baixar o HackTricks em PDF** Confira 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 o** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repositórios do github.
</details>
## Partições
Um disco rígido ou um **disco SSD pode conter diferentes partições** com o objetivo de separar fisicamente os dados.\
A **unidade mínima** de um disco é o **setor** (normalmente composto por 512B). Portanto, o tamanho de cada partição precisa ser um múltiplo desse tamanho.
### MBR (Master Boot Record)
É alocado no **primeiro setor do disco após os 446B do código de inicialização**. Este setor é essencial para indicar ao PC o que e de onde uma partição deve ser montada.\
Permite até **4 partições** (no máximo **apenas 1** pode ser ativa/**inicializável**). No entanto, se você precisar de mais partições, pode usar **partições estendidas**. O **último byte** deste primeiro setor é a assinatura do registro de inicialização **0x55AA**. Apenas uma partição pode ser marcada como ativa.\
Dos **bytes 440 a 443** do MBR, você pode encontrar a **Assinatura do Disco do Windows** (se o Windows for usado). A letra da unidade lógica do disco rígido depende da Assinatura do Disco do Windows. Alterar esta assinatura pode impedir o Windows de inicializar (ferramenta: [**Active Disk Editor**](https://www.disk-editor.org/index.html)**)**.
O **endereçamento de bloco lógico** (**LBA**) é um esquema comum usado para **especificar a localização de blocos** de dados armazenados em dispositivos de armazenamento de computador, geralmente em sistemas de armazenamento secundário como discos rígidos. O LBA é um esquema de endereçamento linear particularmente simples; **os blocos são localizados por um índice inteiro**, sendo o primeiro bloco o LBA 0, o segundo LBA 1 e assim por diante.
A Tabela de Partição GUID, conhecida como GPT, é favorecida por suas capacidades aprimoradas em comparação com o MBR (Master Boot Record). Distinta por seu **identificador globalmente único** para partições, a GPT se destaca de várias maneiras:
* **Localização e Tamanho**: Tanto a GPT quanto o MBR começam no **setor 0**. No entanto, a GPT opera em **64 bits**, contrastando com os 32 bits do MBR.
* **Limites de Partição**: A GPT suporta até **128 partições** em sistemas Windows e acomoda até **9,4ZB** de dados.
* **Nomes de Partição**: Oferece a capacidade de nomear partições com até 36 caracteres Unicode.
* **Redundância**: Ao contrário do MBR, a GPT não restringe a partição e os dados de inicialização a um único local. Ela replica esses dados em todo o disco, aprimorando a integridade e resiliência dos dados.
* **Verificação de Redundância Cíclica (CRC)**: A GPT emprega CRC para garantir a integridade dos dados. Ela monitora ativamente a corrupção de dados e, quando detectada, a GPT tenta recuperar os dados corrompidos de outra localização no disco.
* A GPT mantém a compatibilidade retroativa por meio de um MBR protetor. Este recurso reside no espaço legado do MBR, mas é projetado para evitar que utilitários mais antigos baseados em MBR sobrescrevam acidentalmente discos formatados em GPT, protegendo assim a integridade dos dados nos discos formatados em GPT.
Em sistemas operacionais que suportam **inicialização baseada em GPT por meio de serviços BIOS** em vez de EFI, o primeiro setor também pode ser usado para armazenar a primeira etapa do código do **carregador de inicialização**, mas **modificado** para reconhecer **partições GPT**. O carregador de inicialização no MBR não deve assumir um tamanho de setor de 512 bytes.
O cabeçalho da tabela de partição define os blocos utilizáveis no disco. Ele também define o número e o tamanho das entradas de partição que compõem a tabela de partição (deslocamentos 80 e 84 na tabela).
| 16 (0x10) | 4 bytes | [CRC32](https://en.wikipedia.org/wiki/CRC32) do cabeçalho (deslocamento +0 até o tamanho do cabeçalho) em little-endian, com este campo zerado durante o cálculo |
| 20 (0x14) | 4 bytes | Reservado; deve ser zero |
| 24 (0x18) | 8 bytes | LBA atual (localização desta cópia do cabeçalho) |
| 32 (0x20) | 8 bytes | LBA de backup (localização da outra cópia do cabeçalho) |
| 56 (0x38) | 16 bytes | GUID do disco em endian misto |
| 72 (0x48) | 8 bytes | LBA inicial de uma matriz de entradas de partição (sempre 2 na cópia primária) |
| 80 (0x50) | 4 bytes | Número de entradas de partição na matriz |
| 84 (0x54) | 4 bytes | Tamanho de uma única entrada de partição (geralmente 80h ou 128) |
| 88 (0x58) | 4 bytes | CRC32 da matriz de entradas de partição em little-endian |
| 92 (0x5C) | \* | Reservado; deve ser zeros para o restante do bloco (420 bytes para um tamanho de setor de 512 bytes; mas pode ser mais com tamanhos de setor maiores) |
Após montar a imagem forense com o [**ArsenalImageMounter**](https://arsenalrecon.com/downloads/), você pode inspecionar o primeiro setor usando a ferramenta do Windows [**Active Disk Editor**](https://www.disk-editor.org/index.html)**.** Na imagem a seguir, um **MBR** foi detectado no **setor 0** e interpretado:
Se fosse uma **tabela GPT em vez de um MBR**, deveria aparecer a assinatura _EFI PART_ no **setor 1** (que na imagem anterior está vazio).
## Sistemas de Arquivos
### Lista de sistemas de arquivos do Windows
* **FAT12/16**: MSDOS, WIN95/98/NT/200
* **FAT32**: 95/2000/XP/2003/VISTA/7/8/10
* **ExFAT**: 2008/2012/2016/VISTA/7/8/10
* **NTFS**: XP/2003/2008/2012/VISTA/7/8/10
* **ReFS**: 2012/2016
### FAT
O sistema de arquivos **FAT (File Allocation Table)** é projetado em torno de seu componente central, a tabela de alocação de arquivos, posicionada no início do volume. Esse sistema protege os dados mantendo **duas cópias** da tabela, garantindo a integridade dos dados mesmo se uma estiver corrompida. A tabela, juntamente com a pasta raiz, deve estar em uma **localização fixa**, crucial para o processo de inicialização do sistema.
A unidade básica de armazenamento do sistema de arquivos é um **cluster, geralmente de 512B**, composto por vários setores. O FAT evoluiu por meio de versões:
* **FAT32**, avançando ainda mais com endereços de 32 bits, permitindo impressionantes 268.435.456 clusters por volume.
Uma limitação significativa em todas as versões do FAT é o **tamanho máximo de arquivo de 4GB**, imposto pelo campo de 32 bits usado para armazenamento do tamanho do arquivo.
Componentes-chave do diretório raiz, especialmente para FAT12 e FAT16, incluem:
* **Nome do Arquivo/Pasta** (até 8 caracteres)
* **Atributos**
* **Datas de Criação, Modificação e Último Acesso**
* **Endereço da Tabela FAT** (indicando o cluster de início do arquivo)
**Ext2** é o sistema de arquivos mais comum para **partições sem journaling** (partições que não mudam muito) como a partição de inicialização. **Ext3/4** são **com journaling** e são usados geralmente para as **outras partições**.
Alguns arquivos contêm metadados. Essas informações são sobre o conteúdo do arquivo, que às vezes podem ser interessantes para um analista, pois, dependendo do tipo de arquivo, pode conter informações como:
Você pode usar ferramentas como [**exiftool**](https://exiftool.org) e [**Metadiver**](https://www.easymetadata.com/metadiver-2/) para obter os metadados de um arquivo.
## **Recuperação de Arquivos Deletados**
### Arquivos Deletados Registrados
Como visto anteriormente, existem vários locais onde o arquivo ainda é salvo após ser "deletado". Isso ocorre porque geralmente a exclusão de um arquivo de um sistema de arquivos apenas o marca como excluído, mas os dados não são tocados. Assim, é possível inspecionar os registros dos arquivos (como o MFT) e encontrar os arquivos deletados.
Além disso, o sistema operacional geralmente salva muitas informações sobre alterações no sistema de arquivos e backups, então é possível tentar usá-los para recuperar o arquivo ou o máximo de informações possível.
A **escultura de arquivos** é uma técnica que tenta **encontrar arquivos no volume de dados**. Existem 3 principais maneiras de funcionamento de ferramentas como essa: **Com base nos cabeçalhos e rodapés dos tipos de arquivo**, com base nas **estruturas dos tipos de arquivo** e com base no **próprio conteúdo**.
Observe que essa técnica **não funciona para recuperar arquivos fragmentados**. Se um arquivo **não estiver armazenado em setores contíguos**, então essa técnica não será capaz de encontrá-lo ou pelo menos parte dele.
A Escultura de Fluxo de Dados é semelhante à Escultura de Arquivos, mas **em vez de procurar arquivos completos, procura fragmentos interessantes** de informações.\
Por exemplo, em vez de procurar um arquivo completo contendo URLs registrados, essa técnica procurará URLs.
Obviamente, existem maneiras de **"excluir" arquivos de forma segura e parte dos logs sobre eles**. Por exemplo, é possível **sobrescrever o conteúdo** de um arquivo com dados inúteis várias vezes e, em seguida, **remover** os **logs** do **$MFT** e **$LOGFILE** sobre o arquivo, e **remover as Cópias de Sombra do Volume**.\
Você pode notar que mesmo realizando essa ação, pode haver **outras partes onde a existência do arquivo ainda está registrada**, e isso é verdade e parte do trabalho do profissional forense é encontrá-las.