Tricks zur Forensik mit VirtualBox
VirtualBox ist eine Open-Source-Virtualisierungssoftware, die von Oracle entwickelt und bereitgestellt wird (Stand 04.08.2024). Sie ermöglicht es Benutzern, mehrere Betriebssysteme gleichzeitig auf einem einzelnen physischen Endgerät auszuführen. Jede VM agiert dabei wie ein eigenständiger Computer mit eigenem Betriebssystem, unabhängig vom Host-Betriebssystem. Hier kann VirtualBox heruntergeladen werden.
Speziell im Zusammenhang mit der Digitalen Forensik, bietet VirtualBox viele Anwendungsmöglichkeiten. Einige Beispiele werden in der folgenden Tabelle aufgeführt:
Bereich | Beschreibung |
---|---|
Malware-Forensik | Untersuchung von Schadsoftware in einer abgeschotteten VM |
Cloud-Forensik | Virtuelle Maschinen können verwendet werden, um Snapshots von Cloud-Instanzen zu erstellen und diese lokal zu analysieren. Dadurch wird die Untersuchung von Cloud-Diensten und Datenströmen ermöglicht. |
Netzwerkforensik | Virtuelle Netzwerke in VirtualBox ermöglichen das Erfassen und Analysieren von Netzwerkverkehr, um schädliche Aktivitäten oder Datenlecks zu identifizieren. |
Speicher-Forensik | Untersuchung von Speicherabbildern, um laufende Prozesse, aktive Verbindungen und geladene Module zu identifizieren. Virtuelle Maschinen können genutzt werden, um Speicher-Dumps in verschiedenen Betriebssystemen zu erstellen und zu analysieren. |
Rekonstruktionen | Rekonstruktion von kompromittierten Systemen, um Abläufe und Ergebnisse zu Untersuchen. |
Steuerung der VMs
Die Steuerung von virtuellen Maschinen kann über VirtualBox auf verschiedene Weisen erfolgen. Die gängigste Methode ist dabei wohl die Interaktion mit einer VM über die manuelle Bedienung der GUI:

Die direkte Interaktionsmöglichkeit macht durchaus in der Forensik Sinn, da manche Untersuchungsvorgänge manuell durchgeführt werden müssen. Beispielsweise in der Malware Forensik müssen sowohl Hintergrundprozesse, aber auch graphische Vorgänge untersucht werden. Jedoch trifft das nicht immer auf alle Teile der digitalen Forensik zu. Ein gängiges Vorgehen könnte wie folgt definiert werden:
- Aufsetzen eine VM.
- Auswahl eines Programms, das forensisch untersucht werden soll.
- Definition der durchzuführenden Aktion mit diesem Programm.
- Definition eines Workflows.
- Installation der Programms.
- Ausführung der definierten Aktion.
- Anfertigungen von Speicherabbilder.
- Forensische Untersuchung dieser Aktion durch auf Basis der Speicherabbilder.
Wie schon zu erkennen, kann dieses Vorgehen automatisiert werden. Der Vorteil einer Automatisierung liegt dabei ganz klar in der Fehlerelimination durch falsche, fehlerhafte oder verzögerte Eingaben/Ausführungen durch einen Nutzer.
Für systematische Ausführungen von Aktionen dieser Art kann der VirtualBox-Manager genutzt werden. Je nach Installationspfad von VirtualBox und Organisation des Dateisystems kann die ausführbare Datei VBoxManage.exe unter dem folgenden Pfad gefunden werden:
C:\Program Files\Oracle\VirtualBox\VBoxManage.exe
Einige der grundlegenden Kommandos mit VBoxManage können aus den folgenden Tabellen entnommen werden:
Allgemeine Informationen zu VirtualBox
Beschreibung | |
---|---|
VBoxManage list vms | Listet alle VMs auf. |
VBoxManage list runningvms | Listet alle laufenden VMs auf. |
VBoxManage list bridgedifs | Listet alle Bridge-Netzwerkadapter auf. |
VBoxManage list hostonlyifs | Listet alle Host-Only-Netzwerkadapter auf. |
VBoxManage list natnets | Listet alle NAT-Netzwerke auf. |
VBoxManage list dhcpservers | Listet alle DHCP-Server auf. |
VBoxManage list extpacks | Listet alle installierten Extension Packs auf. |
Grundlagen zu VMs
Befehl | Beschreibung |
---|---|
VBoxManage startvm VMName –type headless | Startet die VM im Headless-Modus. |
VBoxManage controlvm VMName poweroff | Schaltet die VM sofort aus. |
VBoxManage controlvm VMName acpipowerbutton | Simuliert das Drücken des Power-Buttons der VM. |
VBoxManage controlvm VMName reset | Setzt die VM sofort zurück. |
VBoxManage controlvm VMName pause | Pausiert die VM. |
VBoxManage controlvm VMName resume | Setzt die pausierte VM fort. |
Snapshots
Befehl | Beschreibung |
---|---|
VBoxManage snapshot VMName take SnapshotName –description Snapshot Description | Erstellt einen Snapshot der VM. |
VBoxManage snapshot VMName restore SnapshotName | Stellt die VM von einem Snapshot wieder her. |
VBoxManage snapshot VMName delete SnapshotName | Löscht einen Snapshot. |
Modifikationen
Befehl | Beschreibung |
---|---|
VBoxManage modifyvm VMName –memory 2048 | Setzt den Arbeitsspeicher der VM auf 2048 MB. |
VBoxManage modifyvm VMName –cpus 2 | Setzt die Anzahl der CPUs der VM auf 2. |
VBoxManage modifyvm VMName –vrde on | Aktiviert den VRDP-Server für die VM. |
VBoxManage modifyvm VMName –nic1 nat | Setzt den Netzwerkadapter 1 auf NAT. |
VBoxManage modifyvm VMName –nic1 bridged –bridgeadapter1 eth0 | Setzt den Netzwerkadapter 1 auf Bridged und wählt „eth0“ als Adapter. |
VBoxManage modifyvm VMName –hostonlyadapter1 vboxnet0 | Setzt den Netzwerkadapter 1 auf Host-Only und wählt „vboxnet0“ als Adapter. |
VBoxManage modifyvm VMName –macaddress1 080027123456 | Setzt die MAC-Adresse des Netzwerkadapters 1. |
VBoxManage modifyvm VMName –boot1 dvd –boot2 disk –boot3 none –boot4 none | Setzt die Boot-Reihenfolge der VM. |
VBoxManage modifyvm VMName –ioapic on | Aktiviert IO APIC für die VM. |
VBoxManage modifyvm VMName –pae on | Aktiviert PAE/NX für die VM. |
VBoxManage modifyvm VMName –nestedpaging on | Aktiviert Nested Paging für die VM. |
VBoxManage modifyvm VMName –largepages on | Aktiviert Large Pages für die VM. |
VBoxManage modifyvm VMName –clipboard bidirectional | Setzt die Zwischenablage der VM auf bidirektional. |
VBoxManage modifyvm VMName –draganddrop bidirectional | Setzt Drag-and-Drop der VM auf bidirektional. |
VBoxManage modifyvm VMName –vrdeport 5000 | Setzt den VRDE-Port der VM auf 5000. |
Gast-Kontrolle
Befehl | Beschreibung |
---|---|
VBoxManage.exe guestcontrol Schlinux run –exe „/bin/bash“ –username „username“ –password „passwd“ — -c „programm„ | Ausführen von Programmen. |
VBoxManage.exe guestcontrol „Schlinux“ run –exe „/bin/bash“ –username „username“ –password „passwd“ — -c „echo ‚passwd‚ | sudo -S apt-get install programm -y“ | Installation von Programmen mit sudo. |
VBoxManage guestcontrol VMName copyto –username username –password passwd „C:\localfile“ „/home/user/remote„ | Kopiert eine Datei von Host zu VM. |
VBoxManage guestcontrol VMName copyfrom –username username –password passwd „/home/user/remote“ „C:\localfile„ | Kopiert eine Datei von VM zu Host. |
VBoxManage guestcontrol VMName mkdir –username username –password passwd „/home/user/newdir„ | Erstellt ein Verzeichnis in der VM. |
VBoxManage guestcontrol VMName remove –username username –password passwd „/home/user/file„ | Entfernt eine Datei in der VM. |
VBoxManage guestcontrol VMName chmod –username username –password passwd 755 „/home/user/file„ | Ändert Dateiberechtigungen in der VM. |
VBoxManage guestcontrol VMName chown –username username –password passwd „user:group“ „/home/user/file„ | Ändert Dateibesitz in der VM. |
VBoxManage guestcontrol VMName reboot –username username –password passwd | Startet die VM neu. |
VBoxManage guestcontrol VMName shutdown –username username –password passwd | Fährt die VM herunter. |
VBoxManage guestcontrol VMName updateadditions | Aktualisiert die Guest Additions in der VM. |
Sonstige Interaktionen
Befehl | Beschreibung |
---|---|
VBoxManage createmedium disk –filename „DiskPath.vdi“ –size 10240 | Erstellt eine neue virtuelle Festplatte mit 10 GB. |
VBoxManage closemedium disk „DiskPath.vdi„ | Schließt eine virtuelle Festplatte. |
VBoxManage storagectl „VMName“ –name „SATA Controller“ –add sata –controller IntelAHCI | Fügt einen SATA-Controller zur VM hinzu. |
VBoxManage storageattach VMName –storagectl „SATA Controller“ –port 0 –device 0 –type hdd –medium „DiskPath.vdi“ | Hängt eine virtuelle Festplatte an die VM. |
VBoxManage storageattach VMName –storagectl „IDE Controller“ –port 1 –device 0 –type dvddrive –medium „emptydrive„ | Hängt ein leeres DVD-Laufwerk an die VM an. |
VBoxManage setextradata VMName „VBoxInternal/Devices/pcbios/0/Config/DmiBIOSVersion“ „1234„ | Setzt eine benutzerdefinierte BIOS-Version für die VM. |
VBoxManage showvminfo VMName | Zeigt Informationen über die VM an. |
VBoxManage unattended install VMName –user=username –password=passwd –full-user-name=“User“ –install-additions –iso=“path/to/iso„ | Führt eine unbeaufsichtigte Installation durch. |
VBoxManage controlvm VMName screenshotpng „screenshot.png„ | Macht einen Screenshot der VM und speichert ihn als PNG-Datei. |
VBoxManage debugvm VMName dumpvmcore –filename „path/to/memory.dmp„ | Erstellt einen Dump des Arbeitsspeichers. |
Beispielszenario
Die oben aufgeführten VBoxManage-Befehle müssen ggf. noch angepasst werden. In manchen Fällen können auch Interpretationsfehler durch falsch gesetzte Anführungszeichen oder ähnlichem zu Fehlern führen. Im Rahmen eines Beispielszenarios wurde ein kurzes PowerShell-Skript geschrieben, um die folgenden Schritte durchzuführen:
- Starten einer VM mit dem Namen Kali-Linux.
- Warten, bis VM hochgefahren wurde.
- Ausführung von test.sh innerhalb der VM.
- Erstellen eines Snapshort
- Erstellen eines Dumps des Arbeitsspeichers
- Herunterfahren der VM
Betrachtet man diese Methode der kontrollierten Ausführung von Aktionen, wird der Nutzer für forensische Untersuchungen deutlich. Für das oben beschriebenen Beispiel wurde das folgende Powershell-Skript geschrieben:
$vboxmanage_path = "C:\Program Files\Oracle\VirtualBox_6-1-4-2\"
$snapshot_name = "Sicherungspunkt-1"
$dump_file = "C:\Users\maste\Desktop\dump_file.dmp"
$vbox_name = "Kali-Linux"
$username = "root"
$passwd = "PASSWD"
# Start des Skripts
Write-Output "[*] Start des Skripts"
# Start der VM
Write-Output "[*] Navigation zu VBoxManage"
& cd "$vboxmanage_path"
Write-Output "[*] Start der VM"
& ./VBoxManage.exe startvm $vbox_name --type headless
# Warten bis VM hochgefahren wurde
Write-Output "[*] Warten, bis die VM hochgefahren wurde"
$secondsToWait = 60
for ($i = 0; $i -le $secondsToWait; $i++) {
Write-Progress -Activity "Warten, bis VM gestartet wurde" -Status "Fortschritt: $i von $secondsToWait Sekunden" -PercentComplete (($i / $secondsToWait) * 100)
Start-Sleep -Seconds 1
}
# Ausführung des Skripts test.sh innerhalb der VM
Write-Output "[*] Start des Skripts"
& ./VBoxManage guestcontrol $vbox_name run --exe "/bin/bash" --username "$username" --password "$passwd" -- -c "/root/Schreibtisch/test.sh"
# Snapshot erstellen
Write-Output "[*] Erstellen eines Snapshots"
& ./VBoxManage snapshot $vbox_name take $snapshot_name --live
# Warten, bis Snapshort erstellt wurde
Write-Output "[*] Countdown bis zum Herunterfahren der VM"
$secondsToWait = 60
for ($i = 0; $i -le $secondsToWait; $i++) {
Write-Progress -Activity "Warte, bis Shutdown durchgeführt wird" -Status "Fortschritt: $i von $secondsToWait Sekunden" -PercentComplete (($i / $secondsToWait) * 100)
Start-Sleep -Seconds 1
}
# Speicherdump erstellen
Write-Output "[*] Erstellen eines kompletten Dumps des Arbeitsspeichers"
& ./VBoxManage debugvm $vbox_name dumpvmcore --filename $dump_file
# Warten, bis Dump erstellt wurde
Write-Output "[*] Countdown bis zum Herunterfahren der VM"
$secondsToWait = 60
for ($i = 0; $i -le $secondsToWait; $i++) {
Write-Progress -Activity "Warte, bis Shutdown durchgeführt wird" -Status "Fortschritt: $i von $secondsToWait Sekunden" -PercentComplete (($i / $secondsToWait) * 100)
Start-Sleep -Seconds 1
}
# Shutdown der VM
Write-Output "[*] Herunterfahren der VM"
& ./VBoxManage controlvm Kali-Linux poweroff
# Ende des Skripts
Write-Output "[*] Ende des Skripts"
# Warten auf Benutzereingabe bevor das Skript endet
Read-Host -Prompt "Drücken Sie die Eingabetaste, um die PowerShell zu schließen"
Die oben erwähnte Datei innerhalb der VM beinhaltete die folgenden Bash-Befehle:

Das Ausführen der oben aufgeführten PowerShell-Datei erzeugte die folgende Ausgabe:

Wie aus der vorherigen Abbildung entnommen werden kann, wurden alle Schritte automatisiert ausgeführt. Das Skript lässt sich beliebig erweitern und auf verschiedene Szenarien anpassen. Dadurch werden einige (aber nicht alle) Fehlerquellen eliminiert, die bei forensischen Untersuchungen zu Fehlanalysen führen können.