Допрос под полным прикрытием

Евгений Касперский рассказывает о том, как в Kaspersky Sandbox виртуальные машины используются для исследования поведения угроз.

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

Единственный эпизод, который я всё же «проглотил» по настоятельной рекомендации коллег: хорошие парни элегантно вынуждают плохого парня сдать других плохих парней, создав ему подходящую обстановку (точнее — фейковый прямой эфир об атомном Армагеддоне). Вроде как допрос, но не совсем.

Почему именно этот эпизод?

Он удивительно доходчиво и наглядно раскрывает один из методов выявления… неизвестных кибератак! На самом деле таких методов много — они различаются по области применения, эффективности, ресурсоёмкости и прочим параметрам (в моём ЖЖ о них регулярно рассказывается — смотрите по тегу technology). Но, пожалуй, одна из самых долгоиграющих технологий — эмулятор (про него я уже много раз писал).

В точности, как в этом эпизоде из «Миссии», эмулятор запускает исследуемый объект в изолированной искусственной среде, вынуждая его проявлять вредоносность.

Но у такого подхода есть существенный недостаток: искусственность той самой среды. Эмулятор создаёт окружение, максимально приближенное к реальной операционной системе, вредоносы учатся его распознавать, эмулятор распознаёт, что его распознали :), и вот мы уже входим в бесконечный цикл борьбы меча и щита, который регулярно открывает окно уязвимости на защищённом компьютере. Фундаментальная же проблема заключается в том, что предел функциональности эмулятора стремится к реальной операционной системе, но никогда её не достигнет!

С другой стороны, есть ещё одно решение задачи поведенческого анализа подозрительных объектов — анализ в… реальной операционной системе! Что-о-о? Прямо на «боевом» компьютере? Нет — на виртуальной машине! Ведь технологически эмулятор не способен так же полно и точно эмулировать работу операционной системы по сравнению с настоящей ОС под виртуальной машиной. Идеальный «допрос» под полным прикрытием!

Тут может возникнуть вопрос — а как же до этого раньше не додумались? Ведь виртуализация уже больше дюжины лет как вошла в технологический мейнстрим. Оказывается, не всё так просто.

Во-первых В-нулевых: анализ подозрительных объектов в виртуальной машине — штука ресурсоёмкая и заточена на тяжёлые корпоративные решения, где необходима максимальная избыточность сканирования, чтобы никакой зловред носа не подточил. Увы, для домашних компьютеров, а тем более умнофонов эта технология не подходит. Пока.

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

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

Недавно мы получили патенты (США — US10339301, РФ — 2665911) на технологию создания правильного окружения виртуальной машины для проведения скоростного и глубокого анализа подозрительных объектов. Вот как она работает:

  1. Для разных типов объектов создаются виртуальные машины с предустановленными настройками, чтобы обеспечить их оптимальное выполнение и максимально высокий детект.
  2. Гипервизор виртуальной машины работает в паре с системой журналирования действий объекта и системой анализа этих действий, к которой подключены обновляемые базы данных шаблонов подозрительного поведения, эвристика, логика реакции на действия объектов и прочее.
  3. В случае обнаружения подозрительных действий система анализа «на лету» вносит изменения в процесс исполнения объекта в виртуальной машине, чтобы подтолкнуть объект к проявлению своих вредоносных намерений. Например: система может создавать файлы, изменять реестр, ускорять течение времени и так далее.

Пункт 3 — самая вкусная и уникальная фича нашей технологии. Поясню на примере:

Система зарегистрировала, что запущенный файл «уснул» и более не проявляет никакой активности. Но объект может быть запрограммирован тихо висеть несколько (десятков) минут (часов) до запуска вредоносной активности. Тогда мы «на лету» ускоряем течение времени внутри виртуальной машины, чтобы часы тикали со скоростью 1, 3 или 5 минут (да сколько угодно!) в секунду. Функциональность исследуемого файла не меняется, а время ожидания уменьшается в сотни (да хоть в тысячи!) раз. Более того, если по завершении своего «сна» зловред решит проверить системные часы (действительно ли они тикали), то и здесь его ждёт разочарование — придраться будет не к чему.

Ещё пример:

Объект использует уязвимость конкретной библиотеки или пытается изменить содержимое какого-либо файла или реестра. Сначала при помощи обычной функции fopen() он пытается открыть библиотеку (файл, реестр), а если это не получается (нет библиотеки или прав доступа к файлу) — то просто завершает выполнение. При таком сценарии мы «на лету» изменяем возвращаемое значение fopen() с «файл отсутствует» на «файл существует» (а если надо, то и сам файл создадим и наполним его правильным контентом) и смотрим дальше — что объект будет делать.

Такой подход отлично работает и в условиях логических веток поведения объекта. Например: если существуют файл «A» и файл «Б», то модифицировать файл «C» и завершить работу. Однако неизвестно, что будет делать исследуемый файл, если существует только один файл «A» или «Б». Поэтому мы запускаем параллельную итерацию и «говорим» исследуемому файлу, что файл «А» существует, а «Б» отсутствует, и анализируем дальнейшее ветвление логики.

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

Вкратце о технологии всё. В скором будущем она будет внедрена в KATA, а также будет поставляться на рынок в виде отдельного решения для корпоративных заказчиков Kaspersky Sandbox.

Советы