Só a logo nova: o guará com o anel laranja, uma arte transparente para os dois temas, no app, no favicon, nos ícones e no README. Sem mudança de comportamento. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
191 lines
11 KiB
Markdown
191 lines
11 KiB
Markdown
# Roadmap
|
|
|
|
[English](ROADMAP.md) · **Português**
|
|
|
|
Onde o Guará esteve, onde está e para onde vai. O que está marcado como feito existe no código e tem teste; o que está planejado é intenção, não promessa, e não tem data.
|
|
|
|
Legenda: ✅ feito · 🟡 parcial · 🔜 planejado · 🔭 ideia a longo prazo · ⛔ fora do escopo
|
|
|
|
## Princípios que não mudam
|
|
|
|
1. **A origem é somente leitura.** Nada no núcleo escreve no dispositivo recuperado.
|
|
2. **Não entregar sem validar.** Um recurso só entra com teste contra imagem real ou de referência. Por isso ReFS e Storage Spaces ainda não existem: não há imagem de referência para conferir.
|
|
3. **Confiança honesta.** Se o conteúdo não pôde ser conferido, a confiança é baixa ou média, nunca alta.
|
|
4. **Livre e auditável.** Código aberto (MIT ou Apache-2.0), sem telemetria (a única coisa que usa a rede por padrão é a verificação de atualização, uma requisição só que você pode desligar), e cada resultado pode ser reproduzido.
|
|
|
|
## Histórico
|
|
|
|
| Versão | Data | Marco |
|
|
|---|---|---|
|
|
| 0.1.0 | 2026-10-18 | Núcleo somente leitura, MBR/GPT, NTFS, FAT, exFAT, carving por estrutura, imagem forense, sessões, CLI e interface |
|
|
| 0.2.0 | 2026-10-18 | Pré-visualização completa (imagem, vídeo, áudio, PDF, Office, ZIP, hexadecimal) e temas |
|
|
| 0.3.0 | 2026-10-18 | Explorador com miniaturas, metadados (EXIF, GPS), hashes, busca no disco, CSV, relatório HTML e duplicadas |
|
|
| 0.4.0 | 2026-10-18 | Reconexão de disco, sessões automáticas, organização ao recuperar |
|
|
| 0.5.0 | 2026-10-18 | Visualizador de SQLite com linhas apagadas, SMART, interface em inglês, retomada de recuperação |
|
|
| 0.6.0 | 2026-10-18 | Saúde do disco completa (SMART ATA e NVMe), `guara health`, nova logo |
|
|
| 1.0.0 | 2026-10-19 | ext4, HFS+, Btrfs, XFS, APFS; BitLocker, LUKS, FileVault 2; RAID e LVM; E01, Ex01, AFF4; JPEG fragmentado; MP4 sem moov |
|
|
| 1.0.1 | 2026-10-20 | Documentação em inglês com tradução em português, interface completa em inglês, telas, imagem Docker do terminal |
|
|
| 1.1.0 | 2026-10-20 | Mensagens do núcleo e datas em inglês, verificação automática da tradução, RustCrypto em digest 0.11, acesso a dispositivo no Docker e workspaces do Superset verificados |
|
|
| 1.2.0 | 2026-10-22 | Discos virtuais QCOW2, VMDK, VHD, VHDX e DMG, trilha de auditoria encadeada por hash, relatório em PDF, mapa de espaço livre do APFS |
|
|
| 1.3.0 | 2026-10-23 | Atualização pelo próprio app, assinaturas Ed25519, QCOW2/VMDK diferenciais e DMG com LZFSE, imagens de referência testadas em Linux, macOS e Windows, teste de exclusão real do XFS |
|
|
| 1.3.1 | 2026-10-23 | Nova logo oficial |
|
|
|
|
Detalhes de cada versão no [CHANGELOG](CHANGELOG.pt-BR.md).
|
|
|
|
## Situação atual (1.3.1) contra o que se espera de uma suíte forense
|
|
|
|
### 1. Sistemas de arquivos com metadados
|
|
|
|
| Item | Estado | Observação |
|
|
|---|---|---|
|
|
| NTFS, FAT12/16/32, exFAT | ✅ | Desde a 0.1.0. NTFS ignora arquivos comprimidos e EFS |
|
|
| ext2/3/4 | ✅ | Inodes apagados e cópias antigas no diário |
|
|
| HFS+ | ✅ | Sobras de nós da árvore e diário |
|
|
| Btrfs | ✅ | Versões antigas das árvores; extensões zlib, zstd e lzo |
|
|
| XFS | 🟡 | Inodes liberados e nomes de entradas liberadas só funcionam na exclusão simulada. Com exclusão real do kernel (testada no CI) os metadados são zerados: o conteúdo volta por carving, o nome não. **Falta ler o diário** |
|
|
| APFS | 🟡 | Contêiner, mapa de objetos, mapa de espaço livre (spaceman e bitmaps), instantâneos e nós antigos. Exclusão testada só em simulação; contêineres com blocos de endereço de chunk-info (grandes) voltam a varrer o volume inteiro |
|
|
| ReFS | 🔜 | Hoje só é detectado; a recuperação depende do carving. Falta imagem de referência |
|
|
| Storage Spaces | 🔜 | Não feito. Falta imagem de referência |
|
|
| NTFS: atributos comprimidos, EFS, lista de atributos | 🔜 | Hoje marcados como incompletos |
|
|
| XFS: nomes e pastas após exclusão real (ler o diário) | 🔜 | O teste no CI existe e fica ignorado até isso entrar |
|
|
| Validação de APFS com exclusão real | 🔜 | Precisa de imagem de um Mac de verdade |
|
|
|
|
### 2. Volumes cifrados
|
|
|
|
| Item | Estado |
|
|
|---|---|
|
|
| BitLocker (senha, chave de recuperação, .BEK, chave limpa) | ✅ |
|
|
| LUKS1 e LUKS2 | ✅ |
|
|
| FileVault 2 (Core Storage) | ✅ |
|
|
| FileVault 2 em APFS com volume cifrado | 🔜 |
|
|
| Chave a partir de memória (hibernação, despejo de RAM) | 🔭 |
|
|
| Ataque de dicionário e força bruta (BitLocker, LUKS, FileVault, RAR, ZIP e demais volumes/arquivos cifrados) | 🔜 |
|
|
|
|
Hoje o Guará abre volumes quando você **já tem** a senha ou a chave. Recuperação de senha por dicionário e força bruta (com GPU, como Hashcat) é um recurso planejado, central no uso pericial.
|
|
|
|
### 3. Imagens forenses
|
|
|
|
| Item | Estado |
|
|
|---|---|
|
|
| Imagem bruta (dd) tolerante a setores ruins, com mapa de erros | ✅ |
|
|
| E01 e Ex01: leitura, gravação e `guara verify` | ✅ |
|
|
| AFF4: leitura e gravação | ✅ |
|
|
| Contêineres de disco virtual: QCOW2, VMDK, VHD, VHDX e DMG (leitura) | ✅ |
|
|
| QCOW2 com arquivo de apoio, snapshots de VMDK (por nome ou UUID do VirtualBox), DMG com LZFSE | ✅ |
|
|
| DMG com senha, conferência da identidade do pai em VHD, VHDX e QCOW2 | 🔜 |
|
|
| Imagem de dispositivo móvel (ver item 7) | 🔭 |
|
|
|
|
### 4. Montagem de discos soltos
|
|
|
|
| Item | Estado |
|
|
|---|---|
|
|
| RAID 0, 1, 4, 5, 6, 10 e linear (mdadm), inclusive degradado | ✅ |
|
|
| Descoberta automática de nível, faixa, layout e ordem sem metadados | ✅ |
|
|
| LVM2 (linear, em faixas, espelhado e RAID) | ✅ |
|
|
| Storage Spaces | 🔜 |
|
|
| Btrfs e ZFS multidisco (RAID do próprio sistema de arquivos) | 🔭 |
|
|
| RAID de controladoras proprietárias (Dell PERC, HP Smart Array) | 🔭 |
|
|
|
|
### 5. Carving
|
|
|
|
| Item | Estado |
|
|
|---|---|
|
|
| Detecção pela estrutura real, com tamanho exato e confiança | ✅ Desde a 0.1.0 (JPEG, PNG, GIF, BMP, PDF, ZIP e derivados, MP4/MOV/HEIC, AVI/WAV/WebP, SQLite, 7z, OLE, MP3, PE) e, na 1.0.0, mais 24 (gzip, zstd, Matroska/WebM, Ogg, MPEG-TS, FLV, ASF, MIDI, RAR, ar, SWF, ELF, TIFF, ICO, registro do Windows, EVTX, PST, RTF, pcap e outros) |
|
|
| JPEG fragmentado remontado (até três fragmentos) | ✅ |
|
|
| MP4/MOV sem `moov` reconstruído (H.264 e HEVC) a partir de um vídeo de referência | ✅ |
|
|
| Fragmentos: mais de três, e formatos além de JPEG (PNG, DOC, ZIP, SQLite) | 🔜 |
|
|
| Reconstrução de vídeo sem referência, áudio em MP4 sem `moov`, vídeos de drone e câmeras de ação em outros contêineres | 🔜 |
|
|
| Mais formatos validados por estrutura | 🔜 contínuo |
|
|
|
|
### 6. Interpretação de artefatos
|
|
|
|
O Guará **identifica e recupera** esses arquivos, mas só interpreta alguns.
|
|
|
|
| Item | Estado |
|
|
|---|---|
|
|
| Banco SQLite: esquema, tabelas, blobs, datas e linhas apagadas | ✅ |
|
|
| Metadados: EXIF e GPS, PDF, Office e OpenDocument, MP4/MOV | ✅ |
|
|
| Carving de registro do Windows (`regf`), EVTX, PST, pcap | 🟡 só reconhece e recupera, não interpreta |
|
|
| Interpretar o registro do Windows (usuários, programas, USB, histórico de execução) | 🔜 |
|
|
| Histórico, cookies e downloads de navegadores (Chrome, Firefox, Safari) | 🔜 base no leitor de SQLite |
|
|
| Mensagens, contatos e localização de apps (WhatsApp, Telegram, Signal e outros) | 🔜 base no leitor de SQLite |
|
|
| Logs do sistema e eventos do Windows (EVTX) | 🔜 |
|
|
| **Linha do tempo unificada** de todos os artefatos | 🔜 |
|
|
|
|
### 7. Extração de dispositivos móveis
|
|
|
|
Aqui o salto é de natureza, não de recurso. Hoje o Guará trabalha com **mídias de armazenamento**.
|
|
|
|
| Item | Estado |
|
|
|---|---|
|
|
| Android por ADB e backups | 🔭 |
|
|
| iOS por backups do iTunes ou Finder (inclusive cifrados com senha) | 🔭 |
|
|
| Acesso físico por exploits de bootloader e de chip | 🔭 |
|
|
|
|
O acesso físico é o diferencial de ferramentas comerciais como a Cellebrite. Depende de equipes de pesquisa de vulnerabilidades em tempo integral e muitas dessas técnicas não são publicáveis em código aberto, o que torna esse item o mais distante do roadmap. A direção mais próxima é ler o que o usuário ou o perito consegue exportar de forma legítima (backups e ADB) e interpretar esses dados com o item 6; o acesso físico por exploit fica como ideia de longo prazo, a perseguir conforme o projeto crescer.
|
|
|
|
### 8. Cadeia de custódia e validade em tribunal
|
|
|
|
| Item | Estado |
|
|
|---|---|
|
|
| MD5, SHA-1 e SHA-256 de cada arquivo, da imagem e do dispositivo | ✅ |
|
|
| Manifesto `guara-manifesto.json` em toda recuperação | ✅ |
|
|
| Relatório HTML com caso, examinador, origem, partições, resumo e hashes | ✅ |
|
|
| Verificação de imagem E01/Ex01 contra o hash gravado | ✅ |
|
|
| **Trilha de auditoria** de cada ação do perito (quem, quando, o quê), encadeada por hash, com `guara audit --verify` | ✅ |
|
|
| **Assinatura digital** (Ed25519) de manifestos, relatórios e qualquer arquivo; `guara sign recovery` confere uma pasta de recuperação inteira | ✅ |
|
|
| Carimbo de tempo de terceiros (RFC 3161) nas assinaturas | 🔜 |
|
|
| **Reprodutibilidade:** repetir o procedimento gravado e obter o mesmo resultado | 🔜 |
|
|
| Relatório em PDF (A4, próprio) | ✅ |
|
|
| **Validação externa:** testes do NIST CFTT (Computer Forensic Tool Testing) e publicação dos resultados | 🔭 |
|
|
| Binários assinados (Windows e macOS) | 🔜 |
|
|
|
|
A validação externa é o que faz um laudo ser aceito. Sem ela, o Guará serve para triagem, recuperação e apoio, e o perito deve conferir os resultados por outro meio.
|
|
|
|
### 9. Análise
|
|
|
|
| Item | Estado |
|
|
|---|---|
|
|
| Busca por texto em todo o disco, UTF-8 e UTF-16, inclusive espaço livre | ✅ `guara search` |
|
|
| Detecção de duplicadas | ✅ |
|
|
| Busca por expressão regular e por palavra-chave em **conteúdo de arquivos** (Office, PDF, e-mail) | 🔜 |
|
|
| Hashes conhecidos: **NSRL** para ignorar arquivos de sistema | 🔜 |
|
|
| Listas de hashes de material ilícito (importadas pelo perito) | 🔜 |
|
|
| Detecção de imagens por conteúdo (similaridade, classificação) | 🔭 |
|
|
| **OCR** em imagens e PDF digitalizados | 🔭 |
|
|
|
|
### 10. Plataforma e distribuição
|
|
|
|
| Item | Estado |
|
|
|---|---|
|
|
| CLI e interface para Windows, Linux e macOS | ✅ |
|
|
| CI em três sistemas, release automática por tag | ✅ |
|
|
| Testes com imagens de referência reais em Linux, macOS e Windows | ✅ |
|
|
| Atualização dentro do app desktop (pacotes assinados, um clique) | ✅ |
|
|
| GUI: processo auxiliar privilegiado em vez de reiniciar o app inteiro como administrador | 🔜 |
|
|
| Binários assinados e notarizados | 🔜 |
|
|
| Pacotes em gerenciadores (winget, Homebrew, Flatpak) | 🔭 |
|
|
|
|
## Próximos marcos sugeridos
|
|
|
|
Sem datas, na ordem em que fazem mais sentido.
|
|
|
|
**1.4: confiança e custódia**
|
|
Carimbo de tempo de terceiros, leitura do diário do XFS, validação de APFS com exclusões reais.
|
|
|
|
**1.5: análise**
|
|
NSRL e listas de hashes, busca em conteúdo de arquivos, linha do tempo unificada.
|
|
|
|
**1.6: artefatos**
|
|
Registro do Windows, navegadores, EVTX e os apps de mensagem mais comuns, apoiados no leitor de SQLite.
|
|
|
|
**1.7: mais estrutura**
|
|
ReFS e Storage Spaces (quando houver imagem de referência), DMG com senha, conferência da identidade do pai em VHD, VHDX e QCOW2, carving fragmentado ampliado.
|
|
|
|
**2.0: dispositivos móveis e validação**
|
|
Backups do iTunes, ADB e backups do Android; submissão aos testes do NIST CFTT.
|
|
|
|
## Como ajudar
|
|
|
|
O gargalo mais comum é **imagem de referência**: um volume ReFS, um pool de Storage Spaces ou um XFS com exclusão real, de preferência pequeno e sem dados pessoais. Se você tem um, abra uma issue. Veja também o [CONTRIBUTING](CONTRIBUTING.pt-BR.md).
|