
analyzeMFT.py è progettato per analizzare completamente il file MFT da un filesystem NTFS e presentare i risultati nel modo più accurato possibile in molteplici formati.
Stato: tutti i test superati su Python 3.8-3.12 in ambienti Windows, macOS e Linux.
# Installazione
pip install analyzeMFT
# Utilizzo base
python analyzeMFT.py -f MFT_FILE -o output.csv --csv
# Genera un MFT di test per le prove
python -c "from src.analyzeMFT.test_generator import create_test_mft; create_test_mft('test.mft', 100)"
# Analisi con output multipli
python analyzeMFT.py -f test.mft -o output.json --json --hash
AnalyzeMFT è uno strumento basato su Python progettato per analizzare e fare il parsing della Master File Table (MFT) NTFS.
Converte i dati MFT binari grezzi in output strutturati e leggibili, adatti alla digital forensics, all'incident response e all'analisi dei file system. Lo strumento supporta un'ampia gamma di formati di output e fornisce un'estrazione dettagliata dei metadati, consentendo agli investigatori di esaminare timestamp dei file, attributi e proprietà strutturali dei volumi NTFS.
Lo scopo principale di AnalyzeMFT è assistere gli analisti forensi nella ricostruzione dell'attività del file system decodificando i record MFT. Ogni record contiene informazioni critiche come nomi di file, orari di creazione e modifica, dimensioni dei file e relazioni di directory. Lo strumento gestisce sia le voci attive che quelle eliminate, consentendo un'analisi completa della timeline e il recupero di artefatti. Include una gestione degli errori robusta per trattare record MFT corrotti o incompleti, garantendo un'elaborazione affidabile anche su file system danneggiati.
Sono supportati molteplici formati di output per integrarsi con i flussi di lavoro forensi comuni. Gli utenti possono esportare i risultati come file CSV, JSON, XML o Excel per revisione e reportistica. Per l'analisi della timeline è disponibile il formato body file compatibile con mactime e altri strumenti. L'esportazione SQLite crea una struttura di database relazionale per interrogazioni e archiviazione a lungo termine. I formati TSK timeline e log2timeline CSV consentono l'ingestione diretta in piattaforme forensi consolidate.
Nello strumento sono integrate ottimizzazioni delle prestazioni per gestire file MFT di grandi dimensioni in modo efficiente. L'elaborazione avviene in blocchi configurabili per gestire l'utilizzo della memoria, aspetto particolarmente importante quando si analizzano MFT di centinaia di megabyte. Il multiprocessing viene utilizzato durante il calcolo degli hash per ridurre i tempi di elaborazione. Gli utenti possono regolare il numero di processi worker e la dimensione dei blocchi in base alle risorse di sistema. Gli indicatori di avanzamento forniscono feedback in tempo reale durante le operazioni di lunga durata.
Lo strumento supporta profili di analisi configurabili per adattarsi a diverse esigenze operative. Il profilo predefinito offre un'elaborazione bilanciata per l'uso generale. Il profilo quick riduce al minimo il sovraccarico di elaborazione per un triage rapido. Il profilo forensic abilita la massima estrazione di dati, inclusi tutti i tipi di timestamp e gli attributi estesi. Il profilo performance regola le impostazioni interne per privilegiare velocità ed efficienza delle risorse su grandi set di dati.
Il calcolo degli hash è disponibile per gli attributi dei record di file che includono data run. È possibile generare hash MD5, SHA256, SHA512 e CRC32 per dati residenti e non residenti. Questa funzionalità supporta l'identificazione dei file e la verifica dell'integrità. L'hashing viene eseguito in parallelo per impostazione predefinita, con un numero di processi configurabile. Gli utenti possono disabilitare il multiprocessing in ambienti con risorse limitate.
La configurazione è gestita tramite opzioni da riga di comando o file esterni in formato JSON o YAML. Un file di configurazione può definire impostazioni di output, profili di analisi, opzioni di hash e criteri di filtro. I file di configurazione di esempio possono essere generati con l'opzione --create-config. L'opzione --list-profiles visualizza tutti i profili integrati disponibili e le relative descrizioni.
L'input viene specificato con l'opzione -f seguita dal percorso del file MFT. Il formato di output è determinato dall'estensione del file o da flag di esportazione espliciti. L'opzione -o imposta la destinazione dell'output. Quando si esporta in SQLite, è necessario usare il flag --sqlite. Per l'output CSV non è richiesto alcun flag aggiuntivo se il file di output termina con .csv.
È incluso un generatore di MFT di test per scopi di sviluppo e formazione. Con l'opzione --generate-test-mft gli utenti possono creare file MFT sintetici con un numero specificato di record. Questa funzionalità è utile per validare il funzionamento dello strumento, testare i parser o creare dati dimostrativi.
Le opzioni da riga di comando includono controlli di verbosità con -v per un output maggiore e -d per la registrazione a livello di debug. Questi aiutano a diagnosticare i problemi durante l'elaborazione. Le opzioni di esportazione consentono di selezionare il formato senza fare affidamento sulle estensioni dei file. Le opzioni di ottimizzazione delle prestazioni includono --chunk-size per la dimensione dei lotti di record e --hash-processes per impostare il numero di thread di hashing.
Lo strumento include un sistema di help strutturato. Eseguire lo script con --help visualizza tutte le opzioni disponibili e le relative descrizioni. Il riepilogo di utilizzo mostra gli argomenti obbligatori e facoltativi. Per ciascuna categoria di opzioni vengono fornite spiegazioni dettagliate, comprese quelle relative a esportazione, prestazioni, configurazione e debug.
La versione 3.1.1 include miglioramenti significativi alla qualità del codice e alla copertura dei test. La suite di test ora comprende 224 test completi che coprono tutti i componenti principali. Le pipeline CI/CD di GitHub Actions garantiscono la qualità del codice su Python 3.8-3.12 in ambienti Linux, Windows e macOS. La scansione di sicurezza con Bandit e il controllo delle dipendenze con Safety sono integrati nel processo di build. Il reporting della copertura del codice tramite Codecov monitora l'efficacia dei test.
I formati di esportazione previsti includono STIX/TAXII per la condivisione di threat intelligence e l'integrazione con Elasticsearch e Splunk per l'analisi centralizzata dei log. L'esportazione su database a grafo Neo4j consentirà la visualizzazione delle relazioni del file system. Gli utenti potranno filtrare l'output per intervallo di date, tipo di file e dimensione direttamente nello strumento. Potrebbe essere introdotta una modalità interattiva per consentire l'esame passo-passo dei record.
I contributi al progetto sono accettati tramite pull request su GitHub. Gli sviluppatori devono garantire la compatibilità con Python 3.8 e versioni successive. Tutto il nuovo codice deve includere type hint e test unitari completi. La suite di test viene eseguita con pytest e la copertura deve rimanere sopra l'80%. Il codice deve seguire le linee guida PEP 8 ed essere compatibile con più piattaforme. La documentazione deve essere aggiornata per qualsiasi nuova funzionalità o modifica.
Questo strumento è fornito così com'è per scopi legittimi di analisi forense e di sicurezza. Gli utenti sono responsabili di assicurarsi di avere la dovuta autorizzazione prima di analizzare qualsiasi file system o dato MFT. Gli autori non si assumono alcuna responsabilità per l'uso improprio di questo software.