Проект по автоматизированной атрибуции неизвестных образцов вредоносного ПО на основе их схожести с известными, с использованием методов машинного обучения.
Данный проект разработан в рамках учебного курса РТУ МИРЭА и предназначен для:
- извлечения статических признаков из PE-файлов,
- объединения их с метками (семейство, бинарная принадлежность),
- обучения моделей машинного обучения для бинарной и мультиклассовой классификации,
- применения обученных моделей для классификации новых образцов.
malware-classification/
│
├── app/ # Shiny-приложение для визуализации
│
├── data/ # Данные проекта
│ ├── raw/ # Сырые данные о малвари
│ └── processed/ # Обработанные данные
│
├── docs/ # Документация проекта
│
├── scripts/ # Вспомогательные скрипты
│
└── src/ # Исходный код
├── etl/ # Модуль загрузки данных
├── ml/ # Модуль машинного обучения
└── visualization/ # Модуль визуализации
- Язык программирования: R
- ML: xgboost, caret, Matrix, data.table
- Визуализация: ggplot2, RColorBrewer
- Параллельная обработка: future.apply
- Вспомогательные: digest, stringr, zoo, reticulate
Во избежание ошибок используйте pe-only_filter.R для отбора PE-файлов
Все команды выполняются из корня проекта (malware/).
Rscript etl_extract_static_csv.R -i data/raw -o output/features.csvRscript output/merge.RRscript -e "source('MLmodule.R'); train_models()"Rscript -e "source('MLmodule.R'); res <- predict_file_batch('output/merged.csv'); print(head(res))"Rscript visml.RRscript -e "rmarkdown::render('report.Rmd')"ИЛИ полностью автоматизировано:
chmod +x run.sh
./run.sh- Для отчёта нужен установленный пакет
rmarkdownи его зависимости. - Для генерации отчёта требуется установленный Pandoc.
- Все результаты визуализации сохраняются в папку
output/visualizations/.
- etl_extract_static_csv.R — извлечение статических признаков из PE-файлов.
- output/merge.R — объединение признаков с метками, подготовка датасета для ML.
- MLmodule.R — обучение и применение моделей XGBoost.
- output/features.csv — признаки для каждого файла.
- output/merged.csv — признаки + метки (готово для ML).
- output/output4.txt — метки AVClass (md5, family, binary).
- visml.R — автоматическая генерация всех визуализаций и summary.
- output/visualizations/ — папка с PNG-графиками и summary_table.csv.
- report.Rmd — шаблон итогового отчёта (HTML).
- run.sh — bash-скрипт для полного автоматического запуска пайплайна.
- pe-only_filter.R - фильтрация PE-файлов
- family_distribution.png — распределение файлов по топ-10 семействам.
- binary_distribution.png — распределение по классам (malware/clean).
- entropy_distribution.png — гистограмма энтропии с раздельным отображением malware/clean.
- size_vs_entropy.png — scatter plot: размер vs энтропия (цвет — семейство).
- size_vs_entropy_binary.png — scatter plot: размер vs энтропия (цвет — malware/clean).
- entropy_by_family_top10.png — boxplot энтропии по топ-10 семействам.
- size_by_family_top10.png — boxplot размера по топ-10 семействам.
- summary_table.csv — основные статистики по датасету.
- Воронина Ксения
- Афанасова Дарья
- Ташланов Владимир
- Ситчихин Павел
- Эгамов Руслан
Этот проект распространяется под лицензией MIT.