Code Monkey home page Code Monkey logo

korney3 / ares_rvision_hack Goto Github PK

View Code? Open in Web Editor NEW
3.0 1.0 3.0 58.34 MB

Разработка продукта для аналитиков в сфере ИБ - базы знаний, аггрегирующей источники данных с анализом угроз компьютерной безопасности, справочники с терминами, взаимосвязи между сущностями предметной области.

License: MIT License

Shell 0.07% Python 3.77% Jupyter Notebook 91.88% HTML 4.28%

ares_rvision_hack's Introduction

R-Vision Phystech Genesis Hack 21

ARES TEAM

MVP - http://vispstudio.ru/hack/ares/genesis/v4.html

Project Organization

├── 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

Установка

  1. git clone https://github.com/korney3/ARES_RVision_Hack
  2. conda create --name PhGen21 python=3.8
  3. conda activate cPhGen21
  4. pip install -r requirements.txt
  5. Претренированные модели можно скачать здесь

Описание проекта

Разработка продукта для аналитиков в сфере ИБ - базы знаний, аггрегирующей источники данных с анализом угроз компьютерной безопасности, справочники с терминами, взаимосвязи между сущностями предметной области.

Задачи

  1. Создание системы фильтрации источников аналитики по ключевым словам
  2. Аннотация новых отчетов для выделения терминов, имеющих отношение к ИБ аналитике и добавления документа в базу знаний
  3. Подключение справочных систем (MITR и MISP)
  4. Визуализация взаимосвязей между сущностями предметной области ИБ

Технические особенности

Проблема №0 (Контраст) - Маленькое количество размеченных данных/Большое число сырых данных и справочной информации

Имеющиеся размеченные данные - маленькие по объему, шумные, классы для аннотирования несбалансированы

alt-текст

3_baseline_oneHot.ipynb

Решение: Использование не только моделей глубоко обучения для разметки, но так же и регулярных выражений на основе справочной информации MISP

EDA данных Конвертация данных в IOB формат для построения предсказательных моделей

Предсказательные модели

  1. Baseline BERT

В качестве бейзлайна использовалaсь предобученная на корпусе текстов естественного языка модель BERT.

  • Модель хорошо улавливает тэги, присущие естественному языку - timestamp, org, country, city
  • В присущих узкой области группах терминов модель путается, очень тяжелая для хранение и медленная для предсказаний

Эти выводы хорошо иллюстрирует confusion matrix.

alt-текст

Fine-Tuning модели BERT

Размеченные данные в IOB формате лежат в файле IOB_dataset_format.csv

  1. Word2Vec+RandomForest
  • Быстрая, легкая модель
  • Точность значительно уменьшается в сравнении с более продвинутым BERT

При этом на одной из самых интересующих сущностей (treat-actor) модель демонстрирует сравнительно неплохие метрики.

alt-текст

Обучение модели W2Vec и RF

Сравнение метрик качества моделей:

Для валидации была отложена 0.2 часть выборки.

Model F1 weighted F1 macro
BERT 0.96 0.59
Word2Vec+RF 0.90 0.24
  1. Регулярные выражения и кластеры MISP

Для разметки текстов регулярными выражениями мы воспользовались кластерами MISP, относящимися к treat_actor, malware, techniques, собрав всевозможные синонимы для угроз, чтобы максимизировать точность поиска таких ключевых слов по аналитическим отчетам.

При помощи регулярных выражений в 0.64 сырых статей можно найти treat_actor, а в 0.9 - malware, 'techniques.

Кроме того кластеры MISP связаны с дополнительным источником информации MITR, куда можно напрямую обращаться за информацией по потенциальным уязвимостям или подверженным конкретной атаке ОС.

Поиск связей между сущностями

  1. Справочные данные

Кластеры MISP содержут набор синонимов различных терминов из сферы ИБ, позволяя объединять различные названия одного и того же процесса и облегчая поиск отчетов по схожей тематике.

  1. Размеченный датасет

Считая наиболее часто встречающуюся сущность за тему документа, можно выделить ее особенные признаки - из других ключевых слов. часто появляющихся рядом. Сущности-темы документов (скажем, виды атак) затем можно сравнивать, находя пересечения техник, способов захвата или уязвимостей.

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

alt-текст

  1. Word2Vec

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

Полноценное облако точек можно увидеть здесь (время загрузки 10-15 минут).

Выводы

  1. Построен MVP продукта для помощи аналитикам в сфере ИБ

  2. Для решения задачи аннотации текстов были применены 3 различные модели, демонстрирующие разную метрику качества на разных категориях сущностей

  3. Для расширения базы знаний были задействованы внешние справочные истоники - MISP и MITR, в том числе для обнаружения синонимов

  4. В качестве метода для получения взаимосязей между разными категориями сущностей была обучена модель Word2Vec, демонстрирующая любопытные сближения на облаке точек.

Контакты

Egor Yusupov - Front-end, Design - @EgorYusupov

Alexandr Sarachakov - Data Scientist - @asarachakov

Alisa Alenicheva - Data Scientist - @korney3

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.