Communitygithub.com

análise-de-mft-para-recuperação-de-arquivos-excluídos

Analise a Tabela Mestre de Arquivos ($MFT) do NTFS com MFTECmd e analyzeMFT para recuperar arquivos excluídos e detectar atividades antiforenses.

O que é análise-de-mft-para-recuperação-de-arquivos-excluídos?

Esta skill capacita analistas forenses digitais e profissionais de SOC a recuperarem evidências de arquivos excluídos por meio da análise da Tabela Mestre de Arquivos ($MFT) do NTFS. Ela cobre desde a estrutura da MFT (cabeçalho do registro, atributos como $STANDARD_INFORMATION, $FILE_NAME e $DATA) até técnicas avançadas como análise de registros MFT, Journal USN ($UsnJrnl:$J), arquivo de log transacional ($LogFile) e espaço livre slack da MFT. A skill fornece comandos práticos para ferramentas como MFTECmd (PowerShell/Windows), analyzeMFT (Python multi-plataforma) e scripts Python personalizados para extração de slack. Além disso, ensina a correlacionar achados com a Lixeira ($Recycle.Bin) e cópias de sombra de volume (Volume Shadow Copies), permitindo reconstrução completa de linha do tempo e detecção de timestomping (manipulação de timestamps). É útil para investigações de incidentes, construção de regras de detecção e validação de cobertura de monitoramento contra atividades maliciosas como exfiltração de dados e execução de ferramentas como Mimikatz.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/mukul975/Anthropic-Cybersecurity-Skills/tree/main/skills/analyzing-mft-for-deleted-file-recovery

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Analisando a MFT para Recuperação de Arquivos Excluídos

Visão Geral

A Tabela Mestre de Arquivos ($MFT) do NTFS é o repositório central de metadados para cada arquivo e diretório em um volume NTFS. Cada arquivo é representado por pelo menos um registro MFT de 1024 bytes contendo atributos como $STANDARD_INFORMATION (timestamps, permissões), $FILE_NAME (nome, diretório pai, timestamps) e $DATA (conteúdo do arquivo ou ponteiros de execução de cluster). Quando um arquivo é excluído, seu registro MFT é marcado como inativo (flag InUse limpa) mas os metadados permanecem até que a entrada seja realocada por um novo arquivo. Essa persistência torna a análise da MFT uma técnica primária para recuperar evidências de arquivos excluídos, reconstruir linhas do tempo do sistema de arquivos e detectar atividades antiforenses como timestomping.

Quando Usar

  • Ao investigar incidentes de segurança que exigem análise da MFT para recuperação de arquivos excluídos
  • Ao construir regras de detecção ou consultas de caça a ameaças para este domínio
  • Quando analistas de SOC precisam de procedimentos estruturados para este tipo de análise
  • Ao validar a cobertura de monitoramento de segurança para técnicas de ataque relacionadas

Pré-requisitos

  • Imagem de disco forense (formato E01, raw/dd, VMDK ou VHDX)
  • MFTECmd (Eric Zimmerman) ou analyzeMFT (baseado em Python)
  • FTK Imager, Arsenal Image Mounter ou similar para montagem de imagem
  • Timeline Explorer ou Excel para análise CSV
  • Python 3.8+ para scripts de análise personalizados
  • Compreensão da estrutura interna do sistema de arquivos NTFS

Estrutura da MFT e Layout do Registro

Cabeçalho do Registro MFT

Cada registro MFT começa com a assinatura "FILE" (0x46494C45) e contém:

OffsetTamanhoCampo
0x004 bytesAssinatura ("FILE")
0x042 bytesOffset para sequência de atualização
0x062 bytesTamanho da sequência de atualização
0x088 bytesNúmero de sequência do $LogFile
0x102 bytesNúmero de sequência
0x122 bytesContagem de hard links
0x142 bytesOffset para o primeiro atributo
0x162 bytesFlags (0x01 = InUse, 0x02 = Diretório)
0x184 bytesTamanho usado do registro MFT
0x1C4 bytesTamanho alocado do registro MFT
0x208 bytesReferência ao registro base do arquivo
0x282 bytesPróximo ID de atributo

Principais Atributos da MFT

