SCANGUARD: ГИБРИДНАЯ ВЕБ-СИСТЕМА ДЛЯ ОБНАРУЖЕНИЯ ВРЕДОНОСНЫХ ФАЙЛОВ
Конференция: XCV Международная научно-практическая конференция «Научный форум: технические и физико-математические науки»
Секция: Информатика, вычислительная техника и управление

XCV Международная научно-практическая конференция «Научный форум: технические и физико-математические науки»
SCANGUARD: ГИБРИДНАЯ ВЕБ-СИСТЕМА ДЛЯ ОБНАРУЖЕНИЯ ВРЕДОНОСНЫХ ФАЙЛОВ
Аннотация. В статье представлена ScanGuard - веб-система для обнаружения потенциально вредоносных файлов. Система сочетает облегченную универсальную модель на основе интерпретируемых статических признаков, PE-специфичную модель EMBER и опциональный режим Deep Scan, который добавляет результаты VirusTotal. В работе описаны архитектура системы, конвейер сканирования, хранение истории сканов и формирование отчета. Lite-модель оценивалась на пользовательском датасете с независимой holdout-выборкой, а PE-путь - на публичном наборе признаков EMBER 2018 v2. Полученные результаты показывают, что предложенная архитектура обеспечивает быстрый локальный скрининг и более сильную классификацию PE-образцов.
Ключевые слова: обнаружение вредоносного ПО, статический анализ, машинное обучение, EMBER, VirusTotal, веб-сервис, сканирование файлов.
Введение
Доставка вредоносного ПО уже не ограничивается классическими исполняемыми файлами. Опасное содержимое попадает к пользователям через скрипты, документы, архивы, дропперы и упакованные бинарные файлы. Сигнатурные антивирусные средства по-прежнему необходимы, однако их возможности ограничены при работе с ранее неизвестными образцами и в небольших пользовательских сценариях [1, 2]. Поэтому методы машинного обучения сохраняют актуальность для статического и динамического анализа вредоносного ПО [3, 4].
Во многих исследованиях основное внимание уделяется Windows PE-файлам, поскольку этот формат содержит богатую структурную информацию и для него существуют публичные benchmark-наборы данных. Это удобно для сравнения моделей, но не решает практическую задачу небольшого веб-сканера, куда пользователи загружают файлы разных типов. Сервис, предназначенный для предварительной проверки, должен работать с текстовыми файлами, скриптами, архивами и PE-образцами в одном интерфейсе, сохраняя при этом возможность использовать более сильную специализированную модель для исполняемых файлов.
Целью работы было разработать и оценить веб-сервис, который объединяет универсальную межформатную модель и специализированную PE-ориентированную модель. Созданная система ScanGuard поддерживает режим Quick Scan для локального анализа и режим Deep Scan, который дополняет результаты внешним отчетом VirusTotal [7]. Кроме того, система сохраняет историю сканирований, формирует человекочитаемую сводку и экспортирует PDF-отчет.
Материалы и методы
ScanGuard включает статический фронтенд, backend на Node.js/Express, отдельный сервис машинного обучения на FastAPI и базу данных PostgreSQL. После загрузки файла backend создает идентификатор сканирования, сохраняет исходные метаданные, вычисляет хэш SHA-256 и передает файл в ML-сервис. Возвращенные классификация, вероятность, порог, риск-оценка и список причин объединяются в объект отчета. В режиме Deep Scan backend дополнительно запрашивает данные VirusTotal и добавляет их в итоговый отчет. Архитектура системы и сценарий сканирования показаны на рис. 1 и рис. 2.

Рисунок 1. Общая архитектура системы ScanGuard

Рисунок 2. Рабочие процессы Quick Scan и Deep Scan
Lite-модель была разработана как универсальный модуль предварительной проверки для разнородных файлов. Она вычисляет компактный набор интерпретируемых статических признаков по сырым байтам и декодированному превью: размер файла, энтропию Шеннона, долю печатных символов, количество URL, наличие EICAR-строки, командных ключевых слов, признаков макросов и длинных base64-подобных фрагментов. Эти индикаторы выбраны потому, что их можно быстро извлечь для любого файла и показать пользователю в отчете. Набор признаков приведен в табл. 1.
Lite-классификатор реализован как конвейер scikit-learn, включающий StandardScaler и LogisticRegression с параметром class_weight="balanced". Обучающая выборка хранится в data/, а data_holdout/ используется только для финальной оценки. Обучающая выборка Lite содержит 688 файлов, включая 353 безопасных и 335 вредоносных образцов. Holdout-набор содержит 132 файла, включая 75 безопасных и 57 вредоносных образцов. Датасет включает реальные безопасные файлы и синтетически расширенные безопасные и malicious-like образцы.
Для Windows PE-файлов ScanGuard может переключаться на специализированную модель, обученную на EMBER 2018 v2 - публичном benchmark-датасете для статического обнаружения вредоносных PE-файлов [5]. В проекте используется классификатор LightGBM [6], обученный на представлении признаков Parquet. Сохраненные метрики указывают на 2 381 числовой признак, максимум 200 000 обучающих образцов и 50 000 тестовых образцов в локальной конфигурации эксперимента. Определение PE-файла основано на сигнатуре MZ и типичных исполняемых расширениях.
Таблица 1.
Статические признаки, используемые в Lite-модели
|
Признак |
Описание |
Причина использования |
|
size_bytes |
Размер файла |
Позволяет различать небольшие дропперы, документы, архивы и более крупные упакованные объекты. |
|
entropy |
Энтропия Шеннона |
Высокая энтропия может указывать на упаковку, шифрование или обфускацию. |
|
printable_ratio |
Доля печатных ASCII-символов |
Помогает различать бинарное, текстовое и скриптовое содержимое. |
|
url_count |
Количество URL HTTP/HTTPS |
Подозрительные ссылки часто встречаются в фишинговых приманках и скриптах. |
|
has_eicar |
Строка EICAR |
Фиксирует стандартный антивирусный тестовый образец. |
|
has_cmd_keywords |
powershell, cmd.exe, wscript, cscript, mshta |
Выявляет паттерны командного выполнения и запуска скриптов. |
|
has_macro_keywords |
macro, vba, autoopen, document_open |
Выявляет индикаторы автоматизации документов. |
|
has_base64_like |
Длинный base64-подобный фрагмент |
Помечает возможную закодированную нагрузку или встроенные команды. |
Система возвращает не только бинарную метку. ML-сервис выдает имя движка, PE-флаг, вероятность, порог, риск-оценку от 0 до 100, извлеченные признаки и список причин. Backend дополняет эти данные метаданными файла, SHA-256, режимом сканирования, при наличии статистикой VirusTotal и краткой AI-сводкой на русском языке. Сырые данные файла в API языковой модели не отправляются. Процесс формирования отчета и сохранения результатов показан на рис. 3.

