Image d'un disque

Christophe Grenier <grenier@cgsecurity.org>, RSSI chez Global Service Provider

Téléphones, ordinateurs, CD, DVD, disques durs, clés USB, baladeurs MP3, appareils photos numériques, nous sommes entourés de supports d'informations numériques. Confrontés à une perte de données, il peut être risqué de tenter une réparation sans avoir pris soin d'établir au préalable une copie. Cet article présente quelques utilisations de copies de support numériques et donnent quelques conseils pour les réaliser.

Pourquoi réaliser une ou plusieurs copies ?

Tester plusieurs techniques de récupération

Les outils de réparation de systèmes de fichiers ne sont pas capables de gérer efficacement tous les problèmes, cela ne va pas étonner grand monde. Pire, j'ai fait moi-même l'expérience de programmes de "réparation" supprimant tout élément considéré comme endommagé, à la fin de l'opération, le système de fichier était, il est vrai, consistant, mais désespérément vide. Il faut donc être en mesure de pouvoir tester plusieurs outils afin de trouver celui qui va permettre de récupérer enfin ses données sans risquer de tout perdre. La difficulté est de revenir à l'état initial. Certains outils disposent d'une fonction "Undo" pour annuler une réparation, mais celle-ci ne fonctionne pas si l'outil plante en plein milieu d'une opération ou si le système a été modifié depuis.

Eviter les erreurs de manipulation

Même en utilisant des techniques de récupération de données copiant les fichiers récupérés, nul n'est à l'abri d'erreurs de manipulation, il vaut mieux prendre des précautions pour ne pas risquer d'altérer le média et empêcher toute récupération ultérieure effective. Une erreur humaine est souvent à l'origine de la perte de donnée, en état de stress, une erreur supplémentaire de manipulation n'est pas exclue.

Panne matérielle

En cas de panne matérielle légère, un disque dur peut rester malgré tout globalement accessible. Deux stratégies sont généralement à envisager: confier le disque à une société spécialisée ayant une expertise dans la récupération de données liées à des problèmes matériels ou bien prendre la situation en main: considérant que la panne risque de se généraliser et que l'on ne peut rien faire contre, copier les fichiers les plus importants en premier puis dupliquer le disque tant que cela est possible.

Libérer la ressource

Lorsque des fichiers ont été effacés et que l'on souhaite les récupérer, il faut absolument éviter d'écrire la moindre donnée sur le disque sous peine de risquer d'écraser les fichiers perdus par de nouveaux ou bien d'écraser des blocs de données lorsque la taille de certains fichiers s'accroît. Les blocs de données d'un fichier effacé étant considérés comme libres, ils sont susceptibles d'être réalloués. Au moment de cette réallocation, le contenu du bloc "libre" est réinitialisé à 0 par le système d'exploitation, l'application peut alors y écrire de nouvelles données. Dès que la perte de fichier est détecté, pour éviter ce problème d'écrasement de données, il ne faut plus du tout utiliser le disque jusqu'à ce que toutes les données soient récupérées. En pratique, il peut y avoir une forte contrainte de temps rendant impossible de devoir immobiliser cette ressource: besoin d'utiliser des programmes présents sur ce disque, d'accéder à des données et divers autres impératifs de production. Une solution est de dupliquer le disque, ainsi le disque original peut être remis en production dès la fin de la copie, le processus de récupération de données, parfois long et complexe, s'effectue dans un second temps. On terminera en réintégrant les fichiers récupérés.

Droit: la copie est mentionnée

Dans certains cas, il est indispensable de conserver une information en l'état où elle était à un instant donné. On pensera particulièrement à la recherche de preuves informatiques.

Voici l'article L. 332-4 du Code de La Propriété Intellectuelle (CPI)

En matière de logiciels et de bases de données, la saisie-contrefaçon est exécutée en vertu d'une ordonnance rendue sur requête par le président du tribunal de grande instance. Le président autorise, s'il y a lieu, la saisie réelle. L'huissier instrumentaire ou le commissaire de police peut être assisté d'un expert désigné par le requérant. A défaut d'assignation ou de citation dans la quinzaine de la saisie, la saisie-contrefaçon est nulle. En outre, les commissaires de police sont tenus, à la demande de tout titulaire de droits sur un logiciel ou sur une base de données, d'opérer une saisie-description du logiciel ou de la base de données contrefaisants, saisie-description qui peut se concrétiser par une copie.

