Skip to content

Latest commit

 

History

26 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Классификация вредоносного программного обеспечения

Проект по автоматизированной атрибуции неизвестных образцов вредоносного ПО на основе их схожести с известными, с использованием методов машинного обучения.

Описание

Данный проект разработан в рамках учебного курса РТУ МИРЭА и предназначен для:

  • извлечения статических признаков из 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/).

1. Извлечение признаков из PE-файлов

Rscript etl_extract_static_csv.R -i data/raw -o output/features.csv

2. Объединение признаков с метками

Rscript output/merge.R

3. Обучение моделей

Rscript -e "source('MLmodule.R'); train_models()"

4. Классификация новых файлов

Rscript -e "source('MLmodule.R'); res <- predict_file_batch('output/merged.csv'); print(head(res))"

5. Генерация визуализаций

Rscript visml.R

6. Генерация HTML-отчёта

Rscript -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.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages