
Motore di acquisizione ed elaborazione di Malware/IOC
_ ___ _
/\/\ __ _| | / _ (_)_ __ ___
/ \ / _` | |/ /_)/ | '_ \ / _ \
/ /\/\ \ (_| | / ___/| | |_) | __/
\/ \/\__,_|_\/ |_| .__/ \___|
|_|
MalPipe è un framework modulare per la raccolta e l'elaborazione di malware (e indicatori). È progettato per estrarre malware, domini, URL e indirizzi IP da più feed, arricchire i dati raccolti ed esportare i risultati.
Al momento, sono supportati i seguenti feed:
Queste istruzioni ti forniranno una copia del progetto in esecuzione sulla tua macchina locale per scopi di sviluppo e test. Vedi la sezione deployment per note su come distribuire il progetto su un sistema in produzione.
Il deployment di MalPipe richiede l'installazione delle librerie Python necessarie e la configurazione dei vari moduli.
Le dipendenze Python possono essere installate eseguendo:
pip install -r requirements.txt
Un esempio di configurazione è fornito in config_example.json con le impostazioni per iniziare. Questo file contiene un oggetto JSON con le impostazioni necessarie per ogni feed/processore/esportatore. Di seguito è mostrata una descrizione delle impostazioni di un feed:
...
"feeds": {
...
"MalShare": {
"ENABLED" : true,
"API_KEY" : "00000000000000000000000000000000000000000000000000000000000",
"EXPORTERS" : ["DetailsPrinter", "JSONLog"],
"PROCESSORS" : ["YaraScan", "DNSResolver"]
},
...
Poiché alcuni feed si aggiornano quotidianamente, i feed possono essere di due forme: programmati e attivi. Le impostazioni su quando devono essere eseguiti sono definite al di fuori della configurazione nei singoli moduli.
I processori vengono utilizzati per arricchire/standardizzare i dati raccolti. Ad esempio, i dati da VirusTotal contengono i risultati Yara per ogni file raccolto, mentre MalShare no. Aggiungendo YaraScan alla chiave PROCESSORS, è possibile scansionare i file per includere anche questi dati.
Di seguito è mostrato un esempio delle impostazioni dei moduli:
...
"processors": {
...
"YaraScan": {
"ENABLED" : false,
"RULES_PATH": "/yara_rules/Malware.yara"
},
...
Attualmente, sono stati implementati i seguenti processori:
ASNLookupDNSResolverFileTypeRDNSYaraScanL'ultimo componente sono gli esportatori, che controllano dove vanno a finire i dati. Possono essere utilizzati per esportare i dati raccolti in un repository di malware, un SIEM, file di log JSON o per stamparli per l'utente.
...
"exporters": {
...
"JSONLog": {
"ENABLED" : true,
"PRETTY" : true,
"LOG_PATH": "./temp/"
},
...
Attualmente, sono stati implementati i seguenti processori:
DetailsPrinterGenericWebStorageJSONLogLocalFileStorageDopo la configurazione, MalPipe può essere eseguito utilizzando:
python malpipe.py
I moduli per MalPipe si trovano in malpipe/ per tipo:
Creare nuovi moduli è semplice,
I moduli di MalPipe sono definiti come classi Python. Di seguito è mostrato un esempio di intestazione di modulo:
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()
Le impostazioni possono essere impostate importando la configurazione e assegnandole a variabili di classe, come mostrato di seguito:
from malpipe.config import CONFIG
...
self.yara_rule_path = CONFIG['processors'][self.get_module_name()]['RULES_PATH']
Ogni processore deve avere una funzione run che viene chiamata dal feed.
Dopo la creazione del modulo, le impostazioni devono essere aggiunte al file config.json sotto la chiave processors, feeds o exporters. Se il nuovo modulo è un processore o un esportatore, deve anche essere aggiunto ai feed associati. Un esempio è mostrato di seguito:
...
"processors": {
...
"SuperNewModule": {
"ENABLED" : true,
"DOCOOLSTUFF": true
},
...
"feeds": {
...
"0DayMalwareFeed": {
"ENABLED" : true,
"EXPORTERS" : ["DetailsPrinter", "JSONLog"],
"PROCESSORS" : ["SuperNewModule"]
}
...
Segnala eventuali problemi aprendo una issue o avviando una pull request. Se hai moduli o funzionalità aggiuntive che vorresti vedere, considera l'apertura di una issue.
Vedi anche la lista dei contributori che hanno partecipato a questo progetto.
Questo progetto è concesso in licenza sotto la GNU General Public License v3.0 - vedi il file LICENSE.md per i dettagli.