Une saisie-contrefaçon a pour but de démontrer une contrefaçon dans le cadre d'un procès. Dans ce cadre légal, comme le montre l'article de loi, la saisie des supports informatiques n'est pas l'unique possibilité pour acquérir des preuves, il est possible de réaliser des copies. En fait, il est plus facile d'obtenir le droit de réaliser une copie qu'une saisie, une saisie réelle dépossédant le saisi d'une partie de son matériel informatique, ce genre de saisie doit être particulièrement justifié. Je n'ai trouvé aucun texte sur les modalités pratiques de la copie mais il semble nécessaire de prendre des précautions afin qu'une contre-expertise soit possible.

Dans le cadre d'une procédure pénale, là encore une copie peut être réalisée:

Extrait de l'article 97 du Code de Procédure Pénale Il est procédé à la saisie des données informatiques nécessaires à la manifestation de la vérité en plaçant sous main de justice soit le support physique de ces données, soit une copie réalisée en présence des personnes qui assistent à la perquisition. ... Si les nécessités de l'instruction ne s'y opposent pas, copie ou photocopie des documents ou des données informatiques placés sous main de justice peuvent être délivrées à leurs frais, dans le plus bref délai, aux intéressés qui en font la demande.

Nouveau code de procédure civile, Article 145

S'il existe un motif légitime de conserver ou d'établir avant tout procès la preuve de faits dont pourrait dépendre la solution d'un litige, les mesures d'instruction légalement admissibles peuvent être ordonnées à la demande de tout intéressé, sur requête ou en référé.

Article 493

L'ordonnance sur requête est une décision provisoire rendue non contradictoirement dans les cas où le requérant est fondé à ne pas appeler de partie adverse.

Cela permet de ne pas prévenir la partir adverse si l'on craint que des informations soient détruites, mais attention, la saisie peut être contestée aussi bien la forme que le fond et rendre la saisie nulle.

Article 812

Le président du tribunal est saisi par requête dans les cas spécifiés par la loi. Il peut également ordonner sur requête toutes mesures urgentes lorsque les circonstances exigent qu'elles ne soient pas prises contradictoirement. Les requêtes afférentes à une instance en cours sont présentées au président de la chambre à laquelle l'affaire a été distribuée ou au juge déjà saisi.

Passons à la pratique.

Hors sujet: Remarque, dans les cas d'endettement, un ordinateur est considéré comme bien insaisissable s'il sert à l'activité professionnelle. Sinon il peut être saisi pour être revendu (saisie-vente) mais les étapes de ces procédures donnent le temps au saisi de réaliser une copie de ces données [SVENTE].

Se préparer à copier des données

Faire attention à ne pas aggraver un problème matériel

Une alimentation électrique faiblarde/en fin de vie peut être à l'origine d'une panne d'un disque dur, si vous suspectez ce problème ou bien un problème physique lié à la machine, utiliser un autre ordinateur pour copier le disque et récupérer vos données. Coté température, les disques durs récents supportent assez bien les températures un peu élevées mais sont sensibles aux températures basses [GOO2007].

SMART

Il est possible de contrôler et surveiller les systèmes de stockage en utilisant la technologie SMART (Self-Monitoring, Analysis and Reporting Technology system) intégrée dans les disques durs PATA, SATA, SCSI ainsi que certains Raid matériels. Dans le but d'anticiper les pannes, la technologie SMART surveille et informe de l'état de certains indicateurs de fiabilité comme la température, le nombre de secteurs réalloués, les erreurs de localisation des secteurs, le temps cumulé d'utilisation... Remarque, les disques connectés en USB ou en Firewire ne peuvent pas être surveillés dans la majorité des cas.

Quelques conseils:

Voici un exemple de reporting SMART pour un Raid matériel Compaq composé de disques Seagate, le disque est en bonne santé. Coté température, celle-ci est actuellement assez faible, 32°C, grâce au système de climatisation.

smartctl -a /dev/cciss/c0d0 -d cciss,0
smartctl version 5.36 [i686-redhat-linux-gnu] Copyright (C) 2002-6 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

Device: COMPAQ   BF07288285       Version: HPB2
Serial number: 3KP07MRF00007536XVTL
Device type: disk
Transport protocol: Parallel SCSI (SPI-4)
Local Time is: Thu Nov 15 20:09:55 2007 CET
Device supports SMART and is Enabled
Temperature Warning Enabled
SMART Health Status: OK

