
Strumento Python che analizza la $MFT di NTFS per copiare file bloccati durante la risposta agli incidenti, bypassando i blocchi del sistema operativo tramite la lettura di posizioni raw del disco. Supporta la copia ricorsiva, con wildcard e multi-file con caching per prestazioni.

Aggiornato il 2022-03-31
È un requisito durante un impegno di Incident Response (IR) avere la capacità di analizzare i file sul filesystem. A volte questi file sono bloccati dal sistema operativo (OS) perché sono in uso, il che è particolarmente frustrante per i log degli eventi e i registry hive. TScopy consente all'utente, che esegue con privilegi di amministratore, di accedere ai file bloccati analizzando la loro posizione raw nel filesystem e copiandoli senza chiedere al sistema operativo.
Esistono altri strumenti che eseguono funzioni simili, come RawCopy, che abbiamo utilizzato ed è la base per questo strumento. Tuttavia, ci sono alcuni svantaggi di RawCopy che ci hanno portato a sviluppare TScopy, tra cui prestazioni, dimensioni e la possibilità di incorporarlo in altri strumenti.
Questo blog ha lo scopo di presentare TScopy ma anche di chiedere assistenza. Come in ogni sviluppo software, più uno strumento viene utilizzato, più casi limite possono essere trovati. Chiediamo alle persone di provare lo strumento e segnalare eventuali bug.
TScopy è uno script Python utilizzato per analizzare il file NTFS $MFT per individuare e copiare file specifici. Analizzando la Master File Table (MFT), lo script bypassa i blocchi del sistema operativo sui file. Lo script era originariamente basato sul lavoro di RawCopy. RawCopy è scritto in AutoIT ed è difficile da modificare per i nostri scopi. La decisione di convertire RawCopy in Python è stata presa per la necessità di incorporare questa funzionalità nativamente nel nostro set di strumenti.
TScopy è progettato per essere eseguito come programma autonomo o incluso come modulo Python. L'implementazione Python fa uso degli strumenti python-ntfs disponibili all'indirizzo https://github.com/williballenthin/python-ntfs. TScopy si basa sulla funzionalità di base di python-ntfs per isolare la posizione di ciascun file dal disco raw.
TScopy è scritto in Python e organizzato in classi per renderlo più manutenibile e leggibile di AutoIT. AutoIT può essere segnalato come dannoso da software antivirus o di rilevamento perché alcuni malware hanno sfruttato il suo potenziale.
La differenza principale tra TScopy e RawCopy è la capacità di copiare più file per esecuzione e di mettere in cache la struttura dei file. Come mostrato nell'immagine seguente, TScopy ha opzioni per scaricare un singolo file, più file separati da virgole, il contenuto di una directory, percorsi con caratteri jolly (file o directory singoli) e directory ricorsive.
TScopy memorizza nella cache la posizione di ogni directory e file mentre itera il percorso completo del file di destinazione. Utilizza quindi questa cache per ottimizzare la ricerca di altri file, garantendo che le copie future vengano eseguite molto più velocemente. Questo è un notevole vantaggio rispetto a RawCopy, che itera l'intero percorso per ogni file.
.\TScopy_x64.exe -h
usage:
TScopy_x64.exe -r -o c:\test -f c:\users\tscopy\ntuser.dat
Description: Copies only the ntuser.dat file to the c:\test directory
TScopy_x64.exe -o c:\test -f c:\Windows\system32\config
Description: Copies all files in the config directory but does not copy the directories under it.
TScopy_x64.exe -r -o c:\test -f c:\Windows\system32\config
Description: Copies all files and subdirectories in the config directory.
TScopy_x64.exe -r -o c:\test -f c:\users\*\ntuser*,c:\Windows\system32\config
Description: Uses Wildcards and listings to copy any file beginning with ntuser under users accounts and recursively copies the registry hives.
Copy protected files by parsing the MFT. Must be run with Administrator privileges
optional arguments:
-h, --help show this help message and exit
-f FILE, --file FILE Full path of the file or directory to be copied.
Filenames can be grouped in a comma ',' seperated
list. Wildcard '*' is accepted.
-o OUTPUTDIR, --outputdir OUTPUTDIR
Directory to copy files too. Copy will keep paths
-i, --ignore_saved_ref_nums
Script stores the Reference numbers and path info to
speed up internal run. This option will ignore and not
save the stored MFT reference numbers and path
-r, --recursive Recursively copies directory. Note this only works with
directories.
C'è un'opzione nascosta '--debug', che abilita l'output di debug.
TScopy_x64.exe -f c:\windows\system32\config\SYSTEM -o e:\outputdir
Copia il registro SYSTEM in e:\outputdir Il nuovo file si troverà in e:\outputdir\windows\system32\config\SYSTEM
TScopy_x64.exe -f c:\windows\system32\config\SYSTEM -o e:\outputdir -i
Copia il registro SYSTEM in e:\outputdir ma ignora eventuali file cache precedenti e non salva la cache corrente su disco
TScopy_x64.exe -f c:\windows\system32\config\SYSTEM,c:\windows\system32\config\SOFTWARE -o e:\outputdir
Copia i registri SYSTEM e SOFTWARE in e:\outputdir
TScopy_x64.exe -f c:\windows\system32\config\ -o e:\outputdir
Copia il contenuto della directory config in e:\outputdir
TScopy_x64.exe -r -f c:\windows\system32\config\ -o e:\outputdir
Copia ricorsivamente il contenuto della directory config in e:\outputdir
TScopy_x64.exe -f c:\users\*\ntuser.dat -o e:\outputdir
Copia il file NTUSER.DAT di ogni utente in e:\outputdir
TScopy_x64.exe -f c:\users\*\ntuser.dat* -o e:\outputdir
Per ogni utente copia tutti i file che iniziano con NTUSER.DAT in e:\outputdi
TScopy_x64.exe -f c:\users\*\AppData\Roaming\Microsoft\Windows\Recent,c:\windows\system32\config,c:\users\*\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt -o e:\outputdir
Per ogni utente copia tutti i jumplist, i registry hive e i comandi della cronologia di PowerShell in e:\outputdi
Si prega di segnalare i bug nella sezione issues della pagina GitHub.