Showing posts with label Technology. Show all posts
Showing posts with label Technology. Show all posts

Saturday, December 3, 2022

Визуализация расследования

В прошлой заметке я примерно рассказал как выглядит расследование инцидента. Технически, для аналитика SOC это выражается в необходимость на базе имеющейся информации строить запрос к используемому data lake из данных (событий систем, EDR-like и NTA-like телеметрии, Netflow и т.п., что там у кого еще есть...). Запрос возвращает новые, связанные по observables, события, в которых есть новые поля, по которым также можно далее поискать. Каждое новое событие добавляет контекста в инцидент, что позволяет более точно интерпретировать происходящее, а более точная интерпретация позволяет спланировать более эффективные и результативные мероприятия по реагированию. Детализация контекста зависит от ширины и глубины телеметрии, но, в любом случае, ограничена, в сравнение с форенсикой, так как объем телеметрии и\или логов - это компромисс межу собирать все подряд и умереть под объемом данных, и собирать мало и не иметь возможности обнаруживать современные атаки. Как правило, этот компромисс решается очень просто: нужно обнаружить любую современную атаку и иметь возможность ее валидировать, т.е. насколько  это возможно, подтвердить, что выявленная активность не является ложным срабатыванием, далее инцидент передается в команду расследования, которая делает форенсику и восстанавливает полную картину. Задача полного расследования исключительно по телеметрии MDR не ставится.

Ответственный MDR провайдер стремится в карточке инцидента заказчику предоставить как можно больше информации, насколько это возможно на основе собираемой телеметрии (== насколько позволяет технологический стек MDR). Для этого аналитик SOC/MDR собирает таймлайн - это последовательность всех, связанных с данным инцидентом, алертов и сырах событий (событий, релевантных действиям атакующих, но не попавших в какие-либо алерты). Связка релевантных алертов и событий вместе (== событий, подтверждающих те или иные действия атакующих) производится именно как указано выше - по observables\IoC. 

Практика показывает, что аналитику SOC намного удобнее строить таймлайн визуально на графе, чем делать это, например, в Блокноте, а потом копи-пейстить это в Карточку инцидента, публикуемую заказчику. Технически это выглядит так: алерт - первый узел графа. В алерте есть связанные события, у каждого из которых есть поля, и каждое поле может служить ключом поиска в качестве observable. Аналитик изучает события алерта и задает вопросы, ответы на которые приводят к появлению на графе новых связанных узлов. Новые узлы - это тоже события и\или алерты (совокупности событий), в которых есть тоже уже свои поля, каждое из которых можно использовать как observable для поиска новых связанных событий и\или алертов, и т.д. 

Это звучит сложно на слух, поэтому попробуем придумать примеры. Всем известна и понятна цепочка запуска процесса, типа процесс1 --> процесс2 --> процесс3 и т.п. , пример можно увидеть в Kibana здесь. С учетом предлагаемого нами подхода эта цепочка запуска процесса является частным случаем графа из событий телеметрии EDR "запуск процесса" - здесь мы связываем события запуска процесса по полю Unique PID. Но связывать между собой можно не только события запуска процесса, а вообще любые события. Например, мы имеем алерт на событие запуска процесса - построили цепочку из событий запуска. В событии запуска процесса видно в контексте какой учетной записи (УЗ) пользователя произведен запуск. Для дальнейшего расследования аналитику SOC нужно найти информацию об этой УЗ и отобразить ее на графе таймлайна - аналитик кликает по SID с запросом "найти вход" - на граф подрисовывается событие входа этой УЗ. В событии входа виден тип входа и адрес и\или имя системвы, откуда произведен вход, далее аналитик ищет запуски процессов от данной УЗ, но уже на системе с которой был зафиксирован вход... Подстраивать узлы графа можно не только "назад", но и "вперед". Мы начали с первого алерта на запуск процесса, в котором есть хэш, допустим, в телеметрии на этот файл можно найти срабатывания AM-движка (AM == anti-malware), - эти события также стоит добавить на граф таймлайна.