Current Drive Temperature:     32 C
Drive Trip Temperature:        68 C
Elements in grown defect list: 0
Vendor (Seagate) cache information
  Blocks sent to initiator = 451086139
  Blocks received from initiator = 120032659
  Blocks read from cache and sent to initiator = 1083141278
  Number of read and write commands whose size <= segment size = 822106214
  Number of read and write commands whose size > segment size = 0
Vendor (Seagate/Hitachi) factory information
  number of hours powered up = 20534.87
  number of minutes until next internal SMART test = 28

Error counter log:
           Errors Corrected by           Total   Correction     Gigabytes    Total
               ECC          rereads/    errors   algorithm      processed    uncorrected
           fast | delayed   rewrites  corrected  invocations   [10^9 bytes]  errors
read:          0        0         0         0          0          0.000           0
write:         0        0         0         0          0          0.000           0

Non-medium error count:       23

SMART Self-test log
Num  Test              Status                 segment  LifeTime  LBA_first_err [SK ASC ASQ]
     Description                              number   (hours)
# 1  Background short  Completed                   -       0                 - [-   -    -]

Long (extended) Self Test duration: 1064 seconds [17.7 minutes]

Voici le monitoring d'un disque SATA de la machine qui me sert à écrire cet article. Cette fois-ci, coté température, on peut constater que le disque a atteint les 55°C (Appart sous les toits un jour d'été...). Heureusement, il semblerait que les disques soient beaucoup plus résistants aux températures élevées.

smartctl -A /dev/sda
smartctl version 5.37 [i686-redhat-linux-gnu] Copyright (C) 2002-6 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

=== START OF READ SMART DATA SECTION ===
SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   057   054   006    Pre-fail  Always       -       212994225
  3 Spin_Up_Time            0x0003   096   096   000    Pre-fail  Always       -       0
  4 Start_Stop_Count        0x0032   100   100   020    Old_age   Always       -       1
  5 Reallocated_Sector_Ct   0x0033   100   100   036    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000f   085   060   030    Pre-fail  Always       -       337285762
  9 Power_On_Hours          0x0032   093   093   000    Old_age   Always       -       6454
 10 Spin_Retry_Count        0x0013   100   100   097    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   099   099   020    Old_age   Always       -       1482
194 Temperature_Celsius     0x0022   048   055   000    Old_age   Always       -       48
195 Hardware_ECC_Recovered  0x001a   057   053   000    Old_age   Always       -       212994225
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0010   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0
200 Multi_Zone_Error_Rate   0x0000   100   253   000    Old_age   Offline      -       0
202 TA_Increase_Count       0x0032   100   253   000    Old_age   Always       -       0

La colonne RAW_VALUE contient une donnée brute spécifique à chaque constructeur, voire à des modèles. Il faut donc lire les colonnes normalisées VALUE, WORST, THRESH, respectivement la valeur courante, la moins bonne valeur mesurée et le seuil d'alerte lorsqu'il y en a un.

Prenons l'exemple de l'attribut Reallocated_Sector_Ct. La table P-list, permanent-list ou primary-list, contient la liste des secteurs défectueux détectés lors du processus de fabrication du disque, ces secteurs sont ignorés par l'électronique du disque, leur présence n'a pas d'impact sur les performances du disque. Il nous reste donc les secteurs défectueux qui se développent suivant les conditions d'utilisations du disque. La technologie SMART va placer les coordonnées des secteurs devenus défectueux dans la table G-list, growth-list. Tout accès à l'adresse d'un de ces secteurs va automatiquement rediriger l'opération de lecture/écriture vers un secteur sain de secours, cette opération se ressent au niveau des performances mais permet au disque de continuer de fonctionner normalement. Cependant la table G-list a une capacité limitée, l'attribut Reallocated_Sector_Ct indique qu'il reste 100 secteurs de secours, lorsque cette valeur sera descendue à 36 ou moins, le BIOS ou tout utilitaire de monitoring SMART devra émettre une alerte demandant un changement immédiat du disque.

Faire attention à ne pas modifier les systèmes de fichiers

