O Malpighi é um software desenvolvido para o trabalho de conclusão do curso de Ciência da Computação da Universidade Federal de Sergipe. Com o objetivo de desenvolver um projeto modularizado capaz de classificar malwares em suas correspondentes famílias, o Malpighi
Para a aplicação prática desse projeto é recomendado o uso de uma máquina virtual para isolamento dos arquivos de descompilação do malwares
- Sistema Operacional: Windows 10 ou superior
- Distribuição de Análise: FlareVM
- RAM: 16GB
A partir do FlareVM serão instalados e configurados os softwares destinados a análise de malware, incluindo o DensityScout, responsável pela geração das densidades dos bytes dos arquivos de descompilação.
Caso deseje utilizar algorítimos de classificação como XGBoost, que usam a placa de vídeo para o processamento, configure a máquina virtual com "GPU Passtrough", "GPU Bridge" ou equivalente
Este projeto é livre para uso e distribuição, sendo solicitado apenas a referência ao documento referente ao TCC realizado.
- Link para o Trabalho: ☢️ TODO: no aguardo da publicação no Repositório Institucional (UFS) ☢️
@article {
title = {"Malpighi: um modelo de classificação de malwares baseado em processamento de linguagem natural"},
authors = "Marcos Santos",
year = {2025},
url=☢️ Aguardando publicação no Repositório Institucional (UFS) ☢️
}😊 Sua contribuição é sempre bem-vinda, com comentários, reports de issues e desenvolvimento de novos trabalhos.
Para instalar a versão as bibliotecas correspondentes ao arquivo requirements.txt, recomenda-se utilizar o python 3.10 e o código a seguir para devida instalação das bibliotecas:
$ python3 -m pip install -r requirements.txtAinda, deve-se instalar a base de amostras que será utilizada para aplicação dos métodos de classificação.
Recomenda-se o uso da base Microsoft Malware Challange Dataset, disponível na plataforma Kaggle.
O atual cenário do projeto requer que os malware estejam descompilados em 2 tipos de arquivos .asm e .bytes, este contendo os endereçoes e bytes do executável e aquele contendo contendo seção, endereço, bytes e instruções.
Esse processo pode ser feito manualmente pelo IDAPRO ou por algum parser especializado em tal ação.
Após o download da base, os arquivos devem ser descompactados na pasta malwares.
Para execução dos argumentos utilize '--' (hífen duplo) ou '-' (hífen único), sendo esse útimo utilizado para o modo simplificado, conforme exemplo a seguir:
# Chamada por argumentos em modo verboso
$ python3 malphigi --batch_init 5000 --corpus_input ./corpus
# Chamadas por argumentos em modo simplificado
$ python3 malphigi -bs 1000 -cpi ./corpus| Nome do argumento | Nome simplificado | Descrição |
|---|---|---|
batch_init |
bi |
Número inicial do processamento das amostras. |
batch_size |
bs |
Quantidade de amostras a serem processadas. |
byte_count_input |
bci |
Caminho para o arquivo CSV contendo a contagem de bytes das amostras. |
byte_count_output |
bco |
Caminho para o arquivo CSV a ser salvo a contagem de bytes das amostras. |
corpus_input |
cpi |
Caminho da pasta contendo os arquivos de corpus de instruções já processadas. |
corpus_output |
cpo |
Caminho da pasta contendo os arquivos de corpus de instruções a serem salvos. |
database_distribution |
dst |
Caminho para o arquivo CSV contendo dados das amostras para exibição da distribuição da base. |
database_size |
dsz |
Atributo opcional para exibição da distribuição dos tamanhos de arquivo. |
features_output |
fo |
Caminho do arquivo CSV onde as features processadas serão armazenadas. |
features_input |
fi |
Caminho do arquivo CSV contendo as features já processadas. |
predictions_output |
po |
Caminho para o arquivo onde serão salvas as predições realizadas. |
train_input |
tri |
Caminho para o diretório contendo os arquivos de descompilação para divisão de treino. |
test_input |
tei |
Caminho para o diretório contendo os arquivos de descompilação da divisão de treino da base (aquelas que serão preditas). |
threads |
t |
Número de threads utilizadas no processamento do projeto. |
