Die dunkle Jahreszeit ist Einbruchszeit - ein Anlass, auch die IT-Sicherheit unter die Lupe zu nehmen. In der Oktober-Ausgabe des IT-Administrator lesen Sie, ... (mehr)

Cuckoo-Betrieb

Für einen ersten Test verwenden Sie am besten die EICAR Test-Datei, die von den meisten Malware-Analyse-Systemen als Virus erkannt wird. Die Datei wird vom European Institute for Computer Antivirus Research herausgegeben und steht unter [5] zum Download zur Verfügung. Damit nicht bereits der Datei-Name ein Trigger für Cuckoo ist, wurde die Datei im Test in "readme.txt" umbenannt.

Um die Fake-Malware an Cuckoo zu senden, bestehen durchaus mehrere Möglichkeiten. So erlaubt beispielsweise das Django-Webinterface einen Upload von Dateien. Cuckoo selbst bietet eine umfangreiche API, mit der sich Malware-Samples aus eigenen Anwendungen heraus an das Management-System senden lassen. Am unkompliziertesten ist jedoch der Einsatz des Tools "submit.py" aus dem "utils"-Order von Cuckoo. Das Tool kennt eine Menge Optionen, jedoch reicht im einfachsten Fall der Aufruf mit dem Dateipfad der Malware als Parameter:

$ utils/submit.py tests/readme.txt
Success: File "/home/tscherf/cuckoo/ test/readme.txt" added as task with ID 6

Damit Cuckoo die Datei entgegennehmen kann, muss das Management-Framework natürlich zuvor mittels »python cuckoo.py« aus dem Installationsordner heraus gestartet werden, sollte dies nicht bereits geschehen sein. Sofort nach der Einlieferung eines Samples gibt Cuckoo entsprechende Meldungen auf der Console aus (Listing 3).

Listing 3: Cuckoo-Ausgabe



