
Ferramenta forense para NTFS (parser, mft, bitlocker, arquivos excluídos)
NTFSTool é uma ferramenta forense focada em volumes NTFS. Ela suporta a leitura de informações da partição (MBR, tabela de partições, VBR), mas também informações da Master File Table, volume criptografado com BitLocker, arquivos criptografados com EFS, journal USN e muito mais.
Baixe os binários mais recentes no AppVeyor ou verificando os últimos artefatos do GitHub.
Veja abaixo alguns exemplos dos recursos!
Uma documentação alternativa feita por deepwiki está disponível aqui: https://deepwiki.com/thewhiteninja/ntfstool/
O NTFSTool exibe a estrutura completa do master boot record, volume boot record, tabela de partições e do registro de arquivo $MFT. Também é possível despejar qualquer arquivo (até mesmo $MFT ou SAM) ou analisar e interpretar o journal USN, LogFile, incluindo streams de Alternate Data Stream (ADS). O $MFT pode ser exportado como csv ou json com parsing de Zone.Identifier para identificar rapidamente arquivos baixados. O comando de undelete (recuperação) procurará por qualquer registro de arquivo marcado como "não em uso" e permitirá recuperar o arquivo (ou parte dele, se já tiver sido reescrito). Ele suporta entrada a partir de imagem de disco, disco ativo ou virtual como VeraCrypt e TrueCrypt, mas você também pode usar ferramentas como OSFMount para montar sua imagem de disco. Arquivos esparsos e compactados (lznt1, xpress) também são suportados.
Para partições protegidas por BitLocker, ele pode exibir registros FVE, verificar uma senha e chave (bek, senha, chave de recuperação), extrair VMK e FVEK. Não há funcionalidade de força bruta porque a quebra via GPU é melhor (veja Bitcracker e Hashcat), mas você pode obter o hash para essas ferramentas.
Masterkeys, chaves privadas e certificados podem ser listados, exibidos e descriptografados usando as entradas necessárias (SID, senha). Certificados com chaves privadas podem ser exportados usando o comando de backup.
Reimporte o backup em outra máquina para poder ler novamente seu arquivo criptografado!
Ou você pode usar o comando efs.decrypt para descriptografar um arquivo usando a chave de backup.
Mais informações na Wiki do Mimikatz
Os registros do journal USN podem ser analisados usando regras personalizadas para detectar programas e ações suspeitas, mas também para ter uma visão geral do journal (% de arquivos deletados, criados ...)
Regras padrão: Rules/default.json``` { "id": "lsass-dump", "description": "Dumped LSASS.exe process.", "severity": "high", "rule": { "filename": "lsass(\.(dmp|dump))?" } }
Veja um exemplo de execução aqui: [usn.analyze](#usn-analyze)
### Shell
Há um shell limitado com poucos comandos (exit, cd, ls, cat, pwd, cp, quit, rec).
O comando `rec` mostra os detalhes do registro MFT.
## Ajuda e Exemplos
O comando de ajuda exibe descrição e exemplos para cada comando.
As opções podem ser inseridas como número decimal ou hex com prefixo "0x" (ex: inode).
ntfstool help [command]
| Comando | Descrição |
| --- | --- |
| [info](#info) | Exibe informações para todos os discos e volumes |
| [mbr](#mbr) | Exibe estrutura MBR, código e partições para um disco |
| [gpt](#gpt) | Exibe estrutura GPT, código e partições para um disco |
| [vbr](#vbr) | Exibe estrutura VBR e código para um volume especificado (suporta ntfs, fat32, fat1x, bitlocker) |
| [extract](#extract) | Extrai um arquivo de um volume. |
| [image](#image) | Cria um arquivo de imagem de um disco ou volume. |
| [mft.dump](#mft-dump) | Despeja o arquivo $MFT no formato especificado: csv, json, raw. |
| [mft.record](#mft-record) | Exibe detalhes do registro FILE para um inode MFT especificado. Quase todos os tipos de atributo suportados |
| [mft.btree](#mft-btree) | Exibe conteúdo VCN e índice Btree para um inode |
| [bitlocker.info](#bitlocker-info) | Exibe informações e hash ($bitlocker$) para todos os VMK. Testa uma senha ou chave de recuperação. |
| [bitlocker.decrypt](#bitlocker-decrypt) | Descriptografa um volume para um arquivo usando senha, chave de recuperação ou bek. |
| [bitlocker.fve](#bitlocker-fve) | Exibe informações para o bloco FVE especificado. |
| [efs.backup](#efs-backup) | Exporta chaves EFS no formato PKCS12 (pfx). |
| [efs.decrypt](#efs-decrypt) | Descriptografa arquivo criptografado EFS usando chaves no formato PKCS12 (pfx). |
| [efs.certificate](#efs-certificate) | Lista, exibe e exporta certificados do sistema (SystemCertificates/My/Certificates). |
| [efs.key](#efs-key) | Lista, exibe, descriptografa e exporta chaves privadas (Crypto/RSA). |
| [efs.masterkey](#efs-masterkey) | Lista, exibe e descriptografa masterkeys (Protect). |
| [reparse](#reparse) | Analisa e exibe pontos de reparse de \$Extend\$Reparse. |
| [logfile.dump](#logfile-dump) | Despeja o arquivo $LogFile no formato especificado: csv, json, raw. |
| [usn.analyze](#usn-analyze) | Analisa arquivo $UsnJrnl com regras especificadas. Saída: csv ou json. |
| [usn.dump](#usn-dump) | Despeja arquivo $UsnJrnl no formato especificado: csv, json, raw. |
| [shadow](#shadow) | Lista snapshots de sombra de volume do disco e volume selecionados. |
| [streams](#streams) | Exibe fluxos de dados alternativos |
| [undelete](#undelete) | Pesquisa e extrai arquivos deletados para um volume. |
| [shell](#shell-1) | Inicia um shell limitado tipo Unix |
| [smart](#smart) | Exibe dados S.M.A.R.T |
## Limitações
- Alguns casos não suportados. WIP.
- Sem documentação :no_mouth:.
Sinta-se à vontade para abrir uma issue ou solicitar uma nova funcionalidade!
## Compilação
- Instale o [Visual Studio 2022](https://visualstudio.microsoft.com/fr/vs/)
- Instale o vcpkg (para bibliotecas de terceiros necessárias) conforme descrito aqui: [vcpkg#getting-started](https://github.com/microsoft/vcpkg#getting-started)
```
git clone https://github.com/microsoft/vcpkg
.\vcpkg\bootstrap-vcpkg.bat
```
- Integre-o ao seu ambiente VisualStudio:
```
vcpkg integrate install
```