Как стать автором
Обновить
R-Vision
Разработчик систем кибербезопасности

Threat Intelligence по полочкам: разбираемся в стандартах обмена данными

Время на прочтение21 мин
Количество просмотров15K

Подходы к обмену данными об угрозах находятся в активной фазе формирования и стандартизации. Сегодня есть пара значимых стандартов — MISP и STIX — и целая плеяда менее значимых, которые реже используются или считаются legacy/deprecated: MAEC, IODEF, OpenIOC (Cybox), CAPEC, VERIS и множество иных. При этом порядочное количество community-фидов до сих пор распространяется в виде txt или csv, а также в виде человекочитаемых аналитических сводок, бюллетеней и отчетов. 

В статье я разберу более-менее общепринятые практики обмена данными о киберугрозах: специализированные стандарты и форматы общего назначения, предназначенные не только для обмена TI. Какие-то сугубо проприетарные, редкие и «собственные велосипеды» форматов рассматривать не буду. Также пока за бортом оставлю тематические блоги, новостные порталы, сообщества в мессенджерах и иные источники TI в человекочитаемых форматах. Сегодня фокус на машиночитаемых форматах.

Формат STIX

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

  • Выразительность

  • Гибкость

  • Расширяемость

  • Автоматизируемость

  • Читаемость

Над STIX идет активная работа, регулярно выпускаются новые редакции. Стандарт поддерживает организация OASIS, её комитет по cyber threat intelligence объединяет более 50 компаний, собаку съевших на работе с TI. Поэтому развитие стандарта — это путь обобщения лучших практик, ошибок и выводов, которые были сделаны опытными специалистами в этой области.

STIX является языком описания для обмена данными TI и вводит набор сущностей, а также определяет возможные типы взаимосвязей между ними. Стандарт довольно объемный, поэтому в этой статье я не буду погружаться во все его детали.

Согласно спецификации, STIX заявлен как serialize-agnostic, однако на практике чаще всего используется формат JSON, схемы находятся в публичном репозитории на GitHub. Транспорт для STIX тоже может быть любым, но OASIS позаботился и об этом: параллельно со STIX развивается стандарт для транспорта TAXII, который использует HTTPS как фундамент.

STIX описывает данные об угрозах как связный граф, где узлами являются SDO (STIX Domain Objects), а ребрами — SRO (STIX Relationship objects).

В качестве SDO STIX определяет следующие сущности:

  1. Схема атаки (Attack pattern) — описывает подход (TTP), который использовал злоумышленник для взлома своей цели. Эта сущность используется для классификации атак, обобщения конкретных атак в соответствии со схемами, которым они следуют, и предоставления подробной информации о том, как атаки выполняются.

  2. Вредоносная кампания (Campaign) — описывает последовательность вредоносных поведенческих признаков, которые возникают на протяжении определенных промежутков времени.

  3. План действий (Course of action) — описывает меры, которые нужно принять, чтобы избежать или противостоять атаке.

  4. Личность (Identity) — описывает персоны, организации либо их группы.

  5. Индикатор (Indicator) — описывает технические вредоносные артефакты, которые могут быть использованы для обнаружения вредоносной активности (например, IP-адреса, домены, хеши, ключи реестра).

  6. Intrusion set — описывает набор поведенческих признаков и ресурсов с общими свойствами, которые, вероятней всего, подконтрольны одной организации. Ключевое отличие от Campaign в том, что последняя обычно представляет собой вредоносную активность, направленную на конкретную цель и длится в течение ограниченного промежутка времени, тогда как Intrusion set длится продолжительное время, может участвовать в нескольких Campaigns и иметь несколько целей.

  7. Вредоносное ПО (Malware) — описывает экземпляры вредоносного ПО.

  8. Объект наблюдения (Observed data) — описывает не вредоносные технические артефакты.

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

  10. Злоумышленник (Threat actor) — описывает персон, группы или организации, которые действуют со злым умыслом. Если коротко, злоумышленники и хакеры. Именно злой умысел в мотивации этой сущности отличает ее от Identity.

  11. Инструмент (Tool) — описывает легитимное ПО, которое может быть использовано для осуществления атак. Отличие этой сущности от Malware именно в том, что это легитимный софт, например, nmap или RDP, VNC.

  12. Уязвимость (Vulnerability) — описывает недостатки/дырки в требованиях, логике, дизайне, реализации ПО или железа, которые могут быть проэксплуатированы и негативно повлиять на конфиденциальность, целостность или доступность системы.

