Maintenant, on change de sujet et on va parler un peu « forensic ».
On m’a envoyé une image au format E01. Kézako? C’est quoi cette extension?
L’extension *.E01 ou Encase Ex01 Bitstream, sont des containers dits forensic au format « Expert Witness Format ».
Autrement dit, ce sont des volumes qui contiennent une preuve. Leur particularité est que le contenu de ces volumes est inviolable, non-modifiable.
Le conteneur contient de nombreuses informations sur son contenu, notamment:
- La somme de contrôle (hash) de son contenu, ce qui fait que toute modification forcée entraînerait une erreur.
- Le logiciel ayant servi a le créer.
- Les informations du cas et de l’expert.
- La date de création.
- La taille du disque.
- Etc…
Quoi faire avec un E01? Nous pouvons dans un premier temps prendre quelques informations. Nous allons pour cela utiliser une machine virtuelle https://tsurugi-linux.org qui contient tous les outils nécessaires, notamment tous les outils de la librairie libewf.
Pour prendre des informations, rien de plus simple, nous allons utiliser ewfinfo:
tsurugi@forensiclab:~$ ewfinfo /media/tsurugi/usb/image.E01
ewfinfo 20180403
Acquiry information
Case number: decepticon
Examiner name: Super_Forensic_Guy
Notes: Good_Luck
Acquisition date: Fri Sep 10 11:45:31 2019
System date: Fri Sep 10 11:45:31 2019
Operating system used: Windows 8
Software version used: 3.22g
Password: N/A
EWF information
File format: EnCase 3
Sectors per chunk: 64
Error granularity: 1
Compression method: deflate
Compression level: best compression
Media information
Media type: fixed disk
Is physical: yes
Write blocked: Tableau
Bytes per sector: 512
Number of sectors: 1953525168
Media size: 931 GiB (1000204886016 bytes)
Digest hash information
MD5: fcd26b1115c2e2483e04ebbd4381940e
Ok, nous voici avec pas mal d’informations. Nous savons notamment qu’il s’agit d’une image d’un disque de 1To. Mais soyons honnêtes, nous ce qu’on veut, c’est voir ce qu’il y a dedans…
Il va falloir monter cette image, afin qu’elle nous révèle son contenu en « raw ».
Pour monter une image, nous avons besoin des droits root, d’une image bien sûr et d’un point de montage. Chez Tsurugi, certains points sont déjà créés dans /mnt/. Nous allons donc y aller:
Pour cela, nous allons cette fois utiliser l’outil ewfmount:
root@forensiclab:~# ewfmount /media/tsurugi/usb/image.E01 /mnt/ewf1
Si tout se passe bien, nous avons maintenant une image raw nommée ewf1 dans le sous répertoire /mnt/ewf1.
Regardons de plus près:
root@forensiclab:~# fdisk -l /mnt/ewf1/ewf1
Disk /mnt/ewf1/ewf1: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x0002d6af
Device Boot Start End Sectors Size Id Type
/mnt/ewf1/ewf1p1 * 2048 487423 485376 237M 83 Linux
/mnt/ewf1/ewf1p2 489470 1953523711 1953034242 931.3G 5 Extended
/mnt/ewf1/ewf1p5 489472 1953335295 1952845824 931.2G 83 Linux
/mnt/ewf1/ewf1p6 1953337344 1953523711 186368 91M 82 Linux swap / Solaris
Bien, nous en savons maintenant un peu plus. Il s’agit d’une image d’un disque, probablement système, contenant une installation de type linux.
Pour en avoir le cœur net et pour enfin découvrir le contenu de notre image, montons la grosse partition de notre disque « raw » (ewf1p5) sur le point de montage /mnt/raw1/.
root@forensiclab:~# sudo mount -o ro,loop,offset=$((489472*512)) /mnt/ewf1/ewf1 /mnt/raw1
Sauf que chez moi, ça n’a pas fonctionné. une erreur « cannot mount /dev/loop0 read-only » m’est apparue. Il a fallu que je rajoute l’option « norecovery »:
root@forensiclab:~# mount -o ro,norecovery,loop,offset=$((489472*512)) /mnt/ewf1/ewf1 /mnt/raw1
Une petite vérification:
root@forensiclab:~# ls /mnt/raw1/
bin boot dev etc home initrd.img lib lib64 lost+found mad media mnt opt proc root run sbin srv sys tmp usr var vmlinuz
Nous sommes bien en présence d’une partition système linux… Il ne nous reste plus qu’à aller plonger dans les entrailles de la bête…
-*-_-* -*-_-* -*-_-* -*-_-* -*-_-* -*-_-* -*-_-* -*-_-* –
Ok, ça, c’est la version qu’on trouve partout. Mais il y a un autre outil que j’aime bien. Il s’appelle Xmount.
https://github.com/mika/xmount
1.0 What is xmount? – A short description xmount allows you to convert on-the-fly between multiple input and output harddisk image types. xmount creates a virtual file system using FUSE (Filesystem in Userspace) that contains a virtual representation of the input image. The virtual representation can be in raw DD, VirtualBox’s virtual disk file format, Microsoft’s Virtual Hard Disk Image format or in VmWare’s VMDK file format. Input images can be raw DD, EWF (Expert Witness Compression Format) or AFF (Advanced Forensic Format) files. In addition, xmount also supports virtual write access to the output files that is redirected to a cache file. This makes it possible to boot acquired harddisk images using QEMU, KVM, VirtualBox, VmWare or alike.
O h, ça m’a l’air bien ça…. « convert on-the-fly between multiple input and output » […] « Input images can be raw DD, EWF » […] « This makes it possible to boot acquired harddisk images using QEMU, KVM, VirtualBox, VmWare or alike. »
En gros, je peux monter un E01||raw en vdi||vmdk||raw, tout en créant un fichier de cache pour une illusion d’écriture sur le support et booter avec virtualbox||workstation, ou tout simplement lire le contenu…. ^^
Pour simplement lire le contenu de notre disque on pourrait faire:
root@forensiclab:~# xmount --in ewf /media/tsurugi/usb/image.E01 /mnt/ewf1
Ok. Jusque là, rien de neuf. Mais si je voulais virtualiser mon support pour créer une machine virtuelle, je devrai passer par une étape de conversion longue et consommatrice de stockage.
Pour monter un E01 en vdi et avec un fichier de cache, je peux faire:
root@forensiclab:~# xmount --in ewf --out vdi --cache /home/tsurugi/Desktop/d1.Cache /media/tsurugi/usb/image.E01 /mnt/ewf1
Et la, j’ai un vdi exploitable dans /mnt/ewf1…
Prety cool hein?