
Motor de ingesta y procesamiento de malware/IOC
_ ___ _
/\/\ __ _| | / _ (_)_ __ ___
/ \ / _` | |/ /_)/ | '_ \ / _ \
/ /\/\ \ (_| | / ___/| | |_) | __/
\/ \/\__,_|_\/ |_| .__/ \___|
|_|
MalPipe es un framework modular de recolección y procesamiento de malware (e indicadores). Está diseñado para extraer malware, dominios, URLs y direcciones IP de múltiples fuentes, enriquecer los datos recolectados y exportar los resultados.
Actualmente, se admiten las siguientes fuentes:
Estas instrucciones te permitirán obtener una copia del proyecto y ponerlo en funcionamiento en tu máquina local para propósitos de desarrollo y pruebas. Consulta la sección de despliegue para notas sobre cómo implementar el proyecto en un sistema en producción.
El despliegue de MalPipe requiere instalar las bibliotecas de Python necesarias y configurar los distintos módulos.
Las dependencias de Python se pueden instalar ejecutando:
pip install -r requirements.txt
Se proporciona un ejemplo de configuración en config_example.json con ajustes para empezar. Este archivo contiene un objeto JSON con los ajustes necesarios para cada fuente/procesador/exportador. A continuación se muestra una descripción de los ajustes de una fuente:
...
"feeds": {
...
"MalShare": {
"ENABLED" : true,
"API_KEY" : "00000000000000000000000000000000000000000000000000000000000",
"EXPORTERS" : ["DetailsPrinter", "JSONLog"],
"PROCESSORS" : ["YaraScan", "DNSResolver"]
},
...
Dado que algunas fuentes se actualizan a diario, las fuentes pueden ser de dos tipos: programadas y activas. Los ajustes sobre cuándo deben ejecutarse se definen fuera de la configuración en los módulos individuales.
Los procesadores se utilizan para enriquecer/estandarizar los datos recolectados. Por ejemplo, los datos de VirusTotal contienen resultados de yara para cada archivo recolectado, mientras que MalShare no. Al agregar YaraScan a la clave PROCESSORS, puedes escanear los archivos para incluir también estos datos.
A continuación se muestra un ejemplo de los ajustes de un módulo:
...
"processors": {
...
"YaraScan": {
"ENABLED" : false,
"RULES_PATH": "/yara_rules/Malware.yara"
},
...
Actualmente, se han implementado los siguientes procesadores:
ASNLookupDNSResolverFileTypeRDNSYaraScanLos componentes finales son los exportadores, que controlan a dónde van los datos. Se pueden usar para exportar los datos recolectados a un repositorio de malware, un SIEM, archivos de registro JSON o imprimirlos para el usuario.
...
"exporters": {
...
"JSONLog": {
"ENABLED" : true,
"PRETTY" : true,
"LOG_PATH": "./temp/"
},
...
Actualmente, se han implementado los siguientes procesadores:
DetailsPrinterGenericWebStorageJSONLogLocalFileStorageDespués de la configuración, MalPipe se puede ejecutar usando:
python malpipe.py
Los módulos de MalPipe se encuentran en malpipe/ por tipo:
Crear nuevos módulos es fácil,
Los módulos de MalPipe se definen como clases de Python. A continuación se muestra un ejemplo de cabecera de módulo
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()
Los ajustes se pueden establecer importando la configuración y asignándolos a variables de clase, como se muestra a continuación:
from malpipe.config import CONFIG
...
self.yara_rule_path = CONFIG['processors'][self.get_module_name()]['RULES_PATH']
Cada procesador debe tener una función run que es llamada por la fuente.
Después de crear el módulo, se deben agregar los ajustes al archivo config.json bajo la clave processors, feeds o exporters. Si el nuevo módulo es un procesador o exportador, también deberá agregarse a las fuentes asociadas. A continuación se muestra un ejemplo:
...
"processors": {
...
"SuperNewModule": {
"ENABLED" : true,
"DOCOOLSTUFF": true
},
...
"feeds": {
...
"0DayMalwareFeed": {
"ENABLED" : true,
"EXPORTERS" : ["DetailsPrinter", "JSONLog"],
"PROCESSORS" : ["SuperNewModule"]
}
...
Por favor, reporta cualquier problema creando un issue o iniciando un pull request. Si tienes módulos o características adicionales que te gustaría ver, considera abrir un issue.
Consulta también la lista de contribuyentes que participaron en este proyecto.
Este proyecto está licenciado bajo la GNU General Public License v3.0 - consulta el archivo LICENSE.md para más detalles.