
Malware/IOC-Erfassungs- und Verarbeitungs-Engine
_ ___ _
/\/\ __ _| | / _ (_)_ __ ___
/ \ / _` | |/ /_)/ | '_ \ / _ \
/ /\/\ \ (_| | / ___/| | |_) | __/
\/ \/\__,_|_\/ |_| .__/ \___|
|_|
MalPipe ist ein modulares Framework zum Sammeln und Verarbeiten von Malware (und Indikatoren). Es ist darauf ausgelegt, Malware, Domains, URLs und IP-Adressen aus mehreren Feeds abzurufen, die gesammelten Daten anzureichern und die Ergebnisse zu exportieren.
Derzeit werden folgende Feeds unterstützt:
Diese Anleitung verschafft Ihnen eine Kopie des Projekts, die Sie zu Entwicklungs- und Testzwecken auf Ihrem lokalen Rechner zum Laufen bringt. Informationen zur Bereitstellung des Projekts auf einem Live-System finden Sie im Abschnitt zur Bereitstellung.
Für die Bereitstellung von MalPipe müssen die erforderlichen Python-Bibliotheken installiert und die verschiedenen Module konfiguriert werden.
Python-Abhängigkeiten können durch Ausführen von folgendem Befehl installiert werden:
pip install -r requirements.txt
Eine Beispielkonfiguration finden Sie in config_example.json mit Einstellungen für den Einstieg. Diese Datei enthält ein JSON-Objekt mit den erforderlichen Einstellungen für jeden Feed / Prozessor / Exporteur. Eine Beschreibung der Einstellungen eines Feeds ist unten dargestellt:
...
"feeds": {
...
"MalShare": {
"ENABLED" : true,
"API_KEY" : "00000000000000000000000000000000000000000000000000000000000",
"EXPORTERS" : ["DetailsPrinter", "JSONLog"],
"PROCESSORS" : ["YaraScan", "DNSResolver"]
},
...
Da einige Feeds täglich aktualisiert werden, können Feeds in zwei Formen vorliegen: geplant und aktiv. Einstellungen dafür, wann diese ausgeführt werden sollen, sind außerhalb der Konfiguration in den einzelnen Modulen definiert.
Prozessoren dienen dazu, die gesammelten Daten anzureichern/zu standardisieren. Beispielsweise enthalten Daten von VirusTotal Yara-Ergebnisse für jede gesammelte Datei, während MalShare dies nicht tut. Durch Hinzufügen von YaraScan zum PROCESSORS-Schlüssel können Sie die Dateien scannen, um auch diese Daten einzubeziehen.
Ein Beispiel für Moduleinstellungen finden Sie unten:
...
"processors": {
...
"YaraScan": {
"ENABLED" : false,
"RULES_PATH": "/yara_rules/Malware.yara"
},
...
Derzeit wurden die folgenden Prozessoren implementiert:
ASNLookupDNSResolverFileTypeRDNSYaraScanDer letzte Bestandteil sind Exporteure; diese steuern, wohin die Daten gehen. Sie können verwendet werden, um gesammelte Daten in ein Malware-Repository, ein SIEM, JSON-Protokolldateien zu exportieren oder für den Benutzer auszugeben.
...
"exporters": {
...
"JSONLog": {
"ENABLED" : true,
"PRETTY" : true,
"LOG_PATH": "./temp/"
},
...
Derzeit wurden die folgenden Exporteure implementiert:
DetailsPrinterGenericWebStorageJSONLogLocalFileStorageNach der Einrichtung kann MalPipe mit folgendem Befehl ausgeführt werden:
python malpipe.py
Module für MalPipe befinden sich unter malpipe/ nach Typ:
Neue Module zu erstellen ist einfach,
MalPipe-Module werden als Python-Klassen definiert. Nachfolgend ein Beispiel für einen Modul-Header:
class ModuleName(Processor):
def __init__(self):
md = ProcessorDescription(
module_name="ModuleName",
description="Description",
authors=["Author Name"],
version="VersionNumber"
)
Processor.__init__(self, md)
self.types = ['ipaddresses']
self.parse_settings()
Einstellungen können durch Importieren der Konfiguration und Setzen auf Klassenattribute festgelegt werden, wie unten gezeigt:
from malpipe.config import CONFIG
...
self.yara_rule_path = CONFIG['processors'][self.get_module_name()]['RULES_PATH']
Jeder Prozessor muss über eine run-Funktion verfügen, die vom Feed aufgerufen wird.
Nach der Erstellung des Moduls müssen Einstellungen zur config.json unter dem Schlüssel processors, feeds oder exporters hinzugefügt werden. Wenn das neue Modul ein Prozessor oder Exporteur ist, muss es auch zu den zugehörigen Feeds hinzugefügt werden. Ein Beispiel ist unten dargestellt:
...
"processors": {
...
"SuperNewModule": {
"ENABLED" : true,
"DOCOOLSTUFF": true
},
...
"feeds": {
...
"0DayMalwareFeed": {
"ENABLED" : true,
"EXPORTERS" : ["DetailsPrinter", "JSONLog"],
"PROCESSORS" : ["SuperNewModule"]
}
...
Bitte melden Sie Probleme, indem Sie ein Issue erstellen oder einen Pull-Request starten. Wenn Sie zusätzliche Module oder Funktionen wünschen, erwägen Sie bitte, ein Issue zu eröffnen.
Siehe auch die Liste der Mitwirkenden, die an diesem Projekt mitgearbeitet haben.
Dieses Projekt ist unter der GNU General Public License v3.0 lizenziert – siehe die Datei LICENSE.md für Details.