Приведенные выше наборы сущностей и взаимосвязей позволяют описывать в понятном виде данные, которые могут использоваться машиной. Давайте посмотрим на паре примеров.

Пример №1

Здесь описывается индикатор компрометации http://x4z9arb.cn/4712/ типа URL и его связь (атрибуция) с вредоносным ПО x4z9arb backdoor. При этом явно видно, что индикатор — это сайт, на котором располагается вредоносный загрузчик (downloader), в данном случае вредонос x4z9arb backdoor. 

Что это значит для аналитика? Все довольно просто: если мы обнаружим следы присутствия (индикатор компрометации http://x4z9arb.cn/4712/) в инфраструктуре компании, то можем сделать вывод, что имеем дело с вредоносным ПО x4z9arb backdoor. Дальнейшие шаги обычно зависят от вредоносности ПО, попавшего внутрь инфраструктуры. Для его анализа существует множество баз, например, Malpedia.

Пример STIX 2.1
{

    "type": "bundle",

    "id": "bundle--56be2a3b-1534-4bef-8fe9-602926274089",

    "objects": [

        {

            "type": "indicator",

            "spec_version": "2.1",

            "id": "indicator--d81f86b9-975b-4c0b-875e-810c5ad45a4f",

            "created": "2014-06-29T13:49:37.079Z",

            "modified": "2014-06-29T13:49:37.079Z",

            "name": "Malicious site hosting downloader",

            "description": "This organized threat actor group operates to create profit from all types of crime.",

            "indicator_types": [

                "malicious-activity"

            ],

            "pattern": "[url:value = 'http://x4z9arb.cn/4712/']",

            "pattern_type": "stix",

            "valid_from": "2014-06-29T13:49:37.079Z"

        },

        {

            "type": "malware",

            "spec_version": "2.1",

            "id": "malware--162d917e-766f-4611-b5d6-652791454fca",

            "created": "2014-06-30T09:15:17.182Z",

            "modified": "2014-06-30T09:15:17.182Z",

            "name": "x4z9arb backdoor",

            "description": "This malware attempts to download remote files after establishing a foothold as a backdoor.",

            "malware_types": [

                "backdoor",

                "remote-access-trojan"

            ],

            "is_family": false,

            "kill_chain_phases": [

                {

                    "kill_chain_name": "mandiant-attack-lifecycle-model",

                    "phase_name": "establish-foothold"

                }

            ]

        },

        {

            "type": "relationship",

            "spec_version": "2.1",

            "id": "relationship--864af2ea-46f9-4d23-b3a2-1c2adf81c265",

            "created": "2020-02-29T18:03:58.029Z",

            "modified": "2020-02-29T18:03:58.029Z",

            "relationship_type": "indicates",

            "source_ref": "indicator--d81f86b9-975b-4c0b-875e-810c5ad45a4f",

            "target_ref": "malware--162d917e-766f-4611-b5d6-652791454fca"

        }

    ]

}

Пример №2

Тут явно описаны связи между злоумышленником Adversary Bravo, используемой им техникой атаки — фишингом — и вредоносным ПО Poison Ivy Variant d1c6.

В этом случае при обнаружении в инфраструктуре вредоносного ПО PoisonIvy вариант d1с6 такая структура фида с взаимосвязями поможет понять, что подобным вредоносным ПО пользуется злоумышленник. 

Пример STIX 2.1
{

    "type": "bundle",

    "id": "bundle--0ecd8123-90d5-46e0-9cd4-65d4999b3a2e",

    "objects": [

        {

            "type": "threat-actor",

            "spec_version": "2.1",

            "id": "threat-actor--9a8a0d25-7636-429b-a99e-b2a73cd0f11f",

            "created": "2015-05-07T14:22:14.760Z",

            "modified": "2015-05-07T14:22:14.760Z",

            "name": "Adversary Bravo",

            "description": "Adversary Bravo is known to use phishing attacks to deliver remote access malware to the targets.",

            "threat_actor_types": [

                "spy",

                "criminal"

            ]

        },

        {

            "type": "malware",

            "spec_version": "2.1",

            "id": "malware--d1c612bc-146f-4b65-b7b0-9a54a14150a4",

            "created": "2015-04-23T11:12:34.760Z",

            "modified": "2015-04-23T11:12:34.760Z",

            "name": "Poison Ivy Variant d1c6",

            "malware_types": [

                "remote-access-trojan"

            ],

            "is_family": false,

            "kill_chain_phases": [

                {

                    "kill_chain_name": "mandiant-attack-lifecycle-model",

                    "phase_name": "initial-compromise"

                }

            ]

        },

        {

            "type": "attack-pattern",

            "spec_version": "2.1",

            "id": "attack-pattern--8ac90ff3-ecf8-4835-95b8-6aea6a623df5",

            "created": "2015-05-07T14:22:14.760Z",

            "modified": "2015-05-07T14:22:14.760Z",

            "name": "Phishing",

            "description": "Spear phishing used as a delivery mechanism for malware.",

            "kill_chain_phases": [

                {

                    "kill_chain_name": "mandiant-attack-lifecycle-model",

                    "phase_name": "initial-compromise"

                }

            ],

            "external_references": [

                {

                    "source_name": "capec",

                    "description": "phishing",

                    "url": "https://capec.mitre.org/data/definitions/98.html",

                    "external_id": "CAPEC-98"

                }

            ]

        },

        {

            "type": "identity",

            "spec_version": "2.1",

            "id": "identity--1621d4d4-b67d-41e3-9670-f01faf20d111",

            "created": "2015-05-10T16:27:17.760Z",

            "modified": "2015-05-10T16:27:17.760Z",

            "name": "Adversary Bravo",

            "description": "Adversary Bravo is a threat actor that utilizes phishing attacks.",

            "identity_class": "unknown"

        },

        {

            "type": "relationship",

            "spec_version": "2.1",

            "id": "relationship--d44019b6-b8f7-4cb3-837e-7fd3c5724b87",

            "created": "2020-02-29T18:18:08.661Z",

            "modified": "2020-02-29T18:18:08.661Z",

            "relationship_type": "uses",

            "source_ref": "threat-actor--9a8a0d25-7636-429b-a99e-b2a73cd0f11f",

            "target_ref": "malware--d1c612bc-146f-4b65-b7b0-9a54a14150a4"

        },

        {

            "type": "relationship",

            "spec_version": "2.1",

            "id": "relationship--3cd2d6f9-0ded-486b-8dca-606283a8997f",

            "created": "2020-02-29T18:18:08.661Z",

            "modified": "2020-02-29T18:18:08.661Z",

            "relationship_type": "uses",

            "source_ref": "threat-actor--9a8a0d25-7636-429b-a99e-b2a73cd0f11f",

            "target_ref": "attack-pattern--8ac90ff3-ecf8-4835-95b8-6aea6a623df5"

        },

        {

            "type": "relationship",

            "spec_version": "2.1",

            "id": "relationship--56e5f1c8-08f3-4e24-9e8e-f87d844672ec",

            "created": "2020-02-29T18:18:08.661Z",

            "modified": "2020-02-29T18:18:08.661Z",

            "relationship_type": "attributed-to",

            "source_ref": "threat-actor--9a8a0d25-7636-429b-a99e-b2a73cd0f11f",

            "target_ref": "identity--1621d4d4-b67d-41e3-9670-f01faf20d111"

        }

    ]

}

Приведенные примеры довольно тривиальны, но просты для понимания. Разбор сложных примеров может стать темой отдельной статьи. Однако для наглядности покажу, как можно упаковать в STIX результаты объемного исследования — отчета о деятельности вредоносной группировки APT1 (ссылка на json):

Если подытожить, STIX — достаточно мощный и гибкий формат для описания самых различных угроз и обмена ими между различными потребителями. Плюсов у него много: выразительность, то есть хорошая описательная способность, гибкость, автоматизируемость. Из ощутимых минусов можно отметить разве что следствие перечисленных плюсов — сравнительно высокий порог входа, из-за этого STIX пока не получил статуса «стандарта отрасли».

Формат MISP

MISP — популярная open-source платформа Threat Intelligence, она обросла довольно большим и активным сообществом за годы существования. Формат обмена данными с 2016 внесен в IETF в статусе internet draft, то есть метит в RFC, но пока им не стал.

Концепция платформы MISP сосредоточена в первую очередь на создании и p2p-обмене данными threat intelligence, то есть основная цель — это создание и распространение знаний между различными участниками сообществ. Глубину и ширину такого распространения можно довольно гибко регулировать настройками.

Формат обмена данными MISP пошел несколько иным путем, нежели STIX. В отличие от последнего, MISP свою модель данных не делит на большое количество детерминированных объектов разных типов, тут их сравнительно немного:

  1. Событие (Event) — какое-либо событие, инцидент, аналитический отчет, который повествует о чем-либо. По сути, Event — это контейнер.

  2. Атрибуты события (Event attributes) — чаще всего это индикаторы компрометации, разные технические артефакты. То есть Events, как в контейнерах, собирают внутри себя разные индикаторы компрометации, которые рассказывают о какой-либо одной угрозе или вредоносной кампании (либо нескольких, но семантически близких).

  3. Объект (Object) — нужен для обобщения атрибутов по какому-либо признаку общности. Например, чтобы связать несколько хешей (md5, sha1. sha256) с именем файла, с которого они были сняты. Объекты можно связывать друг с другом с помощью прокси-объекта Object References.

  4. Тег (Tag) — метки для классификации, могут быть как представлены в виде пользовательских строк, так и взяты из справочника MISP Taxonomies.

  5. Обнаружения (Sighting) — факты о том, где, когда, при каких условиях и кем встречался конкретный атрибут.

  6. Галактика (Galaxy) — связь объектов или атрибутов с контекстом, который дает более детальное описание объектов/атрибутов. По сути, это расширение функциональности тегов. Galaxies декомпозируются на Clusters (Кластеры) и Elements (Элементы). На примере это может выглядеть так: атрибут привязывается к Threat Actor (Galaxy), MuddyWater (Element) — из этой связи наглядно понятна атрибуция.

Пример

Из этого примера видно, что фид рассказывает нам о двух индикаторах компрометации adfs.senate.group и adfs-senate.email, которые связаны с вредоносной кампанией Pawn Storm, есть ссылка на первоисточник исследования — пост в блоге Trend Micro. 

MISP Event
  "Event": {

    "info": "Update on Pawn Storm: New Targets and Politically Motivated Campaigns",

    "publish_timestamp": "1515851051",

    "timestamp": "1515850537",

    "analysis": "2",

    "Attribute": [

      {

        "comment": "",

        "category": "Network activity",

        "uuid": "5a5a0b04-198c-4190-9f1a-8d1cc0a8ab16",

        "timestamp": "1515850500",

        "to_ids": true,

        "value": "adfs.senate.group",

        "object_relation": null,

        "type": "hostname"

      },

      {

        "comment": "",

        "category": "Network activity",

        "uuid": "5a5a0b04-4d44-463f-81a9-8d1cc0a8ab16",

        "timestamp": "1515850500",

        "to_ids": true,

        "value": "adfs-senate.email",

        "object_relation": null,

        "type": "domain"

      },

      {

        "comment": "",

        "category": "External analysis",

        "uuid": "5a5a0b22-86a4-4d66-90e4-9282c0a8ab16",

        "timestamp": "1515850530",

        "to_ids": false,

        "value": "http://blog.trendmicro.com/trendlabs-security-intelligence/update-pawn-storm-new-targets-politically-motivated-campaigns/",

        "object_relation": null,

        "type": "link"

      }

    ],

    "Tag": [

      {

        "colour": "#00d622",

        "exportable": true,

        "name": "tlp:white"

      }

    ],

    "published": true,

    "date": "2018-01-12",

    "Orgc": {

      "uuid": "56c42374-fdb8-4544-a218-41ffc0a8ab16",

      "name": "CUDESO"

    },

    "threat_level_id": "3",

    "uuid": "5a5a0acb-a374-415e-b88f-8d1ec0a8ab16"

  }

}

