Imprimer

Montage d'une partition VDI/VMDK

.

Problématique

Avec l'utilisation croissante de la virtualisation, nous rencontrons de plus en plus souvent des fichiers de type VDI (VirtualBox) ou VMDK (VMWare), qui  représentent un disque d'une machine virtuelle. Plusieurs questions peuvent se poser. Notamment, en supposant que la machine virtuelle n'est pas démarrée :

  • comment faire une sauvegarde ?
  • comment examiner le contenu du disque/de la partition ?

Ces questions sont loin d'être innocentes. Il existe de nombreuses situations dans lesquelles il est souhaitable d'accéder au contenu de l'un de ces fichiers, sans pour autant démarrer la machine virtuelle (ce qui peut d'ailleurs se révéler impossible pour une foule de raisons).

Une solution : pilote "network block device" et Qemu

Le pilote network block device (nbd pour faire court) permet d'accéder à une ressource sur le réseau comme s'il s'agissait d'un périphérique local en mode bloc. Pour plus d'informations, se référer par exemple au site de l'Université de Cincinatti (attention : informations anciennes, peut-être obsolètes).

Qemu est un émulateur bien connu. De même, nous ne nous attarderons pas sur cet outil, sauf sur les caractéristiques qui nous intéressent :

La conjonction de ces deux caractéristiques nous permet de monter très facilement des images VirtualBox et VMWare.

Pilote NBD dans le noyau

Il convient de s'assurer que le pilote nbd est bien activé dans le noyau Linux :

Device Drivers -->
Block devices -->
<M> Network block device support

Le pilote peut être chargeable (comme ci-dessus) ou inclus statiquement dans le noyau.

Activer le module :

# modprobe nbd

Utilisation de qemu-nbd

Une fois le module nbd chargé, il suffit d'invoquer qemu-nbd en indiquant sur quel descripteur de périphérique connecter l'image du disque. Dans l'exemple ci-dessous, nous utilisons le descripteur /dev/nbd1 :

# qemu-nbd -c /dev/nbd1 image.vdi

L'option -c de qemu-nbd signifie "connecter". La déconnexion d'une image se fait à l'aide de l'option -d :

# qemu-nbd -d /dev/nbd1

Une fois l'image connectée, il est conseillé de vérifier que tout s'est bien passé. Le pilote nbd affiche (via syslog) la liste des partitions reconnues sur l'image. Ainsi, nous obtenons :

nbd1: queue cleared
nbd1: p1

Ce qui signifie que nbd a identifié une partition sur l'image connectée à /dev/nbd1. La partition est accessible via /dev/nbd1p1.

Erreurs à la connexion

Si vous n'obtenez pas de message indiquant les partitions trouvées sur le disque virtuel, cela signifie généralement que vous devez transmettre le paramètre max_part (nombre maximal de partition) avec une valeur non nulle lors du chargement du module nbd (nous avons placé les messages syslog juste après la commande qui en provoque l'apparition dans le journal du système) :

# rmmod nbd
kernel: nbd: unregistered device at major 43
# modprobe nbd max_part=8
kernel: nbd: registered device at major 43
# qemu-nbd -d /dev/nbd1
kernel: nbd1: p1 p2

Exploitation du support

Si vous disposez de mmls ou de fsstat (commandes issues de Sleuthkit), vous pouvez examiner les informations relatives à ce disque et les partitions qu'il contient (ici une seule) :

# mmls /dev/nbd1
DOS Partition Table
Offset Sector: 0
Units are in 512-byte sectors

Slot Start End Length Description
00: Meta 0000000000 0000000000 0000000001 Primary Table (#0)
01: ----- 0000000000 0000000062 0000000063 Unallocated
02: 00:00 0000000063 0031439204 0031439142 NTFS (0x07)
03: ----- 0031439205 0031457279 0000018075 Unallocated

# fsstat /dev/nbd1p1
FILE SYSTEM INFORMATION
--------------------------------------------
File System Type: NTFS
Volume Serial Number: E41431CA1431A08A
OEM Name: NTFS
Version: Windows XP

METADATA INFORMATION
--------------------------------------------
First Cluster of MFT: 786432
First Cluster of MFT Mirror: 1964946
Size of MFT Entries: 1024 bytes
Size of Index Records: 4096 bytes
Range: 0 - 19968
Root Directory: 5

La partition peut bien évidemment être montée comme un disque normal :

# mount -o ro /dev/nbd1p1 /mnt/partition

Pour conclure...

Une fois la partition reliée logiquement au système d'exploitation, nous pouvons mener à bien nos investigations.

Nous avons notamment testé la modification du contenu du disque (dans notre cas précis, afin de supprimer le mot de passe de certains comptes). Cela a bien fonctionné. Restez toutefois prudents à cet égard.