Le simple fait de lister le contenu d'un répertoire ou de lire le contenu d'un fichier va modifier les dates d'accès. On risque aussi la création de fichiers temporaires, la création de miniature pour les images/pdf/..., l'indexation du contenu. Le simple fait de brancher un média déclenche sur la plupart des ordinateurs la détection d'une table des partitions et le montage des systèmes de fichiers (affectation d'une lettre d'unité sous Windows, montage en lecture/écriture dans /media sous Unix). Que ce soit une FAT16/FAT32/NTFS/ext2/ext3/..., chacun de ces systèmes de fichiers est modifié dès qu'il est rendu accessible en lecture/écriture: un flag est positionné pour indiquer que le volume est "dirty", ainsi si le média est déconnecté ou l'ordinateur éteint incorrectement, ce drapeau sera détecté automatiquement lorsque le média sera connecté/l'ordinateur redémarré. Les systèmes de fichiers d'origine Unix ext2/ext3/jfs/reiserfs/xfs/... comportent de plus un compteur s'incrémentant à chaque fois que le volume est monté en lecture/écriture.

Préserver l'intégrité

La majorité des clés USB et certains disques durs ont un cavalier permettant de mettre le média en lecture seul, c'est une précaution facile à mettre en place pour éviter une écriture accidentelle sur le disque. Sous Linux, la commande hdparm propose de mettre en lecture seul un périphérique:

[root@test ~]# hdparm -r 1 /dev/sdb

/dev/sdb:
 setting readonly to 1 (on)
 readonly     =  1 (on)

Cependant cela n'a eu aucun effet en pratique lors de mes tests...

Dans un cadre forensics, il est préférable de copier le média vers un fichier image ainsi aucun accès en écriture ne sera effectué par le système d'exploitation.

Préserver le contexte

La configuration de l'ordinateur dont le disque est copié peut être importante: date/heure/fuseau horaire et écart avec une source fiable sont nécessaires si on souhaite établir une chronologie, la disposition, l'ordre des disques et le modèle de contrôleur pour reconstituer un RAID, type de connexions (par exemple, PATA primary master) pour identifier correctement les points de montage ou les lettres d'unités...

Quoi copier ?

La nature des informations à copier dépend des informations à récupérer ou à réparer.

Cependant en pratique, c'est parfois encore plus complexe. Si on prend comme exemple la commande chkdsk de Windows, elle ne peut fonctionner que sur des systèmes de fichiers identifiés par une lettre d'unité. Certains outils commerciaux sont même artificiellement bridés pour ne faire que de la récupération de fichier sur des cartes mémoires, d'autres que les CD/DVD et enfin certains que les disques durs. Il faudra donc au final parfois recopier la sauvegarde sur un support analogue au média original.

Zone constructeur des disques ATA (SATA/PATA)

Un système d'exploitation utilise la commande bas-niveau IDENTIFY DEVICE pour connaître la taille d'un disque. Cependant si une zone constructeur Host Protected Area (HPA) existe à la fin du disque, cette taille est inférieure à la taille réelle obtenable via la commande READ NATIVE MAX ADDRESS. Cette limite est positionnable avec la commande SET MAX ADDRESS. La zone HPA a été introduite avec le standard ATA-4 [ATA-4] en 1998.

Cette zone HPA peut être utilisée pour y placer divers utilitaires comme un utilitaire de restauration disque. Cela a d'autres applications comme le système antivol lojack [LOJACK]. Celui-ci place une petite partie de son code au niveau du BIOS (Zone Core Managed Environment (cME) sur les BIOS Phoenix) qui se charge d'appeler le reste du programme stocké dans la zone HPA du BIOS de l'ordinateur. Ainsi même si l'ordinateur est volé et le disque reformaté, il suffit qu'au moment du boot l'ordinateur soit connecté à un réseau pour que le programme se connecte à un site de l'éditeur, l'adresse IP source permet alors la localisation de l'ordinateur. Cette zone peut aussi avoir des utilisations illégitimes comme servir à dissimuler des données illégales ou y cacher un rootkit.

.

Dans un cadre forensics, il est donc important de réaliser une copie complète du disque, y compris de cette zone. disk_stat du SleuthKit [SLKIT] permet de détecter cette zone et disk_sreset (Amélioration de setmax [SETMAX] sous Linux) de la supprimer temporairement, mais ils ne gèrent que les disques de moins de 130 Go. La norme ATA-6 [ATA-6] introduit le support LBA 48 pour gérer les disques de plus de 130 Go, de nouvelles commandes READ NATIVE MAX ADDRESS EXT et SET MAX ADDRESS EXT sont à utiliser, malheureusement la dernière version 2.0.9 du SleuthKit ne les gère pas. Il faut donc utiliser des outils constructeurs ([HITACHI], [SEAGATE]) pour manipuler cette HPA sur les disques de grandes capacités.