Ключевым отличием нашего графа от используемого в решениях других производителей является то, что здесь узлы - не информационные системы, а события телеметрии, ребра - связи между событиями на основании observables. Метод построения - выбор аналитика SOC из списка предопределенных поисковых запросов по артефакту (observable, IoC) и возвращенных данных на выбранный запрос, причем начать можно с наиболее общих запросов, типа, найти все события, где фигурирует этот хэш, или все запуски процессов от данной конкретной УЗ, или все события срабатывания AM-движка с конкретным вердиктом и т.п.

Такой интерактивный метод построения таймлайна в виде графа позволяет быстро и удобно для аналитика SOC найти все связанные с данным инцидентом события телеметрии и сформировать наиболее полную картину происходящего... 

Текст Карточки инцидента представляет собой обычную хронологию, типа: Дата, время:  Что произошло (буквально текстовое описание события телеметрии). Имея полную совокупность связанных с инцидентом событий телеметрии, сгенерировать подобную хронологию можно автоматически, особенно на английском языке, ввиду минимальных изменений слов по лицам, числам и падежам. По имеющейся у нас статистике, формирование Карточки инцидента, даже в нашем случае, когда многие типовые описания хорошо шаблонизированы, отнимает значительную часть рабочего времени аналитика SOC, и здесь всегда есть перспективы для улучшений. Автоматическое формирование Карточки инцидента на основе собранного таймлайна - отличная оптимизация.

Но это еще не все! Процесс построения таймлайна аналитиком SOC, а именно, при каких начальных условиях какие запросы к телеметрии формирует аналитик (по-человечески это можно перефразировать как "какие алерты как расследуются аналитиком SOC"), нужно подробно логгировать/журналлировать. Очевидным использованием таких логов является оценка эффективности работы аналитиков, - этим всегда полезно заниматься. А также на эти логи можно натравить Машобуч, который можно обучить на успешных расследованиях, и затем использовать Машобуч для подсказки запросов аналитикам SOC в процессе построения ими графа таймлайна. Успешными расследованиями для Машобуча будут те, которые в итоге были опубликованы заказчикам в качестве инцидентов и впоследствии не были помечены как ложные срабатывания, а также успешно прошли перепроверку. Если практика использования Машобуча в качестве подсказчика\помощника аналитику SOC при построении графа таймлайна показала воодушевляющие результаты, то можно какие-то сценарии затем перевести в автоматическую отработку, и аналитику при расследовании алерта сразу будет подрисовываться часть графа таймлайна на базе опыта прошлых расследований, аккумулированного в модели Машобуча.



Friday, October 20, 2017

Новая эра технологических продуктов

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

Со времен Сноудена, робких порывов РФ к импортозамещению, шквала различных обвинений в недокументированных возможностях, сделанных "по ошибке", которой успешно пользовались госхакеры и все остальные, или умышленно, а также загадочных публикаций и событий, становится очевидным тренд, подрывающий глобализацию.
В обществе постепенно культивируется мнение о тотальной слежке, и через какие-нибудь 10 лет продать высокотехнологичное СЗИ в виде "коробки" в другое, заботящееся о национальной безопасности государство, будет крайне сложно.
Описанное явление - обычная трансформация взглядов потребителей, происходящая не первый раз в истории, вызванная, в нашем случае - изменениями модели угроз и нарушителя (что важно для ИБ-продуктов, хотя и звучит как-то академично\бумажно), конъюнктурой рынка, и пр. проявлениями культурно-цивилизационной эволюции. Изменение спроса требует изменения предложения, - подумаем что можно предложить...

Ключевым, и самым ресурсоемким, компонентом любого технологического продукта являются исследования, поскольку основной характеристикой СЗИ является, собственно, качество защиты, которое требует серьезных глубоких исследований атак с целью выработки наиболее эффективных способов защиты от них. Исследования заворачиваются математиками\теоретиками в алгоритмы, которые затем архитекторами превращаются в технологические компоненты, которые, в свою очередь, другими архитекторами заворачиваются в продукты\"коробки", поставляемые конечному потребителю. Да простят меня разработчики за столь простое изложение реально сложных процессов. Очевидно, что на протяжении этой длинной цепочки от идеи до "коробки" есть много полуфабрикатов и запчастей, которые не являются конечными потребительскими продуктами, но, безусловно, имеют ценность, так как аккумулируют в себе исследования.

