Configurer Virtualbox pour tester des malwares

  • Malware


Bonjour,

Pour tester des malwares, il est recommandé d'utiliser une machine virtuelle. Afin d'empêcher l'étude des programmes malveillants, les éditeurs de ces malwares peuvent mettre en place des fonctionnalités pour détecter si le programme est exécuté dans une VM ou pas. Afin de "brouiller des pistes", il faut:

  • ne pas installer les drivers spécifiques aux additions invitées
  • ne pas laisser les valeurs par défaut pour la taille des disques
  • ne pas laisser les valeurs par défaut pour le nombre de CPU
  • modifier l'adresse MAC
  • utiliser un anti-virus (étant donné que les machines réelles ont généralement un antivirus, il faut ajouter un AV et éventuellement faire une règle pour exécuter le malware de test sans être gêné)

Pour le reste du matériel, j'utilise un script bash qui génère un fichier de configuration avec les informations de la machine hôte. Il faut exécuter ce fichier avec l'utilisateur Root puis utiliser le fichier généré avec un utilisateur avec des droits restreints.

 

 

#!/bin/bash

biosVendor=`dmidecode --string bios-vendor`
biosVersion=`dmidecode --string bios-version`
biosReleaseDate=`dmidecode --string bios-release-date`
sysManufacturer=`dmidecode --string system-manufacturer`
sysProductName=`dmidecode --string system-product-name`
sysVersion=`dmidecode --string system-version`
sysSerial=`dmidecode --string system-serial-number | cut -c 1-20`
sysUUID=`dmidecode --string system-uuid`
sysFamily=`dmidecode --string system-family`
sysSKU="To be filled by O.E.M."
discSerial=`udevadm info --query=all --name=/dev/sda | grep ID_SERIAL_SHORT | head -n1 | cut -d "=" -f2`
discModel=`udevadm info --query=all --name=/dev/sda | grep ID_MODEL | head -n1 | cut -d "=" -f2`
discFirmware=`udevadm info --query=all --name=/dev/sda | grep ID_REVISION | head -n1 | cut -d "=" -f2`

cat << EOF > vm_ghost_config
#!/bin/bash


# Enter the name of the VM
VM_NAME="Nom de la VM"
# Enter the MAC address
MAC_ADDRESS="08002710B8D0"
# Enter the number of CPU
NBR_CPU=2

biosVendor="$biosVendor"
biosVersion="$biosVersion"
biosReleaseDate="$biosReleaseDate"
sysManufacturer="$sysManufacturer"
sysProductName="$sysProductName"
sysVersion="$sysVersion"
sysUUID="$sysUUID"
sysSerial="$sysSerial"
sysFamily="$sysFamily"
sysSKU="$sysSKU"
discSerial="$discSerial"
discModel="$discModel"
discFirmware="$discFirmware"

if [[ -z "\$VM_NAME" ]]  || \\
   [[ -z "\$biosVendor" ]] || \\
   [[ -z "\$biosVersion" ]] || \\
   [[ -z "\$sysProductName" ]] || \\
   [[ -z "\$biosReleaseDate" ]] || \\
   [[ -z "\$sysManufacturer" ]] || \\
   [[ -z "\$sysVersion" ]] || \\
   [[ -z "\$sysFamily" ]] || \\
   [[ -z "\$sysSerial" ]] || \\
   [[ -z "\$sysUUID" ]] || \\
   [[ -z "\$sysSKU" ]] || \\
   [[ -z "\$discSerial" ]] || \\
   [[ -z "\$discModel" ]] || \\
   [[ -z "\$discFirmware" ]] || \\
   [[ -z "\$NBR_CPU" ]] || \\
   [[ -z "\$MAC_ADDRESS" ]]; then
  echo 'one or more variables are undefined'
  exit 1
fi

VBoxManage setextradata "\$VM_NAME" "VBoxInternal/Devices/pcbios/0/Config/DmiBIOSVendor" "string:\$biosVendor"
VBoxManage setextradata "\$VM_NAME" "VBoxInternal/Devices/pcbios/0/Config/DmiBIOSVersion" "string:\$biosVersion"
VBoxManage setextradata "\$VM_NAME" "VBoxInternal/Devices/pcbios/0/Config/DmiBIOSReleaseDate" "string:\$biosReleaseDate"
VBoxManage setextradata "\$VM_NAME" "VBoxInternal/Devices/pcbios/0/Config/DmiBIOSReleaseMajor" "4"
VBoxManage setextradata "\$VM_NAME" "VBoxInternal/Devices/pcbios/0/Config/DmiBIOSReleaseMinor" "2"
VBoxManage setextradata "\$VM_NAME" "VBoxInternal/Devices/pcbios/0/Config/DmiBIOSFirmwareMajor" "4"
VBoxManage setextradata "\$VM_NAME" "VBoxInternal/Devices/pcbios/0/Config/DmiBIOSFirmwareMinor" "2"
VBoxManage setextradata "\$VM_NAME" "VBoxInternal/Devices/pcbios/0/Config/DmiSystemVendor" "string:\$sysManufacturer"
VBoxManage setextradata "\$VM_NAME" "VBoxInternal/Devices/pcbios/0/Config/DmiSystemProduct" "string:\$sysProductName"
VBoxManage setextradata "\$VM_NAME" "VBoxInternal/Devices/pcbios/0/Config/DmiSystemVersion" "string:\$sysVersion"
VBoxManage setextradata "\$VM_NAME" "VBoxInternal/Devices/pcbios/0/Config/DmiSystemSerial" "string:\$sysSerial"
VBoxManage setextradata "\$VM_NAME" "VBoxInternal/Devices/pcbios/0/Config/DmiSystemSKU" "string:\$sysSKU"
VBoxManage setextradata "\$VM_NAME" "VBoxInternal/Devices/pcbios/0/Config/DmiSystemFamily" "string:\$sysFamily"
VBoxManage setextradata "\$VM_NAME" "VBoxInternal/Devices/pcbios/0/Config/DmiSystemUuid" "string:\$sysUUID"
VBoxManage setextradata "\$VM_NAME" "VBoxInternal/Devices/piix3ide/0/Config/PrimaryMaster/SerialNumber" "string:\$discSerial"
VBoxManage setextradata "\$VM_NAME" "VBoxInternal/Devices/piix3ide/0/Config/PrimaryMaster/FirmwareRevision" "string:\$discFirmware"
VBoxManage setextradata "\$VM_NAME" "VBoxInternal/Devices/piix3ide/0/Config/PrimaryMaster/ModelNumber" "string:\$discModel"
VBoxManage modifyvm "\$VM_NAME" --macaddress1 "\$MAC_ADDRESS"
VBoxManage modifyvm "\$VM_NAME" --cpus "\$NBR_CPU"

EOF

chmod a+x vm_ghost_config

Il faut ensuite éditer le fichier vm_ghost_config et adapter les valeurs des variables:

  • VM_NAME
  • MAC_ADDRESS
  • NBR_CPU

 

Si vous souhaitez une configuration plus complète, vous trouverez tout sur cette page. La plupart des informations dont je me suis servi viennent de ce repository.