Malware-Analyse - Do-It-Yourself

Bauen Sie Ihre eigene Schadsoftware-Analyse-Sandbox, um schnell das Verhalten von unbekannten Dateien zu überprüfen. Dieser Artikel zeigt, wie das mit der kostenlosen Open-Source-Sandbox Cuckoo funktioniert.

In Pocket speichern vorlesen Druckansicht
Malware-Analyse - Do-It-Yourself
Lesezeit: 15 Min.
Von
  • Holger Unterbrink
Inhaltsverzeichnis

Zur dynamischen Analyse von potentieller Schadsoftware benutzt man ein Sandbox-System. Das führt die Dateien in einer gesicherten, meist virtuellen Umgebung aus und registriert dabei alle Systemzugriffe. Im professionellen Bereich werden häufig kommerzielle Systeme wie Ciscos Threat Grid eingesetzt, die von den Herstellern gepflegt werden und auch von unerfahrenen Analysten recht einfach einzusetzen sind. Allerdings haben diese Systeme ihren Preis; IT-Studenten oder andere an Schadsoftware Interessierte können sich mit Cuckoo ein kostenloses Sandbox-Analyse-System mit vielen Finessen selber erstellen (vorgestellt etwa in c't 19/2017: Blick hinter die Kulissen - Schädlingsanalyse mit Cuckoo Sandbox).

c't stellt dabei auch einige Online-Dienste wie malwr.com vor, die auf Cuckoo beruhen (aktuell nicht erreichbar) und eine schnelle Analyse einer verdächtigen Datei erlauben. Der vorliegende heise-Security-Artikel hingegen gibt konkrete Starthilfe für den Aufbau und Einsatz einer eigenen Sandbox mit Cuckoo. Doch bevor es ans Eingemachte geht: Es sollte jedem klar sein, dass das Hantieren mit Schadsoftware immer eine Gefahr bedeutet, sich aus Versehen selber zu infizieren. Deshalb vorab einige Regeln und der gute Rat diese wirklich strikt einzuhalten:

  1. Ausführbare Dateien nie mit echter Endung speichern – also nicht als "malware.exe". Benennen Sie solche Dateien um. Fügen Sie einen Unterstrich oder Ähnliches hinzu, also "malware.exe_". Das verhindert, dass Sie die Datei aus Versehen ausführen. Ein Doppel-Klick ist schneller passiert als man denkt.
  2. Beim Austausch mit Anderen packen Sie die Schadsoftware in ein passwortgeschütztes Archiv (z.B. 7-Zip). Das hat den Vorteil, dass etwa der AV-Scanner auf dem Mail-Gateway die Datei nicht löscht. Als Standardpasswort für solche Fälle hat sich in der Security-Szene "infected" etabliert.
  3. Schadsoftware auf produktiven Systemen zu analysieren, ist Russisches Roulett. Es ist daher eine gute Idee, für die Analyse eine separate Maschine oder zumindest eine virtuelle Maschine (VM) zu benutzen.
  4. Die Analyse-Maschine sollte leicht und schnell wieder herstellbar sein. Am leichtesten geht das mit Snapshots von VMs.
  5. Der Name der Schadsoftware Datei ist in aller Regel für die Funktion uninteressant. Dateien werden meist an Hand des MD5- oder SHA-Hashes identifiziert. Viele Researcher legen Dateien deshalb gleich unter ihrem Hash ab, also etwa als: 07dab1e46585e90dd9fc1d82b572d454102e09e25e50fc634145dd999b440ee7.exe_.
  6. Es gibt Schadsoftware, die den eigenen Dateinamen auf häufig von Analysten verwendete Namen checkt und den Dienst verweigert, wenn sie etwa sample.exe heißt. Deshalb benennen Sie die Datei etwa in aaaa.exe um bevor Sie sie der Sandbox übergeben.
  7. Benutzen Sie einen VPN-Tunnel, damit Schadsoftware, die mit ihrem Command and Control Server (C&C) kommuniziert ihre echte externe IP-Adresse nicht finden kann. Ich empfehle einen VPN-Tunnel, der im eigenen Land terminiert ist, da sich insbesondere Ransomware zum Teil je nach Land unterschiedlich verhält.

Prinzipiell funktioniert Cuckoo wie folgt: Die Cuckoo-Sandbox-Software wird auf dem Ubuntu-Host (PC) installiert. Diese in Python geschriebene Software kontrolliert und steuert die Ausführung des zu testenden Samples in einer Virtuellen Maschine (VM). In folgenden Beispiel ist dort ein Windows 7 installiert und Oracles VirtualBox fungiert als Hypervisor. Cuckoo unterstützt zwar auch diverse andere Setups mit VMware, XEN, KVM oder echter Hardware. Das folgende orientiert sich aber der Einfachheit halber an dem beschriebenen Szenario.

Als Host-System für Cuckoo fungiert häufig ein Linux, auf dem etwa Virtualbox Analyse-VMs bereit stellt.

Seit Version 2.0 hat sich die Installation von Cuckoo deutlich vereinfacht. Unter anderem muss man die vielen Abhängigkeiten nicht mehr von Hand auflösen; die meiste Arbeit übernimmt der Python Installer PIP. Wenn Sie ein aktuelles Ubuntu Server 16.04.3 LTS als Host-OS installieren, können Sie der Installations-Anleitung auf der Cuckoo Homepage folgen. Allerdings gibt es ein paar Klippen, die man elegant umschiffen kann. Hier deshalb ein kurzer Leitfaden mit Tipps für die Installation. (Erste Anmerkung: Das Ganze funktioniert auch, wenn Sie den Ubuntu-Host in einer VM installieren. Dazu muss man allerdings doppelte Virtualisierung erlauben und die Hardware muss das unterstützen. Der Autor benutzt VMware Workstation für ein solches Setup. Um in der VM einen weiteren Hypervisor (VirtualBox in diesem Fall) auszuführen, muss man bei VMware das Feature "Virtualize Intel VT-x/EPT or AMD-V/RVI" in den VM-Settings unter "Processor" einschalten.)

  1. Ubuntu Server 16.04.3 LTS installieren und auf den aktuellen Stand bringen
  2. Graphische Umgebung z.B. XFCE4 installieren
  3. Cuckoo Abhängigkeiten wie in der Doku beschrieben installieren
    • Python, PIP, SSL, etc.
    • MongoDB, um später Cuckoo via Browser zu benutzen
    • tcpdump installieren und Apparmor/setcap-Rechte setzen
    • Volatility für Memory-Snapshot-Analysen installieren (optional)
    • SNORT oder Surricata zur Network-Traffic-Analyse (optional)
  4. Cuckoo installieren
    • Ich benutze die globale Installation, kein Python virtual environment.
      Das ist jedoch Geschmackssache.

    • sudo pip install -U pip setuptools
    • sudo pip install -U cuckoo
  5. VirtualBox installieren
  6. Auf dem Ubuntu-Host Routing erlauben und Firewall konfigurieren
    • Vorher muss über Preferences/Network/Host-only im VirtualBox-Manager
      ein host-only Adapter erstellt werden
    • sudo sysctl -w net.ipv4.ip_forward=1
    • sudo iptables …
  7. Windows 7 in VirtualBox-VM installieren
    • Network Adapter "Host-only" für die VM benutzen (vboxnet0)
    • Windows-Updates abschalten
    • Python und Python Pillow (für Screenshots) installieren
    • Windows 7 Firewall und UAC ausschalten
    • Statische IP-Adresse vergeben (für virtualbox.conf s.u. merken)
    • Als DNS-Server z.B. Googles DNS-Server 8.8.8.8 benutzen
    • Cuckoo-Agent auf Windows-7-VM installieren und starten
      • Den Agenten findet man in der Cuckoo Installation, z.B. ~/.cuckoo/agent/agent.py
      • agent.py in agent.pyw umbenennen und man hat kein CMD-Fenster in der VM
      • Den Agenten kann man in ein ISO Image kopieren und dieses in die VM via VirtualBoxManager-GUI als CD einhängen oder man benutzt einen lokalen http-Server, um Dateien mit der VM auszutauschen.
    • Weitere Applikationen installieren: MS Office, PDF-Reader, Flash, etc.
      • Achtung: Seien Sie sehr vorsichtig, um die VM nicht bereits in diesem Stadium mit Schadsoftware zu infizieren. Insbesondere sollten Sie nicht in der VM im Internet stöbern, um Software herunterzuladen. Besser ist es, die zu installierenden Applikationen auf einem sicheren PC herunterzuladen und auf ein ISO Image zu kopieren. Es macht dabei durchaus Sinn, absichtlich ältere Versionen der Applikationen zu installieren.
    • Überprüfen Sie ob die Internet Verbindung funktioniert
  8. Snapshot der VM erstellen (Snapshot-Namen für die Cuckoo-Konfiguration merken)
  9. Cuckoo konfigurieren

Die Cuckoo-Dokumentation beschreibt die einzelnen Konfigurationsdateien en Detail. Sie finden sie im Cuckoo-Installationspfad, also unter ~/.cuckoo/conf. Sofern Sie sich an den Leitfaden oben gehalten haben, müssen Sie für einen ersten Start mindestens folgendes konfigurieren:

virtualbox.conf
mode = gui # Um mit der VM zu interagieren
machines = Win7x64-001 # Namen der Vbox VM
# Tip: ‚VBoxManage list vms‘ zeigt die installierten VMs
[cuckoo1] ändern auf [Win7x64-001] # Name der Vbox-VM
label = cuckoo1 ändern in label = Win7x64-001 # Name der Vbox-VM
ip = 192.168.56.25 # IP Adresse aus der Vbox-VM
snapshot = Snapshot1
# Der Name muss exakt mit dem
# im VirtualBox Manager übereinstimmen
reporting.conf
[mongodb]
enabled = yes
# MongoDB für das Web-Frontend einschalten
processing.conf (optional)
[virustotal]
enabled = yes
# Virustotal AV-Check einschalten

Danach noch schnell mit einem Kommandozeilenbefehl die Community-Signaturen updaten:

$ cuckoo community

Das lädt Signaturen für die Verhaltensmuster, die Cuckoo benutzt, um automatisch verdächtiges Verhalten des Samples zu entdecken. Damit ist die Installation geschafft! Jetzt kann es losgehen.