Схема работы руткита Blue Pill предельно проста: запихнуть атакуемую систему в виртуальную машину, где "всё всегда хорошо", а снаружи делать что угодно
Соответственно и пользователь, работающий на заражённом Blue Pill компьютере, не подозревал, что на экране монитора его родная система работает в виртуальном мире.
В принципе идея Рутковски была неоригинальна. Параллельно с ней к подобному решению пришла команда разработчиков из (ну надо же!) того же Microsoft Research, представив в 2006 году совместно с исследователями из мичиганского университета на симпозиуме по приватности и безопасности IEEE руткит-технологию SubVirt.
Руткиты класса Blue Pill и SubVirt, использующие идею аппаратно реализованной скрытой виртуальной машины, отнесли к новому классу, названному Hypervisor level rootkits. Так благая идея аппаратной поддержки виртуализации, предложенная разработчиками процессоров, была использована для далеко не благих целей.
К слову сказать, майкрософтовская разработка SubVirt имела сугубо исследовательский характер. Её целью была демонстрация возможностей руткитов hypervisor level. В отличие от неё, Blue Pill Рутковски был крепко сбит и вполне приспособлен для повседневного использования.
Только применять его в зловредных целях Джоанна не планировала. Вместо этого она создала консалтинговую компанию по безопасности компьютерных систем с красноречивым названием The Invisible Things Lab и в рамках одного из проектов приступила к разработке операционной системы на основе решений Blue Pill.
Qubes OS изнутри
Новое творение Рутковски было названо Qubes OS. Так же как сертифицированные системы и системы на основе управляемого выполнения кода, Qubes OS относится к классу доверенных операционных систем (trusted OS). Это означает, что её пользователь может трудиться, не волнуясь о проблемах с криво написанными драйверами, плагинами браузеров, прячущими вредоносный код, и уязвимостями в ядре операционной системы.
Только в отличие от систем первых двух типов, дотошно исследующих на легитимность работающий в их рамках код, Qubes OS допускает использование любого, даже потенциально опасного кода. Почему? Потому, что так же, как и в Blue Pill, этот код будет выполняться внутри виртуальной машины. И если уж он навредит, то только ей. Ну а перезапустить с обнулёнными параметрами рухнувшую виртуальную машину проще простого.
Формально проект Qubes OS относится к решениям с открытыми исходниками и базируется на Linux. Это означает, что в рамках Qubes OS можно запускать массу написанных для Linux программ и использовать большинство совместимых с Linux драйверов устройств.
Архитектура Qubes OS базируется на гипервизоре виртуальных машин Xen - свободном проекте компании Citrix System, которая приобрела его у разработчика - кембриджского профессора Йена Пратта. Гипервизор Xen относится к системам виртуализации "на железе" (bare-metal) и не требует дополнительной прослойки в виде какой-либо операционной системы. За счёт прямой работы с аппаратурой Xen является весьма нетребовательным к ресурсам, что даёт возможность создавать множество высокопроизводительных виртуальных машин. Множество хостингов, облачных сервисов и виртуальных приватных серверов, которыми мы пользуемся, работают на базе виртуализации Xen.
Гипервизор Xen устроен очень просто. Базируясь на спецификации IOMMU, обеспечивающей прямое подключение шин ввода-вывода к оперативной памяти, реализованных в процессорах разных производителей, Xen устанавливается на компьютер вместо операционной системы. Его задача - управление работой виртуальных машин и их обращениями к "железу". Поверх Xen работает множество виртуальных машин, которые в его терминах именуются доменами (domain). Один из доменов (Domain0 или Dom0) считается привилегированным и предназначен для контролируемого прямого доступа к аппаратуре и управления запросами операционных систем, работающих в других виртуальных машинах. Остальные домены называются пользовательскими (DomainU), и именно в них размещаются гостевые операционные системы.
Архитектура Qubes проста: гипервизор Xen и куча цветных виртуальных машин
Создавая Qubes OS, Рутковски фактически ничего не меняла в архитектуре Xen. Она просто создала виртуальные машины двух классов. Первый - системные виртуальные машины, в которых работают сетевые компоненты Qubes OS, а также домен-хранилище (Storage Domain), содержащий в зашифрованном виде образы остальных виртуальных машин. Главный системный домен Xen (Dom0) содержит специально модифицированную графическую среду X Window, к которой реализован защищённый графический интерфейс пользователя. Работая с Qubes OS, пользователь видит рабочий стол именно домена Dom0.
Второй класс виртуальных машин Qubes OS - прикладные виртуальные машины (AppVM), содержащие образы операционной системы Linux. Именно в их рамках можно устанавливать и запускать любые программы.
Главная идея Qubes OS заключается в том, что разные программы можно запускать в разных виртуальных машинах. Например, все программы, связанные с интернетом, можно вынести в "зелёную" (green) виртуальную машину, программы обработки документов установить в "жёлтой" (yellow) машине, а всё для работы с кредитными картами и прочей важной и секретной информацией вынести в "красную" (red) машину.
Окна разных виртуальных машин в Qubes OS окрашены в разные цвета
Число таких цветных машин может быть любым, всё зависит от фантазии и степени параноидальности пользователя. Пользовательские виртуальные машины работают параллельно и не пересекаются друг с другом. Значит, вредоносные действия программы в одной из них не распространятся на другие машины. Ну а если всё же потребуется обмениваться данными между машинами, в Qubes OS предусмотрен специальный защищённый буфер обмена.
Домены и связи между ними, созданные в Qubes OS, на которой работает сама Джоанна Рутковска
Что произойдёт, если атакованная вирусами прикладная виртуальная машина Qubes OS всё же рухнет? Ничего. Система просто-напросто восстановит её предыдущее состояние из специально сохранённого зашифрованного образа.
Машина времени Qubes OS
Пользователь Qubes OS не тревожится по поводу того, что после установки нового драйвера или плагина к браузеру система может упасть. Если уж что и упадёт, то только виртуальная машина, в которой эта установка производилась. Для пользователя этот будет выглядеть как закрытие окон одного цвета - окон, принадлежащих рухнувшей машине.
Если такая катастрофа произошла, Qubes OS обращается к домену-хранилищу. В нём содержатся девственно чистый образ пустой виртуальной машины (вдруг пользователю приспичит создать машину нового цвета?) и образы дисков с корневой файловой системой и пользовательскими каталогами для всех уже созданных виртуальных машин. Образы эти принадлежат не физическим, а логически дискам и создаются специальным драйвером, именуемым Device Mapper. Задача Device Mapper - динамическое отображение дисковых разделов с использованием механизма COW (Copy-On-Write).
Для дополнительной безопасности образы COW созданных виртуальных машин шифруются с помощью технологии LUKS. Завершая работу Qubes OS или одной из её виртуальных машин, домен хранилища сохраняет последние изменения в образах COW. Именно поэтому в Qubes OS имеется возможность "откатить" работу любой виртуальной машины к предыдущему безопасному состоянию.
Прикладные программы находятся в безопасности внутри виртуальных машин. Но что если злоумышленник нацелится на сам гипервизор Xen? В Qubes OS на этот случай используются аппаратные возможности, обеспечивающие так называемую доверенную загрузку системы, которая препятствует любой несанкционированной попытке вмешаться в процесс загрузки Xen (а именно в этот момент гипервизор наиболее уязвим). Базируется доверенная загрузка на спецификации TPM (Trusted Platform Module), описывающей реализацию аппаратного криптопроцессора, позволяющего подтвердить подлинность любого "железного" компонента" компьютера.
В настоящее время Qubes OS поддерживает реализацию TPM в процессорах компании Intel, которая именуется Intel Trusted Execution Technology (Intel TXT).
Братья Qubes OS
Хитрая организация Qubes OS в мире операционных систем не уникальна. Фактически детище Рутковски реализует давно известный принцип "песочницы" (sandbox) - изолированной пользовательской среды, функционирующей в рамках операционной системы, в которую можно помещать потенциально ненадёжный код.
Хорошим примером песочницы является механизм "тюрем" (jails), реализованный в FreeBSD. Другой показательный пример изолирующих программных сред - Web Sandbox, созданный в компании Microsoft, и песочница Google Chrome Sandbox, реализованная в рамках одноимённого браузера и операционной системы Chrome OS.
Но у Qubes OS в сравнении с другими решениями есть весомое преимущество. Это архитектурная целостность и продуманность работы с несколькими независимыми песочницами одновременно в рамках единой пользовательской среды.