Esiste un modo per eseguire l'acquisizione dei dati nei registri della CPU?

8

In Digital Forensics, come best practice, un investigatore dovrebbe raccogliere dati dalla fonte più volatile alla fonte meno volatile. Di solito, quando si parla di live / Dynamic Acquisition, la maggior parte dei libri di testo inizia con la RAM come la sorgente di dati più volatile, anche se i registri della CPU sono più volatili. Tuttavia, non riesco a trovare una fonte che descriva l'acquisizione dei dati dalla CPU di un dispositivo sospetto. Poiché l'esecuzione di qualsiasi programma cambierà almeno un registro (EIP / RIP). Quindi le mie domande sono, Trascurare i dati all'interno dei registri è perché non c'è alcun valore investigativo per loro? o perché non è possibile?

E -dipendente dalla risposta alla domanda precedente- C'è un modo per farlo?

    
posta HSN 22.05.2017 - 19:44
fonte

2 risposte

5

Anche se non viene eseguito nessun programma , il sistema operativo stesso viene eseguito. E non puoi modificarlo - né tecnicamente né in modo forense.

Inoltre, una moderna CPU quad-core può avere diverse centinaia di registri CPU, molti dei quali sono invisibili ! Questa è un'ottimizzazione: quando scrivi un valore da un registro della CPU alla cache, potrebbe volerci un po 'di tempo. Usando un registro invisibile per mantenere il valore per un po ', la CPU può continuare. Ma non appena il valore è scritto, il registro può essere cancellato. Così efficacemente hai a che fare con registri invisibili che cambiano stato anche se nessun programma è in esecuzione - buona fortuna!

Il che ci porta anche al prossimo problema: la cache della CPU è permanente e si aggiorna autonomamente in modo indipendente. Non sarebbe efficiente se questo fosse sotto controllo del programma.

Ora ciò che è possibile è quello di scaricare un programma. Un tipico sistema operativo moderno può salvare lo stato completo del programma, inclusi i registri , in un file su disco. Su Linux questo è noto come file core , su Windows come modalità utente dump . Questa capacità era necessaria in ogni caso perché un sistema operativo multitasking potrebbe dover sospendere e riprendere un processo in esecuzione (ad es. Quando è pianificato un altro processo da eseguire). Ovviamente, per riprendere il processo, i registri devono essere ripristinati. La cache viene in genere solo deselezionata in quanto non dovrebbe comunque influire sulla correttezza del programma e pertanto non finisce nemmeno nei file di dump.

    
risposta data 24.05.2017 - 01:01
fonte
3

Il modo migliore per farlo è quello di collegare le sonde logiche alla CPU e / o ad altri punti del circuito.

Con questa disposizione puoi tracciare le istruzioni e lo spostamento dei dati dentro e fuori la CPU, e puoi dedurre gli stati del registro di conseguenza.

Ma una volta che introduci un nuovo programma in esecuzione nel sistema, hai violato la prima regola sulle prove forensi legalmente utilizzabili. Hai cambiato il sistema. Qualsiasi avvocato difensore decente sarebbe in grado di mettere sotto accusa tali prove.

    
risposta data 23.05.2017 - 23:21
fonte

Leggi altre domande sui tag