VirtualBox Performance mit Ubuntu 18.04

Ich habe bei mir einige Systeme auf die derzeit aktuelle Version 18.04 von Ubuntu Linux aktualisiert. Auf diesen Systemen kommt auch VirtualBox als Virtualisierungslösung zum Einsatz.

Im aktuellen Fall ist der VirtualBox-Host Ubuntu 18.04 und die virtuellen Gäste laufen unter Ubuntu Linux 16.04. Die Migration des Hosts erfolgte von Ubuntu 16.04 auf 18.04 und hatte in Bezug auf VirtualBox eine quasi identische Konfiguration (außer der neueren Version von VirtualBox).

Leider kam es bei der neuen Installation zu fiesen Performance Problemen, so dass sogar ein Tippen auf der SSH-Konsole bei den virtuellen Gästen gelaggt hat.

Des Rätsels Lösung war bei mir, dass einige virtuelle Maschinen die Option „IOAPIC“ nicht gesetzt hatten. Das ganze ließ sich mit dem folgenden Befehl schnell beheben:

vboxmanage modifyvm <name-vm> --ioapic on

Dazu muss die virtuelle Maschine mit Hilfe von VirtualBox einmal ausgeschaltet werden. Es empfiehlt sich ein kompletter Shutdown und nicht nur Suspend-to-Disk per ACPI-Event.

Update: Übrigens ein schönes RTFM-Thema – es wird so auch an diversen Stellen im Handbuch erwähnt, dass die Option für 64 Bit Gastsysteme zu aktivieren ist.

Memory Dumps mit VirtualBox

Ich war grad ein wenig am Rumspielen mit der forensischen Analyse von Hauptspeicher-Dumps. Dabei find ich es ganz praktisch, mit Dumps von virtuellen Maschinen zu arbeiten, weil man dann deutlich einfacher herumexperimentieren kann.

Die Standard-Methode um dann einen Hauptspeicher-Image zu erstellen, wäre dann wohl die Nutzung von win32dd (resp. win64dd). Allerdings ändert das natürlich wieder die RAM-Inhalte, wenn das Tool gestartet wird. Und warum sollte man das akzeptieren, wenn der ganze Server sowieso virtualisiert läuft?

Nach ein wenig Recherche bin ich auf diese großartige Seite von Philippe Teuwen gestoßen. Dort werden gleich 2 Methoden zur Erstellung von RAM-Images von VirtualBox-Servern beschrieben.

Die erste ist funktioniert über die Debug-Schnittstelle und muss über die Debug-Konsole aufgerufen werden. Vorteil hierbei ist, dass direkt ein rohes Speicherimage erstellt wird, dass mit bspw. volatility weiterverarbeitet werden kann. Nachteil ist, dass die virtuelle Maschine explizit im Debug-Modus gestartet sein muss. Ist das nicht der Fall, so ist ein Reboot notwendig. Zu beachten ist auch, dass bei Nutzung des .pgmphystofile-Befehls der anzugebende Dateiname keine Minus-Zeichen enthält, da sonst die etwas missverständliche Fehlermeldung erscheint, der Befehl sei noch nicht implementiert.

Die zweite Methode geht mit Hilfe des VBoxManage-Tools und dem dort enthaltenen debugvm-Befehl. Vorteil hierbei ist, dass dieser Befehl einfach auf beliebige laufende virtuelle Server angewandt werden kann. Nachteil ist, dass damit kein „rohes“ Speicherimage erstellt wird, sondern neben dem Hauptspeicher weitere Informationen in der Datei abgelegt werden. Hierzu hat der Autor allerdings ein kleines Skript für volatility entwickelt, dass die Hauptspeicher-Informationen on-the-fly abgreifen kann.