2016-07-25 17:37:00,192 [lib.cuckoo.core.scheduler] INFO: Starting analysis of FILE "readme.txt" (task #6, options "")
2016-07-25 17:37:00,207 [lib.cuckoo.core.scheduler] INFO: File already exists at "/home/tscherf/cuckoo/cuckoo/storage/binaries/275a021bbfb6489e54d471899f7db9d1663fc695ec2fe2a2c4538aabf651fd0f"
2016-07-25 17:37:00,335 [lib.cuckoo.core.scheduler] INFO: Task #6: acquired machine fed01 (label=fed01)
2016-07-25 17:37:00,345 [modules.auxiliary.sniffer] INFO: Started sniffer with PID 9360 (interface=virbr0, host=192.168.122.10, pcap=/home/tscherf/cuckoo/cuckoo/storage/ analyses/6/dump.pcap)
tcpdump: listening on virbr0, link-type EN10MB (Ethernet), capture size 262144 bytes
2016-07-25 17:37:02,801 [lib.cuckoo.core.guest] INFO: Starting analysis on guest (id=fed01, ip=192.168.122.10)
2016-07-25 17:39:14,711 [lib.cuckoo.core.guest] INFO: fed01: analysis completed successfully
31 packets captured
31 packets received by filter
0 packets dropped by kernel
2016-07-25 17:39:16,637 [lib.cuckoo.core.scheduler] INFO: Task #6: reports generation completed (path=/home/tscherf/cuckoo/cuckoo/ storage/analyses/6)
2016-07-25 17:39:16,755 [lib.cuckoo.core.scheduler] INFO: Task #6: analysis procedure completed

Anhand der Ausgabe lässt sich der Workflow des Tools gut erkennen. Nachdem das Sample mit dem Dateinamen "readme.txt" empfangen wurde, werden ein neuer Task zur Analyse gestartet und eine neue virtuelle Maschine auf Basis des zuvor angelegten Snapshots erzeugt. Mit der Option "--machine" lässt sich festlegen, welche virtuelle Maschine Cuckoo verwendet, wenn Sie zuvor mehrere Systeme angelegt haben, beispielsweise weil Sie unterschiedliche Betriebssysteme zur Analyse verwenden möchten.

Wenn das System läuft, findet ein Transfer der Datei statt und es startet ein Netzwerk-Sniffer, um den Netzwerkverkehr auf der Bridge festzuhalten. Die Analyse dauert in diesem Beispiel gut zwei Minuten. Im Anschluss stellt Cuckoo im Ordner "storage/analyses/reports/" die Reports zur Verfügung. Für diesen Test wurde in der Datei "reporting.conf" zuvor festgelegt, dass ein HTML-Report erzeugt werden soll. Dieser lässt sich im Anschluss dann sehr einfach in einem Webbrowser ansehen (Bild 3).

Bild 3: Ein erster Test mit dem Eicar-Virus verläuft erfolgreich.

Die eigentliche Untersuchung der Malware-Samples wird bei Cuckoo von sogenannten Analyse-Paketen durchgeführt, die im Installationsverzeichnis unterhalb von "analyzer/modules/packages/" liegen. Welches dieser Pakete zum Einsatz kommen soll, versucht Cuckoo anhand des Dateityps selbst herauszufinden. Alternativ lässt sich das entsprechende Analyse-Paket beim Upload des Samples aber auch angeben. Für die Untersuchung einer PDF-Datei könnte der Aufruf wie folgt aussehen:

$ utils/submit.py --package pdf --machine win01 evil.pdf

Cuckoo kann auch ganze Webseiten auf schadhaften Code hin untersuchen. Hierfür müssen Sie das Tool "submit.py" mit der Option "url" aufrufen:

$ utils/submit.py --url http://lexu.goggendorf.at/nukgfr2.html

Neben dem Werkzeug zum Upload von Malware-Samples stellt Cuckoo noch einige weitere interessante Utilities zur Verfügung. So lassen sich mit dem Tool "community.py" beispielsweise die aktuellsten Module für das Reporting, die Analyse und die Verarbeitung von Samples herunterladen. Das Tool "stats.py" zeigt einige Statistiken der abgeschlossenen Tasks an (Listing 4).

Listing 4: Reporting-Module



$ python utils/community.py –reporting
Downloading modules from
https://github.com/cuckoosandbox/community/archive/master.tar.gz
Installing REPORTING
$ python utils/stats.py
4 samples in db
11 tasks in db
pending 0 tasks
running 0 tasks
completed 0 tasks
recovered 0 tasks
reported 8 tasks
failed_analysis 3 tasks
failed_processing 0 tasks
failed_reporting 0 tasks
roughly 0 tasks an hour
roughly 1 tasks a day

Professionellen Anwendern der Software sei die Cuckoo-API [6] ans Herz gelegt. Hiermit lassen sich viele der hier manuell durchgeführten Jobs automatisieren und in bestehende Tools integrieren.

An dieser Stelle sei noch erwähnt, dass Cuckoo in einem Cluster-Verbund betrieben werden kann. Dies ist dann sehr hilfreich, wenn eine größere Anzahl von Tasks zeitgleich ablaufen soll. Da Cuckoo für jede Analyse eine eigene virtuelle Maschine startet, skaliert der Betrieb auf einem einzelnen Rechner ab einer bestimmten Anzahl von parallel ablaufenden Tasks nicht mehr, sodass sich ein Cluster-Setup lohnt. Für diesen Zweck stellt die Software eine REST-API zur Verfügung. Diese lässt sich verwenden, um Samples einzureichen. Das Tool "distributed/app.py" leitet die empfangenen Samples dann an einen der zuvor registrierten Cuckoo-Knoten weiter. Nähere Informationen zu diesem Thema finden sich in der recht ausführlichen Cuckoo-Dokumentation [6].

Fazit

Mit Cuckoo steht ein sehr mächtiges Werkzeug zur Analyse von Malware zur Verfügung. Dank der modularen Implementierung der Software lässt sich diese sehr leicht um eigene Module erweitern und so ideal an die eigenen Bedürfnisse anpassen. Wer sich die Software vor der Installation einmal ansehen möchte, der kann unter [7] dem freien Malware Analyse Service malwr einen Besuch abstatten. Im Backend kommt hier Cuckoo zum Einsatz.

(of)

Link-Codes

[1] Cuckoo-Projektseite: http://www.cuckoosandbox.org/

[2] Cuckoo wget-Modul: https://github.com/aspel/cuckoo/commit/f4d7960ca28bd5b5e2ec356d18056cb07ac6a8f0/

[3] Malware-Domain-List: https://www.malwaredomainlist.com/mdl.php/

[4] Installation einer virtuellen Maschine mittels KVM/libvirt und des virt-manager: http://virt-tools.org/learning/start-install-with-virt-manager/

[5] EICAR-Testdatei: http://www.eicar.org/download/eicar.com.txt/

[6] Cuckoo-Dokumentation: http://docs.cuckoosandbox.org/

[7] Cuckoo Online Service: https://malwr.com/

Ähnliche Artikel

comments powered by Disqus
Mehr zum Thema

Malware-Analyse in der Sandbox

Der Begriff der Sandbox findet sich in vielen Bereichen der digitalen Welt und bei der Analyse von Schadsoftware leistet sie mitunter wertvolle Dienste, weil sie einen speziellen Blickwinkel auf die Software und ihre Laufzeitumgebung ermöglicht. Unter Umständen verhindert eine Sandbox aber auch die Ausführung von Schadcode, da die Entwickler eine entsprechende Erkennung zum Schutz eingebaut haben. In diesem Monat beleuchtet der Security-Tipp Sandboxen als Werkzeug von Malware-Analysten und erläutert Gegenmaßnahmen der Schadsoftware-Entwickler.

Artikel der Woche

Eigene Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2020