Autre nouveauté de la norme ATA-6, elle introduit le Device Configuration Overlay (DCO). Il permet au constructeur de spécifier la taille du disque telle qu'elle sera retournée par la fonction READ NATIVE MAX ADDRESS. Ainsi le constructeur peut proposer des disques aux caractéristiques identiques au secteur prêt. Là encore, il y a moyen de dissimuler des informations par ce moyen.

Cas particulier des clés USB

Par rapport à un disque dur, il n'y a donc aucun élément mobile dans une clé USB, elle est donc bien plus résistante aux chocs et à la poussière. Coté système d'exploitation, une clé USB est vu de manière similaire à un disque dur, un contrôleur intégré à la clé USB se charge des accès à la mémoire flash. La mémoire est découpée en pages de 512 ou 2048 octets, chaque page peut être lu individuellement. Pour l'écriture, c'est un peu plus complexe: chaque écriture est précédée par une phase d'effacement et ces deux opérations s'effectuent uniquement sur des blocs de pages, généralement des blocs de 32 pages de 512 octets ou 64 pages de 2048 octets. De technologie NAND, chaque bloc de mémoire peut subir un million de cycle d'effacement/réécriture avant de devenir corrompu, le contrôleur va donc gérer intelligemment l'organisation des données sur la mémoire flash pour maximiser la durée de vie de la mémoire en évitant que certains blocs subissent beaucoup plus de cycle d'effacement/réécriture que d'autres. En cas de "secteurs" défectueux, il est inutile de réitérer les tentatives de lecture, les conditions de lecture seront exactement les mêmes. Il n'y a pas d'élément mécanique, il n'y a donc pas de temps perdu significatif à chaque erreur de lecture.

Attention, cela ne s'applique pas aux disques branchés par USB.

Comment réaliser des copies ?

Attention, si vous copiez l'intégralité d'un disque, la destination doit aussi être un disque et non une partition. Si vous copiez une partition, la partition destination n'a pas besoin d'être formatée, par contre, elle doit être suffisamment grande. Si la destination est plus grande que la source, il est conseillé d'initialiser la destination avec des zéros. De fait, copier l'intégralité du disque sur un disque vierge est fortement recommandé.

dd: une méthode classique

dd est une commande standard sous Unix, elle permet la copie de tout fichier et disque ("Sous Unix, tout est fichier"). Il existe aussi une version pour Windows [DDWIN]. La syntaxe est "assez" simple: dd if=source of=destination. Pour initialiser la destination avec des zéros: dd if=/dev/zero of=/dev/dev_destination. De façon à ce que la copie ne s'arrête pas si la source comporte des secteurs défectueux, il faut rajouter une option, la syntaxe devient: dd if=source of=destination conv=noerror. Exemple de copie

Pour accélérer le processus de copie, au lieu de lire et écrire secteur par secteur, vous pouvez ajouter bs=8k, cela permettra de lire/écrire sur le disque dur par bloc de 8k. Cependant, cela a un inconvénient: il suffit d'un seul secteur défectueux pour que la lecture d'un bloc de données échoue, dans ce cas, dd écrit un bloc de zéros et passe à la suite, ignorant la possibilité que des secteurs sains aient pu être présents.

dd_rescue

dd_rescue [DDRESCUE] pallie à ce problème de la commande dd: si la lecture d'un bloc de donnée échoue, dd_rescue va effectuer une lecture secteur par secteur. Ainsi cette commande bénéficie de la rapidité liée à la lecture de blocs de grandes tailles sans sacrifier à son efficacité. La syntaxe est dd_rescue source destination. dd_rescue peut enregistrer dans un fichier la liste des erreurs de lecture ainsi que la liste des secteurs défectueux, en utilisant le script dd_rhelp, cela permet de retenter une récupération de ces secteurs défectueux.

dd_rescue permet aussi de générer des fichiers creux (sparse): dd_rescue -a source destination. Si un bloc ne comporte que des zéros, dd_rescue choisit alors de ne pas réaliser d'écriture pour ce bloc, ainsi ce bloc est non alloué au niveau du système de fichier et donc le fichier destination occupe moins de place qu'un fichier classique. Les blocs non alloués sont lus comme comportant uniquement des zéros, le fichier se comporte de manière identique à un fichier classique. Attention, il ne faut jamais utiliser cette option si le fichier destination existe déjà, sans quoi, la source et la destination peuvent ne pas être identiques à la fin de la copie.

