В процессе публикации последней части
цикла статей «Ложь, большая ложь и антивирусы» выяснилась
катастрофическая необразованность хабра-аудитории в области
антивирусных песочниц, что они собой представляют и как работают.
Что
самое смешное в этой ситуации — в Сети практически начисто отсутствуют
достоверные источники информации по данному вопросу. Лишь куча
маркетоидной шелухи и текстов от не пойми кого в стиле «одна бабка
сказала, слушай сюды». Придётся мне восполнять пробелы.
Определения
Итак,
песочница. Сам термин произошёл не от детской песочницы, как могут
некоторые подумать, а от той, что пользуются пожарные. Это бак с
песком, где можно безопасно работать с легковоспламеняющимися
предметами либо бросать туда что-то уже горящее без боязни подпалить
что-нибудь ещё. Отражая аналогию данного технического сооружения на
софтверную составляющую, можно определить программную песочницу как
«изолированную среду исполнения с контролируемыми правами». Именно так,
например, работает песочница Java-машины. И любая другая песочница
тоже, вне зависимости от предназначения.
Переходя к антивирусным
песочницам, суть которых есть защита основной рабочей системы от
потенциально опасного контента, можно выделить три базовые модели
изоляции пространства песочницы от всей остальной системы.
Изоляция на основе полной виртуализации Использование
любой виртуальной машины в качестве защитного слоя над гостевой
операционной системой, где установлен браузер и иные потенциально
опасные программы, через которые пользователь может заразиться, даёт
достаточно высокий уровень защиты основной рабочей системы.
Недостатки
подобного подхода, кроме монструозного размера дистрибутива и сильного
потребления ресурсов, кроются в неудобствах обмена данными между
основной системой и песочницей. Более того, нужно постоянно возвращать
состояние файловой системы и реестра к исходным для удаления заражения
из песочницы. Если этого не делать, то, например, агенты спам-ботов
будут продолжать свою работу внутри песочницы как ни в чём не бывало.
Блокировать их песочнице нечем. Кроме того, непонятно, что делать с
переносимыми носителями информации (флешки, например) или выкачанными
из Интернета играми, в которых возможны зловредные закладки.
:: Примеры программ с таким подходом
Invincea.
Изоляция на основе частичной виртуализации файловой системы и реестра Совсем
необязательно таскать с собой движок виртуальной машины, можно
подпихивать процессам в песочнице дубликаты объектов файловой системы и
реестра, помещая в песочницу приложения на рабочей машине пользователя.
Попытка модификации данных объектов приведёт к изменению лишь их копий
внутри песочницы, реальные данные не пострадают. Контроль прав не даёт
возможности атаковать основную систему изнутри песочницы через
интерфейсы операционной системы.
Недостатки подобного подхода
также очевидны — обмен данными между виртуальным и реальным окружением
затруднён, необходима постоянная очистка контейнеров виртуализации для
возврата песочницы к изначальному, незаражённому состоянию. Также,
возможны пробои либо обход такого вида песочниц и выход зловредных
программных кодов в основную, незащищённую систему.
:: Примеры программ с таким подходом
SandboxIE,
BufferZone, ZoneAlarm ForceField, изолированная среда Kaspersky
Internet Security, Comodo Internet Security sandbox, Avast Internet
Security sandbox.
Изоляция на основе правил Все
попытки изменения объектов файловой системы и реестра не
виртуализируются, но рассматриваются с точки зрения набора внутренних
правил средства защиты. Чем полнее и точнее такой набор, тем большую
защиту от заражения основной системы предоставляет программа. То есть,
этот подход представляет собой некий компромисс между удобством обмена
данными между процессами внутри песочницы и реальной системой и уровнем
защиты от зловредных модификаций. Контроль прав не даёт возможности
атаковать основную систему изнутри песочницы через интерфейсы
операционной системы.
К плюсам такого подхода относится, также,
отсутствие необходимости постоянного отката файловой системы и реестра
к изначальному состоянию.
Недостатки подобного подхода —
программная сложность реализации максимально точного и полноценного
набора правил, возможность лишь частичного отката изменений внутри
песочницы. Так же, как и любая песочница, работающая на базе рабочей
системы, возможен пробой либо обход защищённой среды и выход зловредных
кодов в основную, незащищённую среду исполнения.
:: Примеры программ с таким подходом
DefenseWall, Windows Software Restriction Policy, Limited User Account + ACL.
Существуют и смешанные подходы
к изоляции процессов песочницы от остальной системы, основанные как на
правилах, так и на виртуализации. Они наследуют как достоинства обоих
методов, так и недостатки. Причём недостатки превалируют из-за
особенностей психологического восприятия пользователей.
:: Примеры программ с таким подходом
GeSWall, Windows User Account Control (UAC).
Методы принятия решения о помещении под защиту
Перейдём к методам принятия решения о помещении процессов под защиту песочницей. Всего их три базовых:
На основе правил То
есть, модуль принятия решения смотрит на внутреннюю базу правил запуска
тех или иных приложений или потенциально опасных файлов и, в
зависимости от этого, запускает процессы в песочнице либо вне неё, на
основной системе.
Преимущества данного подхода — наиболее
максимальный уровень защиты. Закрываются как зловредные программные
файлы, пришедшие из потенциально опасных мест через песочницу, так и
неисполняемые файлы, содержащие зловредные скрипты.
Недостатки —
могут быть проблемы при установке программ, пришедших через песочницу
(хотя белые списки и сильно облегчают эту задачу), необходимость
вручную запускать процессы в основной, доверенной зоне для обновления
программ, обновляющихся только внутри себя самих (например, Mozilla
FireFox, Utorrent или Opera).
:: Примеры программ с таким подходом
DefenseWall, SandboxIE, BufferZone, GeSWall.
На основе прав пользователя При
создании нового пользователя ему предоставляются права доступа к
определённым ресурсам, а также ограничения на доступ к другим. При
необходимости программы работы с запрещёнными для данного пользователя
ресурсами необходимо либо перелогиниться в системе под пользователем с
подходящим набором прав и запустить программу, либо запустить её одну
под таким пользователем, без перелогинивания основного работающего
пользователя (Fast User Switch).
Преимущества такого подхода — относительно неплохой уровень общей защищённости системы.
Недостатки
— нетривиальность управления защитой, возможность заражения через
разрешённые для модификации ресурсы, поскольку модуль принятия решения
не отслеживает такие изменения.
:: Примеры программ с таким подходом
Так работает Windows Limited User Account и защита на основе SRP и ACL.
На основе эвристических подходов В
этом случае модуль принятия решения «смотрит» на исполняемый файл и
пытается по косвенным данным угадать, запустить его на основной системе
или в песочнице.
Преимущества данного подхода — он более
прозрачен для пользователя, чем на основе правил. Проще в обслуживании
и реализации для компании — производителя.
Недостатки —
неполноценность подобной защиты. Кроме того, что эвристик модуля
принятия решения может «промахнуться» на исполняемом модуле, такие
решения демонстрируют практически нулевую сопротивляемость
неисполняемым файлам, содержащим зловредные скрипты. Ну, плюс ещё
парочка проблем (например, с установкой зловредных расширений изнутри
самого браузера, из тела эксплойта).
:: Примеры программ с таким подходом
Kaspersky Internet Security HIPS, Comodo Internet Security sandbox.
Отдельно
хотелось обратить внимание на метод использования песочницы как
средства эвристики, т.е. запуск программы в ней на некоторый промежуток
времени с последующим анализом действий и принятием общего решения о
зловредности — полноценной антивирусной песочницей данный подход не
назвать. Ну что это за антивирусная песочница, которая устанавливается
лишь на краткий период времени с возможностью полного её снятия?
Режимы использования антивирусных песочниц
Их всего два основных:
Режим постоянной защиты При старте процесса, который может быть угрозой для основной системы, он автоматически помещается в песочницу.
Режим ручной защиты Пользователь самостоятельно принимает решение о запуске того либо иного приложения внутри песочницы.
Песочницы,
имеющие основной режим работы как «постоянную защиту» могут, также,
иметь и ручной режим запуска. Равно как и наоборот.
Для песочниц
с изоляцией на основе правил характерно использование режима постоянной
защиты, поскольку обмен данными между основной системой и процессами
внутри песочницы абсолютно прозрачен.
Для эвристических песочниц
также характерно использование режима постоянной защиты, поскольку
обмен данными между основной системой и процессами внутри песочницы
абсолютно несущественен либо сводится к оному.
Для
неэвристических песочниц с изоляцией на основе частичной виртуализации
характерен режим ручной защиты. Это связано с затруднённым обменом
данными между процессами внутри песочницы и основной рабочей системой.
Примеры:
DefenseWall
(песочница с изоляцией на основе правил) имеет основным режимом работы
«постоянный на правилах». Однако, запуск вручную приложений внутри
песочницы, равно как и вне неё, присутствуют.
SandboxIE
(песочница и изоляцией на основе частичной виртуализации) имеет
основным режимом работы «ручной». Но при покупке лицензии можно
активировать режим «постоянный на правилах».
Comodo Internet Security sandbox
(песочница с изоляцией на основе частичной виртуализации) имеет
основной режим работы «постоянный эвристический». Однако, запуск
приложений вручную внутри песочницы, равно как и вне неё, присутствуют.
Заключение
Вот,
в основном, базовые вещи, любой уважающий себя профессионал должен
знать об антивирусных песочницах. У каждой отдельной программы свои
особенности реализации, которые вы уже сами должны будете найти, понять
и оценить те плюсы и минусы, которые она несёт.