ID do TipoNomeDescrição
0x10$STANDARD_INFORMATIONTimestamps, flags, ID do proprietário, ID de segurança
0x30$FILE_NAMENome do arquivo, referência MFT do pai, timestamps
0x40$OBJECT_IDGUID único para o arquivo
0x50$SECURITY_DESCRIPTORPermissões ACL
0x60$VOLUME_NAMERótulo do volume (apenas arquivos de metadados do volume)
0x80$DATAConteúdo do arquivo (residente se <700 bytes) ou lista de execução de cluster
0x90$INDEX_ROOTRaiz do índice B-tree para diretórios
0xA0$INDEX_ALLOCATIONEntradas do índice B-tree para diretórios grandes
0xB0$BITMAPBitmap de alocação para índice ou MFT

Técnicas de Recuperação de Arquivos Excluídos

Técnica 1: Análise de Registro MFT com MFTECmd

# Extrair $MFT da imagem forense usando KAPE ou FTK Imager
# Analisar o $MFT com MFTECmd
MFTECmd.exe -f "C:\Evidence\$MFT" --csv C:\Output --csvf mft_full.csv

# Filtrar por arquivos excluídos (InUse = FALSE) no Timeline Explorer
# Procurar entradas onde a coluna InUse é False

Identificando Arquivos Excluídos na Saída CSV:

  • InUse = False indica um registro excluído ou realocado
  • ParentPath mostra o local original do arquivo antes da exclusão
  • FileSize mostra o tamanho original (pode ainda ser recuperável)
  • Os timestamps nos atributos $STANDARD_INFORMATION e $FILE_NAME persistem

Técnica 2: Análise do Journal USN ($UsnJrnl:$J)

O Journal USN registra todas as alterações em arquivos em um volume NTFS, incluindo criação, exclusão, renomeação e eventos de modificação de dados.

# Analisar Journal USN com MFTECmd
MFTECmd.exe -f "C:\Evidence\$J" --csv C:\Output --csvf usn_journal.csv

# Códigos de motivo USN chave para evidência de exclusão:
# USN_REASON_FILE_DELETE     = 0x00000200
# USN_REASON_CLOSE           = 0x80000000
# USN_REASON_RENAME_OLD_NAME = 0x00001000
# USN_REASON_RENAME_NEW_NAME = 0x00002000

Técnica 3: Análise de Transações do $LogFile

O $LogFile armazena registros de transações NTFS que podem revelar operações de arquivo mesmo após o Journal USN ter sido ciclado.

# Analisar $LogFile com LogFileParser
LogFileParser.exe -l "C:\Evidence\$LogFile" -o C:\Output

# Procurar operações REDO e UNDO indicando exclusão de arquivo:
# - DeallocateFileRecordSegment
# - DeleteAttribute
# - UpdateResidentValue (limpando a flag InUse)

Técnica 4: Análise de Espaço Slack da MFT

O espaço slack da MFT existe entre o final da porção usada de um registro MFT e o final dos 1024 bytes alocados. Esta área pode conter resquícios de registros de arquivos anteriores.

import struct

def parse_mft_slack(mft_path: str, output_path: str):
    """Extrair e analisar o espaço slack da MFT em busca de resquícios de arquivos excluídos."""
    with open(mft_path, "rb") as f:
        record_size = 1024
        record_num = 0
        slack_findings = []

        while True:
            record = f.read(record_size)
            if len(record) < record_size:
                break

            # Verificar assinatura FILE
            if record[:4] != b"FILE":
                record_num += 1
                continue

            # Obter tamanho usado do offset 0x18
            used_size = struct.unpack("<I", record[0x18:0x1C])[0]

            if used_size < record_size:
                slack = record[used_size:]
                # Verificar se o slack contém strings legíveis ou cabeçalhos de atributo
                if any(c > 0x20 and c < 0x7F for c in slack[:50]):
                    slack_findings.append({
                        "record": record_num,
                        "used_size": used_size,
                        "slack_size": record_size - used_size,
                        "slack_preview": slack[:100].hex()
                    })

            record_num += 1

    return slack_findings

Correlação com Artefatos de Suporte

Referência Cruzada da MFT com $Recycle.Bin

# Analisar Lixeira com RBCmd
RBCmd.exe -d "C:\Evidence\$Recycle.Bin" --csv C:\Output --csvf recycle_bin.csv

# Correlacionar: Arquivos $I contêm o caminho original e timestamp de exclusão
# Corresponder números de entrada MFT de arquivos $R de volta aos registros MFT originais

