Аналітик кіберрозвідки, який реагує на сповіщення про вторгнення, не починає з графа. Він починає зі списку: хеш файлу з платформи виявлення на кінцевих точках, підозріла IP-адреса в журналах брандмауера, домен, позначений стрічкою загроз. Кожен індикатор ізольований. Жоден із них сам по собі не повідомляє аналітику, що робив зловмисник, як далеко він просунувся або хто він є.
Візуалізація ланцюга атаки вирішує цю проблему, перетворюючи плаский список індикаторів компрометації (IOC) і спостережуваних тактик, технік та процедур (TTP) на орієнтований граф, який представляє кампанію зловмисника як зв'язну наративну послідовність. Коли граф побудований правильно, аналітик може бачити, яку фазу kill chain відображає кожна спостережувана техніка, які вузли інфраструктури пов'язані з відомим загрозливим актором, а які прогалини в спостережуваному ланцюгу вказують на виявлення, які організація пропустила. Це різниця між реактивним блокуванням IOC і справжнім аналізом кіберрозвідки.
Що вирішує візуалізація ланцюга атаки
Основна проблема є структурною. Сучасні кампанії вторгнення генерують докази на кількох поверхнях виявлення — кінцеві точки, мережа, хмара, електронна пошта, DNS — і ці докази надходять у різних форматах, у різний час, з різними рівнями достовірності. Аналітик, який працює з панеллю SIEM, бачить окремі сповіщення. Він автоматично не бачить, що подія виконання PowerShell о 03:14 причинно пов'язана з фішинговим листом, що надійшов шість годин тому, та з бічним переміщенням, виявленим на контролері домену дванадцять годин потому.
Візуалізація ланцюга атаки робить ці причинно-наслідкові зв'язки явними. Граф показує заплановану операційну послідовність зловмисника і дозволяє аналітику відображати спостережувані докази на цю послідовність. Прогалини в графі — фази, де докази не були зібрані — є настільки ж інформативними, що й самі докази: вони виявляють сліпі зони в покритті виявлення, які зловмисник використав або міг би використати в майбутній кампанії.
Для аналітиків оборонного та урядового секторів зокрема ця можливість важлива за межами одного інциденту. Постійні спонсоровані державою актори проводять численні кампанії проти численних цілей протягом місяців або років, повторно використовуючи інфраструктуру та інструменти. Граф, який накопичує докази між кампаніями, а не скидається після кожного інциденту, формує інституційне розуміння поведінки зловмисника, що дозволяє проактивну оборону — виявлення ранніх фаз нової кампанії, оскільки інфраструктура або техніки відповідають відомому профілю актора.
Модель даних: STIX 2.1 та типізовані зв'язки в графі
Основою будь-якої візуалізації ланцюга атаки є базова модель даних. STIX 2.1 (Structured Threat Information eXpression) надає добре специфіковану об'єктну модель, яка чисто відображається на граф властивостей. Ключові типи STIX Domain Object стають типами вузлів графа:
Threat Actor — іменований або відстежуваний суб'єкт-зловмисник. Intrusion Set — конкретна кампанія або кластер активності, приписаний актору. Malware та Tool — програмне забезпечення, використане в атаці. Attack Pattern — конкретна TTP, як правило, посилається за ідентифікатором техніки MITRE ATT&CK. Infrastructure — сервери командування та управління, проміжні вузли, набори експлойтів. Identity — цільові організації або сектори. Indicator — шаблон (IP, домен, хеш, правило YARA), який ідентифікує шкідливу активність при спостереженні.
STIX Relationship Objects стають типізованими спрямованими ребрами між цими вузлами. Поле relationship_type визначає семантику: uses (Threat Actor використовує Tool), delivers (Malware доставляє Payload), targets (Intrusion Set націлюється на Identity), indicates (Indicator вказує на Malware), attributed-to (Intrusion Set приписується Threat Actor). Ці типи зв'язків не є декоративними — вони визначають, які запити обходу графа є значущими та який алгоритм розміщення дає читабельну діаграму.
Кожне ребро повинно містити властивості провенансу: джерело фіду або звіту, мітку часу введення, оцінку достовірності (0.0–1.0) та класифікацію TLP вихідної розвідки. Розповсюдження достовірності є критично важливим — ланцюг ребер з високою достовірністю, що веде до атрибуції з низькою достовірністю, повинен відображати невизначеність атрибуції візуально, а не приховувати її на рівні даних.
Варіанти графових баз даних для CTI-навантажень
Вибір графової бази даних визначає, які аналітичні операції є практичними в масштабі та яку затримку може допустити робочий процес аналітика. Три варіанти домінують в архітектурах CTI-платформ.
Neo4j
Neo4j є найбільш широко розгорнутою графовою базою даних у CTI-платформах і практичним вибором за замовчуванням для більшості оборонних організацій. Його мова запитів Cypher робить обхід багатохопових зв'язків читабельним і зручним у супроводі. Запит на кшталт MATCH (actor:ThreatActor)-[:USES*1..3]->(infra:Infrastructure) WHERE actor.name = 'Tracked Group A' RETURN infra знаходить всю інфраструктуру, досяжну від іменованого актора в межах трьох стрибків зв'язку — обхід графа, що лежить в основі більшості операцій «розширення контексту актора» в робочому процесі аналітика.
Обмеження Neo4j стають актуальними в масштабі: введення десятків мільйонів вузлів з реальною пропускною здатністю запису вимагає ретельного проектування індексів та конфігурації кластеризації. Для більшості оборонних CTI-розгортань — які оперують сотнями тисяч до кількох мільйонів вузлів — це не є обмеженням.
TigerGraph
TigerGraph оптимізований для аналітичних навантажень на графах дуже великого масштабу — мільярди ребер із затримкою обходу менше секунди. Його мова запитів GSQL є потужнішою за Cypher для складного пошуку шаблонів, але вимагає більш спеціалізованих компетенцій. TigerGraph є правильним вибором для CTI-платформ національного рівня, що агрегують розвідку від багатьох організацій, де пропускна здатність запису або затримка обходу Neo4j стає вузьким місцем. Для CTI-платформи однієї оборонної організації додаткова операційна складність рідко виправдовується.
In-memory граф
Для побудови ланцюга атаки в реальному часі — коли аналітику потрібен граф, заповнений протягом секунд після введення нового фіду розвідки — in-memory граф (NetworkX на Python або власна структура на основі хеш-таблиці) забезпечує максимальну швидкість запитів коштом масштабу та збереження. Цей підхід є доцільним для сеансового аналізу: аналітик завантажує відповідний підграф у пам'ять, виконує обходи та розрахунки розміщення, експортує результат, і стан в пам'яті відкидається. Постійна база знань як і раніше знаходиться в довговічній графовій базі даних; шар in-memory — це кеш візуалізації.
Інтеграція навігатора MITRE ATT&CK
MITRE ATT&CK надає найважливішу еталонну таксономію для візуалізації ланцюга атаки: структуровану перелік технік зловмисника, організованих за фазами тактики, від Reconnaissance до Impact. Інтеграція ATT&CK у граф означає позначення кожного вузла Attack Pattern його ідентифікатором техніки (наприклад, T1566.001 — Spearphishing Attachment) та батьківською тактикою (Initial Access).
Це маркування дозволяє дві різні візуалізації. Перша — діаграма kill chain: вузли розміщені в смугах фаз тактики, а спрямовані ребра показують спостережувану прогресію зловмисника через фази. Аналітик може одразу побачити, що ця кампанія спостерігалась у фазах Initial Access та Execution, але не показала доказів у Persistence — або зловмисник не встановив постійність, або механізми постійності не були виявлені.
Друга — теплова карта покриття: матриця у стилі ATT&CK Navigator, де кожна комірка техніки пофарбована залежно від того, чи є у організації правило виявлення, що покриває її, та чи спостерігалась ця техніка у відстежуваних кампаніях. Накладення цих двох шарів виявляє найпріоритетніші прогалини виявлення — техніки, які зловмисники активно використовують проти організацій того ж сектору, але для яких організація-захисник не має покриття виявлення.
Для оборонних CTI-платформ теплові карти покриття слід генерувати для кожного профілю актора, а не лише глобально. Актор, відомий виключно технікою «жити з землі» (LOLBins, WMI, заплановані завдання), має зовсім інший профіль пріоритетів покриття, ніж актор, відомий розгортанням власних імплантів через компрометацію ланцюга постачання.
Автоматизована побудова ланцюга зі звітів про загрози
Ручне заповнення графа не масштабується. Зріла CTI-програма отримує десятки звітів про загрози на тиждень — дослідницькі публікації постачальників, урядові консультативні повідомлення, публікації у відкритих джерелах — і кожен із них потенційно містить нові вузли та ребра, що стосуються графа знань. Автоматизація — не опція; це єдиний спосіб підтримувати актуальність графа.
Конвеєр автоматизації має три етапи. Перший — NLP-екстракція: модель розпізнавання іменованих сутностей, дообучена на корпусах кібербезпеки, витягує кандидатів-сутностей (імена загрозливих акторів, сімейства шкідливих програм, ідентифікатори CVE, IP-адреси, доменні імена, хеші файлів, посилання на техніки ATT&CK) та кандидатів-зв'язків із неструктурованого тексту. Моделі, дообучені на корпусах безпекового домену, суттєво перевершують універсальні NER у цьому завданні — словниковий запас та межі сутностей у звітності про загрози є предметно-специфічними.
Другий етап — розв'язання сутностей: витягнуті сутності зіставляються з існуючими вузлами графа. «Sandworm», «Voodoo Bear» та «TeleBots» — різні назви одного відстежуваного актора — крок розв'язання повинен об'єднати їх у канонічний вузол, а не створювати дублікати. Розв'язання використовує нечітке порівняння рядків, таблиці псевдонімів, що підтримуються командою розвідки, та для індикаторів інфраструктури — пряме зіставлення ідентифікаторів.
Третій етап — заповнення графа: розв'язані сутності та зв'язки записуються в графову базу даних як нові вузли та ребра з нижчим базовим рівнем достовірності (0.6–0.7 для автоматично витягнутих проти 0.9+ для перевірених вручну) та вихідним звітом як провенансом. Черга аналітика показує нові автоматично витягнуті ребра, що очікують перевірки, дозволяючи їм підтверджувати або відхиляти атрибуції, а не будувати граф з нуля.
Алгоритми розміщення: Sugiyama для kill chain, силове розміщення для атрибуції
Алгоритм розміщення визначає, чи є граф аналітично читабельним або переплутаним клубком ребер, що перетинаються. Два алгоритми домінують у CTI-візуалізації.
Пошаровий алгоритм Sugiyama є оптимальним для діаграм kill chain. Ланцюги атак мають властиву часову та причинну спрямованість — Initial Access передує Execution, яке передує Persistence — яку Sugiyama кодує у вигляді впорядкованих горизонтальних шарів. Вузли у тій самій фазі тактики ATT&CK розміщуються в одному шарі. Алгоритм мінімізує перетини ребер між шарами, отримуючи діаграму потоку зліва направо, де прогресія зловмисника одразу видна. Для візуалізації kill chain Sugiyama — не стильова перевага; це правильний алгоритм для цієї структури даних.
Алгоритми з силовим розміщенням (D3-force є найбільш часто використовуваною реалізацією для веб-CTI-панелей) краще підходять для графів атрибуції — де основне аналітичне питання «які вузли інфраструктури кластеризуються навколо якого актора?», а не «в якій послідовності діяв зловмисник?». Алгоритми з силовим розміщенням розміщують сильно пов'язані вузли поблизу одного з одним, роблячи кластери спільної інфраструктури, інструментів, що використовуються кількома акторами, або активності кампаній, що перекриваються, візуально очевидними. Аналітик бачить перекриття, які були б невидимими в табличному поданні.
Для великих графів (понад 200 вузлів в одному представленні) групування ребер — об'єднання паралельних ребер між однаковими парами кластерів в один візуальний пучок — необхідне для збереження читабельності. Без групування граф з 500+ ребрами деградує до нечитабельного візуального безладу. Бібліотеки Cytoscape.js та D3 обидві підтримують ієрархічне групування ребер.
Робочий процес аналітика: від IOC до атрибуції та звіту
Візуалізація є корисною лише настільки, наскільки корисний робочий процес, який вона підтримує. Добре розроблений інструмент візуалізації ланцюга атаки повинен підтримувати чотири операції аналітика без необхідності написання запитів.
Зведення від IOC. Аналітик вводить конкретний індикатор — IP-адресу, домен, хеш файлу — і інструмент розгортає граф, показуючи всі вузли, безпосередньо пов'язані з цим індикатором, з позначеними типами зв'язків. З однієї IP-адреси аналітик повинен відразу бачити: з яким сімейством шкідливих програм вона пов'язана, у яких кампаніях використовувалась, яка інша інфраструктура з'являлась у тій самій кампанії та чи пов'язується будь-який із цих вузлів з профілем відстежуваного актора.
Розширення атрибуції. Проходження графа від інфраструктури до актора. Шлях запиту такий: Indicator → Malware → Tool → Intrusion Set → Threat Actor. Кожний стрибок може мати різні рівні достовірності. Візуалізація повинна розповсюджувати невизначеність: ланцюг з трьох ребер з достовірністю 0.8 дає загальну достовірність атрибуції приблизно 0.51 (0.8³), а не 0.8. Аналітики, які представляють автоматизовану атрибуцію без кількісної оцінки невизначеності, виробляють ненадійні розвідувальні продукти.
Порівняння з відомими профілями акторів. Аналітик вибирає відстежуваного актора з бази знань та накладає його історичний профіль TTP — які техніки він використовував, якою інфраструктурою оперував, які цілі пріоритизував — на спостережувані докази поточного інциденту. Збіги та розбіжності є однаково інформативними: розбіжності можуть вказувати на хибну атрибуцію або актора, що адаптує свої TTP.
Генерація звіту. Аналітик вибирає відповідний підграф — як правило, один набір вторгнень та пов'язані вузли — та експортує його як структурований звіт. Формат звіту повинен включати візуальну діаграму, таблицю всіх вузлів з їх властивостями, теплову карту MITRE ATT&CK для спостережуваних технік та STIX 2.1-бандл для машинного споживання організаціями-партнерами. Автоматична генерація звіту з підтвердженого підграфа скорочує час звітування з годин до хвилин.
Для аналітиків, що працюють над OSINT-моніторингом загроз, той самий робочий процес візуалізації застосовується до розвідки з відкритих джерел: публікації в Telegram-каналах, активність на форумах даркнету та шаблони реєстрації доменів — все це генерує вузли та ребра, що заповнюють граф і підтримують робочий процес «зведення та розширення».
Компроміси реалізації для оборонних розгортань
Кілька рішень щодо реалізації є специфічними для оборонних та урядових розгортань і відрізняються від комерційного проектування CTI-платформ.
Обробка класифікацій. Вузли та ребра графа, отримані з класифікованих фідів розвідки, повинні нести мітки TLP або національні мітки класифікації, що розповсюджуються через граф. Запит, що переходить від некласифікованого індикатора до класифікованого вузла, не повинен повертати класифікований вузол аналітику без відповідного допуску. Це вимагає контролю доступу з урахуванням класифікації на рівні запитів до графа, а не лише на рівні введення даних.
Робота в ізольованому середовищі. Оборонні мережі часто мають сегменти, які не можуть отримати доступ до зовнішніх сервісів. Графова база даних, конвеєр NLP-екстракції та інтерфейс візуалізації — всі повинні бути здатні працювати без зовнішніх мережевих викликів. Комерційні інструменти візуалізації графів, що вбудовують JavaScript-бібліотеки, завантажені з CDN, або хмарні сервіси рендерингу, архітектурно несумісні з розгортаннями в ізольованому середовищі.
Вимоги до затримки. Тактичні кіберопе рації можуть вимагати аналізу ланцюга атаки протягом хвилин після виявлення вторгнення. Різниця між запитом Neo4j, який повертається за 200 мс, і запитом, що займає 8 секунд, важлива, коли аналітик здійснює зведення в ході живого інциденту. Проектування індексів, кешування запитів та попереднє обчислення підграфів для відомих профілів акторів — все це варте інженерних зусиль у середовищах з високим оперативним темпом.
Corvus.Sense автоматизує побудову ланцюга атаки з моніторингу Telegram та OSINT-потоків, заповнюючи постійно оновлюваний граф знань, що підтримує повний робочий процес аналітика «зведення та розширення» — без ручного аналізу звітів або авторства графа.
Дізнатися про Corvus.Sense →