Que fait Acquisition d'image disque avec dd et dcfldd ?
Quand utiliser
- Lorsque vous devez créer une copie forensique d'un disque suspect pour enquête
- Pendant une réponse à incident, pour préserver les preuves volatiles avant analyse
- Quand des procédures judiciaires ou légales exigent une copie bit à bit vérifiée
- Avant d'effectuer toute analyse destructive sur un périphérique de stockage
- Lors de l'acquisition d'images à partir de disques physiques, clés USB ou cartes mémoire
Prérequis
- Station de travail forensique Linux (SIFT, Kali, ou toute distribution Linux)
dd(préinstallé sur tous les systèmes Linux) oudcfldd(version forensique améliorée)- Bloqueur d'écriture matériel ou logiciel configuré
- Disque de destination avec un espace de stockage suffisant (plus grand que la source)
- Privilèges root/sudo sur la station de travail forensique
- Utilitaires de hachage SHA-256 ou MD5 (
sha256sum,md5sum)
Flux de travail
Étape 1 : Identifier le périphérique cible et activer la protection en écriture
# Lister tous les périphériques blocs connectés pour identifier la cible
lsblk -o NAME,SIZE,TYPE,MOUNTPOINT,MODEL
# Vérifier les détails du périphérique
fdisk -l /dev/sdb
# Activer le blocage d'écriture logiciel (si aucun bloqueur matériel)
blockdev --setro /dev/sdb
# Vérifier le statut lecture seule
blockdev --getro /dev/sdb
# Sortie : 1 (lecture seule activée)
# Alternative : utiliser les règles udev pour un blocage d'écriture persistant
echo 'SUBSYSTEM=="block", ATTRS{serial}=="WD-WCAV5H861234", ATTR{ro}="1"' > /etc/udev/rules.d/99-writeblock.rules
udevadm control --reload-rules
Étape 2 : Préparer la destination et documenter la source
# Créer la structure de répertoires du dossier
mkdir -p /cases/case-2024-001/{images,hashes,logs,notes}
# Documenter les informations du disque source
hdparm -I /dev/sdb > /cases/case-2024-001/notes/source_drive_info.txt
# Enregistrer le numéro de série et le modèle
smartctl -i /dev/sdb >> /cases/case-2024-001/notes/source_drive_info.txt
# Pré-hacher le périphérique source
sha256sum /dev/sdb | tee /cases/case-2024-001/hashes/source_hash_before.txt
Étape 3 : Acquérir l'image avec dd
# Acquisition dd de base avec progression et gestion des erreurs
dd if=/dev/sdb of=/cases/case-2024-001/images/evidence.dd \
bs=4096 \
conv=noerror,sync \
status=progress 2>&1 | tee /cases/case-2024-001/logs/dd_acquisition.log
# Pour des images compressées afin d'économiser de l'espace
dd if=/dev/sdb bs=4096 conv=noerror,sync status=progress | \
gzip -c > /cases/case-2024-001/images/evidence.dd.gz
# Utiliser dd avec un nombre spécifique de blocs pour une acquisition partielle
dd if=/dev/sdb of=/cases/case-2024-001/images/first_1gb.dd \
bs=1M count=1024 status=progress
Étape 4 : Acquérir avec dcfldd (méthode forensique privilégiée)
# Installer dcfldd s'il n'est pas présent
apt-get install dcfldd
# Acquérir l'image avec hachage intégré et sortie fractionnée
dcfldd if=/dev/sdb \
of=/cases/case-2024-001/images/evidence.dd \
hash=sha256,md5 \
hashwindow=1G \
hashlog=/cases/case-2024-001/hashes/acquisition_hashes.txt \
bs=4096 \
conv=noerror,sync \
errlog=/cases/case-2024-001/logs/dcfldd_errors.log
# Fractionner les grandes images en segments gérables
dcfldd if=/dev/sdb \
of=/cases/case-2024-001/images/evidence.dd \
hash=sha256 \
hashlog=/cases/case-2024-001/hashes/split_hashes.txt \
bs=4096 \
split=2G \
splitformat=aa
# Acquérir avec une passe de vérification
dcfldd if=/dev/sdb \
of=/cases/case-2024-001/images/evidence.dd \
hash=sha256 \
hashlog=/cases/case-2024-001/hashes/verification.txt \
vf=/cases/case-2024-001/images/evidence.dd \
verifylog=/cases/case-2024-001/logs/verify.log
Étape 5 : Vérifier l'intégrité de l'image
# Hacher l'image acquise
sha256sum /cases/case-2024-001/images/evidence.dd | \
tee /cases/case-2024-001/hashes/image_hash.txt
# Comparer les hachages source et image
diff <(sha256sum /dev/sdb | awk '{print $1}') \
<(sha256sum /cases/case-2024-001/images/evidence.dd | awk '{print $1}')
# Si des images fractionnées sont utilisées, vérifier chaque segment
sha256sum /cases/case-2024-001/images/evidence.dd.* | \
tee /cases/case-2024-001/hashes/split_image_hashes.txt
# Re-hacher la source pour confirmer qu'aucune modification n'est survenue
sha256sum /dev/sdb | tee /cases/case-2024-001/hashes/source_hash_after.txt
diff /cases/case-2024-001/hashes/source_hash_before.txt \
/cases/case-2024-001/hashes/source_hash_after.txt
Étape 6 : Documenter le processus d'acquisition
# Générer le rapport d'acquisition
cat << 'EOF' > /cases/case-2024-001/notes/acquisition_report.txt
RAPPORT D'ACQUISITION D'IMAGE DISQUE
=====================================
Numéro de dossier : 2024-001
Date/Heure : $(date -u +"%Y-%m-%d %H:%M:%S UTC")
Expert : [Nom]
Périphérique source : /dev/sdb
Modèle : [depuis la sortie hdparm]
Série : [depuis la sortie hdparm]
Taille : [depuis la sortie fdisk]
Outil d'acquisition : dcfldd v1.9.1
Taille de bloc : 4096
Bloqueur d'écriture : [Modèle matériel/logiciel]
Fichier image : evidence.dd
Hachage de l'image (SHA-256) : [depuis le fichier de hachage]
Hachage source (SHA-256) : [depuis le fichier de hachage]
Correspondance des hachages : OUI/NON
Erreurs pendant l'acquisition : [depuis le journal d'erreurs]
EOF
# Compresser les journaux pour archivage
tar -czf /cases/case-2024-001/acquisition_package.tar.gz \
/cases/case-2024-001/hashes/ \
/cases/case-2024-001/logs/ \
/cases/case-2024-001/notes/
Concepts clés
| Concept | Description |
|---|---|
| Copie bit à bit | Réplique exacte de la source incluant l'espace non alloué et l'espace libre résiduel |
| Bloqueur d'écriture | Mécanisme matériel ou logiciel empêchant l'écriture sur le support de preuve |
| Vérification par hachage | Comparaison cryptographique du hachage entre source et image pour prouver l'intégrité |
| Taille de bloc (bs) | Taille de transfert influençant la vitesse ; 4096 ou 64K typique en forensique |
| conv=noerror,sync | Continuer en cas d'erreurs de lecture et remplir avec des zéros pour maintenir l'alignement des décalages |
| Chaîne de traçabilité | Piste documentée prouvant que la preuve n'a pas été altérée |
| Imagerie fractionnée | Découpage des grandes images en fichiers plus petits pour le stockage et le transport |
| Format brut/dd | Format d'image bit à bit sans surcharge de conteneur de métadonnées |
Outils et systèmes
| Outil | Objectif |
|---|---|
| dd | Utilitaire standard Unix de duplication de disque pour imagerie brute |
| dcfldd | Version améliorée de dd par le DoD Computer Forensics Laboratory avec hachage |
| dc3dd | Autre variante forensique de dd du DoD Cyber Crime Center |
| sha256sum | Calcul de hachage SHA-256 pour vérification d'intégrité |
| blockdev | Commande Linux pour configurer le mode lecture seule d'un périphérique bloc |
| hdparm | Identification du disque et rapport de paramètres |
| smartctl | Récupération des données S.M.A.R.T. pour la santé et l'identification du disque |
| lsblk | Énumération et identification des périphériques blocs |
Scénarios courants
Scénario 1 : Acquisition du disque dur d'un ordinateur portable suspect
Connectez le disque via un bloqueur d'écriture matériel Tableau T35u, identifiez-le comme /dev/sdb, utilisez dcfldd avec hachage SHA-256, fractionnez en segments de 4 Go pour archivage sur DVD, vérifiez la correspondance des hachages, documentez dans les notes du dossier.
Scénario 2 : Imagerie d'une clé USB provenant d'une station de travail compromise
Utilisez le blocage d'écriture logiciel avec blockdev --setro, acquérez avec dcfldd incluant un double hachage MD5 et SHA-256, l'image est suffisamment petite pour un seul fichier, vérifiez et stockez sur un disque de dossier chiffré.
Scénario 3 : Acquisition à distance via réseau
Utilisez dd redirigé via netcat ou ssh pour l'acquisition à distance : ssh root@remote "dd if=/dev/sda bs=4096" | dd of=remote_image.dd bs=4096, hachez indépendamment les deux extrémités pour vérifier l'intégrité du transfert.
Scénario 4 : Acquisition d'un disque défaillant
Utilisez ddrescue d'abord pour récupérer les secteurs lisibles, puis utilisez dd avec conv=noerror,sync pour combler les trous avec des zéros, documentez les secteurs illisibles dans le journal d'erreurs.
Format de sortie
Résumé de l'acquisition :
Source : /dev/sdb (500GB Western Digital WD5000AAKX)
Destination : /cases/case-2024-001/images/evidence.dd
Outil : dcfldd 1.9.1
Taille de bloc : 4096 bytes
Durée : 2h 15m 32s
Octets copiés : 500,107,862,016
Erreurs : 0 secteurs défectueux
SHA-256 source : a3f2b8c9d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1
SHA-256 image : a3f2b8c9d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1
Vérification : RÉUSSIE - Les hachages correspondent