Решаемая задача — это прикладная задача информационной безопасности в области анализа текста (лингвистика). Исходная постановка задачи: построить интерфейс сбора, описания и аналитики угроз по реальным документам — довольно широка и предполагает достаточную свободу действий участников.
Результатом может быть программа, ML-модель, иная реализация, которая позволит решать прикладные задачи сбора и анализа неструктурированных данных об угрозах в области информационной безопасности. Предпочтение будет отдаваться наиболее законченным решениям, которым будут решать целостную (end-to-end) задачу.
В качестве входных данных мы предлагаем использовать датасет аналитических threat intelligence-отчетов за период с 2007 по 2020 год, сконвертированный в формат *.txt
. Небольшая часть датасета предварительно размечена для тех (кто решится пойти ML-путем).
Отчеты исследователей — прекрасный по качеству источник данных TI. Отчеты содержат в себе профильтрованные и проанализированные специалистами выводы, причинно-следственные связи, наименования вредоносных кампаний, вредоносного ПО, группировок, индикаторы компрометации и взаимосвязи этих сущностей, которые имеют немалую ценность для аналитиков, занимающихся реагированием на инциденты (incident response).
Оценивая ваши решения, мы будем отдавать приоритет решениям, которые:
- Наиболее близко решают описанную проблему
- Техническая часть
- Общие требования
- Код ДОЛЖЕН быть в открытом репозитории Github. Не надо svn, mercurial и zip-архивов с файликами. Readme в корне проекта будет расцениваться как уважение к экспертам хакатона.
- Backend:
- Чистота и структурированность кодовой базы
- Комменты в неясных / сложных местах
- Корректная обработка ошибок
- Адекватное потребление ресурсов
- Frontend:
- плавность и отзывчивость интерфейса
- чистота и структурированность кодовой базы
- Стек технологий максимально близок к тому, что был заявлен. Кстати, если встанет вопрос TS vs JS — TS будет в плюс! Важное замечание: мы не будем препятствовать иным технологиям, если они более удобны для решения конкретных задач — но важно аргументировать свой выбор.
- Frontend: React
- Backend: Node.js (Python для ML — ок)
- RDBMS: PostgreSQL
- Для решений с ML:
- Полнота данных
- Точность данных
- Пожелания
- Простота развертывания/запуска — решение можно легко развернуть и проверить вживую на своем окружении. Контейнеры для Docker — прям хорошо, docker-compose для развертывания целостного решения — супер!. Но наличие
docker-compose.yml
будет оцениваться как акт благородства.
- Простота развертывания/запуска — решение можно легко развернуть и проверить вживую на своем окружении. Контейнеры для Docker — прям хорошо, docker-compose для развертывания целостного решения — супер!. Но наличие
- Общие требования
APT_CyberCriminal_Campaign_Collections
— исходные сырые данные, из которых был получен датасет в*.txt
. Присутствует в репозитории исключительно for reference.converted
— рабочий датасет TI-отчетов, предлагаемый для выполнения задания хакатона. Датасет представляет собой структуру директорий, разбитую по годам, в каждой директории лежат файлы*.txt
. То есть, для обработки всех*.txt
нужно рекурсивно обойти все директории от корневой директории набора данных (датасета).marked
— размеченная часть датасета, для джедаев, решивших пойти путем машинного обучения для реализации собственного решения.
Из текста удобно выделять именованные объекты и присваивать этим объектам теги. Ниже перечислены примеры объектов (сущностей), которые могут встречаться в наборе данных (датасете), а также примеры источников, где можно найти справочники этих объектов (сущностей) — это лишь примеры, вероятно в сети Интернет можно найти более полные примеры.
- https://malpedia.caad.fkie.fraunhofer.de/families
- https://github.com/mitre/cti/tree/master/enterprise-attack/malware
- https://raw.githubusercontent.com/mitre-attack/attack-website/master/data/stix/enterprise-attack.json
- https://docs.oasis-open.org/cti/stix/v2.1/cs01/stix-v2.1-cs01.html#_oxlc4df65spl
- https://github.com/MISP/misp-galaxy/tree/main/clusters
- https://github.com/mitre/cti/tree/master/enterprise-attack/course-of-action
- https://github.com/mitre/cti/tree/master/capec/course-of-action
- https://github.com/mitre/cti/tree/master/enterprise-attack/attack-pattern
- https://github.com/mitre/cti/tree/master/capec/attack-pattern
- https://docs.oasis-open.org/cti/stix/v2.1/cs01/stix-v2.1-cs01.html#_k2b7lkt45f0i
- https://docs.oasis-open.org/cti/stix/v2.1/cs01/stix-v2.1-cs01.html#_oogrswk3onck
- https://github.com/MISP/misp-galaxy/blob/main/clusters/sector.json
- https://attack.mitre.org
- https://raw.githubusercontent.com/mitre/cti/master/enterprise-attack/enterprise-attack.json
- ipv4
- ipv6
- domain
- url
- registry key
- md5
- sha1
- sha256
- sha512
- ssdeep
- STIX™ Vocabularies: https://docs.oasis-open.org/cti/stix/v2.1/cs01/stix-v2.1-cs01.html#_izngjy1g98l2
- https://github.com/MISP/misp-galaxy
Для выделенных объектов:
- Иметь ссылку на их позицию в документе
- Взаимосвязи и их характер (типы, направленность) по отношению к иным выделенным объектам
- Английский
- https://www.microsoft.com/security/blog/2019/08/08/from-unstructured-data-to-actionable-intelligence-using-machine-learning-for-threat-intelligence/
- https://github.com/jivoi/awesome-ml-for-cybersecurity
- https://habr.com/ru/post/516098/
- https://t.me/natural_language_processing/23530
- https://habr.com/ru/post/530878/
Примеры выделенных объектов и их атрибутов из датасета вы можете посмотреть в директории ./ner_examples