MISP — довольно обширный формат, позволяющий описать угрозы достаточно детально. В нем есть для этого все инструменты: обилие атрибутов, таксономии для категоризации, галактики для кластеризации угроз. Однако, как во многих community-driven вещах, на мой взгляд, в нем нет той стройности, детерминированности, типизированных взаимосвязей и правил их использования, которые есть в STIX. Это не значит, что STIX выглядит однозначно более выигрышным — таково мое личное мнение. Время и здоровая конкуренция покажут, чей подход будет более эффективным.

Иные форматы

Помимо STIX и MISP, больших китов в мире стандартизации обмена данными threat intelligence, есть немало иных форматов. И надо сказать, что наибольшее количество опенсорных фидов — в форматах txt и csv. Редко, когда можно найти их в STIX или MISP, которые я бы назвал, скорее, уделом коммерческих, отмодерированных, обогащенных, хорошо структурированных фидов. Иные форматы (MAEC, IODEF, CAPEC, IODEF, VERIS) — редкость.

Почему же стали настолько популярны txt и csv? Ответ один — из-за простоты. Большинство опенсорсных фидов — это либо фиды с минимальным контекстом (временные метки, именования вредоносного ПО, теги), либо просто голые индикаторы компрометации без какого-либо контекста (только значения индикаторов). Наиболее простой способ упаковки таких индикаторов — plain text или csv, так как любые иные форматы имеют более высокий порог входа.

