Installation de libfvde

libfvde (pour Library FileVault Drive Encryption) est une collection d'outils permettant l'accès aux volumes chiffrés FileVault.

$ git clone https://github.com/libyal/libfvde.git --depth=1
$ cd libfvde
$ ./synclibs.sh
$ ./autogen.sh

# Installer le paquet de développement pour FUSE
# "fuse-devel" pour les systèmes basés sur Red-Hat
$ sudo aptitude install libfuse-dev

$ ./configure
$ make -j 4
$ sudo make install

$ sudo ldconfig

Installation du Sleuth Kit

Le Sleuth Kit est une collection d'outils pour faire de l'analyse forensics de disque. Nous en aurons besoin pour déterminer certaines informations relatives au volume chiffré.

$ git clone https://github.com/sleuthkit/sleuthkit.git --depth=1
$ cd sleuthkit
$ ./bootstrap
$ ./configure
$ make -j 4
$ sudo make install

Trouver la clef Apple

Les opérations suivantes se feront directement sur le disque, reconnu par le système en tant que /dev/sdh, mais elles seront les mêmes pour une image complète du disque (nommée sdh.dd).

$ mmls /dev/sdh
GUID Partition Table (EFI)
Offset Sector: 0
Units are in 512-byte sectors

      Slot      Start        End          Length       Description
000:  Meta      0000000000   0000000000   0000000001   Safety Table
001:  -------   0000000000   0000000039   0000000040   Unallocated
002:  Meta      0000000001   0000000001   0000000001   GPT Header
003:  Meta      0000000002   0000000033   0000000032   Partition Table
004:  000       0000000040   0000409639   0000409600   EFI system partition
005:  001       0000409640   0975503591   0975093952   Macintosh HD
006:  002       0975503592   0976773127   0001269536   Recovery HD
007:  -------   0976773128   0976773167   0000000040   Unallocated

$ fls -r -o 975503592 /dev/sdh | grep -i EncryptedRoot
+++++ r/r 4105:	EncryptedRoot.plist.wipekey

$ icat -o 975503592 /dev/sdh 4105 > EncryptedRoot.plist.wipekey

Monter le volume chiffré

Créer les bons dossiers :

$ mkdir /mnt/fvdevolume /mnt/sdh

Pour monter un disque physique :

$ fvdemount -p "<PASSWORD>" -e EncryptedRoot.plist.wipekey /dev/sdh2 /mnt/fvdevolume/

Pour monter une image de disque complète, il nous faut récupérer l'offset de la partition désirée, ici sous le nom Stockage d'Apple Core :

$ fdisk -l sdh.dd
Disque sdh.dd : 465,8 GiB, 500107862016 octets, 976773168 secteurs
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Type d'étiquette de disque : gpt
Identifiant de disque : 00007DAD-79C6-0000-6E06-00004F130000

Périphérique     Début       Fin  Secteurs Taille Type
sdh.dd1             40    409639    409600   200M Système EFI
sdh.dd2         409640 975503591 975093952   465G Stockage d'Apple Core
sdh.dd3      975503592 976773127   1269536 619,9M Amorçage Apple
$ fvdemount -p "<PASSWORD>" -e EncryptedRoot.plist.wipekey -o $((512 * 409640)) sdh.dd /mnt/fvdevolume

Monter le volume déchiffré

$ mount -t hfsplus -o force,ro /mnt/fvdevolume/fvde1 /mnt/sdh