www-jmbit-de/hugo/content/blog/2023-12-20-cape-part2.md

6.7 KiB

title date draft
CAPEv2 Sandbox Teil 2: Einrichtung der VM(s) 2023-12-20T14:41:12+01:00 false

Nach der Installation der Sandbox-Umgebung an sich kann man an die Erstellung und Installation der VMs gehen. Hier werde ich als Beispiel die Installation einer Windows 7 64bit-VM inkl. Microsoft Office 2010 (32bit) durchführen. Letztendlich gibt es jedoch keinen großen Unterschied zwischen den unterstützten Gast-Betriebssystemen (Windows 7+, MacOS oder diverse Linux-Distributionen), es ist jedoch je nach Platform mehr oder weniger Aufwand (Bei Windows 10+ muss Defender komplett deaktiviert werden und es empfiehlt sich den Großteil der Bloatware zu deinstallieren um die Hardwareanforderungen zu verringern).

Hier ist ein Beispiel der Software, die ich auf meine Windows 7-VM installiere. Der Einfachheit halber packe ich die Dateien alle zusammen in eine ISO-Datei (mithilfe von mkisofs), die ich dann an die VM anhängen kann. Ebenfalls interessant ist es, wenn man zusätzlich zu Software auch Dokumente und Bilder auf der VM ablegt, um eventuelles Ransomware-Verhalten besser beobachten zu können. Das Skript disable_win7noise.bat wird mit CAPEv2 ausgeliefert.

~ $ ls isos/win7cuckoo 
7z2301-x64.exe               OpenJDK8U-jre_x64_windows_hotspot_8u392b08.msi  windows6.1-kb2533552-x64_0ba5ac38d4e1c9588a1e53ad390d23c1e4ecd04d.msu
agent.py                     python-3.8.10.exe                               windows6.1-kb2533623-x64.msu
disable_win7noise.bat        VC_redist.x64.exe                               windows6.1-kb976932-x64_74865ef2562006e51d7f9333b4a8d45b7a749dab.exe
ndp48-x86-x64-allos-enu.exe  VC_redist.x86.exe                               Win_x64_576753_mini_installer.exe

Einstellungen im Betriebssystem

Aufgrund der Weise, wie CAPEv2 funktioniert, muss der VM eine statische IP-Addresse vergeben werden:

Win7 statische IP vergeben

Diese IP-Addresse muss dann später in der /opt/CAPEv2/conf/kvm.conf eingetragen werden. Ebenfalls sollten UAC und die Windows Firewall deaktiviert werden:

Windows 7 Control Panel deaktivierte Firewall Windows 7 Control Panel deaktivierte User Account Control

In der Regel setze ich die Auflösung der VM auch hoch, entweder auf 1280x768 oder 1920x1080. Für die Aktivierung von Windows 7 und Office 2010 muss leider - sofern man keinen KMS Server besitzt, den man diesen VMs aussetzen möchte - die Telefonische Aktivierung verwendet werden.

Bei der Installation von Python und MS-Office ist es wichtig, die 32-Bit-Variante zu verwenden, da die 64Bit-Variante leider nicht mit allen Analyseverfahren kompatibel ist.

Agent installieren

Sobald Python installiert (am besten im PATH registrieren und für alle Benutzer installieren) ist sollte noch Pillow nachinstalliert werden:

> py -m pip install --upgrade pip
> py -m pip install Pillow==9.5.0

agent.py ist der Teil der Software, der in der VM mitläuft um die Aufgaben dort auszuführen. Dieser Datei gibt man unter Windows 7 einen Unauffälligen Namen und legt sie unter C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp ab, unter Linux lässt man sie entweder von systemd oder cron beim (re)boot starten. Unter Windows 10/11 muss die Datei an einem anderen Ort abgelegt werden und dann ein Scheduled Task erstellt werden, der dieses Skript beim Boot als Admin ausführt. Langfristig habe ich geplant, den Agent und seine Dependencies mit PyInstaller zusammenzufassen.

Falls die Installation des Agents erfolgreich war, kann man nun auf port 8000 der VM einen JSON-String sehen:

Terminal Fenster mit CURL und JSON-Antwort

Konfiguration der VM in virt-manager/libvirt

Letztendlich ist noch zu empfehlen die Grafik auf VNC umzustellen von Spice und dadurch nicht mehr benötigte Geräte zu entfernen. Dabei muss jedoch ein teil des XML-Codes der VM bearbeitet werden.

Displayart von SPICE auf VNC ändern SPICE-Audio-Zeile löschen hierfür muss ggf. in den Einstellungen von Virt-Manager der "Advanced"-Modus aktiviert werden.

Diese Änderungen machen es möglich, später die Liveansicht im Webbrowser zu verwenden.

Sobald die VM fertig konfiguriert ist und der Agent erreichbar ist, muss nur noch im laufenden Zustand ein Snapshot erstellt werden.

VM in CAPE bekanntmachen

Nun muss noch die /opt/CAPEv2/conf/kvm.conf-Datei angepasst werden. In diesem Fall müssen primär "cuckoo1" durch den Namen der VM ersetzt werden (z.B. win7) und die eingetragene IP-Adresse sowie das Netzwerk angepasst werden. In meinem Fall: - cuckoo1 > win7 - 192.168.122.105 > 192.168.1.188 - virbr0 > virbr1 Dazu müssen noch die Tags hinzugefügt werden, z.B. tags = win7,msoffice2010. Bei Windows-Maschinen muss (Wie in der Config-File beschrieben), einer der Tags winxp,win7,win10,win11 hinzugefügt werden. Nun sollte CAPEv2 die VM kennen. Um dies zu testen, sollte man am besten das System noch einmal neu starten, oder alle CAPE-Dienste neu starten.

Sollte der Dienst weiterhin nicht starten, kann man mit

sudo -u cape bash -c "cd /opt/CAPEv2 &&poetry run python /opt/CAPEv2/cuckoo.py"

versuchen, das Programm manuell zu starten und eventuelle Fehler zu debuggen. Hier wird einem auch angezeigt, welche Python-Pakete noch fehlen und ggf. nachinstalliert werden müssen. Dabei sollte beachtet werden, dass diese immer als cape im /opt/CAPEv2/-Verzeichnis ausgeführt werden müssen.

root@cape:~# systemctl status cape
● cape.service - CAPE
     Loaded: loaded (/lib/systemd/system/cape.service; enabled; vendor preset: enabled)
     Active: active (running) since Wed 2023-12-27 17:23:29 UTC; 4s ago
       Docs: https://github.com/kevoreilly/CAPEv2
   Main PID: 3515 (python)
      Tasks: 1 (limit: 38183)
     Memory: 99.4M
        CPU: 4.149s
     CGroup: /system.slice/cape.service
             └─3515 /home/cape/.cache/pypoetry/virtualenvs/capev2-t2x27zRb-py3.10/bin/python cuckoo>

Reporting-Konfiguration

In der Datei /opt/CAPEv2/conf/reporting.conf muss zumindest das Reporting nach MongoDB oder Elasticsearch aktiviert werden, andere Reports können aber ebenfalls aktiviert werden (z.B. PDF-Reports, die einfach weiterzugeben sind). Nach dieser Änderung muss noch einmal der cape-Dienst neu gestartet werden (systemctl restart cape).

CAPE-Web-UI

Nun sollte hoffentlich die Web-UI erreichbar sein und funktionieren:

CAPEv2 Dashboard

Jetzt kann man unter "Submit" eine Testdatei hochladen, die analysiert werden soll. Dann heißt es nur noch warten und hoffen, dass der Report erfolgreich generiert wird und keine Fehler geworfen werden.