Referência Cruzada da MFT com Cópias de Sombra de Volume

# Listar cópias de sombra de volume
vssadmin list shadows

# Montar cópias de sombra e extrair $MFT de cada uma
# Comparar registros MFT entre cópias de sombra para rastrear alterações de arquivos ao longo do tempo

Valor Forense

  • Recuperação de metadados de arquivos excluídos: Nome original, caminho, tamanho e timestamps
  • Reconstrução de linha do tempo: Eventos de criação, modificação, acesso e exclusão de arquivos
  • Detecção de timestomping: Comparação de timestamps $SI vs $FN
  • Orientação para carving de dados: Execuções de cluster da MFT apontam para o conteúdo do arquivo no disco
  • Detecção antiforense: Identificação de registros MFT apagados ou manipulados

Referências

Exemplo de Saída

$ MFTECmd.exe -f "C:\Evidence\$MFT" --csv /analysis/mft_output

MFTECmd v1.2.2 - Analisador MFT
==============================
Entrada: C:\Evidence\$MFT (Tamanho: 384 MB)
Total de Entradas MFT: 395.264

Analisando entradas MFT... Concluído (12,4 segundos)

--- Resumo de Recuperação de Arquivos Excluídos ---
Total de Entradas:          395.264
Arquivos Ativos:           245.832
Arquivos Excluídos:        149.432
  Recuperáveis:             87.234 (dados residentes ou clusters não realocados)
  Parcialmente Recuperáveis: 31.456 (alguns clusters sobrescritos)
  Irrecuperáveis:           30.742 (todos os clusters realocados)

--- Arquivos Excluídos Recentemente (Janela do Incidente: 2024-01-15 a 2024-01-18) ---
Entrada MFT | Nome do Arquivo                  | Caminho                           | Tamanho    | Excluído (UTC)         | Recuperável
------------|----------------------------------|-----------------------------------|------------|------------------------|------------
148923      | exfil_tool.exe                   | C:\ProgramData\Updates\           | 1.258.496  | 2024-01-17 02:45:12   | SIM
148924      | exfil_tool.log                   | C:\ProgramData\Updates\           | 45.312     | 2024-01-17 02:45:14   | SIM
149001      | passwords.txt                    | C:\Users\jsmith\Desktop\           | 2.048      | 2024-01-17 02:50:33   | SIM
149150      | scan_results.csv                 | C:\Users\jsmith\AppData\Local\Temp | 892.416    | 2024-01-17 03:00:01   | PARCIAL
149200      | mimikatz.exe                     | C:\Windows\Temp\                   | 1.250.816  | 2024-01-18 01:15:22   | SIM
149201      | sekurlsa.log                     | C:\Windows\Temp\                   | 32.768     | 2024-01-18 01:15:25   | SIM
149302      | .bash_history                    | C:\Users\jsmith\                   | 4.096      | 2024-01-18 03:00:00   | NÃO
149400      | ClearEventLogs.ps1               | C:\Windows\Temp\                   | 1.536      | 2024-01-18 03:01:12   | SIM

--- Análise de Timestamps $STANDARD_INFORMATION vs $FILE_NAME (Detecção de Timestomping) ---
Entrada MFT | Nome do Arquivo     | $SI Criado          | $FN Criado          | Delta     | Veredito
------------|--------------------|---------------------|---------------------|-----------|----------
148923      | exfil_tool.exe     | 2023-06-15 10:00:00 | 2024-01-15 14:34:02 | -214 dias | TIMESTOMPED
149200      | mimikatz.exe       | 2022-01-01 00:00:00 | 2024-01-16 02:30:15 | -745 dias | TIMESTOMPED

Arquivos recuperados exportados para: /analysis/mft_output/recovered/
Relatório CSV completo: /analysis/mft_output/mft_analysis.csv (395.264 linhas)
CSV de linha do tempo: /analysis/mft_output/mft_timeline.csv

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

abusing-dpapi-for-credential-access

Extract and decrypt Windows DPAPI-protected secrets (Credential Manager, browser logins/cookies, Wi-Fi credentials, KeePass keys) online or offline using SharpDPAPI, SharpChrome, Mimikatz, or Impacket

abusing-shadow-credentials-for-privesc

