Привет! Меня зовут Алексей Колесников, я работаю в отделе обнаружения вредоносного ПО экспертного центра безопасности Positive Technologies (PT Expert Security Center, PT ESC), в команде PT Sandbox.

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

Архитектура и подходы к созданию песочниц

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

Агентный анализ

Начнем с агентного анализа. Здесь все достаточно просто — у нас есть какая-то виртуальная машина, в которой запущен некий агент. Он собирает события на уровне ядра и передает на обработку системе или напрямую аналитику. Агентом в этом случае может быть некий драйвер Windows или модуль ядра, если мы говорим о системах Linux.

Если немного углубиться в тему, то при создании агентной песочницы мы разрабатываем руткит. Его задача скрыть себя из системы и замести следы, чтобы не оставить никаких артефактов, по которым злоумышленники могут заподозрить наличие «песка».

К примеру, в операционной системе Linux ядро создает цепочку загруженных модулей, среди которых есть и агент. Его задача — удалить себя из нее, а также из файлов в sysfs, содержащих информацию о драйвере.

? Плюсы

Главное преимущество агентного анализа — высокая производительность по сравнению с песочницами на основе гипервизора (о них речь пойдет ниже). Причина в том, что, когда мы используем безагентный мониторинг, приходится постоянно совершать вызов VM-exit и останавливать гостевую операционную систему. Каждая такая пауза занимает доли секунды, однако, когда мы должны обрабатывать тысячи событий, замедление может быть очень даже заметным.

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

? Минусы

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

Если злоумышленники замечают песочницу, они останавливают запуск вредоносного кода и получают возможность найти обходной путь к своей цели.

Безагентный анализ

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

? Плюсы

Ключевой плюс безагентного анализа — возможность отслеживать все события операционной системы: от загрузки ОС до запуска отдельных приложений. В частности, гипервизорные песочницы позволяют трассировать UEFI — Unified Extensible Firmware Interface, единый расширяемый микропрограммный интерфейс. Это позволяет, например, выявлять такие угрозы, как буткиты.

? Минусы

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

Что же выбрать?

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

Теперь предлагаю посмотреть на те самые сложные техники атак и на то, как с ними справляются разные виды песочниц.

Какие техники хакеры используют для обхода песочниц

Руткиты

Сразу оговоримся, что задача песочницы — не предотвратить запуск руткита, а выявить подозрительное поведение до запуска вредоносной активности. Любой попытке установить в ОС подобный ядерный модуль предшествует ряд действий, увидев которые аналитик SOC заподозрит угрозу и постарается ее устранить. Руткиты наиболее опасны для систем агентного анализа: если вредоносный модуль сможет выполнять процессы на уровне ядра, песочница их не зарегистрирует.

Бесфайловые угрозы

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

  • автозагрузка PowerShell-скриптов;

  • запись кода в ветки реестра;

  • использование инструмента WMI (Windows Management Instrumentation);

  • отложенный запуск кода с помощью планировщика задач.

Бесфайловые атаки на системы Linux осуществляют другими методами, среди которых:

  • системный вызов memfd_create;

  • использование каталога /dev/shm (shared memory);

  • создание файлов в RAM через каталог /tmp.

Некоторые могут не согласиться с приведенными способами для Linux, однако сама концепция Linux — «все есть файл» — подразумевает, что в этой системе нет бесфайловых угроз :)

Атаки через новые системные вызовы

Изготовители операционных систем не стоят на месте и постоянно расширяют свои API. К примеру, в Windows добавляют Ex2, Ex3 или Ex15, что создает определенные трудности для песочниц. Эксперты просто не могут уследить за всеми новыми системными вызовами (system calls), которые добавляют разработчики. Злоумышленники, естественно, стараются использовать свежие функции, пока песочницы еще не способны перехватывать подобные события.

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

Внедрение буткита

Буткит — это вредоносная программа, которая запускается до старта ОС. Например, такая программа может сохраняться в загрузчик жесткого диска, а также в прошивки BIOS или UEFI. С ее помощью злоумышленники закрепляются в системе и скрывают деятельность других вредоносов от средств защиты.

В зависимости от целевой прошивки выделяют два вида буткитов — BIOS или UEFI. Действуют вредоносы тоже по-разному:

  • Буткиты для устройств с BIOS сохраняются в MBR (master boot record), VBR (volume boot record) или IPL (initial program loader). В качестве примера подобного ПО можно назвать Gapz, Satana и Pitou.

  • Буткиты для UEFI внедряются в Bootmgr, SPI flash или EFI-партицию. Среди представителей этого семейства вредоноснов наиболее известны LoJax, FinSpy и TrickBot.

Атака с помощью буткита обычно развивается по следующему сценарию:

  1. Буткит компрометирует загрузку ОС и создает условия для скрытного внедрения руткита и других вредоносов.

  2. Руткит поражает ядро системы.

  3. В режиме пользователя запускается бэкдор.

  4. Злоумышленники перехватывают контроль над системой.

Чаще всего буткиты доставляют в систему через вызовы CreateFileA → WriteFile, команд SCSI (Small Computer System Interface) и функции DeviceIoControl. Как правило, песочницы отслеживают эти команды и помогают аналитикам своевременно заметить атаку.

Когда речь идет о целевых угрозах, хакеры часто записывают вредонос напрямую в чип SPI (Serial Peripheral Interface). Чтобы справиться с таким вызовом, придется провести тонкую настройку песочницы — на виртуальной машине этого контроллера может просто не быть.

DoS-песочницы                                                                            

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

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

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

Вывод

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


⌛ Совсем скоро будет NetCase Day, и если вы хотите послушать реальные кейсы из мира сетевой безопасности до того, как я напишу новую статью, регистрируйтесь! – будем рады вас видеть в качестве зрителей.

? 24 сентября в 16:00

Алексей Колесников

Cпециалист отдела обнаружения вредоносного ПО PT Expert Security Center, Positive Technologies

Комментарии (0)