Giovanni Bassetti Immagine
 Blog di Giovanni Bassetti... di Admin
 
"
Un computer sicuro è un computer spento e gettato in fondo al mare, con l'hard disk sbriciolato

N.B.
"
 

\\ Home Page : Articolo
Il settore danneggiato e l'acquisizione forense
Di Admin (del 16/01/2010 @ 11:55:42, in Computer Forensics, linkato 7909 volte)

Se si deve acquisire un hard disk in maniera forense, ossia con tutti i crismi necessari al fine di garantire che la copia sia identica all'originale, a tutti quelli che operano nel settore viene subito in mente l'uso di DD, DCFLDD o DC3DD (nel mondo Open Source GNU/Linux), con le classice opzioni e parametri.

Gli approcci sono due:

1) Ottimistico (consideriamo il disco sano e tutti i settori sani)

2) Pessimistico (consideriamo che il disco abbia qualche settore danneggiato)

Nel caso in cui l'approccio ottimistico sia sconfessato, perchè durante l'acquisizione ci si ritrova con degli errori di lettura, allora si tenderà a porsi nell'ottica pessimistica, a volte anche ricominciando tutto d'accapo.

Esaminiamo gli scenari:

dd if=/dev/sdb of=/media/sdc1/disco.dd conv=noerror,sync bs=32K

Il suscritto comando leggerà blocchi da 32Kb dal disco /dev/sdb e scriverà sul disco destinazione /media/sdc1 (montato in scrittura) il file disco.dd, l'opzione conv=noerror,sync serve a due cose:

1) Noerror - indica a dd di non fermarsi di fronte ad eventuali errori di lettura, ignorando i blocchi illeggibili, ma questo, senza il sync, cambierebbe l'indirizzamento del disco, poichè l'immagine (disco.dd) del disco avrebbe una dimensione finale errata, inferiore a quella del disco originale.

2) Sync - Il flag sync forza dd a scrivere i blocchi della dimensione prescelta (es. BS=32K) e se non ci sono abbastanza dati per riempire il blocco, quest'ultimo sarà riempito di zeri (0s padding). Questo crea un problema, il file immagine di destinazione avrà una dimensione multipla del BS prescelto. Es. se il disco origine è di 6Kb ed il BS=4K, il file immagine avrà come dimensione 8Kb.

Inoltre, con un BS=32K e conv=noerror,sync, se dovessimo incontrare dei settori danneggiati, che però appartengono al buffer di lettura di 32Kb, il dd così configurato andrebbe a riempire ben 32Kb di zeri, sacrificando anche i settori sani che potrebbero esserci in quei 32Kb. Se ci sono solo due di settori danneggiati 512 bytes * 2 =1024 bytes = 1Kb, significa che i rimanenti 31Kb saranno azzerati, perchè dd ha letto un blocco da 32Kb ha incontrato degli errori ed ha fatto il riempimento di zeri su tutto il blocco letto.
Quindi la soluzione sarebbe quella di impostare dd con un BS=512, che è la misura minima di un settore, così da leggere il disco, settore per settore e nel caso uno di essi fosse illeggibile, sarebbe riempito di zeri (sync), mentre il settore successivo (leggibile) sarebbe letto correttamente, preservandone il suo contenuto.

dd if=/dev/sdb of=/media/sdc1/disco.dd conv=noerror,sync bs=512

Il problema di questa configurazione è che stressa di più gli hard disk, costringendoli a moltissime letture (sector by sector) e rende l'operazione più lenta.

Come risolvere?
Ci sono dei tools alternativi come ddrescue o dc3dd, che permettono di leggere blocchi di dimensioni maggiori di 512 bytes, ma nel momento in cui si trovano di fronte ad un errore, questi useranno il block size di dimensione minima, 512 bytes appunto e lo riempiranno di zeri.
DC3DD ha il default blocksize di 32768 bytes (32Kb), al fine di aumentarne la performance.
Il file immagine finale è calibrato sulla dimensione del disco sorgente indipendentemente dalla dimensione del blocco, così la dimensione del file immagine è esattamente la stessa, come se avessimo usato un BS=512.

Sector Error Recovery
Quando si incontra un errore ed il block size è più grande del settore del device sorgente, e il parametro conv=sync,noerror è impostato, dc3dd cerca dalla fine all'inizio del blocco e prova a leggere ciascun settore indvidualmente, così i settori buoni saranno acquisiti e quelli cattivi saranno rimpiazzati dagli zero. Questa caratteristica permette di acquisire le aree non danneggiate del disco a velocità maggiori, (dato che il BS=32K), senza perdere i blocchi di dati che circondano un bad sector
Per attivare questa modalità è richiesto il direct I/O mode abilitato (iflag=direct su Linux, /dev/rdisk* su Mac OS X).

dc3dd if=/dev/sdb of=/media/sdc1/disco.dd conv=noerror,sync bs=32k iflag=direct 

oppure con ddrescue

ddrescue -d -r3 /dev/sdb /media/sdc1/disco.dd log.txt

