Песочница что бы не было вирусов
Переходя к антивирусным песочницам, суть которых есть защита основной рабочей системы от потенциально опасного контента, можно выделить три базовые модели изоляции пространства песочницы от всей остальной системы.
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).
Преимущества такого подхода- относительно неплохой уровень общей защищённости системы.
Недостатки- нетривиальность управления защитой, возможность заражения через разрешённые для модификации ресурсы, поскольку модуль принятия решения не отслеживает такие изменения.
Преимущества данного подхода- он более прозрачен для пользователя, чем на основе правил. Проще в обслуживании и реализации для компании–производителя.
Отдельно хотелось обратить внимание на метод использования песочницы как средства эвристики, т.е. запуск программы в ней на некоторый промежуток времени с последующим анализом действий и принятием общего решения о зловредности– полноценной антивирусной песочницей данный подход не назвать. Ну что это за антивирусная песочница, которая устанавливается лишь на краткий период времени с возможностью полного её снятия?
Режимы использования антивирусных песочниц.
Их всего два основных.
1. Режим постоянной защиты. При старте процесса, который может быть угрозой для основной системы, он автоматически помещается в песочницу.
2. Режим ручной защиты. Пользователь самостоятельно принимает решение о запуске того либо иного приложения внутри песочницы.
Для песочниц с изоляцией на основе правил характерно использование режима постоянной защиты, поскольку обмен данными между основной системой и процессами внутри песочницы абсолютно прозрачен.
Для эвристических песочниц также характерно использование режима постоянной защиты, поскольку обмен данными между основной системой и процессами внутри песочницы абсолютно несущественен либо сводится к оному.
Для неэвристических песочниц с изоляцией на основе частичной виртуализации характерен режим ручной защиты. Это связано с затруднённым обменом данными между процессами внутри песочницы и основной рабочей системой.
Вот, в основном, базовые вещи, любой уважающий себя профессионал должен знать об антивирусных песочницах. У каждой отдельной программы свои особенности реализации, которые вы уже сами должны будете найти, понять и оценить те плюсы и минусы, которые она несёт.
В таких ситуациях отличную службу могут сыграть программы-песочницы, которым посвящен этот обзор. Принцип работы песочниц отчасти сопоставим с виртуальными машинами (Oracle VM VirtualBox и др., VMware Virtualization). Благодаря виртуализации, все процессы, инициированные программой, выполняются в песочнице — изолированной среде с жестким контролем системных ресурсов.
Данный способ изоляции кода достаточно активно применяется в антивирусном ПО (KIS 2013, avast!), в программах, таких как Google Chrome (в песочнице работает Flash). Не следует, однако, делать вывод, что программы-песочницы являются полной гарантией безопасности. Это всего лишь одно из эффективных дополнительных средств по защите ОС (файловой системы, реестра) от внешних воздействий.
Разработчик Ronen Tzur сравнивает действие программы Sandboxie с невидимым слоем, нанесенным поверх бумаги: на него можно наносить любые надписи; при снятии защиты, лист останется нетронутым.
Можно выделить 4 основных способа применения песочниц в Sandboxie:
- Защищенный интернет-серфинг
- Улучшение приватности
- Безопасная email-переписка
- Сохранение ОС в первоначальном состоянии
Последний пункт подразумевает, что в песочнице можно устанавливать и запускать любые клиентские приложения — браузеры, IM-мессенджеры, игры — без воздействия на систему. Sandboxie контролирует доступ к файлам, дисковым устройствам, ключам реестра, процессам, драйверам, портам и другим потенциально незащищенным источникам.
Прежде всего, SandboxIE полезна тем, что позволяет пользователю гибко настраивать песочницы и привилегии с помощью оболочки Sandboxie Control. Здесь, через контекстное и главного меню, доступны основные операции:
- Запуск и остановка программ под контролем Sandboxie
- Просмотр файлов внутри песочницы
- Восстановление нужных файлов из песочницы
- Удаление всех результатов работы или выборочных файлов
- Создание, удаление и настройка песочниц
Для запуска программы в песочнице достаточно перетянуть исполнимый файл в окно Sandboxie Control, в созданную по умолчанию песочницу. Есть и другие способы — например, меню Проводника Windows или область уведомлений. Окно программы, запущенной в эмулированной среде, будет заключено в желтую рамку, а в заголовке указана решетка (#).
Таким образом, можно создавать песочницы с различными параметрами. Разрешается клонировать конфигурацию уже имеющейся песочницы, для этого, при создании новой, из выпадающего списка нужно выбрать ту среду, из которой требуется перенести настройки.
С помощью приложения Sandboxie можно создавать виртуальные среды любых конфигураций, без ограничений для пользователя. Sandboxie предоставляет большое количество настроек как для отдельных приложений, так и для песочниц.
[+] Гибкая настройка каждой песочницы
[+] Создание правил для группы программ
[−] Нельзя создавать дистрибутивы
[−] Отсутствие мастера настройки
Символично, что Evalaze берет свое начало от программы Thinstall 2007, на данный момент принадлежащей компании VMware.
Evalaze не столь известна, как Sandboxie, среди программ для работы с песочницами, однако имеет ряд интересных особенностей, выделяющей ее из ряда подобных решений. Благодаря виртуализации, приложения можно запускать в автономной среде с любого компьютера, вне зависимости от наличия драйверов, библиотек, более новых версий запускаемого приложения. При этом не требуется ни предварительная настройка, ни дополнительные конфигурационные файлы или библиотеки или ключи реестра.
На странице Compatibility опубликован список приложений, протестированных на совместимость с различными ОС и версиями Evalaze. Например, такие программы, как Adobe Reader, AutoCAD, Google Earth, Outlook, Skype нельзя виртуализировать, в то же время, как большинство приложений из обширного списка полноценно работают с Evalaze.
В главном окне Evalaze доступен мастер создания проекта (Start Wizard). На первом этапе указывается имя и расположение файлов для работы в песочнице. Перед установкой нового приложения Evalaze создает снимок файловой системы и реестра. В PRO-версии можно выбрать глубину сканирования, в бесплатной данной опции нет.
Пользователь может выбрать один из трех способов изоляции новоявленного приложения — WriteCopy, Merge-Mode или Full. Для системных утилит, помещенных в песочницу, рекомендуется режим Write Copy, при котором запросы доступа для чтения передаются в песочницу, и все изменения производятся с копией реальных данных (подробнее см. здесь).
Полученная конфигурация может быть сохранена в проект. От начала и до конца процесс настройки виртуального приложения занимает больше времени, чем, скажем, в Sandboxie, однако он более последователен и понятен.
Следует отметить две дополнительные возможности Evalaze, которые, вероятно, заинтересуют разработчиков ПО, тестировщиков: это работа с виртуальной файловой системой и виртуальным реестром. Данные автономные среды Evalaze можно редактировать на свое усмотрение, добавляя файлы, директории, ключи, необходимые для функционирования той или иной виртуальной программы.
Программа, с помощью которой можно создавать автономные приложения, которые удобно использовать во всевозможных ситуациях, что в целом облегчает миграцию, совместимость, безопасность. Увы, бесплатная версия практически бесполезна, она интересна только для очень поверхностного изучения функций Evalaze.
[−] Малофункциональная ознакомительная версия
[−] Высокая цена Pro-версии
[+] Присутствует мастер настройки
[+] Виртуальные файловая система и реестр
Программа Enigma Virtual Box предназначена для запуска приложений в изолированной виртуальной среде. Список поддерживаемых форматов включает в себя dll, ocx (библиотеки), avi, mp3 (мультимедиа), txt, doc (документы) и др.
Enigma Virtual Box моделирует виртуальную среду вокруг приложения следующим образом. Перед запуском приложения срабатывает загрузчик Virtual Box, который считывает информацию, которая необходима для работы программы: библиотеки и другие компоненты — и предоставляет их приложению вместо системных. В результате программа работает автономно по отношению к ОС.
На конфигурацию песочниц Sandboxie или Evalaze, как правило, уходит минут 5. На первый взгляд, в Virtual Box также не предполагается длительная настройка. В документации использование программы вмещается фактически в одно предложение.
Таким образом, в Enigma Virtual Box нет анализа ОС до установки приложения и после, как в случае с Evalaze. Акцент смещен в сторону разработки — поэтому, скорее, Virtual Box полезен для тестирования, проверки совместимости, создания искусственных условий для запуска программы. Виртуализация неизвестных приложений вызовет затруднения, поскольку пользователь будет вынужден самостоятельно указывать все связи программы самостоятельно.
[−] Отсутствие удобной настройки
[+] Используемые программой ресурсы можно определить самостоятельно
Этапы создания виртуального приложения схожи с Enigma Virtual Box: вначале создается снимок системы перед установкой, затем после нее. Изменения между этими состояниями учитываются при создании песочницы. Однако, в отличие от Virtual Box, Cameyo синхронизируется с удаленным сервером и публикует приложение в облачном хранилище. Благодаря этому, приложения можно запускать на любом компьютере с предоставленным доступом к аккаунту.
Через библиотеку (Library) можно скачать для последующего запуска популярные системные приложения (Public Virtual Apps): архиваторы, браузеры, проигрыватели и даже антивирусы. При запуске предлагается выбрать исполнимый файл и указать, стабильно он работает или нет (что, видимо, как-то учитывается модераторами галереи Cameyo).
Еще одна интересная возможность — создание виртуального приложения через веб-интерфейс. Установщик можно загрузить с компьютера либо указать URL файла.
Процесс конвертации, по заявлениям, занимает от 10 до 20 минут, но часто время ожидания меньше в несколько раз. По окончании, на email приходит уведомление со ссылкой на опубликованный пакет.
При всех облачных удобствах нужно отметить два важных момента. Первый: каждая программа время ко времени обновляется, а в библиотеке присутствуют достаточно устаревшие экземпляры. Второй аспект: приложения, добавленные пользователями, может идти вразрез с лицензией отдельно взятой программы. Необходимо это понимать и учитывать при создании пользовательских дистрибутивов. И третье — никто не даст гарантии, что виртуальное приложение, выложенное в галерею, не модифицировано злоумышленником.
Впрочем, говоря о безопасности, в Cameyo есть 4 режима работы приложения:
- Data mode: программа может сохранять файлы в папке Документы и на Рабочем столе
- Isolated: возможность записи в файловой системе и реестре отсутствует
- Full access: свободный доступ к файловой системе и реестру
- Customize this app: модификация меню для запуска, выбор места хранения программы и др.
Удобный облачный сервис, к которому можно подключиться на любом компьютере, позволяющий быстро создавать портативные приложения. Настройка песочниц сведена к минимуму, не все прозрачно с проверкой на вирусы и безопасностью в целом — однако в данной ситуации достоинства способны компенсировать недостатки.
[+] Сетевая синхронизация
[+] Доступ к пользовательским приложениям
[+] Создание виртуальных приложений онлайн
[−] Отсутствие настройки песочниц
Четыре возможности, привносимые виджетом:
- Создание песочниц для файлов и приложений
- Наведение порядка на Рабочем столе посредством ярлыков, меню быстрого запуска
- Безопасное тестирование новых приложений, запуск устаревших версий поверх новых
- Отмена изменений, произведенных песочницей
Очень удобна организация десктопа: на виртуальный Рабочий стол можно перетянуть нужные файлы, которые будут синхронизироваться со spool.net. Новые песочницы можно создавать буквально двумя кликами.
[+] Интеграция виджета с Рабочим столом
[+] Быстрое создание песочниц
[−] Отсутствие настроек по ограничению виртуальных программ
В своем прошлом блоге "Мнение: почему не стоит сидеть на Windows 7 и 8.1 в 2019 году" я поднимал вопросы безопасности в ОС, теперь хочу рассказать еще об одном эффективном способе поднять защищенность вашей системы.
Сегодня я расскажу вам, как установить, настроить и запускать Windows Sandbox и как с ее помощью осуществлять безопасный и приватный серфинг в интернете даже по вредоносным сайтам, полными вирусов и троянов.
Для чего это может понадобиться? Например, вам надо скачать какую-нибудь древнюю версию редкой программы, которая есть только на подозрительных сайтах. Сама программа может быть безобидной, а вот сайт, с которого она распространяется, может быть забит троянами, вирусами и эксплойтами. Виртуальная машина или песочница Windows позволит вам совершенно спокойно посещать такие сайты, так как она не имеет пересечения с вашей основной ОС. Если и произойдет заражение, то оно будет ограничено виртуальной машиной.
В плане приватности Windows Sandbox может быть в том случае, если вы не хотите, чтобы другой пользователь компьютера видел, по каким сайтам вы лазаете. Например, вы в гостях, или дома компьютером пользуются два-три человека. Серфинг на Windows Sandbox не оставит никаких следов в основной ОС. Как только вы ее выключите - все данные сотрутся. Даже режим "Инкогнито" в браузере не даст такой приватности.
Ну что же, перейдем к практике. Windows Sandbox встроена в Windows 10 May 2019 Update и Windows 10 November 2019 Update редакций Pro или Enterprise.
Для начала в BIOS активируем функцию виртуализации.
Теперь найдите Windows Sandbox в меню "Пуск", запустите ее и разрешите повышение привилегий.
Теперь можно приступать к интернет-серфингу. В песочнице есть браузеры internet explorer и EDGE.
Сама песочница внутри себя потребляет 1.3 ГБ.
При желании можно скопировать в нее любой портабельный браузер и пользоваться им, это занимает несколько десятков секунд. Я копирую Comodo Dragon.
Она на английском, но простая и понятная. После ее использования сохранится файл с расширением *.wsb, запуском которого вы будете запускать песочницы с заданными параметрами. Не забывайте включить ускорение посредством GPU в Windows Sandbox, это здорово ускоряет работу с браузером.
Не забывайте, что "Drag and Drop" в окно песочницы не работает, а вот "скопировать" и "вставить" работают. Копирование в случае использования SSD-накопителя происходит довольно быстро. Главное, не забывайте, что все содержимое Windows Sandbox будет уничтожено при закрытии, поэтому надо скопировать информацию в компьютер до выключения.
Итоги
В виде встроенной виртуальной машины Windows Sandbox мы получили не только инструмент проверки подозрительных файлов, но и возможность абсолютного безопасного открытия вредоносных сайтов. Но, не забывайте, что при таком посещении опасных сайтов информация браузера может быть скомпрометирована, поэтому старайтесь не вводить логины и пароли.
WARNING
Неправильное использование описанной методики может нанести вред системе и привести к заражению! Будь внимателен и осторожен.
Конечно, в Сети есть масса готовых онлайн-сервисов, которые предлагают анализ файлов: Anubis, CAMAS, ThreatExpert, ThreatTrack. Подобные сервисы используют разные подходы и имеют свои достоинства и недостатки, но можно выделить и общие основные минусы:
• Необходимо иметь доступ к интернету. • Необходимо ждать очереди в процессе обработки (в бесплатных версиях). • Как правило, файлы, создаваемые или изменяемые в ходе выполнения, не предоставляются. • Невозможно контролировать параметры выполнения (в бесплатных версиях). • Невозможно вмешиваться в процесс запуска (например, нажимать на кнопки появляющихся окон). • Как правило, невозможно предоставлять специфические библиотеки, необходимые для запуска (в бесплатных версиях). • Как правило, анализируются только исполняемые РЕ-файлы.
Пара предупреждений
- Sandboxie позволяет отслеживать только программы на уровне user mode. Вся деятельность вредоносного кода в режиме ядра не отслеживается. Поэтому максимум, что удастся узнать при изучении руткитов — это каким образом вредонос внедряется в систему. Проанализировать само поведение на уровне kernel mode, к сожалению, невозможно.
- В зависимости от настроек Sandboxie может блокировать выход в Сеть, разрешать полный доступ или доступ только для отдельных программ. Понятно, что, если для нормального запуска вредоносу нужен выход в интернет, необходимо его предоставить. С другой стороны, если у тебя на флешке валяется Pinch, который запускается, собирает все пароли в системе и отправляет их на ftp злоумышленнику, то Sandboxie с открытым доступом в интернет не защитит тебя от потери конфиденциальной информации! Это очень важно, и об этом следует помнить.
Песочницы Sandboxie
Первичная настройка Sandboxie
Sandboxie — великолепный инструмент с большим количеством настроек. Упомяну лишь те из них, которые необходимы для наших задач.
Подключаем плагины
Нам понадобится несколько плагинов, которые перечислены ниже.
Окна, программ запущенные в песочнице, теперь будут выделяться
Теперь настроим сам плагин Buster Sandbox Analyzer.
Лично я рекомендую всегда создавать песочницы на локальных дисках. Это ускоряет работу инструмента, а при запуске с флешки — ускоряет на порядки. Если же тебя настолько замучила паранойя, что хочется всё запускать и анализировать на любимом носителе, который ты носишь у сердца, то параметр можно поменять, но тогда хотя бы используй портабельные жесткие диски, чтобы всё безбожно не тормозило.
Практическое применение
Скачиваем образец малвари для анализа
BSA включает в себя массу настроек по анализу и изучению процесса выполнения бинарника, вплоть до перехвата сетевых пакетов. Смело нажимай кнопку Start Analysis. Окно перейдет в режим анализа. Если песочница, выбранная для анализа, по каким-то причинам содержит результаты предыдущего исследования, утилита предложит предварительно ее очистить. Все готово к запуску исследуемого файла.
Сразу после этого в окне анализатора побегут API-вызовы, которые будут фиксироваться в лог-файлах. Обрати внимание, что сам Buster Sandbox Analyzer не знает, когда завершится анализ процесса, фактически сигналом к окончанию служит именно твое жмакание на кнопку Finish Analysis. Как же узнать, что время уже наступило? Тут может быть два варианта.
После этого можно смело выбирать Finish Analysis в окне Buster Sandbox Analyzer.
Чеклист подозрительного поведения приложения
Анализ поведения
Отчет о проведенном анализе
Что умеет и не умеет инструмент
Полученный инструмент умеет:
Этот инструмент не может:
- Анализировать зловреды, выполняющиеся в kernel mode (требующие установки драйвера). Тем не менее возможно выявить механизм установки драйвера (до его фактического внедрения в систему).
- Анализировать зловреды, отслеживающие выполнение в Sandboxie. Однако Buster Sandbox Analyzer включает в себя ряд механизмов, препятствующих такому отслеживанию.
В основе работы почти всех применяемых сегодня песочниц для изоляции приложений, будь то песочницы Firejail, песочницы iOS, Android или даже системы Docker, лежит один простой принцип: запереть приложение в его каталоге и отрезать ему доступ к информации об остальной части системы и ее API. Как это реализуется — с помощью chroot, пространств имен и seccomp-bpf, как в большинстве песочниц Linux, или с помощью запуска каждого приложения с правaми созданного специально для него юзера и своей собственной системы ограничения прав, как в Android, — неважно. А важно то, что в каждом из этих случаев за изоляцию приложений отвечает ядро ОС, общее для всех них.
Благодаря использованию встроенных в ядро механизмов изоляции такие песочницы очень дешевы в создании и обслуживании, они не приводят к существенному увеличению расхода оперативной памяти, не съедают место на диске и вообще отличаются высокой эффективностью. Однако платить, как известно, приходится за все, и в данном случае расплата бьет по тому самому месту, которое песочницы и призваны охранять, — безопасности основной системы.
Запуская софт в пeсочнице, мы рассчитываем оградить его от других песочниц и операционной системы, просто для того, чтобы взлом этой софтины или наличие в ней малвари не привели к компрометации всех остальных данных. И в большинстве случаев это работает, но ровно до тех пор, пока взломщик не найдет способ из нее выбраться. А способ этот в грамотно спроектированной песочнице обычно один — уязвимость в ядре ОС. Почти вся малвaрь для Android, способная получить права root, и большинство джейлбрейков iOS эксплуатируют дыры в ядре. А ядро настольного Linux почти ничем не отличается от ядра того же Android. И дыры в нем находят хоть и чуть реже (благодаря меньшему количеству блобов от производителей железа), но регулярно.
Разработчикам песочниц и операционных систем, запускающих софт в песочницах, это хорошо известно, как и последствия. Поэтому Apple и Google, все операционки которых используют идею песочниц, борются с этой угрозой при помощи апдейтов: появилась информация о дыре — быстро ее исправляем и выкатываем обновление. У Apple это получается хорошо, у Google плoхо, но в любом случае, если информации о дыре нет, не будет исправления. И если на твоем смартфоне оно не так уж и важно, то в Linux-системе, где хранится твой Bitcoin-кошелек и куча другой конфиденциальной информации, взлом системы через запущенный в песочнице браузер может привести к очень печальным последствиям.
Один из способов борьбы с 0day-уязвимостями в ядре — виртуальная машина, такая как VirtualBox, QEMU или Parallels. Запускаем небезопасное приложение внутри виртуальной машины вместо классической песочницы, и вуаля — взлом самого приложения и возможный взлом ядра никак не затрагивают основную ОС. В таком подходе уязвимым местом оказывается не ядро, а гипервизор и код, эмулирующий различные железные подсистемы: сетевую карту, USB- и SATA-контроллеры. И еcли посмотреть на статистику уязвимостей того же VirtualBox, то становится ясно, что в целом критических уязвимостей здeсь намного меньше, чем, например, в ядре Linux. Но что более интереcно: почти все из них находят именно в коде эмуляции железа.
И здесь мы подходим к самoму интересному вопросу: а можно ли создать настолько простую виртуальную машину (в идеале вообще без кода эмуляции железа), чтобы она была практически неуязвима, но тем не менее способна запускать стандартный пользовательский софт?
Несмотря на то что Cappsule использует в своей работе механизмы виртуализации Intel VT-x и EPT, назвать ее полноценной виртуальнoй машиной крайне сложно. Это система изоляции, построенная на технологиях виртуализации. Она использует простой и компактный гипервизор (всего 15 тысяч строк кода), позволяющий запустить копию ядра Linux основной ОС и выбранное приложение внутри виртуального окружения с полной интеграцией приложения в текущий графический интерфейс.
Cappsule не эмулирует железо и не оперирует полноценными виртуальными машинами с собственным ядром, виртуальными дисками, сетевой картой и другими кoмпонентами обычного ПК, как это делает VirtualBox или QEMU. Она действует намного хитрее: сразу после своей загрузки загружает в ядро текущей ОС модуль с гипервизором и отдает ему управление. Гипервизор в свою очередь создает новое виртуальное окружение и размещает внутри него текущую ОС. Этот метод называется Blue Pill (он был описан Йоанной Рутковской в 2006 году) и нужен для того, чтобы получить контроль над исполнением текущей ОС.
После этого гипервизор Cappsule останавливает исполнение ядра ОС, переводит в офлайн все ядра процессора, кроме текущего, делает снимок пaмяти, занимаемой ядром ОС, затем возвращает ядру управление. Позднее, получив запрос на запуск приложения в песочнице, гипервизор создает еще одно виртуальное окружение с копией памяти ядра, запускает в нем несколько служебных процессов и указанное приложение.
Для приложения такая виртуальнaя система выглядит настоящей. Оно может работать с файловой системой, выполнять сетевые запросы, выводить на экран картинку и выполнять системные вызовы ядра. Но так как Cappsule не эмулирует железные компоненты классической виртуальной машины и не предоставляет доступ к реальному железу (фактически запрещены любые операции ввода-вывода), для того чтобы дать приложению возможность доступа к файловой системе, сетевому адаптеру и GUI-подсистеме, Cappsule запускает внутри виртуального окружения три специальных процесса:
Fsclient для проброса файловой системы (точнeе, иерархии) основной системы внутрь виртуальной. Fsclient имеет клиент-серверную архитектуру и общается с демоном fsserver, запущенным в хост-системе. При доступе к тому или иному файлу fsclient отправляет запрос fsserver, а тот в ответ выдает результат запроса или ошибку доступа, если доступ к этому файлу запрещен в настройках. Естественно, виртуальное окружение может выполнять запись файлов, поэтому, чтобы не скомпрометировать хост-систему, fsserver модифицирует файлы в режиме copy-on-write (для этого он использует технологию OverlayFS ядра Linux, ту же, на которой построена система слоев в Docker). Другими словами, все модификации файлов из виртуального окружения будут уникальны только для этого виртуального окружения; изменить файлы напрямую оно не может.
Netclient для проброса внутрь виртуального окружения сетевого интеpфейса. В этом случае используется схожая схема: netclient создает внутри виртуального окружения сетевой интеpфейс tun0, все операции чтения и записи в который отправляются демону netserver, работающему в хоcт-системе. С помощью настроек брандмауэра netserver перенаправляeт эти данные на реальный физический сетевой интерфейс машины, опять же консультируясь с настройками.
Guiclient для доступа приложения к графической подсистеме хоста. Принцип работы примерно тот же. Guiclient запускает внутри окружения виртуальный X-сервер, запросы к которому перенаправляются в guiserver на хост-системе, а тот, в свою очередь, перенаправляет эти запpосы настоящему X-серверу. Guiclient создан на базе графической подсистемы операционной системы Qubes OS и так же, как последняя, позволяет бесшовно вписать окно запущенного внутри песочницы приложения в графический интерфейс хост-системы.
Читайте также: