Пользователь
0,5
рейтинг
5 октября 2010 в 15:45

Разработка → Антивирусные песочницы. Введение

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



Определения.

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

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

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

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

Пример подхода- Invincea.

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

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

Пример подхода- SandboxIE, BufferZone, ZoneAlarm ForceField, изолированная среда Kaspersky Internet Security, Comodo Internet Security sandbox, Avast Internet Security sandbox.

3. Изоляция на основе правил. Все попытки изменения объектов файловой системы и реестра не виртуализируются, но рассматриваются с точки зрения набора внутренних правил средства защиты. Чем полнее и точнее такой набор, тем большую защиту от заражения основной системы предоставляет программа. То есть, этот подход представляет собой некий компромисс между удобством обмена данными между процессами внутри песочницы и реальной системой и уровнем защиты от зловредных модификаций. Контроль прав не даёт возможности атаковать основную систему изнутри песочницы через интерфейсы операционной системы.

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

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

Пример подхода- DefenseWall, Windows Software Restriction Policy, Limited User Account + ACL.

Существуют и смешанные подходы к изоляции процессов песочницы от остальной системы, основанные как на правилах, так и на виртуализации. Они наследуют как достоинства обоих методов, так и недостатки. Причём недостатки превалируют из-за особенностей психологического восприятия пользователей.

Примеры подхода- GeSWall, Windows User Account Control (UAC).

Методы принятия решения о помещении под защиту.

Перейдём к методам принятия решения о помещении процессов под защиту песочницей. Всего их три базовых:

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

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

Недостатки– могут быть проблемы при установке программ, пришедших через песочницу (хотя белые списки и сильно облегчают эту задачу), необходимость вручную запускать процессы в основной, доверенной зоне для обновления программ, обновляющихся только внутри себя самих (например, Mozilla FireFox, Utorrent или Opera).

Примеры программ с таким подходом- DefenseWall, SandboxIE, BufferZone, GeSWall.

2. На основе прав пользователя. Так работает Windows Limited User Account и защита на основе SRP и ACL. При создании нового пользователя ему предоставляются права доступа к определённым ресурсам, а также ограничения на доступ к другим. При необходимости программы работы с запрещёнными для данного пользователя ресурсами необходимо либо перелогиниться в системе под пользователем с подходящим набором прав и запустить программу, либо запустить её одну под таким пользователем, без перелогинивания основного работающего пользователя (Fast User Switch).

Преимущества такого подхода- относительно неплохой уровень общей защищённости системы.

Недостатки- нетривиальность управления защитой, возможность заражения через разрешённые для модификации ресурсы, поскольку модуль принятия решения не отслеживает такие изменения.

3. На основе эвристических подходов. В этом случае модуль принятия решения «смотрит» на исполняемый файл и пытается по косвенным данным угадать, запустить его на основной системе или в песочнице. Примеры– Kaspersky Internet Security HIPS, Comodo Internet Security sandbox.

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

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

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

Режимы использования антивирусных песочниц.

Их всего два основных.

1. Режим постоянной защиты. При старте процесса, который может быть угрозой для основной системы, он автоматически помещается в песочницу.

2. Режим ручной защиты. Пользователь самостоятельно принимает решение о запуске того либо иного приложения внутри песочницы.

Песочницы, имеющие основной режим работы как «постоянную защиту» могут, также, иметь и ручной режим запуска. Равно как и наоборот.

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

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

Для неэвристических песочниц с изоляцией на основе частичной виртуализации характерен режим ручной защиты. Это связано с затруднённым обменом данными между процессами внутри песочницы и основной рабочей системой.

Примеры:

1. DefenseWall (песочница с изоляцией на основе правил) имеет основным режимом работы «постоянный на правилах». Однако, запуск вручную приложений внутри песочницы, равно как и вне неё, присутствуют.

2. SandboxIE (песочница и изоляцией на основе частичной виртуализации) имеет основным режимом работы «ручной». Но при покупке лицензии можно активировать режим «постоянный на правилах».

3. Comodo Internet Security sandbox (песочница с изоляцией на основе частичной виртуализации) имеет основной режим работы «постоянный эвристический». Однако, запуск приложений вручную внутри песочницы, равно как и вне неё, присутствуют.

Вот, в основном, базовые вещи, любой уважающий себя профессионал должен знать об антивирусных песочницах. У каждой отдельной программы свои особенности реализации, которые вы уже сами должны будете найти, понять и оценить те плюсы и минусы, которые она несёт.
Илья Рабинович @IRabinovich
карма
47,0
рейтинг 0,5
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

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

  • +4
    Вот эта ваша статья мне больше понравилась чем предыдущие. Всё по полочкам разложили. Спасибо.
  • +13
    Торт
    • –20
      Нате вам минус за торт
      • +18
        Нате вам минус за минус за торт
  • +2
    Вы забыли ещё про возможность использовать thin providing, наподобие openvz. Фактически, он находится на грани между полной виртуализацией и контролем вызова отдельных функций.

    Заодно очень легко применять изменения, так как они представлены в виде диффа от базового контейнера. (ближайший аналог — джейл в бзде).
  • –1
    «В процессе публикации последней части цикла статей «Ложь, большая ложь и антивирусы» выяснилась катастрофическая необразованность хабра-аудитории в области антивирусных песочниц, что они собой представляют и как работают»
    Это, простите, откуда такие выводы вообще???
    • 0
      более того, как дополнение к Вашей реплике, можно процитировать автора: «в Сети практически начисто отсутствуют достоверные источники информации по данному вопросу.»
      • +1
        Глядя на профиль автора, я бы не рассчитывал на какую либо достоверность опубликованной информации.
        • +3
          А оценить информацию, не глядя в профиль автора, Вы не пробовали?
  • 0
    На мой взгляд, называть песочницами системы, работающие с помощью изоляции на основе правил не совсем правильно. Это скорее HIPS. Песочница — это изолированная среда, которая защищает основную систему в любом случае, даже если вирус прошел все барьеры и правила, в этом и соль. А что будет если система, работающая по 3-й модели неправильно определит правила для приложения? Откатить тут уже не удастся, т.к. все изменения идут прямиком в основную ОС…
    • 0
      Классические HIPS- это HIPS. Чёрностисочные, экспертные HIPS- это тоже HIPS. Антивирусные песочницы тоже подпадают под понятие HIPS. Просто типы разные.

      А изоляция, как я уже писал, достигается не только средствами виртуализации. Просто те, что на правилах, ближе к изначальным, классическим HIPS, нежели те, что с частичной виртуализацией.
  • 0
    :) спасибо вам :)
    гораздо интереснее, чем тогда в комментах к статье.
    • 0
      Пожалуйста. :)
  • +3
    Илья, статья полностью перекрывающая недостатки цикла о «Лжи...» Большущий плюс, и постаивл бы два, если бы Хабр позволил :)

    От себя добавлю некоторый недостаток песочниц типа «SandboxIE»: виртуализированная программа имеет полный доступ к реестру хоста на чтение. Виртуализируется запись. Итого запуск в такой песочнице потенциального вредоноса типа пинча с алгоритмом «проверить пинг на Google — если пинга нет, то закрыться с ошибкой, если есть — реализовать функционал и отправить на хост злоумышленника все кешированные пароли из реестра» работает на ура, а песочница ничего не спасает.

    С другой стороны, в той же SandboxIE реализована возможность добавления плагинов. Ряд из них просто незаменимы, например Buster Sandbox Analyzer. За это именно я и активно использую SandboxIE и именно за это люблю. Насколько реализуется поддержка плагинов в других продуктах этого плана — не знаю.
    • +1
      От таких вещей спасает только система разделения ресурсов между приложениями, но это уже нашлёпка на основной функционал песочницы. Да и не только песочницы, в классических HIPS либо в рамках ACL также возможно реализовать подобную защиту. Например, в DefenseWall такая система разделения есть, также она присутствует в Kaspersky Internet Security. Во всех остальных, насколько я помню (тут я уже могу и ошибаться), такой защиты нет.
      • 0
        Всё верно, но тут возникает вопрос определения политик для неизвестных программ. Пример: пользователь скачал программу А, которая позиционируется как оптимизатор системы. При этом разработчик заявляет, что действует ограниченное по времени предложение по бесплатным лицензиям программы. Чтобы проверить лицензию и активироваться нужен интернет — выход не запретишь. Чтобы что-то оптимизировать, нужен доступ к реестру — и рядовой пользователь с трудом разберёт какие разделы открыть, какие нет, да и не все песочницы чётко позволяют эти ограничения определить. Программа А — новая, и обновления политик от разработчика песочницы ещё не включают это творение. И что? Чтобы обеспечить функционал и позарившись на бесплатную лицензию пользователь откроет доступ программе А, которая оказывается банальным трояном.

        Песочницы могут обеспечивать разный подход и уровень защиты, но ни одна не исключит человеческий фактор. А при разумном человеческом факторе любая песочница отработает на 100% (а в ряде случаев, когда «фактор» совсем разумный — то и вообще песочниц не надо ;) )
  • 0
    Кстати, как вы оцениваете в целом Comodo Internet Security? Не только sandbox, но и антивирус тоже. Странно, что при его бесплатности он довольно редко встречается на компьютерах российских пользователей.
    • 0
      Не знаю. Не смотрел.
    • 0
      Очень мощный пакет с очень слабым, к сожалению, антивирусом. Я бы рекомендовал CIS с отключенным антивирусом и отдельное антивирусное решение. При этом в антивирусе отключить web-monitor, чтобы обеспечить работу файервола CIS, ну или настроить web-monitor только под браузеры для фильтровки работы скриптов «на лету».
      • 0
        Недавно при переустановке винды решил поставить комплексное решение: анвирь + волл и песочницу. В итоге, при запуске программ появилась небольшая задержка, через пару часов доводящая до белого каления.

        Может и не комодо виноват, но переустановил винду и поставил лишь один фаерволл. Работает отлично в связке с анвиром.
      • 0
        Спасибо за ответ, а можете порекомендовать ресурсы (сайты) которые стоит почитать для выбора антивируса? Или это скорее личный опыт?
        • +1
          Скажу Вам честно: таких сайтов достаточно много. В основном — почти каждый форум, связанный с компьютерной безопасностью, имеет такую тему. И долгий и упорный холивар в этих темах по сути сводится к следующим прописным истинам.

          1. Антивирус должен иметь достаточное количество встроенных анпакеров и/или эмулятор для противодействия упакованным вирусам.
          2. Служба вирусных аналитиков должна достаточно оперативно реагировать на новых зловредов.
          3. Антивирус должен обладать достаточно продуманной системой противодействия активной заразе и самозащитой.
          4. Антивирус должен содержать процедуры эффективного лечения файлов, поражённых файловыми вирусами.
          5. В составе антивируса должен иметься мощный антируткит-компонент.

          На данный момент такими антивирусами являются: DrWeb, KAV — абсолютное первое место, Symantec и Avast — второе, Avira, Eset, VBA32 — третье. Это собственное имхо, которое лично щупал руками и проверял. Есть ещё различные a-squared, говорят, очень сильная штука, потом Sophos — но я лично не пробовал, потому говорить не буду. Как и умолчу о тех, кто откровенно не нравится.

          Подчеркну во избежание холивара: все антивирусы можно настроить так, что они не только не будут защищать систему, но и откровенно будут мешать нормальной работе.
          • 0
            Благодарю!
  • +2
    Довольно долго пользуюсь Сандбоксией. И не думал, что массы не в курсе. О_о
    • 0
      Время от времени публикация очевидных вещей на сием ресурсе является полезной =)

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.