In sostanza il parametro iflag=direct o -d per ddrescue, serve a bypassare la Kernel Cache (pagecache)* e accedere direttamente al disco (direct I/O), considerando così la dimensione minima del settore.
Chi volesse usare DCFLDD con direct access non può utilizzare il parametro iflag=direct, dato che dcfldd è un fork di dd, quindi non segue lo stesso sviluppo di quest'ultimo, ma può accedere al device sorgente in direct I/O tramite il /dev/raw (per questo documentarsi sul device raw in Gnu/Linux).

 E' chiaro che per uso forense si tende ad usare di più uno strumento come DC3DD dato che ha anche caratteristiche di multiple hashing automatico, verifica, ecc.

Es.: dc3dd if=/dev/sdb of=/media/sdc1/disco.dd conv=noerror,sync bs=32k iflag=direct  progress=on hash=md5,sha1 log=log.txt vf=/dev/sdb verifylog=log_verifica.txt

*La page cache è il luogo in cui il kernel mantiene in RAM una copia dei dati, per migliorare le prestazioni evitando l'I/O del disco, quando i dati che devono essere letti sono già in RAM.
DC3DD è basato su DD, quindi iflag=direct funziona anche con DD.

Articolo Articolo  Storico Storico Stampa Stampa
 
# 1
Ottimo, completo e utilissimo articolo.
Grazie!
Di  Diego  (inviato il 17/01/2010 @ 13:23:29)
# 2
Ottimo articolo che dimostra come effettuare la duplicazione in presenza di errori e su come non variare la dimensione, ma trattandosi di una acquisizione forense, quindi mirata a garantire l'identicità della copia con l'originale, nel caso di errori sul disco l'hash finale del disco sarà diverso da quello da acquisire per ovvie ragioni. Come ci si comporta in questo caso? Non esiste qualche cosa per ovviarlo?
Grazie.
Di  Salvatore  (inviato il 17/01/2010 @ 18:52:04)
# 3
Si va nella casistica delle operazioni irripetibili, si fanno possibilmente davanti alle parti e si firma tutti insieme il verbale che spiega cosa si è fatto
Di  Zak McCracken  (inviato il 17/01/2010 @ 19:38:48)
# 4
Grazie x la risposta, e devo dire che qui volevo arrivare.
Quindi nonostante l'ottimo articolo qui sopra, il tutto risulta essere inutile. Nel caso di duplicazione forense si deve procedere all'incidente probatorio, nel caso di duplicazione per altri fini non mi interessa avere una copia con dimensioni identiche all'originale.
L'unica , e non per questo meno importante, utilità la troviamo al di fuori delle duplicazioni forensi per fare in modo che la duplicazione abbia un esito positivo senza bloccarsi durante l'operazione.
Di  Salvatore  (inviato il 17/01/2010 @ 20:40:09)
# 5
Caro Salvatore, non è solo il fatto di mantenere la dimensione identica, ma il fatto di non sacrificare informazione preziosa, nel momento in cui azzeri dei blocchi più grossi solo perchè 1 o 2 settori sono danneggiati....
Di  Nanni Bassetti  (inviato il 18/01/2010 @ 07:51:54)
# 6
Grazie mille Nanni
Di  Salvatore  (inviato il 18/01/2010 @ 10:32:06)
# 7
Ciao Salvatore, vorrei sapere da te come risolvere il seguente problema: qualche sera fa nel tentativo di copiare una cartella tramite Carbon Copy Cloner dal mio macbook pro sull'HDD esterno formattato in estesa jornaled, ho notato che il suddetto sw aveva iniziato a cancellare tutto quanto già presente sulla partizione, così ho staccato fisicamente il cavo USB per limitare i danni. Ora mi ritrovo che ho perso gigabytes di foto e video personali molto importanti (laurea etc). Ora non so come fare per recuperare i dati, vorrei fare una copia bit a bit di tutte le partizioni su un altro HDD esterno per poter provare in più momenti a recuperare i dati. Effettuando una clone della partizione con DD si ha la certezza di avere una copia perfettamente identica all'originale? Il recupero dati dalla partizione originale dà gli stessi identici risultati rispetto al recupero fatto con identiche modalità sull'immagine clone? Grazie mille!
Di  TG  (inviato il 15/07/2016 @ 19:59:28)
Anti-Spam: digita i numeri CAPTCHA99X
Testo (max 2000 caratteri)
Nome
e-Mail / Link


Disclaimer
L'indirizzo IP del mittente viene registrato, in ogni caso si raccomanda la buona educazione.
Ci sono 193 persone collegate

< settembre 2017 >
L
M
M
G
V
S
D
    
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 
             

Cerca per parola chiave
 

Titolo
Annunci (62)
CHI SONO (4)
Computer Forensics (105)
SICUREZZA INFORMATICA (6)
TuttoStorto (16)

Catalogati per mese:

Gli interventi pił cliccati

Ultimi commenti:
Grazie a tutti quell...
11/09/2017 @ 19:34:32
Di Raymond
Piccola Offerta di c...
11/09/2017 @ 11:34:02
Di credito.locali.veloce
Salve ho fatto il ro...
19/07/2017 @ 16:15:53
Di Marc






20/09/2017 @ 20:28:08
script eseguito in 32 ms