
Baut Windows-VMs zur Malware-Analyse, damit Sie es nicht selbst machen müssen.
= Malboxes :toc: preamble :toclevels: 2 :twob: https://twitter.com/obilodeau :twhg: https://twitter.com/hugospns // github stuff ifdef::env-github[:github:]
ifndef::github[] // local logo image::docs/logos/main.svg[Malboxes Logo] endif::[]
ifdef::github[] // logo on github image::https://raw.githubusercontent.com/GoSecure/malboxes/master/docs/logos/main.svg?sanitize=true[Malboxes Logo]
.Projektstatus // Travis Build Status image:https://img.shields.io/travis/GoSecure/malboxes/master.svg[Build Status (Travis CI), link=https://travis-ci.org/GoSecure/malboxes] // BlackHat Arsenal 2017 image:https://raw.githubusercontent.com/toolswatch/badges/master/arsenal/usa/2017.svg?sanitize=true[Black Hat Arsenal, link=https://www.toolswatch.org/2017/06/the-black-hat-arsenal-usa-2017-phenomenal-line-up-announced/] // Gitter Chat image:https://badges.gitter.im/malboxes_/Lobby.svg[link="https://gitter.im/malboxes_/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge"] endif::[]
Baut Windows-VMs für Malware-Analyse, damit Sie es nicht selbst machen müssen.
https://github.com/gosecure/malboxes
== Voraussetzungen
=== Mindestanforderungen für den Build-Rechner
=== Fedora
dnf install ruby-devel gcc-c++ zlib-devel
vagrant plugin install winrm winrm-fs
=== Debian
apt install vagrant git python3-pip
=== Ubuntu
apt install git python3-pip
=== ArchLinux
pacman -Sy vagrant packer python-pip git
== Installation
=== Linux/Unix
pip install malboxes:=== Windows
HINWEIS: Seit Windows 10 läuft Hyper-V stets unter dem Betriebssystem. Da VT-X ausschließlich von einem einzigen Hypervisor betrieben werden muss, https://github.com/GoSecure/malboxes/issues/39[führt dies dazu, dass VirtualBox (und malboxes) fehlschlagen]. Um Hyper-V zu deaktivieren und VirtualBox zu ermöglichen, führen Sie den folgenden Befehl in einer administrativen Eingabeaufforderung aus und starten Sie neu: bcdedit /set hypervisorlaunchtype off
==== Mit Chocolatey
Die folgenden Schritte setzen voraus, dass Sie https://chocolatey.org/[Chocolatey] installiert haben. Folgen Sie andernfalls der <<Manually,manuelle Installationsanleitung>>.
==== Manually
C:\Windows\System32\=== Für AWS-Bereitstellung (optional) Führen Sie diesen Befehl nach der normalen Installation aus:
vagrant plugin install vagrant-aws
HINWEIS: Die AWS-Funktion wurde bisher nur unter Linux getestet und EC2 unterstützt keine 32-Bit-Desktop-Version von Windows 10.
== Verwendung
=== Box creation
Dies erstellt Ihre Basis-Box, die in Vagrant importiert wird. Danach können Sie dieselbe Box mehrmals pro Beispielanalyse wiederverwenden.
Ausführen:
malboxes build <template>
Sie können auch alle unterstützten Vorlagen auflisten mit:
malboxes list
Dies erstellt eine Vagrant-Box, die für Malware-Untersuchungen bereit ist. Sie können sie anschließend in ein Vagrantfile einfügen.
Zum Beispiel:
malboxes build win10_x64_analyst
<<_configuration,Der Konfigurationsabschnitt>> enthält weitere Informationen darüber, was mit malboxes konfiguriert werden kann.
=== Per analysis instances
malboxes spin win10_x64_analyst <name>
Dies erstellt ein Vagrantfile, das für die Malware-Analyse vorbereitet ist. Verschieben Sie es in ein Verzeichnis Ihrer Wahl und führen Sie aus:
vagrant up
Standardmäßig wird das lokale Verzeichnis im Desktop der VM freigegeben. Dies kann durch Auskommentieren des entsprechenden Teils der Vagrantfile geändert werden.
Zum Beispiel:
malboxes spin win7_x86_analyst 20160519.cryptolocker.xyz
=== Für AWS-Bereitstellung (optional)
Malboxes kann eine VM in Amazon Web Services hochladen und damit interagieren. Gehen Sie dazu wie folgt vor:
. Malboxes benötigt einen S3-Bucket in AWS, um die VM hochzuladen, bevor sie in ein AMI (Amazon Machine Image) konvertiert wird. Wenn Sie keinen haben, link:https://docs.aws.amazon.com/quickstarts/latest/s3backup/step-1-create-bucket.html[erstellen Sie jetzt einen.]
. Ihre Instanz benötigt außerdem eine link:https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#CreatingSecurityGroups[Sicherheitsgruppe] mit mindestens einer Regel, die eingehende Verbindungen für WinRM zulässt (Typ: WinRM-HTTP, Protokoll: TCP, Portbereich: 5985, Quelle: öffentliche IP des Hosts).
. Als nächstes benötigen Sie eine konfigurierte Dienstrolle vmimport. Folgen Sie dem Abschnitt VM Import Service Role in https://docs.aws.amazon.com/vm-import/latest/userguide/vmimport-image-import.html[dieser Anleitung]. Diese Schritte müssen mit einem Konto durchgeführt werden, das über die Berechtigungen iam:CreateRole und iam:PutRolePolicy verfügt.
. Wenn die <<_configuration,Standardkonfiguration>> verwendet wird, ändern Sie den Hypervisor auf aws und füllen Sie die zugehörigen Pflichtoptionen aus. Andernfalls stellen Sie sicher, dass Sie alle AWS-Optionen zu Ihrer benutzerdefinierten Konfiguration hinzufügen.
. Abschließend können Sie die gleichen Schritte wie in den Abschnitten <> und <> befolgen, um Ihre Instanz zu starten!
HINWEIS: Der AMI-Import kann sehr lange dauern (etwa eine Stunde), Sie können den Status der Aufgabe jedoch über <<AMI import status,dieses>> überprüfen. Derzeit kann pro Vorlage nur ein AMI erstellt werden.
==== AMI import status Installieren Sie awscli mit pip:
pip install awscli
link:https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html#cli-quick-configuration[Konfigurieren Sie] awscli mit:
aws configure
Dann führen Sie aus:
aws ec2 describe-import-image-tasks
==== RDP
Um über RDP eine Verbindung zu einer Instanz in der Cloud herzustellen, führen Sie diesen Befehl am gleichen Ort wie Ihre Vagrantfile aus:
vagrant rdp -- /cert-ignore
Damit dies funktioniert, benötigt die Instanz eine Sicherheitsgruppe, die eingehende RDP-Verbindungen zulässt (Typ: RDP, Protokoll: TCP, Portbereich: 3389, Quelle: öffentliche IP des Hosts).
HINWEIS: Sie können den folgenden Fehler ignorieren, da rsync noch nicht implementiert ist: No host IP was given to the Vagrant core NFS helper. This is an internal error that should be reported as a bug.
==== Stopping an Instance
Um eine Instanz in der Cloud zu stoppen, führen Sie diesen Befehl am gleichen Ort wie Ihre Vagrantfile aus:
vagrant halt
== Konfiguration
Malboxes-Konfiguration befindet sich in einem Verzeichnis, das den üblichen Betriebssystemkonventionen folgt:
~/.config/malboxes/~/Library/Application Support/malboxes/C:\Users\<username>\AppData\Local\malboxes\malboxes\Die Datei heißt config.js und wird beim ersten Start aus einer Beispielkopie erstellt. link:malboxes/config-example.js[Die Beispielkonfiguration] ist dokumentiert.
=== ESXi/vSphere-Unterstützung
Malboxes verwendet standardmäßig VirtualBox als Backend, aber seit Version 0.3.0 wurde die Unterstützung für ESXi/vSphere hinzugefügt. Hinweise zu den link:docs/esx-setup.adoc[erforderlichen Schritten für ESXi/vSphere-Unterstützung sind verfügbar]. Da jedes Setup etwas anders ist, zögern Sie nicht, ein Issue zu eröffnen, wenn Sie auf ein Problem stoßen, oder verbessern Sie unsere Dokumentation über einen Pull-Request.
=== Profile
Wir erkunden das Konzept der Profile, die getrennt von der Konfiguration gespeichert werden und zum Erstellen von Dateien, Ändern der Registrierung oder Installieren zusätzlicher Pakete verwendet werden können. Siehe link:malboxes/profile-example.js[profile-example.js] für eine Beispielkonfiguration. Diese neue Fähigkeit ist experimentell und kann sich im Zuge unserer Experimente ändern.
=== AWS-Sicherheitsgruppen
Derzeit unterstützt Malboxes nicht die automatische Erstellung von Sicherheitsgruppen, daher müssen Sie Ihre eigenen über die AWS-Konsole erstellen. Mit der Bibliothek link:https://boto3.amazonaws.com/v1/documentation/api/latest/index.html[Boto3] sollte es jedoch möglich sein, dies zu implementieren.
== Weitere Informationen
=== Videos
Einführungsvideo
image::https://img.youtube.com/vi/oq6N3WLAoe8/0.jpg[link="https://www.youtube.com/watch?v=oq6N3WLAoe8"]
=== Blog posts
=== Presentations
malboxes wurde auf der https://www.nsec.io/2016/01/applying-devops-principles-for-better-malware-analysis/[NorthSec 2016] in einem Vortrag mit dem Titel Applying DevOps Principles for Better Malware Analysis vorgestellt, gehalten von link:{twob}[Olivier Bilodeau] und link:{twhg}[Hugo Genesse]
== Lizenz
Der Code ist unter der GPLv3+ lizenziert, siehe LICENSE für Details. Dokumentation und Präsentationsmaterial sind unter der Creative Commons Attribution-ShareAlike 4.0 lizenziert, siehe docs/LICENSE für Details.
== Danksagungen
Nachdem ich die Idee für einen verbesserten Arbeitsablauf für Malware-Analysten hatte, basierend auf dem, was ich für die Entwicklung auf Linux-Servern verwendet hatte (Vagrant), googelte ich schnell, ob jemand bereits so etwas machte.
Ich fand das https://github.com/m-dwyer/packer-malware[packer-malware] Repository auf GitHub von Mark Andrew Dwyer. Malboxes wurde dank seiner Arbeit aufgebaut, die mir besonders in den Bereichen der Autounattend.xml-Dateien half.