
Moteur d'ingestion et de traitement de Malware/IOC
_ ___ _
/\/\ __ _| | / _ (_)_ __ ___
/ \ / _` | |/ /_)/ | '_ \ / _ \
/ /\/\ \ (_| | / ___/| | |_) | __/
\/ \/\__,_|_\/ |_| .__/ \___|
|_|
MalPipe est un framework modulaire de collecte et de traitement de malwares (et d'indicateurs). Il est conçu pour extraire des malwares, domaines, URL et adresses IP de multiples flux, enrichir les données collectées et exporter les résultats.
Actuellement, les flux suivants sont pris en charge :
Ces instructions vous permettront d'obtenir une copie du projet en fonctionnement sur votre machine locale à des fins de développement et de test. Consultez la section déploiement pour savoir comment déployer le projet sur un système en production.
Le déploiement de MalPipe nécessite l'installation des bibliothèques Python requises et la configuration des différents modules.
Les dépendances Python peuvent être installées en exécutant :
pip install -r requirements.txt
Un exemple de configuration est fourni dans config_example.json avec des paramètres pour démarrer. Ce fichier contient un objet JSON avec les paramètres requis pour chaque flux / processeur / exportateur. Une description des paramètres d'un flux est présentée ci-dessous :
...
"feeds": {
...
"MalShare": {
"ENABLED" : true,
"API_KEY" : "00000000000000000000000000000000000000000000000000000000000",
"EXPORTERS" : ["DetailsPrinter", "JSONLog"],
"PROCESSORS" : ["YaraScan", "DNSResolver"]
},
...
Comme certains flux se mettent à jour quotidiennement, les flux peuvent se présenter sous deux formes : planifiés et actifs. Les paramètres déterminant leur exécution sont définis en dehors de la configuration, dans les modules individuels.
Les processeurs sont utilisés pour enrichir / normaliser les données collectées. Par exemple, les données de VirusTotal contiennent les résultats yara pour chaque fichier collecté, contrairement à MalShare. En ajoutant YaraScan à la clé PROCESSORS, vous pouvez analyser les fichiers pour inclure également ces données.
Un exemple de paramètres de modules est présenté ci-dessous :
...
"processors": {
...
"YaraScan": {
"ENABLED" : false,
"RULES_PATH": "/yara_rules/Malware.yara"
},
...
Actuellement, les processeurs suivants ont été implémentés :
ASNLookupDNSResolverFileTypeRDNSYaraScanLes derniers composants sont les exportateurs, qui contrôlent la destination des données. Ils peuvent être utilisés pour exporter les données collectées vers un référentiel de malwares, un SIEM, des fichiers journaux JSON ou les afficher pour l'utilisateur.
...
"exporters": {
...
"JSONLog": {
"ENABLED" : true,
"PRETTY" : true,
"LOG_PATH": "./temp/"
},
...
Actuellement, les exportateurs suivants ont été implémentés :
DetailsPrinterGenericWebStorageJSONLogLocalFileStorageAprès configuration, MalPipe peut être exécuté en utilisant :
python malpipe.py
Les modules de MalPipe se trouvent sous malpipe/ par type :
Créer de nouveaux modules est simple.
Les modules de MalPipe sont définis comme des classes Python. Voici un exemple d'en-tête de module :
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()
Les paramètres peuvent être définis en important la configuration et en les affectant à des variables de classe, comme illustré ci-dessous :
from malpipe.config import CONFIG
...
self.yara_rule_path = CONFIG['processors'][self.get_module_name()]['RULES_PATH']
Chaque processeur doit avoir une fonction run qui est appelée par le flux.
Après la création du module, les paramètres doivent être ajoutés au fichier config.json sous la clé processors, feeds ou exporters. Si le nouveau module est un processeur ou un exportateur, il devra également être ajouté aux flux associés. Un exemple est présenté ci-dessous :
...
"processors": {
...
"SuperNewModule": {
"ENABLED" : true,
"DOCOOLSTUFF": true
},
...
"feeds": {
...
"0DayMalwareFeed": {
"ENABLED" : true,
"EXPORTERS" : ["DetailsPrinter", "JSONLog"],
"PROCESSORS" : ["SuperNewModule"]
}
...
Veuillez signaler tout problème en créant une issue ou en soumettant une pull request. Si vous avez des modules ou fonctionnalités supplémentaires que vous souhaiteriez voir, veuillez envisager d'ouvrir une issue.
Voir aussi la liste des contributeurs qui ont participé à ce projet.
Ce projet est sous licence GNU General Public License v3.0 - voir le fichier LICENSE.md pour plus de détails.