Аналитики любят глазами… Это вроде бы обычное высказывание полностью раскрывается в более менее крупной инфраструктуре, насчитывающей тысячи различных узлов. Представлять их в табличной форме можно, но анализировать цифры и имена в таком виде гораздо сложнее, чем в форме графа, который позволяет акцентировать внимание на нужных аспектах, масштабировать картину с нужной точностью и быстро выявлять различные аномалии и слабые места. Например, достаточно давно сетевыми инженерами использовались средства построения топологии сети для выявления узких мест, прогнозирования будущих сбоев и простоев, а также узлов, которые могут первыми пострадать при возникновении и развитии проблем.
Очевидно, что такой подход отлично подходит и для ИБ, в которой скорость принятия решений играет важнейшую роль и визуализация атаки в виде графа позволила бы оперативнее реагировать на инциденты, видеть, как, куда и откуда движется злоумышленник, где его можно безболезненно остановить и т.п.
И такие решения стали появляться. Например, служба ИБ Cisco начала использовать решение компании RedSeal (в России недоступно), которое позволяло:
- сканировать инфраструктуру и строить топологию сети
- выявлять уязвимости и правила конфигурации сетевого оборудования и средств защиты
- приоритизировать уязвимости в зависимости от контекста, в т.ч. опираясь и на ценность активов.
Опираясь на полученную информацию, RedSeal мог прикинуть количество узлов, которые достижимы для злоумышленников напрямую и через расширение плацдарма. Выглядит это примерно так:
Однако RedSeal показывал все уязвимые узлы и доступные с них активы, особо не приоритизируя их, что в крупной инфраструктуре мешало выстраивать мероприятия по ИБ. В итоге, задача часто сводилась к тому, чтобы выявить все уязвимые узлы в DMZ и прорисовать возможные пути проникновения с них во внутреннюю сеть, используя данные об уязвимостях и конфигурации сетевого оборудования. Хотя вроде сейчас у них появился скоринг на базе ряда атрибутов (критичность уязвимости и ценность актива).
Второе решение, которое пыталось идти дальше, было от компании Skybox (тоже недоступно в России). Оно позволяло, также опираясь на данные об уязвимостях и конфигурации инфраструктуры, просчитать количество шагов, которые нужно проделать злоумышленнику для достижения своих возможных целей.
При этом, в зависимости от того, что за узел использовался хакером для атаки и в качестве цели атаки, каждый путь соответствующим образом приоритизировался:
Примерно в таком направлении и движутся сегодня вендора, которые пытаются уйти от атомарных событий и простроить на их основе цепочки действий злоумышленников. Иногда такие цепочки носят теоретизированный характер — у нас есть список уязвимостей и мы, перебрав все возможные комбинации, просто отрисовываем возможные пути движения злоумышленника. Более практичный вариант — совместить возможные пути хакеров с данными об атаках в реальном времени. Тогда можно попробовать понять цели злоумышленников и своевременно их заблокировать.
Иногда, правда, стремление к визуализации переходит все границы и затмевает собой реальную пользу от нее. Например, решение от XM Cyber я не понял 🙁
Но какой бы вариант визуализации не использовался, мы столкнемся со сложностью и масштабностью современной инфраструктуры. Число событий ИБ может измеряться миллионами и миллиардами. Я уже не раз приводил статистику по числу событий, которые фиксируются ежедневно внутри инфраструктуры Cisco. Это 1,2 триллиона (!) событий. В инфраструктуре Positive Technologies во время проходивших недавно реальных киберучений число событий составило около 1 миллиарда в сутки. Связывать их воедино — задача нетривиальная. Поэтому разрабатываемое нами решение PT O2 фокусируется не на атомарных событиях ИБ, а на недопустимых, то есть том, что реально наносит ущерб бизнесу компании (а таких событий на порядки меньше). Обратите внимание на скриншот — пути движения злоумышленника в O2 схожи с тем, что есть в других решениях, но они оцениваются в контексте реализации недопустимых событий (в данном случае — кража денег).
Такие визуализация обычно строятся на базе теории графов (ну мне так видится, как прикладному математику), в которых в качестве вершин выбираются, как правило, узлы инфраструктуры (сам граф при этом должен быть, как минимум, ориентированным). В некоторых случаях, например, так происходит в PT O2, вершинами могут быть и иные интересные для хакеров цели, например, учетные записи пользователей. И вот тут возникает вопрос — а что описывает ветви/ребра графа? CVSS? Очевидный вариант, но далеко не единственный; особенно учитывая наличие разных систем приоритизации уязвимостей. Можно оценивать ребра по публичности данных об уязвимости, встречаемости в дикой природе или активности использования (например, по списку CISA), по сложности перехода из вершины в вершину, по его стоимости и т.п.
Но у такого подхода, конечно, есть и подводные камни. Во-первых, при большом числе вершин и ребер графа требуются немалые вычислительные мощности для просчета всех ветвлений и поддержания их в актуальном состоянии. Не то, чтобы это было нерешаемой задачей, но на смартфоне или стареньком ноутбуке ее точно не запустишь. Во-вторых, вам нужно иметь актуальную информацию об активах и их уязвимостях. С этим, конечно, есть сложности в компаниях, которые либо не могут/умеют выстроить процесс инвентаризации и поддержания ее в актуальном состоянии, либо делают это не очень часто.
В-третьих, рост современных инфраструктур приводит и к усложнению самих графов, что ставит определенные сложности как с точки зрения их отрисовки (нужен нормальный движок для этого), так и с точки зрения использования правильных графовых моделей, скорее всего не классических, а иерархических. В-четвертых, у такого рода решений должна быть функция либо отчуждения построенного графа, либо, наоборот, загрузки графа, созданного в других приложениях (например, в средствах построения сетевой топологии), а для этого нужна поддержка унифицированного языка, например, GraphML, ставшего стандартом де-факто в системах визуализации на основе графов.
Но все проблемы сегодня решаемы. Главное, что сам подход сегодня находит все больше применения в ИБ, делая ее более эффективной, чем ранее, при табличном представлении событий, получаемой от имеющихся средств защиты информации.
Ещё можно отметить возможность применения информационных карт (http://www.techbook.ru/book.php?id_book=1225) для визуализации не только компьютерных сетей и информационных ресурсов предприятия, но и с целью визуализации архитектуры программного обеспечения в интересах его анализа. Информационные карты как раз позволяют решить вопросы «перегруженности» графа для больших сетей
Мне кажется информационные карты достаточно статичны именно для решения оперативных задач ИБ. Нет? Одно дело отобразить архитектуру (не меняется годами), инфраструктуру (сегменты тоже не меняются годами) и совсем другое — показать постоянно меняющуюся картину уязвимостей и атак
Динамику можно представить несколькими путями.
Первый путь — это изменение ландшафта. Например, если ландшафтом информационной карты является сетевая инфраструктура предприятия, то его структура на уровне крупных кластеров (филиалов организации или сегментов структурных подразделений) будет достаточно стабильна. Скорость перестройки ландшафта зависит от возможности средств автоматизации по его построению и опыта информационного картографа.
Второй путь — динамика в отображении различных объектов на базе ландшафта информационной карты. Например, для различных показателей компрометации могут быть выработаны собственные композиционные пиктограммы (подобно компьютерным играм, где есть иконки артефактов с числовыми характеристиками), которые привязываются к ландшафту в соответствии с логикой и назначением. Подобная идея в данной статье показана на рис. «RedSeal…» где от коммутатора расходятся лучи. Но вместо коммутатора и лучей будут композиционные пиктограммы с привязкой к ландшафту с помощью линий. Их отображение можно динамически автоматизировать, чтобы они показывали ситуацию в режиме реального времени
По картам уязвимостей для информационного ландшафта тоже можно подобрать граф связей, который будет достаточно стабилен. Например, в рамках исследований в Воронежском государственном университете в качестве такого графа использовали связи уязвимостей с типом ошибки (CWE) и наименованием уязвимого ПО. В результате получается ландшафт, с помощью которого можно достаточно наглядно представить картину в области различных классов уязвимостей. Кластеры такого ландшафта тоже достаточно стабильны, но меняются с течением времени ввиду утраты актуальности некоторых видов ошибок или изменения распространенности тех или иных типов программного обеспечения