Далеко не каждая компания может позволить себе исследования, ибо это требует инвестиций прямо сейчас, а окупаемость придет только потом, да и то с вероятностью. Более того, поскольку детектирующая атаки логика является весьма скоропортящимся товаром, исследования внутри продукта ИБ имеют ярко выраженный операционный характер с уровнем качества сервиса, напрямую влияющим на ценность этого исследования. В качестве ремарки, хочется отметить, что системные операционные исследования имеют мало общего с ad-hoc ресерчами, возможно, даже выстрелевшими в какие-либо громкие публикации, так как приоритет operations-исследований - неизменно высокое качество детекта во времении, а не "вау-эффект" от ad-hoc.
А вот написать код, продуктивизирующий исследования - радикально проще.
Учитывая, что недоверие и закладки относятся именно к конечному продукту, а не к исследованиям внутри него, логичным изменением предложения является смещение фокуса с "коробок" на технологии и запчасти. Причем продажи технологий и запчастей с сопутствующим операционным ресерчем (чтобы запчасти продолжали оставаться эффективными) при правильной организации может оказаться еще и более выгодной - как бонус к уходу от возможных претензий в недокументированных возможностях.
Идея совсем не нова. Все то же мы наблюдаем с российским автопромом, когда иномарки ввозят в страну по запчастям и, будучи собранной на территории РФ, иномарка чудесным образом превращается в отечественный автомобиль.

В целом, понятно, что надо делать, но все-таки, позволю в последнем абзаце явно написать алгоритм.

  1. Модифицировать стратегию, отдав больше внимания исследованиям, технологиям и запчастям-компонентам, которые можно удобно\дешево встраивать в другие продукты и\или разрабатывать вокруг них необходимую обвязку.
  2. Искать и входить в партнерство с локальными производителями программных продуктов (== "сборочных конвейеров"), которые смогут из компонент п.1 сделать локальную сборку и обязательно протащить ее через все возможные местные сертификации.
  3. Находить локальных производителей и строить им "производственные мощности" и "сборочные конвейеры", на которых они уже от своего имени смогут делать  продукты и сервисы, удовлетворяющие всевозможным требованиям и условиям.
  4. Не расслабляться, помните, что как любая палка имеет, как минимум, два конца, так и любое изменение ситуации можно с одинаковым успехом трансформировать как в убыток, так и в выгоду, и наша менеджерская задача здесь - искать и находить тот правильный ответ обстоятельствам, идти "в ногу" с культурно-цивилизационными изменениями, постоянно эволюционируя.

Wednesday, January 15, 2014

За нами следят

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

Что же делать со всем этим рядовым компаниям, использующим все эти "вражеские" технологии, за неимением отечественных, доверенных альтернатив? Да ничего не делать! Противостоять спецслужбам должны спецслужбы. Отсутствие отечественных конкурентоспособных продуктов, что вынуждает всех использовать недоверенные вражеские решения - также государственная проблема. У нас даже есть своя Силиконовая долина, - там даже есть секция, посвященная ИТ. Но почему-то я не вижу элементарных вещей отечественного производства, столь же качественных как западные аналоги: операционная система, офисное и прикладное ПО, аппаратные средства вычислительной техники, собранные на отечественных микросхемах и комплектующих... Без этого элементарного фундамента никакая сертифицированность прикладного ПО не избавит от возможности быть компрометируемым, поскольку всегда возможна компрометация с более низкого уровня абстракции (я столько раз об этом писал и говорил разным людям, поэтому прошу извинить, если повторяюсь): супер-защищенная ОС компрометируется через железные закладки, супер-защищенное прикладное ПО - через закладки в ОС и т.п. - зашифрованные по ГОСТ крипто-контейнеры в устройствах Apple компрометируются через закладки в iOS и железе, приложения под Windows - через закладки в ОС Windows и том же железе, поскольку даже если мы будем собирать платы сами, там будет стоять тот же Intel с vPRO, что является легальной закладкой.

Поэтому, я предлагаю переориентировать Сколково на вопросы национальной безопасности - пускай там научатся делать для начала элементарные вещи, которые покроют внутреннюю потребность в "беззакладочных" информационных технологиях. Если из этого выйдут конкурентоспособные продукты, на этом потом можно будет и заработать, и также попробовать попреследовать государственные интересы, как это делает АНБ США.

