В виртуальном мире она легко заткнёт за пояс любую Тринити |
То, что вчера было опасным руткитом, сегодня превратилось в одну из защищённых ОС. И всё благодаря польской хакерше, а также создателям Linux и Xen.
Известная пословица гласит о благих намерениях, которыми облицована дорога в Пекло. Однако мало кто задумывается о философском инвертировании этого изречения. Частенько чрезвычайно адские штучки ложатся в основу идей, работающих во благо.
В мире операционных систем новые архитектурные решения не всегда появляются благодаря белому и пушистому положительному почину: "А давайте-ка сотворим добро - сделаем сверхнадёжную и безопасную систему с нуля". Порой удачные архитектурные решения разработчику нашёптывает парень с рожками и в красном трико, сидящий у него на плече.
И если разработчики Microsoft Singularity, приспосабливая идею управляемого выполнения кода к ядру вновь изобретаемой операционной системы, пеклись именно о благе пользователей, то создатели героини этой статьи - операционной системы Qubes OS поначалу и не помышляли о столь мирных применениях. Они трудились в поте хакерского лица над хитрым механизмом скрытого манипулирования компьютером ничего не ведающего пользователя. Воплотив этот механизм, они сообразили, что он отлично подходит для архитектуры новой надёжной и безопасной системы.
Август 2006 года. Конференция Black Hat в Лас-Вегасе, где разные "тёмные личности" демонстрируют своё мастерство компьютерного взлома и проникновения.
Именно на этом конвенте польский исследователь безопасности из компании Advanced Malware Labs, девушка (!) Яна Рутковска (Joanna Rutkowska) выступила с докладом "Свержение ядра Windows Vista потехи ради и для заработка" (Subverting Vista kernel for fun and profit).
В своем напичканном техническими терминами выступлении она продемонстрировала интереснейшую идею создания стопроцентно неуловимого руткита - идею, которая чуть позже и легла в основу её более праведной разработки - операционной системы Qubes OS.
Деструктивное творение Рутковски и товарищей называлось Blue Pill. Пилюлей свой руткит исследователи безопасности назвали неспроста. Согласно их задумке, вредоносный код работал на базе безопасной виртуальной машины (Secure Virtual Mashine) под названием Pacifica - одного из первых решений поддержки аппаратной виртуализации от компании AMD и "на лету" помещал код операционной системы атакованного компьютера внутрь виртуальной машины. Перемещённая операционная система (в то время это была Windows Vista) продолжала работать, думая, что трудится непосредственно на компьютере. На самом же деле ей, упрятанной внутри виртуальной машины, скармливалась ложная информация, в то время как за пределами "Матрицы" можно безнаказанно творить всякие безобразия. Допустим, организовать центр управления ботнетом.
Соответственно и пользователь, работающий на заражённом 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 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 обращается к домену-хранилищу. В нём содержатся девственно чистый образ пустой виртуальной машины (вдруг пользователю приспичит создать машину нового цвета?) и образы дисков с корневой файловой системой и пользовательскими каталогами для всех уже созданных виртуальных машин. Образы эти принадлежат не физическим, а логически дискам и создаются специальным драйвером, именуемым 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 в мире операционных систем не уникальна. Фактически детище Рутковски реализует давно известный принцип "песочницы" (sandbox) - изолированной пользовательской среды, функционирующей в рамках операционной системы, в которую можно помещать потенциально ненадёжный код.
Хорошим примером песочницы является механизм "тюрем" (jails), реализованный в FreeBSD. Другой показательный пример изолирующих программных сред - Web Sandbox, созданный в компании Microsoft, и песочница Google Chrome Sandbox, реализованная в рамках одноимённого браузера и операционной системы Chrome OS.
Но у Qubes OS в сравнении с другими решениями есть весомое преимущество. Это архитектурная целостность и продуманность работы с несколькими независимыми песочницами одновременно в рамках единой пользовательской среды.