
Motor de ingestão e processamento de Malware/IOC
_ ___ _
/\/\ __ _| | / _ (_)_ __ ___
/ \ / _` | |/ /_)/ | '_ \ / _ \
/ /\/\ \ (_| | / ___/| | |_) | __/
\/ \/\__,_|_\/ |_| .__/ \___|
|_|
MalPipe é uma estrutura modular de coleta e processamento de malware (e indicadores). Ela foi projetada para extrair malware, domínios, URLs e endereços IP de múltiplos feeds, enriquecer os dados coletados e exportar os resultados.
Neste momento, os seguintes feeds são suportados:
Estas instruções fornecerão a você uma cópia do projeto em funcionamento na sua máquina local para fins de desenvolvimento e teste. Veja a seção de implantação para notas sobre como implantar o projeto em um sistema ativo.
A implantação do MalPipe requer a instalação das bibliotecas Python necessárias e a configuração dos vários módulos.
As dependências Python podem ser instaladas executando:
pip install -r requirements.txt
Um exemplo de configuração é fornecido em config_example.json com as configurações para começar. Este arquivo contém um objeto JSON com as configurações necessárias para cada feed / processador / exportador. Uma descrição das configurações de um feed é mostrada abaixo:
...
"feeds": {
...
"MalShare": {
"ENABLED" : true,
"API_KEY" : "00000000000000000000000000000000000000000000000000000000000",
"EXPORTERS" : ["DetailsPrinter", "JSONLog"],
"PROCESSORS" : ["YaraScan", "DNSResolver"]
},
...
Como alguns feeds são atualizados diariamente, os feeds podem ter duas formas: agendados e ativos. As configurações de quando eles devem ser executados são definidas fora da configuração nos módulos individuais.
Os processadores são usados para enriquecer/padronizar os dados coletados. Por exemplo, dados do VirusTotal contêm resultados de yara para cada arquivo coletado, enquanto o MalShare não. Ao adicionar YaraScan à chave PROCESSORS, você pode escanear os arquivos para também incluir esses dados.
Um exemplo de configuração dos módulos está abaixo:
...
"processors": {
...
"YaraScan": {
"ENABLED" : false,
"RULES_PATH": "/yara_rules/Malware.yara"
},
...
Atualmente, os seguintes processadores foram implementados:
ASNLookupDNSResolverFileTypeRDNSYaraScanO componente final são os exportadores, que controlam para onde os dados vão. Eles podem ser usados para exportar dados coletados para um repositório de malware, um SIEM, arquivos de log JSON ou imprimir para o usuário.
...
"exporters": {
...
"JSONLog": {
"ENABLED" : true,
"PRETTY" : true,
"LOG_PATH": "./temp/"
},
...
Atualmente, os seguintes processadores foram implementados:
DetailsPrinterGenericWebStorageJSONLogLocalFileStorageApós a configuração, o MalPipe pode ser executado usando:
python malpipe.py
Os módulos do MalPipe estão localizados em malpipe/ por tipo:
Criar novos módulos é fácil,
Os módulos do MalPipe são definidos como classes Python. Segue um exemplo de cabeçalho 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()
As configurações podem ser definidas importando a configuração e atribuindo a variáveis de classe, conforme mostrado abaixo:
from malpipe.config import CONFIG
...
self.yara_rule_path = CONFIG['processors'][self.get_module_name()]['RULES_PATH']
Cada processador é obrigado a ter uma função run que é chamada pelo feed.
Após a criação do módulo, as configurações precisam ser adicionadas ao config.json sob a chave processors, feeds ou exporters. Se o novo módulo for um processador ou exportador, ele também precisará ser adicionado aos feeds associados. Um exemplo é mostrado abaixo:
...
"processors": {
...
"SuperNewModule": {
"ENABLED" : true,
"DOCOOLSTUFF": true
},
...
"feeds": {
...
"0DayMalwareFeed": {
"ENABLED" : true,
"EXPORTERS" : ["DetailsPrinter", "JSONLog"],
"PROCESSORS" : ["SuperNewModule"]
}
...
Por favor, relate quaisquer problemas abrindo uma issue ou iniciando um pull request. Se você tem módulos ou funcionalidades adicionais que gostaria de ver, por favor considere abrir uma issue.
Veja também a lista de contribuidores que participaram deste projeto.
Este projeto está licenciado sob a Licença Pública Geral GNU v3.0 - consulte o arquivo LICENSE.md para mais detalhes.