Рисунок 3. Процесс формирования отчета и сохранения истории сканирований
Результаты
С инженерной точки зрения проект достиг уровня работающего веб-сервиса, а не изолированного модельного эксперимента. Главная страница принимает загрузки и запускает сканирование. Страница отчета показывает итоговый вердикт, вероятность, risk score, причины, AI-сводку и, для Deep Scan, статистику VirusTotal. Страница benchmark считывает экспортированные JSON-метрики Lite- и EMBER-моделей. Страница history отображает сохраненные сканирования с фильтрами по режиму и движку, а также с поиском по имени файла и SHA-256.
Для Lite-модели значение ROC-AUC на holdout-наборе составляет 0.9764. При пороге 0.20 accuracy равна 0.9091, precision - 0.8358, recall - 0.9825, F1 - 0.9032. При пороге 0.50 accuracy равна 0.8864, precision - 0.9565, recall - 0.7719, F1 - 0.8544. Лучшее значение F1 на holdout-наборе в экспортированном threshold sweep составляет 0.9655 при пороге 0.25. Более низкий порог лучше подходит для скрининга, поскольку почти не пропускает вредоносные образцы в holdout-наборе, но увеличивает число ложноположительных срабатываний (табл. 2).
Таблица 2.
Основные метрики оценки моделей ScanGuard
|
Модель |
Данные |
Порог |
ROC-AUC |
Prec. |
Recall |
F1 |
Acc. |
|
Lite |
Holdout |
0.20 |
0.9764 |
0.8358 |
0.9825 |
0.9032 |
0.9091 |
|
Lite |
Holdout |
0.50 |
0.9764 |
0.9565 |
0.7719 |
0.8544 |
0.8864 |
|
EMBER |
Test |
0.50 |
0.9931 |
0.9608 |
0.9664 |
0.9636 |
- |
Для EMBER-пути экспортированные метрики показывают ROC-AUC 0.9931, precision 0.9608, recall 0.9664 и F1 0.9636 при пороге 0.50. Этот результат сильнее, чем оценка Lite-модели, что ожидаемо, поскольку EMBER работает в более узкой области, использует крупный публичный PE-датасет и более богатое представление признаков. Основные результаты оценки, доступные в текущей версии системы, приведены в табл. 2.
Обсуждение
Гибридная архитектура устраняет инженерное несоответствие между исследовательскими датасетами и пользовательскими загрузками. Один классификатор только для PE-файлов не покрывает текстовые документы, архивы и скрипты, а небольшая универсальная модель не может соперничать с сильным PE-benchmark на исполняемых файлах. Совмещение этих подходов позволяет сервису сохранять широкий охват, не отказываясь от специализированного PE-пути.
Lite-модель полезна тем, что она дешева по вычислениям и интерпретируема. Каждый признак можно показать пользователю и связать с конкретной причиной в отчете. Это особенно важно для учебных и демонстрационных сценариев, где пользователю нужны не только итоговый балл, но и краткое объяснение.
У текущего проекта есть и понятные ограничения. Lite-датасет относительно невелик и частично опирается на синтетические безопасные и malicious-like файлы. Система использует только статический анализ и не запускает образцы в песочнице, не исследует их поведение во время выполнения. PE-путь улучшает обнаружение PE-файлов, но не распространяется на не-PE форматы. Режим Deep Scan также создает компромисс по конфиденциальности, поскольку при запросе расширения VirusTotal файл должен быть отправлен во внешний сервис.
Заключение
ScanGuard объединяет облегченную универсальную модель, PE-специфичную модель EMBER, опциональное обогащение VirusTotal, постоянное хранение истории и формирование отчетов в едином веб-процессе. Текущие результаты подтверждают, что Lite-модель подходит для быстрого предварительного скрининга, а EMBER-модель дает более сильное обнаружение PE-файлов. При этом система остается практическим прототипом, а не заменой промышленным продуктам безопасности, поскольку данные Lite-модели ограничены, а динамический анализ не реализован.