Минус фидов в plain-text — отсутствие контекста, то есть обычно такие фиды — это листы IP-адресов, хешей, доменов, URL, реже — чего-то иного. Проблема в том, что таким фидам без контекста, «голым» по-сути, сложно доверять и интерпретировать, так как не понятно, что за угрозы представляют содержащиеся в них индикаторы компрометации, и насколько эти угрозы актуальны и вредоносны.

Фиды в csv часто содержат несколько колонок, описывающих значения, тип индикатора, временные метки. Иногда встречаются описания вредоносного ПО или эксплуатируемых уязвимостей, которые связаны с этим индикатором. В общем случае фиды в csv, где есть хоть какой-то контекст, могут быть полезнее. Однако это зависит от различных ситуаций, ведь может случиться так, что plain-text фид с индикаторами по очень актуальной угрозе для конкретной отрасли или компании может оказаться полезнее любого другого фида с контекстом.

Основные проблемы при работе с фидами в таких свободных форматах, как txt и csv, — это сбор и приведение к единой нормальной форме, а также связывание данных. Txt может содержать комментарии, в одном файле могут находиться разные фиды и использоваться различные способы разделения индикаторов компрометации — такие фиды достаточно сложно парсить. В csv-фидах порядочную сложность также порой представляет извлечение данных: разделители в одном файле могут не быть консистентными. Это актуально для фидов, где правки делаются вручную, да и вообще наша практика показала, что нежданчик может случиться в любой момент. Отдельная тема — это неявность связи атрибутов в csv. Иногда довольно сложно понять, какие атрибуты к чему относятся.

