Compare commits
	
		
			No commits in common. "5ea408247379a44f56cc36b79fe7e39724e77dbc" and "ed0bd30a4574e25e5ea2a243cd0e5cbdac155bd2" have entirely different histories.
		
	
	
		
			5ea4082473
			...
			ed0bd30a45
		
	
		
| 
						 | 
					@ -1,127 +0,0 @@
 | 
				
			||||||
---
 | 
					 | 
				
			||||||
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:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||

 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
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:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||

 | 
					 | 
				
			||||||

 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
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:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||

 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
  
 | 
					 | 
				
			||||||
## 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. 
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||

 | 
					 | 
				
			||||||

 | 
					 | 
				
			||||||
*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:
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
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.
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,8 +0,0 @@
 | 
				
			||||||
---
 | 
					 | 
				
			||||||
title: "CAPEv2 Sandbox Teil 3: Interaktive Analyse"
 | 
					 | 
				
			||||||
date: 2023-12-27
 | 
					 | 
				
			||||||
draft: true
 | 
					 | 
				
			||||||
---
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
| 
		 Before Width: | Height: | Size: 190 KiB  | 
| 
		 Before Width: | Height: | Size: 189 KiB  | 
| 
		 Before Width: | Height: | Size: 112 KiB  | 
| 
		 Before Width: | Height: | Size: 227 KiB  | 
| 
		 Before Width: | Height: | Size: 308 KiB  | 
| 
		 Before Width: | Height: | Size: 63 KiB  | 
| 
		 Before Width: | Height: | Size: 416 KiB  | 
| 
		 Before Width: | Height: | Size: 45 KiB  |