128 lines
6.7 KiB
Markdown
128 lines
6.7 KiB
Markdown
|
---
|
||
|
title: "CAPEv2 Sandbox Teil 2: Einrichtung der VM(s)"
|
||
|
date: 2023-12-20T14:41:12+01:00
|
||
|
draft: 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](/img/blog/2023-cape/win7-static-ip.png)
|
||
|
|
||
|
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](/img/blog/2023-cape/win7_firew.png)
|
||
|
![Windows 7 Control Panel deaktivierte User Account Control](/img/blog/2023-cape/win7_uac.png)
|
||
|
|
||
|
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](/img/blog/2023-cape/win7-agent-json.png)
|
||
|
|
||
|
|
||
|
## 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](/img/blog/2023-cape/SPICE2VNC.png)
|
||
|
![SPICE-Audio-Zeile löschen](/img/blog/2023-cape/SPICE-Audio.png)
|
||
|
*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
|
||
|
```sh
|
||
|
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](/img/blog/2023-cape/cape_dashboard.png)
|
||
|
|
||
|
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.
|