Une meilleure méthode: GNU ddrescue

Dans un premier temps, GNU ddrescue [GNUDDRESC] copie les données en utilisant une taille de bloc lui permettant une bonne rapidité, ensuite il lit les zones endommagées secteur par secteur et enfin réessayer plusieurs fois de lire les secteurs défectueux. ddrescue récupère donc les données plus rapidement. Note, par rapport à dd_rescue, il ne créé pas de fichier creux. La syntaxe est ddrescue source destination ddrescue.log.

ewfacquire

Des produits commerciaux comme Forensic Toolkit (FTK) [FTKIMG] ou EnCase Forensic [ENCASE] ont leurs propres formats d'acquisition de données. Ces formats ajoutent des sommes de contrôle pour vérifier l'intégrité des données, des métadatas pour documenter l'acquisition ainsi que de la compression pour que l'image prenne moins de place. J'utilise ici ewfacquire pour réaliser une image d'un DVD. Cet utilitaire vient avec libewf [LIBEWF], une librairie opensource pour gérer l'Expert Witness Compression Format (EWF). La commande ewfacquire permet donc de réaliser la réalisation d'une image d'un média, de nombreux paramètres sont disponibles tels que la compression et la gestion des erreurs de lecture.

./ewfacquire /dev/hda
ewfacquire 20070512 (libewf 20070512, zlib 1.2.3, libcrypto 0.9.8, libuuid)

Acquiry parameters required, please provide the necessary input
...
The following acquiry parameters were provided:
Image path and filename:        test_dvd.E01
Case number:                    1
Description:                    Copie d'un DVD
Evidence number:                1
Examiner name:                  Christophe Grenier
Notes:
Media type:                     removable
Volume type:                    physical
Compression used:               none
Compress empty blocks:          no
EWF file format:                EnCase 5
Acquiry start offet:            0
Amount of bytes to acquire:     290390016
Evidence segment file size:     665600 kbytes
Block size:                     64 sectors
Error granularity:              64 sectors
Retries on read error:          2
Wipe sectors on read error:     yes

Continue acquiry with these values (yes, no) [yes]: 

Acquiry started at: Mon Nov 12 21:59:42 2007

This could take a while.

Status: at 0%.
        acquired 32 kB (32768 bytes) of total 276 MB (290390016 bytes).

Status: at 1%.
        acquired 2.8 MB (2916352 bytes) of total 276 MB (290390016 bytes).
        completion in 6 minute(s) and 36 second(s) with 708 kB/s (725975 bytes/second).
...
Acquiry completed at: Mon Nov 12 22:00:22 2007

Written: 276 MB (290390016 bytes) in 40 second(s) with 6.9 MB/s (7259750 bytes/second).

MD5 hash calculated over data:  62c5d9a293af1401d821fcefc5fb4b6d

Afflib

En réponse à ces formats propriétaires, Advanced Forensic Format (AFF) [AFFLIB] un format ouvert a été créé. Il permet l'ajout de métadatas personnalisées, de générer plusieurs fichiers plutôt qu'un seul fichier énorme (EnCase le permet aussi). La compression LZMA permet des gains de place de l'ordre de 30% par rapport à un fichier EnCase, mais par défaut la compression gzip est utilisée.


Elapsed Time: 00:00:11              IMAGING             Mon Nov 12 22:22:24 2007
Source device:  /dev/hda              AFF Output: test_dvd.aff
Model #:
                                       Disk Size:  290 MB (1024 byte sectors)
                                   Total sectors: 283,584





[=========>                                                                    ]

 Currently reading sector:          32,768 (32768 sector chunks)  (11.55% done)

            blank sectors:               0  
                  Done in:        00:01:28 (this drive)


               Bytes read:      33,554,432
            Bytes written:      26,028,978

Overall compression ratio:           22.43%  (0% is none; 100% is perfect)

Free space on capture drive: 2,959 MB
                                     WRITING   ===>

./aimage --no_preview /dev/hda test_dvd.aff
****************************** IMAGING REPORT ******************************
Input: /dev/hda

  AFF Output file: test_dvd.aff
  Bytes read: 290,390,016
  Bytes written: 259,361,209

raw image md5:  62C5 D9A2 93AF 1401 D821 FCEF C5FB 4B6D 
raw image sha1: FA82 4799 2EB8 79C2 B5FA 7BC2 0FC7 3A06 C935 2D69 
raw image sha256: 19EF B16B D7AB 919E DC40 B28E 4772 151D 9081 C6A8 B1BC B475 5D84 514A 3E6D 29F4 
Free space remaining on capture drive:  2,737 MB

Attention, par défaut, les adresses MAC des cartes réseaux ainsi que la sortie de dmesg (journal système) de la machine servant à l'acquisition figurent dans les métadatas.

e2image

Certains outils sont spécialisés pour ne copier que les métadatas, les données ne sont pas copiées, uniquement la structure du système de fichier: informations sur l'arborescence (noms des fichiers, répertoire, taille), sur l'allocation des données. e2image [E2FSPROGS] réalise ceci pour les systèmes de fichier ext2/ext3. Une copie des métadatas est suffisante pour réaliser une liste des évènements ayant eu lieu: accès/modification/création/suppression de fichiers. Cela peut être un compromis acceptable si la copie complète du disque est impossible.

ntfsclone

ntfsclone [NTFSPROGS] est en premier lieu un outil de sauvegarde permettant de réaliser une copie rapide d'une partition NTFS vers un format spécifique ou un fichier creux (sparse) mais aussi un outil de duplication rapide comme son nom l'indique. Comme e2image pour les systèmes ext2/ext3, il permet de ne copier que les métadatas au besoin.

Résumé sur les outils

UtilitaireAvantagesInconvénients
ddEn standard sous Linux/MacOSX/*BSD/Mauvaise gestion des secteurs défectueux
dd_rescueGère les secteurs défectueuxNécessite le script dd_rhelp
GNU ddrescueGère les secteurs défectueux efficacement
ewfacquireForensics, Supporte les formats EnCaseLes formats EnCase ne sont pas supportés par le SleuthKit
afflibForensics, introduit un format libreSupporté par le SleuthKit
e2imageDuplication rapide des systèmes de fichier ext2/ext3N'est utilisable en forensics que pour établir une liste d'événements
ntfscloneDuplication rapide des systèmes de fichier NTFSN'est utilisable en forensics que pour établir une liste d'événements

Vérifier l'intégrité

Il est possible d'utiliser des sommes de contrôle md5, sha1, sha512 pour calculer une empreinte d'un fichier ou bien d'un média. Voici un exemple sous Linux avec des commandes standards (core-utils):

[kmaster@adsl 1-extend-part]$ md5sum ext-part-test-2.dd 
ea19519fc310835dd1fc20fc3cf36481  ext-part-test-2.dd
[kmaster@adsl 1-extend-part]$ sha1sum ext-part-test-2.dd 
859e2e8a7dbd98d336469dc06ae9b3ca627e7b49  ext-part-test-2.dd
[kmaster@adsl 1-extend-part]$ sha512sum ext-part-test-2.dd 
3b19ef5b733cf7a415319baa10c67dee271b2bb5af637ce45a38fd6ac873557c1b4a5c86d81aee6fe3ba11839a8dc5683c8940d038d6ac8792d43b2fd2a18495  ext-part-test-2.dd

Ces empreintes numériques permettent de détecter toute modification accidentelle. Si l'empreinte est identique pour le média d'origine et sa copie, on peut considérer que la copie est identique à l'originale. Il est calculatoirement difficile de modifier un fichier tout en gardant la même empreinte numérique, cependant l'utilisation des algorithmes md5 et même sha1 n'est plus conseillé au vu de l'avancée des récentes attaques cryptographiques.

Accéder aux fichiers d'une image

Sur un système de type Unix, mount -o loop,ro image.dd /mnt/image permet de consulter les fichiers présents sur l'image du système de fichier. L'option ro permet un accès read-only, ainsi on ne risque pas de modifier cette image.

Conclusion

Cet article vous a présenté quelques outils du monde libre permettant de dupliquer des supports, endommagés ou non, aussi bien dans le but d'une récupération de données que dans une optique légale. Ne négliger pas cette étape, même si cela prend du temps et monopolise des ressources, cela peut être le seul moyen de récupérer vos données ou d'obtenir une saisie valide.

Références