Примеры

В этом примере явно видно, что есть одна колонка с индикатором компрометации, одна колонка с семейством вредоносного ПО, которая связана с хешем, есть колонка со страной (хотя не вполне понятно, страна — это источник атаки или цель), есть колонка со ссылкой на исследование/отчет по угрозе. Такой csv-фид более-менее понятен.

Вот другой пример фида с однозначным и хорошим описанием — понятно, какие есть атрибуты и какие между ними имеются взаимосвязи:

А вот в этом примере не понятно, к чему относится дата: к третьей колонке (URL) или к пятой (хеш)?

Еще один пример: есть две колонки с индикатором компрометации (url, ip), есть колонка с датой — и непонятно, к какому из индикаторов компрометации эта дата относится, а также, что она означает. Время первого обнаружения индикатора? Время последнего обнаружения индикатора? Что-то иное?

Как видно из примеров, форматы общего назначения вполне подходят для публикации фидов TI, но проблема обычно кроется в последующей интерпретации этих форматов. Это может вносить существенную путаницу при использовании данных в процессе применения TI, например, при реагировании на инциденты. В этом отношении специализированные STIX/MISP решают проблему интерпретации гораздо лучше из-за детерминированности схем данных.

За бортом обсуждения также остаются немногочисленные практики публикации фидов в устаревших форматах, например, STIX 1.*, OpenIOC и иных — они действительно либо безнадежно устарели и более не используются, либо слились с другими стандартами, либо эволюционировали в более новые версии, отвечающие нынешним запросам.

Выводы

В мире threat intelligence не все так однозначно, как видится на первый взгляд. С одной стороны, сформировалось достаточно активное сообщество, которое развивает открытые стандарты, решающие вполне понятные проблемы и задачи большинства пользователей (потребителей и производителей) TI. В то же время различные производители средств защиты информации зачастую разрабатывают и используют собственные форматы, наиболее выгодные в их конкретных сценариях использования. Помимо этого, есть практика использования форматов общего назначения вроде txt, csv, rss, pdf.

Все это явно свидетельствует, что в этой области еще не сформирован единый стандарт индустрии. Тем, кому этих доводов мало, также можно почитать несколько исследований из первоисточников:

Само по себе отсутствие стандарта отрасли — это не хорошо и не плохо, просто факт. Порой он приносит определенные неудобства производителям продуктов, поставщикам и потребителям TI. Я вижу это лишь следствием того, что threat intelligence — все еще сравнительно молодая область, которая представляет собой большой плавильный котел. Здесь множество требований с различных сторон еще на нашли 100% устраивающих всех реализаций, поэтому преобладает некий хаос, постепенно кристаллизующийся в лучшие практики. Полагаю, стандартизация — это вопрос времени.

С точки зрения платформы TI, такая гетерогенность форматов — настоящий челлендж, так как нужно собрать из многообразия источников все данные, переложить их в собственную модель, не потерять смысл и по возможности потерять минимум данных — тех, что семантически не получается разместить в полях модели данных платформы. Как раз в следующей статье вместе с Колей Арефьевым из RST Cloud мы рассмотрим более подробно конкретные фиды, расскажем, какие сложности поджидают на пути их сбора, обработки и интерпретации. Stay tuned!

Другие статьи по теме

Теги:
Хабы:
Всего голосов 14: ↑14 и ↓0+14
Комментарии4

Публикации

Информация

Сайт
rvision.ru
Дата регистрации
Дата основания
Численность
201–500 человек
Местоположение
Россия

Истории