Take over Active Directory accounts by writing attacker-controlled public keys to msDS-KeyCredentialLink (Shadow Credentials) with pyWhisker, Whisker, or Certipy, then authenticate via PKINIT to recover the target

achieving-cmmc-level-2-compliance

>-

acquiring-disk-image-with-dd-and-dcfldd

Create forensically sound bit-for-bit disk images with dd or dcfldd on a Linux forensic workstation, preserving evidence integrity through hash verification (MD5/SHA) during acquisition. Use when imaging a suspect drive, USB device, or memory card for investigation, preserving volatile disk evidence during incident response, or producing a verified copy for legal or law-enforcement proceedings before any destructive analysis.

analyzing-active-directory-acl-abuse

Detect dangerous ACL misconfigurations in Active Directory using ldap3

analyzing-android-malware-with-apktool

Perform static analysis of Android APK malware using apktool for resource decompilation, jadx for Java source recovery, and androguard for manifest inspection, dangerous permission-combination detection, and identification of obfuscated code, dynamic code loading, and reflection-based API calls. Use to statically triage a suspicious APK without executing it or to build mobile malware detection rules.

analyzing-api-gateway-access-logs

Parses API Gateway access logs (AWS API Gateway, Kong, Nginx) to detect

analyzing-apt-group-with-mitre-navigator

Query ATT&CK data with attackcti, mitreattack-python, and stix2, then build MITRE ATT&CK Navigator layers and multi-layer heatmap overlays mapping one or more APT groups

analyzing-azure-activity-logs-for-threats

Queries Azure Monitor activity logs and sign-in logs via azure-monitor-query

analyzing-bootkit-and-rootkit-samples

Analyzes bootkit and advanced rootkit malware infecting the Master

analyzing-browser-forensics-with-hindsight

Parse Chromium-based browser databases with Hindsight to extract and correlate browsing history, downloads, cookies, cached content, autofill data, saved passwords, and extensions from Chrome, Edge, Brave, Opera, and Vivaldi into a unified timeline (XLSX, JSON, or SQLite output). Use during incident response, insider-threat investigations, or criminal cases when you need to reconstruct a user

analyzing-campaign-attribution-evidence

Systematically evaluate cyber-campaign evidence to attribute an operation to a threat actor, using the Diamond Model and Analysis of Competing Hypotheses (ACH) to weigh infrastructure overlaps, TTP consistency, malware code similarity, and timing/language artifacts into confidence-weighted attribution assessments. Use when an incident investigation needs a defensible attribution confidence level.

analyzing-certificate-transparency-for-phishing

Monitor Certificate Transparency logs using crt.sh and Certstream to

analyzing-cloud-storage-access-patterns

Detect abnormal access in AWS S3, GCS, and Azure Blob Storage by analyzing CloudTrail Data Events, GCS audit logs, and Azure Storage Analytics for after-hours bulk downloads, new-IP access, and API-call spikes (e.g. GetObject) via statistical baselines and time-series anomaly detection. Use when investigating suspected cloud data exfiltration or building related detection rules.

analyzing-cobalt-strike-beacon-configuration

Extract and analyze Cobalt Strike beacon configuration from PE files

analyzing-cobaltstrike-malleable-c2-profiles

Parse and analyze Cobalt Strike Malleable C2 profiles with dissect.cobaltstrike (profiles and beacon-payload configs) and pyMalleableC2 (AST parsing) to extract HTTP/DNS transforms, URIs, headers, sleep/jitter, and injection behavior, then generate network detection signatures. Use when reverse-engineering a captured malleable profile or building detections against Cobalt Strike Beacon traffic.

analyzing-command-and-control-communication

Analyzes malware C2 communication over HTTP, HTTPS, DNS, and custom

analyzing-cyber-kill-chain

Analyzes intrusion activity against the Lockheed Martin Cyber Kill Chain

analyzing-disk-image-with-autopsy

Perform comprehensive forensic analysis of raw (dd), E01, or AFF disk images with Autopsy and The Sleuth Kit, recovering deleted files, examining metadata and embedded artifacts, keyword searching, and building investigation timelines with visual reports. Use for structured analysis of a forensic disk image or when stakeholders need visual reports from evidence.

analyzing-dns-logs-for-exfiltration

Analyzes DNS query logs to detect data exfiltration via DNS tunneling,

Habilidades Relacionadas