
Incarcero ist ein Tool, das virtuelle Maschinen (VMs) erstellt, die ohne jegliche Benutzerinteraktion mit Malware-Analyse-Tools und auf die Malware-Analyse zugeschnittenen Sicherheitseinstellungen vorkonfiguriert sind.
Malware-Analyse ist wie das Entschärfen von Bomben. Das Ziel ist es, ein Programm zu zerlegen und zu verstehen, das dazu gebaut wurde, Schaden anzurichten, und das oft verschleiert (d. h. gepackt) ist, um die Analyse zu erschweren.
Incarcero ist ein Werkzeug, das virtuelle Maschinen (VMs) erstellt, die mit Malware-Analyse-Werkzeugen und Sicherheitseinstellungen vorkonfiguriert sind, die auf die Malware-Analyse zugeschnitten sind, ohne dass eine Benutzerinteraktion erforderlich ist.
Darüber hinaus enthält dieses Repository wahrscheinlich die größte Malware-Quellcode-Sammlung sowie ein Modul, mit dem man Malware-Beispiele aus beliebten Online-Datenbanken herunterladen kann.
Hinweis: Binärdateien mit generischen Namen wie MD5-Wert oder smbXXX.tmp wurden von VirusTotal zum Zeitpunkt des Hochladens nicht als Malware erkannt, aber das bedeutet nicht, dass es sich nicht um eine Malware-Stichprobe handelt. Bitte zögern Sie nicht, alle Beispiele in diesem Repository einzurichten, zu analysieren und einem Reverse Engineering zu unterziehen. Wenn Sie dies tatsächlich tun, lassen Sie mich die Ergebnisse Ihrer Untersuchung wissen.
dnf install ruby-devel gcc-c++ zlib-devel
vagrant plugin install winrm winrm-fs
apt install vagrant git python3-pip
apt install git python3-pip
pacman -Sy vagrant packer python-pip git
sudo pip3 install git+https://github.com/0x48piraj/incarcero.git#egg=incarcero
Hinweis: Ab Windows 10 läuft Hyper-V immer unterhalb des Betriebssystems. Da VT-X ausschließlich von genau einem Hypervisor betrieben werden muss, führt dies dazu, dass VirtualBox (und incarcero) fehlschlagen. Um Hyper-V zu deaktivieren und VirtualBox die Ausführung zu ermöglichen, führen Sie den folgenden Befehl in einer administrativen Eingabeaufforderung aus und starten Sie dann neu: bcdedit /set hypervisorlaunchtype off. Ab Version 6 von Virtualbox wird die Verwendung von Hyper-V als Fallback-Ausführungskern unterstützt (Changelog).
Die folgenden Schritte setzen voraus, dass Sie https://chocolatey.org/[Chocolatey] installiert haben. Andernfalls befolgen Sie die manuelle Installationsanleitung.
Abhängigkeiten installieren:
choco install python vagrant packer git virtualbox
Konsole aktualisieren:
refreshenv
incarcero installieren:
pip3 install setuptools
pip3 install -U git+https://github.com/0x48piraj/incarcero.git#egg=incarcero
C:\Windows\System32\pip3 install setuptools
pip3 install -U git+https://github.com/0x48piraj/incarcero.git#egg=incarcero
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.
Dies erstellt Ihre Basis-Box, die in Vagrant importiert wird. Danach können Sie dieselbe Box mehrmals für die Analyse von Stichproben wiederverwenden.
Führen Sie aus:
incarcero build <template>
Sie können auch alle unterstützten Vorlagen auflisten mit:
incarcero list
Dies erstellt eine Vagrant-Box, die für Malware-Untersuchungen bereit ist und die Sie anschließend in eine Vagrantfile aufnehmen können.
Zum Beispiel:
incarcero build win10_x64_analyst
Der Abschnitt Konfiguration enthält weitere Informationen darüber, was mit incarcero konfiguriert werden kann.
incarcero spin win10_x64_analyst <name>
Dadurch wird eine Vagrantfile erstellt, die für die Malware-Analyse vorbereitet ist. Verschieben Sie sie 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 geändert werden, indem der entsprechende Teil der Vagrantfile auskommentiert wird.
Zum Beispiel:
incarcero spin win7_x86_analyst 20160519.cryptolocker.xyz
incarcero kann eine VM in den Amazon Web Services hochladen und mit ihr interagieren. Gehen Sie dazu wie folgt vor:
. incarcero benötigt einen S3-Bucket auf AWS, um die VM hochzuladen, bevor sie in ein AMI (Amazon Machine Image) konvertiert wird. Wenn Sie keinen haben, erstellen Sie jetzt einen.
. Ihre Instanz benötigt außerdem eine 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.
Befolgen Sie den Abschnitt VM Import Service Role in diesem Leitfaden.
Diese Schritte müssen mit einem Konto ausgeführt werden, das über die Berechtigungen iam:CreateRole und iam:PutRolePolicy verfügt.
. Wenn die Standardkonfiguration verwendet wird, ändern Sie den Hypervisor auf aws und füllen Sie die zugehörigen Pflichtoptionen aus. Andernfalls fügen Sie unbedingt alle AWS-bezogenen Optionen zu Ihrer benutzerdefinierten Konfiguration hinzu.
. Schließlich können Sie die gleichen Schritte befolgen, die in den Abschnitten Box-Erstellung und Instanzen pro Analyse beschrieben sind, um Ihre Instanz zu starten!
Hinweis: Der AMI-Import kann sehr lange dauern (etwa eine Stunde). Sie können den Status der Aufgabe jedoch überprüfen, indem Sie dies tun. Derzeit kann pro Vorlage nur ein AMI erstellt werden.
Installieren Sie awscli mit pip:
pip install awscli
Konfigurieren Sie awscli mit:
aws configure
Führen Sie dann aus:
aws ec2 describe-import-image-tasks
Um über RDP eine Verbindung zu einer Instanz in der Cloud herzustellen, führen Sie diesen Befehl an derselben Stelle 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 bedenkenlos 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.
Um eine Instanz in der Cloud zu stoppen, führen Sie diesen Befehl an derselben Stelle wie Ihre Vagrantfile aus:
vagrant halt
Die Konfiguration von incarcero befindet sich in einem Verzeichnis, das den üblichen Konventionen des Betriebssystems folgt:
~/.config/incarcero/~/Library/Application Support/incarcero/C:\Users\<username>\AppData\Local\incarcero\incarcero\Die Datei heißt config.js und wird beim ersten Start aus einer Beispieldatei kopiert. Die Beispielkonfiguration ist dokumentiert.
incarcero verwendet standardmäßig virtualbox als Backend, aber seit Version 0.3.0 wurde Unterstützung für ESXi / vSphere hinzugefügt. Hinweise zu den erforderlichen Schritten für die ESXi-/vSphere-Unterstützung sind verfügbar. Da die Umgebung jedes Einzelnen ein wenig 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.
Wir untersuchen derzeit das Konzept der Profile, die getrennt von der Konfiguration gespeichert werden und verwendet werden können, um Dateien zu erstellen, die Registrierung zu ändern oder zusätzliche Pakete zu installieren. Siehe profile-example.js für eine Beispielkonfiguration. Diese neue Funktion ist experimentell und kann sich ändern, während wir damit experimentieren.
Derzeit unterstützt incarcero die automatische Erstellung der Sicherheitsgruppen nicht, sodass Sie die AWS-Konsole verwenden müssen, um Ihre eigenen zu erstellen. Mit der Bibliothek Boto3 sollte es jedoch einen Weg geben, dies zu implementieren.
Dieses Repository dient ausschließlich Forschungszwecken. Die Verwendung dieses Codes liegt in Ihrer Verantwortung.
Ich übernehme KEINE Verantwortung und/oder Haftung dafür, wie Sie sich entscheiden, den hier verfügbaren Quellcode zu verwenden. Durch die Verwendung einer der in diesem Repository verfügbaren Dateien verstehen Sie, dass Sie DER NUTZUNG AUF EIGENES RISIKO ZUSTIMMEN. Noch einmal: ALLE hier verfügbaren Dateien dienen ausschließlich BILDUNGS- und/oder FORSCHUNGSZWECKEN.
Ich bin nicht der Autor des hier verfügbaren Codes. Dieses Repository enthält online durchgesickerte Malware-Quellcode-Beispiele (die auch in mehreren anderen Quellen zu finden sind). Ich habe sie auf GitHub hochgeladen, um denjenigen, die den Code analysieren möchten, den Prozess zu vereinfachen.
Alle Handlungen und/oder Aktivitäten im Zusammenhang mit dem in diesem Repository enthaltenen Material liegen ausschließlich in Ihrer Verantwortung. Missbrauch der Informationen in diesem Repository kann dazu führen, dass gegen die betreffenden Personen Strafanzeigen erhoben werden. Ich werde nicht haftbar gemacht, falls Strafanzeigen gegen Personen erhoben werden, die den Code in diesem Repository missbrauchen, um gegen das Gesetz zu verstoßen.
Dieses Repository fördert keine hackingbezogenen Aktivitäten. Alle Informationen in diesem Repository dienen nur Bildungszwecken.
Dieses Projekt wurde mit Hilfe von malboxes wiederbelebt.