MVP - http://vispstudio.ru/hack/ares/genesis/v4.html
├── LICENSE
├── README.md <- The top-level README for developers using this project.
├── data
│ ├── interim <- Intermediate data that has been transformed with additional statistic.
│ ├── processed <- The final, canonical data sets for modeling.
│ └── raw <- The original, immutable data dump.
│
│
├── models <- Trained and serialized models, model predictions, or model summaries
│
├── notebooks <- Jupyter notebooks with data analysis and model training.
│
│
├── requirements.txt <- The requirements file for reproducing the analysis environment, e.g.
│ generated with `pip freeze > requirements.txt`
│
├── images <- images with data analysis
└── src <- Source code for use in this project.
│
├── regular_app
└── app <- Scripts to parse files, share data with frontend, parse texts, get stats
├── app.py
├── bert.py
└── w2vRF.py
- git clone https://github.com/korney3/ARES_RVision_Hack
- conda create --name PhGen21 python=3.8
- conda activate cPhGen21
- pip install -r requirements.txt
- Претренированные модели можно скачать здесь
Разработка продукта для аналитиков в сфере ИБ - базы знаний, аггрегирующей источники данных с анализом угроз компьютерной безопасности, справочники с терминами, взаимосвязи между сущностями предметной области.
Задачи
- Создание системы фильтрации источников аналитики по ключевым словам
- Аннотация новых отчетов для выделения терминов, имеющих отношение к ИБ аналитике и добавления документа в базу знаний
- Подключение справочных систем (MITR и MISP)
- Визуализация взаимосвязей между сущностями предметной области ИБ
Проблема №0 (Контраст) - Маленькое количество размеченных данных/Большое число сырых данных и справочной информации
Имеющиеся размеченные данные - маленькие по объему, шумные, классы для аннотирования несбалансированы
Решение: Использование не только моделей глубоко обучения для разметки, но так же и регулярных выражений на основе справочной информации MISP
EDA данных Конвертация данных в IOB формат для построения предсказательных моделей
- Baseline BERT
В качестве бейзлайна использовалaсь предобученная на корпусе текстов естественного языка модель BERT.
- Модель хорошо улавливает тэги, присущие естественному языку -
timestamp
,org
,country
,city
- В присущих узкой области группах терминов модель путается, очень тяжелая для хранение и медленная для предсказаний
Эти выводы хорошо иллюстрирует confusion matrix.
Размеченные данные в IOB формате лежат в файле IOB_dataset_format.csv
- Word2Vec+RandomForest
- Быстрая, легкая модель
- Точность значительно уменьшается в сравнении с более продвинутым BERT
При этом на одной из самых интересующих сущностей (treat-actor
) модель демонстрирует сравнительно неплохие метрики.
Сравнение метрик качества моделей:
Для валидации была отложена 0.2 часть выборки.
Model | F1 weighted | F1 macro |
---|---|---|
BERT | 0.96 | 0.59 |
Word2Vec+RF | 0.90 | 0.24 |
- Регулярные выражения и кластеры MISP
Для разметки текстов регулярными выражениями мы воспользовались кластерами MISP, относящимися к treat_actor, malware, techniques
, собрав всевозможные синонимы для угроз, чтобы максимизировать точность поиска таких ключевых слов по аналитическим отчетам.
При помощи регулярных выражений в 0.64 сырых статей можно найти treat_actor
, а в 0.9 - malware, 'techniques
.
Кроме того кластеры MISP связаны с дополнительным источником информации MITR, куда можно напрямую обращаться за информацией по потенциальным уязвимостям или подверженным конкретной атаке ОС.
- Справочные данные
Кластеры MISP содержут набор синонимов различных терминов из сферы ИБ, позволяя объединять различные названия одного и того же процесса и облегчая поиск отчетов по схожей тематике.
- Размеченный датасет
Считая наиболее часто встречающуюся сущность за тему документа, можно выделить ее особенные признаки - из других ключевых слов. часто появляющихся рядом. Сущности-темы документов (скажем, виды атак) затем можно сравнивать, находя пересечения техник, способов захвата или уязвимостей.
На основе имеющихся размеченных данных сложно получить достаточно информации, но, при наличии бОльшего числа разметок, этот алгоритм мог бы стать информативнее.
- Word2Vec
Обучение без учителя на совместном корпусе размеченных и неразмеченных данных позволяет отслеживать интересные взаимосвязи между сущностями из разных категорий, потенциально приводя к обнаружению устойчивых закономернотей между уязвимостями, атаками и используемым вирусным ПО.
Полноценное облако точек можно увидеть здесь (время загрузки 10-15 минут).
-
Построен MVP продукта для помощи аналитикам в сфере ИБ
-
Для решения задачи аннотации текстов были применены 3 различные модели, демонстрирующие разную метрику качества на разных категориях сущностей
-
Для расширения базы знаний были задействованы внешние справочные истоники - MISP и MITR, в том числе для обнаружения синонимов
-
В качестве метода для получения взаимосязей между разными категориями сущностей была обучена модель Word2Vec, демонстрирующая любопытные сближения на облаке точек.
Egor Yusupov - Front-end, Design - @EgorYusupov
Alexandr Sarachakov - Data Scientist - @asarachakov
Alisa Alenicheva - Data Scientist - @korney3