Come catturare non solo il mtime ma anche il ctime quando si creano copie forensi di file?

1

Contesto

Sto indagando su una scatola Linux compromessa in cui ho trovato file con codice dannoso. Il file system è troppo grande per fare solo una copia dell'intero dispositivo a blocchi e finora mi interessano solo i file di una sottodirectory non così grande.

Mentre il timestamp dell'ultima modifica (chiamato anche "mtime") di un file di esempio è più vecchio, il cosiddetto ctime (inode change time) è piuttosto nuovo. Quindi voglio anche catturare il ctime in quanto potrebbe essere rilevante.

JFTR: So che nessuno dei due timestamp deve mostrare il tempo in cui il file è stato creato perché un comando chmod o chown cambierà anche il ctime e la data dell'ultima modifica potrebbe essere impostata dallo strumento di download utilizzato per scaricare il file, ad es wget , perché, contrariamente a ctime, Linux consente di impostare il tempo mtime di un file su tempi arbitrari.

Domanda

Come faccio a catturare correttamente il ctime quando si creano copie forensi di tali file?

Non sono a conoscenza di alcun formato di archivio (ad es. tar, zip, rar) che cattura il ctime (potenzialmente specifico del file system) in aggiunta a mtime.

Finora sono arrivato con questi stratagemmi:

  • Esegui ls -l --time=ctime $file per ogni file catturato e salva l'out in un file di testo insieme ai file. (Fatto questo per ora.)
  • Salva i file su un supporto che contiene anche un file system che memorizza i tempi, ad es. una chiavetta USB formattata ext4 e imposta l'ora di sistema sul ctime del file da copiare immediatamente prima della copia in modo che il ctime della copia sia entro secondi dal ctime originale. (Dovrebbe teoricamente funzionare, ma probabilmente ha altri effetti collaterali sul sistema operativo, mai effettivamente provato.)

Entrambi i workaround sono altamente insoddisfacenti e mi chiedo se ci siano metodi migliori per catturare il ctime quando si creano copie forensi di file (con Linux e preferibilmente con software open source), ad es. uno strumento che può modificare il ctime di un file o un formato di archivio che può memorizzare più di un timestamp per file, ecc.

    
posta Axel Beckert 14.09.2018 - 18:52
fonte

2 risposte

1

I formati di archivio dei file non catturano il ctime perché sarebbe inutile dato che è impossibile ripristinarlo¹.

A fini forensi, devi mantenere le cose semplici, perché devi essere in grado di dimostrare che i dati che hai acquisito sono autentici. Non si può evitare di eseguire una copia di basso livello del dispositivo a blocchi che contiene il filesystem. Ai fini dell'analisi, quando si setaccia i dati per capire cosa è interessante, è possibile utilizzare complessi metodi di estrazione dei dati e verificare successivamente i risultati rispetto ai dati reali.

L'uso di ls può essere complicato se i file hanno nomi contenenti caratteri speciali come spazi, righe nuove o caratteri non stampabili. Anche ls stampa un'approssimazione del tempo dipendente dal fuso orario e fastidioso da analizzare. Se è necessario utilizzare ls , utilizzare l'opzione --full-time di GNU ls per ottenere una visualizzazione dell'ora non ambigua e assicurarsi di utilizzare un set di opzioni che stampano il nome del file in modo non ambiguo e che in seguito si analizzano correttamente il nome . Le versioni recenti di GNU ls stampano il nome del file in modo univoco per impostazione predefinita, ma il formato è relativamente complesso.

Linux fornisce un comando stat che stampa più metadati inclusi tutti i timestamp e il numero di inode. * I sistemi BSD che includono macOS hanno un comando stat con uno scopo simile ma completamente sintassi. Attenzione che stampano il nome del file letteralmente, il che può rendere ambiguo l'output se alcuni nomi di file contengono newline.

Naturalmente, fai tutto questo da una vista del filesystem che è di sola lettura come puoi ottenere. Per scopi forensi, è meglio se la prima cosa che fai è fare una copia del disco attraverso un dongle hardware che assicuri che non modifichi la sorgente, in questo modo non ci sarà alcun dubbio che tu abbia corrotto le prove. Se il rischio legale è basso, puoi rinunciare all'hardware per scopi speciali, ma assicurati almeno che tu abbia reso il dispositivo di blocco di sola lettura. Fare un mount read-only del filesystem ( mount -r ) non è sufficiente: garantisce che non aggiornerai i timestamp, ma rigetterà il journal, quindi non puoi affermare che la tua cattura non ha modificato le prove .

¹ Se si è root, è possibile modificare l'ora del sistema, ma questo influisce sull'intero sistema in modo tale da risultare estremamente dirompente.

    
risposta data 15.09.2018 - 09:24
fonte
-2

Penso che il comando cp abbia un'opzione per conservare alcune informazioni del file originale

--preserve=mode,ownership,timestamps

Non sono sicuro se questo risolverà il tuo problema.

    
risposta data 14.09.2018 - 22:09
fonte

Leggi altre domande sui tag