Tuesday, June 2, 2009

Гибкость и сложность

Где начало того конца, которым оканчивается начало?
Козьма Прутков. Мысли и афоризмы.


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

Не буду много вещать в защиту вышеупомяноутого тезиса, думаю, это очевидно: взяв самое гибкое из возможных решений, позволяющее удовлетворить любые требования к системе, - IDE , мы сталкиваемся с высокой сложностью настройки нашего решения (в данном примере - с необходимостью программирования). Пример представляет собой некую крайность, но позволяет понять суть. Как же выбрать эту "золотую середину", это тонкое лезвие бритвы, эту красоту баланса гибкости и сложности?

Прежде всего давайте поймем, почему же мы вожделеем гибкость.
1. На момент выбора решения не известно что конкретно хочется. Действительно, аппетит появляется во время еды. Да, я знаю, что во всех книжках написано, что подход такой неправильный и что надо на момент выбора решения знать все, что хочется, но на практике, к сожалению, это так.
2. В России очень трудно прогнозировать. На практике все меняется самым непредполагаемым образом: вчера мы поклонялись коммунистам и были пионерами, сейчас узнали, что коммунисты были нехорошие люди, так как уничтожили духовность.... Как следствие, приходится закладываться на все "случаи жизни" - вместо восседания на одной бочке с порохом, сидеть на двух, а может, и больше, чтобы, в случае взрыва одной, успеть перескочить на следующую.

Что можно с этим поделать?
Мне кажется, что лучший вариант здесь либо первоначальное пилотное внедрение (чтобы понять аппетит), либо стого ограничить внедряемый функционал и согласовать его на максимально высоком уровне. Последнее - очевидное требование, которое по-хорошему надо выполнять всегда, но хочется же все и сразу...

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

Tuesday, July 29, 2008

Write Once Read Many

During preparation to some of the certification exams I encountered the term WORM - Write Once Read Many media. Surely I knew at least one example of it - CD-R or DVD-R discs - but the term was used in a way, that CD-R and DVD-R media can not support. For example, log files could be stored on such a media so that attacker is not able to tamper with them (again - CD-R would not fit this use as you can not write logs directly to CD so there always will be a lag between actual logs and what is stored on the CD). And I knew no WORM-type media that would fit such usage, until yesterday, when SanDisk announced their WORM flash memory. I really think this would be useful for forensics purposes and look forward to hearing actual uses of the technology. Hopefully you will really not be able to erase/modify the data through some undocumented feature :)

Thursday, August 16, 2007

Защита административных учетных записей

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

Административная учетная запись зачастую может обладать разрушительными правами для ИС, и, как следствие, пользоваться ею следует аккуратно. Она не должна использоваться для серфинга по Интернет, а доступ к ее профилю должен быть строжайшим образом ограничен.

Как обычно, чтобы как сделать все хорошо и безопасно, необходимо понять чего мы боимся, т.е. описать риски.

Проблема №1: Запуск вредоносного кода с административными правами.

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

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

Проблема №2: Компрометация профиля административной учетной записи. Посещая различные серверы по долгу службы системны администратор на каждом из посещаемых серверов оставляет свой профиль, который может быть доступен в случае получения административного доступа на сервер, например, в случае его компрометации злоумышленником.

Пример атаки: Злоумышленник компрометирует компьютер, который когда-либо обслуживался администратором и, следовательно, оставил на файловой системе сервера свой профиль. Далее злоумышленник создает скрипт, в который помещает всю свою вредоносную деятельность. Ссылка на скрипт помещается в systemdrive\Documents and Settings\username\Start Menu\Programs\Startup (systemdrive \Documents and Settings\ username \Главное меню\Программы\Автозагрузка), username – имя административной учетной записи.

Что происходит: администратор заходит на сервер для выполнения своих должностных инструкций, срабатывает скрипт с его полномочиями.

Путь минимизации риска: использовать перемещаемые профили.

Полезные ссылки:

Windows XP Professional Resource Kit

How to Modify the List of Programs that Run When You Start Windows XP