Защита ресурсов операционной системы
Иллюстрации
Показать всеИзобретение относится к области защиты ресурсов операционной системы. Техническим результатом является повышение эффективности защиты ресурсов операционной системы. Раскрыты инструментальные средства, выполненные с возможностью предоставления агенту защиты способности определить, находясь в памяти, недоступной из режима с привилегиями операционной системы, были ли изменены один или более ресурсов операционной системы. В некоторых случаях эти инструментальные средства могут предоставить возможность агенту защиты находиться в пределах диспетчера виртуальных машин. В других случаях инструментальные средства могут предоставить возможность агенту защиты находиться в пределах отдельного виртуального раздела, предоставленного диспетчером виртуальных машин. Работая вне режима с привилегиями операционной системы, агент защиты может быть менее подвержен атакам со стороны объектов, работающих в режиме с привилегиями операционной системы. 3 н. и 7 з.п. ф-лы, 11 ил.
Реферат
ПРЕДШЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИ
Процессоры в вычислительных устройствах часто включают в себя привилегированные и непривилегированные режимы работы. Программное обеспечение, исполняющееся в привилегированном режиме, как правило, способно исполнять любую инструкцию, поддерживаемую процессором. Обычно ядро операционной системы выполняется в привилегированном режиме, который иногда упоминается как "Режим 0-го кольца", "Режим Супервизора" или "Режим Ядра".
Напротив, некоторое программное обеспечение, исполняемое на вычислительном устройстве, может быть ограничено исполнением только в непривилегированном режиме. Этот режим, как правило, позволяет программному обеспечению исполнять подмножество инструкций процессора. Операционная система может, таким образом, использовать непривилегированный режим, чтобы ограничить действия программного обеспечения, исполняемого в этом режиме. Например, программное обеспечение могло бы ограничиваться конкретным подмножеством памяти вычислительного устройства. Этот непривилегированный режим иногда называется "Режим 3-го Кольца" или "Пользовательский Режим". В большинстве случаев пользовательские приложения для вычислительного устройства работают в этом непривилегированном режиме.
Если приложение работает в этом непривилегированном режиме, это приложение может запрашивать доступ к части памяти, которая не может быть доступна напрямую из непривилегированного режима. Приложение может, например, захотеть выполнить операцию в этой части памяти, такую как "создание нового файла". Этот запрос обычно направляется через шлюз вызова или другую инструкцию системного вызова, которая преобразует этот код непривилегированного режима в код привилегированного режима. Это преобразование гарантирует, что непривилегированный режим не имеет прямого доступа к памяти, которая определена как доступная только из привилегированного режима.
В соответствии с этими режимами автор вредоносного кода может получить доступ к привилегированному режиму и установить вредоносное программное обеспечение, которое изменяет поведение вычислительного устройства. Это вредоносное программное обеспечение может, например, менять размещение файлов, скрывать файлы, модифицировать файлы, изменять нажатия клавиш или тому подобное. Некоторое из этого вредоносного программного обеспечения может содержать "rootkit" (набор инструментов, позволяющих закрепиться на вычислительном устройстве и предотвратить свое обнаружение), который не только изменяет поведение вычислительного устройства, но также скрывает себя в памяти привилегированного режима. Антивирусные приложения, исполняющиеся на вычислительном устройстве, соответственно, могут быть не в состоянии обнаружить скрытый rootkit, таким образом, давая возможность вредоносному программному обеспечению продолжать свои вредоносные действия. Кроме того, такое вредоносное программное обеспечение может внести изменяющую вставку (патч) во встроенную систему защиты операционной системы, что обсуждается ниже.
Автор вредоносного программного обеспечения может получить доступ к привилегированному режиму и загрузить вредоносное программное обеспечение на вычислительное устройство разными способами, в том числе обманом заставляя пользователя вычислительного устройства невольно устанавливать вредоносное программное обеспечение на собственное пользовательское вычислительное устройство. В результате современные операционные системы часто применяют одну или более систем защиты, чтобы обнаружить такое вредоносное программное обеспечение. Эти системы защиты, как правило, отслеживают некоторые важные ресурсы операционной системы, чтобы обнаружить любые изменения этих ресурсов. Если такая система защиты обнаруживает такое изменение, то система защиты может решить, что конкретный ресурс был заражен вредоносным программным обеспечением. Эти системы защиты также могут предоставлять для антивирусного приложения пользователя список приложений, в текущее время находящихся в памяти непривилегированного режима. Конечно, если вредоносное программное обеспечение успешно укрылось, то оно не появится в предоставляемом списке. Кроме того, если вредоносное программное обеспечение успешно внесло изменяющую вставку в систему защиты, то система защиты не сможет работать или по другим причинам не сможет обнаружить какие-либо изменения важных ресурсов операционной системы.
Несмотря на то что эти системы защиты могут быть эффективными, они также могут страдать от некоторых недостатков. Во-первых, эти системы часто полагаются на незаметность и, следовательно, уязвимы при применении, если идентифицируются вредоносным программным обеспечением. То есть, если вредоносное программное обеспечение дешифрует идентификационную информацию и определит местоположение системы защиты, оно может вывести из строя саму систему защиты. Автор вредоносного программного обеспечения может также информировать других относительно того, как сделать то же самое. Кроме того, и это связано с первым, эти системы защиты, как правило, работают в той же защищенной области, что и операционная система (например, непосредственно в привилегированном режиме). Следовательно, система защиты сама подвергается атаке, если вредоносное программное обеспечение приобретает доступ к привилегированному режиму и способно демаскировать скрытую систему защиты. Наконец, эти системы защиты инициализируются одновременно с операционной системой или привилегированным режимом. Следовательно, если вредоносное программное обеспечение, или автор вредоносного программного обеспечения, захватывает контроль над вычислительным устройством до этой инициализации, это может препятствовать инициализации системы защиты.
РАСКРЫТИЕ ИЗОБРЕТЕНИЯ
Настоящий документ описывает инструментальные средства, способные предоставить возможность агенту защиты определить, находясь в памяти, недоступной из режима с привилегиями операционной системы, были ли модифицированы один или более ресурсов операционной системы. В некоторых вариантах осуществления эти инструментальные средства могут предоставить возможность агенту защиты находиться в диспетчере (управляющей программе) виртуальных машин. В других вариантах осуществления инструментальные средства могут предоставить возможность агенту защиты находиться в пределах особого виртуального раздела, предоставляемого диспетчером виртуальных машин. Действуя вне режима с привилегиями операционной системы, агент защиты может быть менее уязвимым для атак со стороны объектов, работающих в режиме с привилегиями операционной системы.
Данное раскрытие изобретения предусмотрено для представления в упрощенной форме набора концепций, которые дополнительно описываются ниже в подробном описании изобретения. Данное раскрытие изобретения не предназначено для установления ключевых или существенных признаков заявляемого изобретения, а также не предназначено для использования в качестве помощи при определении объема заявляемого изобретения. Термин "инструментальные средства", например, может относиться к системе(ам), способу(ам), машиночитаемым инструкциям и/или технологии(ям), что предполагается в вышеприведенном контексте и всюду в настоящем документе.
ПЕРЕЧЕНЬ ФИГУР ЧЕРТЕЖЕЙ
Фиг. 1 демонстрирует иллюстративное рабочее окружение, в котором могут работать различные варианты осуществления инструментальных средств.
Фиг. 2 показывает различные права на доступ к памяти вычислительного устройства со стороны модулей, продемонстрированных на Фиг. 1.
Фиг. 3 изображает различные блоки памяти вычислительного устройства, в которых находятся некоторые из модулей, продемонстрированных на Фиг. 1.
Фиг. 4 является блок-схемой последовательности операций способа, демонстрирующей иллюстративный способ, которым диспетчер виртуальных машин может защитить блок памяти, соотнесенный с агентом защиты, и установить счетчик времени для запуска агента.
Фиг. 5 демонстрирует иллюстративную архитектуру, имеющую диспетчера виртуальных машин, выполненную с возможностью виртуализации физических процессоров в виртуальные процессоры с множественными операционными системами и виртуальный процессор агента защиты.
Фиг. 6 демонстрирует, как производительность физических процессоров, изображенных на Фиг. 5, может распределяться среди различных виртуальных процессоров.
Фиг. 7 является иллюстративным процессом, демонстрирующим некоторые способы, которыми инструментальные средства могут активировать и запустить агент защиты, который находится в местоположении, которое недоступно из режима с привилегиями операционной системы.
Фиг. 8 является иллюстративным процессом, демонстрирующим некоторые способы, которыми инструментальные средства могут изменить диспетчера виртуальных машин, чтобы активировать и запустить агент защиты, который находится в местоположении, которое недоступно из режима с привилегиями операционной системы.
Фиг. 9 является иллюстративным процессом, демонстрирующим некоторые способы, которыми инструментальные средства могут создавать режим с привилегиями агента защиты, выполняя запрос к диспетчеру виртуальных машин.
Фиг. 10 является иллюстративным процессом, демонстрирующим некоторые способы, которыми инструментальные средства могут создавать режим с привилегиями агента защиты, виртуализируя реальный компьютерный процессор в виртуальные компьютерные процессоры, по меньшей мере один из которых должен запускать агента защиты.
Фиг. 11 является иллюстративным процессом, демонстрирующим некоторые способы, которыми инструментальные средства могут активировать режим с дополнительными привилегиями, не представленный на базовом физическом процессоре.
Одинаковые номера используются повсюду в раскрытии и на чертежах для ссылки на подобные компоненты и признаки.
ПОДРОБНОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯ
Общий обзор
Последующий документ описывает инструментальные средства, выполненные с возможностью эксплуатации агента защиты таким способом, который делает агента защиты устойчивым к изменениям или недоступным из режима с привилегиями операционной системы. Эти инструментальные средства, таким образом, предоставляют возможность защиты самого агента защиты, тем самым гарантируя способность агента защиты обнаруживать изменения важных ресурсов операционной системы. В дополнение, эти инструментальные средства могут завершить работу операционной системы или режима с привилегиями операционной системы в ответ на обнаружение изменений ресурсов или в ответ на попытку модификации самого агента защиты. Кроме того, эти инструментальные средства могут предоставить возможность агенту защиты обеспечивать неизменяемость ресурсов операционной системы без необходимости в дальнейшем обнаруживать модификацию ресурсов.
Окружение, в котором инструментальные средства могут предоставить возможность этих и других действий, излагается ниже, в параграфе, озаглавленном Иллюстративное Операционное Окружение. За ним следует параграф, озаглавленный Автономные Агенты Защиты, который включает в себя два подпараграфа. Первый подпараграф, озаглавленный Агенты Защиты в Диспетчере виртуальных машин, описывает один иллюстративный способ, при котором агент защиты может находиться и исполняться в пределах диспетчера виртуальных машин. За ним следует другой подпараграф, озаглавленный Агенты Защиты в Виртуальном Разделе, описывающий один иллюстративный способ, при котором агент защиты может существовать и исполняться в виртуальном разделе, обособленном от раздела операционной системы.
Далее следует другой параграф, озаглавленный Автономные Режимы с Привилегиями Агента Защиты, который также включает в себя два подпараграфа. Первый подпараграф описывает один иллюстративный способ, которым счетчик времени диспетчера виртуальных машин может добавить режим с привилегиями агента защиты для базового процессора, и озаглавлен Запросы на Защиту к Диспетчеру виртуальных машин. За ним следует подпараграф, озаглавленный Виртуальные Процессоры Агента Защиты, который описывает другой способ, которым может быть создан режим с привилегиями агента защиты, на этот раз с использованием множественных виртуальных процессоров, включающих в себя одно, выполненное с возможностью запуска агента защиты в режиме с привилегиями агента защиты. Далее следует параграф, озаглавленный Иллюстративное Использование Инструментальных Средств, который описывает пример ранее описанных инструментальных средств в действии. Наконец, параграф, озаглавленный Другие Варианты Осуществления Инструментальных Средств, описывает различные другие варианты осуществления и способы, которыми инструментальные средства могут функционировать. Настоящий общий обзор, включающий в себя эти заголовки и краткие изложения параграфов, предусмотрен для удобства читателя и не предназначен для ограничения объема, определяемого формулой изобретения, или названных параграфов.
Иллюстративное Рабочее Окружение
Перед подробным описанием инструментальных средств предоставляется нижеследующее рассмотрение иллюстративного рабочего окружения, чтобы помочь читателю в понимании некоторых способов, которыми могут применяться различные аспекты изобретения, касающиеся инструментальных средств. Окружение, описываемое ниже, представляет собой только один пример и не предполагает ограничения возможности применения инструментальных средств каким-либо конкретным рабочим окружением. Могут использоваться другие окружения без отступления от сущности и объема заявляемого изобретения. Например, в то время как последующие параграфы описывают варианты осуществления с единственным агентом защиты, также могут использоваться множественные агенты защиты. В некоторых случаях агенты защиты могут запускаться независимо и параллельно. В таких вариантах агенты защиты обычно имеют возможность осуществлять доступ только к памяти в пределах своего соответствующего раздела. Кроме того, технические приемы, описываемые ниже, могут использоваться одновременно. То есть разные агенты защиты могут использовать разные технические приемы в пределах одного и того же рабочего окружения.
Возвращаясь к текущему примеру, Фиг. 1 демонстрирует одно такое иллюстративное рабочее окружение 100 в целом. Это окружение включает в себя вычислительное устройство 102, которое само включает в себя один или более процессоров 104, а так же машиночитаемые носители 106. Машиночитаемые носители 106 включают в себя диспетчера 108 виртуальных машин (например, гипервизор), который может предоставить возможность виртуализации одного или более процессоров во множественные виртуальные процессоры. Диспетчер 108 виртуальных машин также может предоставить множественные виртуальные разделы. Один или более виртуальные процессоры могут соотноситься с каждым разделом, и эти виртуальные процессоры распределяются по доступным физическим процессорам. Как продемонстрировано в некоторых вариантах осуществления, диспетчер виртуальных машин может предоставить первый виртуальный раздел 110 и второй виртуальный раздел 112. Как подробно обсуждается ниже, эти разделы могут служить для отделения функций операционной системы от служб агента защиты.
Как тоже продемонстрировано, машиночитаемые носители 106 дополнительно включают в себя операционную систему (ОС) 114, а также одно или более пользовательских приложений 116. Операционная система 114 предоставляет службы (сервисы) 118 операционной системы пользовательским приложениям 116, таким образом, позволяя приложениям функционировать на вычислительном устройстве. В дополнение, операционной системе принадлежат один или более ресурсов 120 операционной системы. Иллюстративные ресурсы включают в себя таблицу диспетчеризации системных служб (SSDT), таблицу диспетчеризации прерываний (IDT), глобальную таблицу дескрипторов (GDT) и тому подобное. Как тоже продемонстрировано, операционная система может включать в себя вредоносное программное обеспечение 122 (т.е. злонамеренный код), который, возможно, был загружен на вычислительное устройство обсуждавшимся выше способом или иначе. Один или более агентов защиты, обсуждаемых ниже, могут обнаружить изменения, произведенные в ресурсах операционной системы вредоносным программным обеспечением, и, в ответ на обнаружение, предпринять защитное действие. Если агент производит такое определение, то этот агент защиты может завершить работу операционной системы и/или вычислительного устройства или может предпринять другое нейтрализующее действие.
Обсудив структуру вычислительного устройства, теперь обратим внимание на различные режимы привилегий, представленные на базовых одном или более физических процессорах 104. Режим 124 с привилегиями диспетчера виртуальных машин представляет собой самый привилегированный режим, продемонстрированный на Фиг. 1. Этот режим привилегий имеет доступ ко всем или почти ко всем ресурсам и памяти устройства. Находясь в режиме 124 с привилегиями диспетчера виртуальных машин, диспетчер виртуальных машин может планировать работу процессоров и разрешать доступ к областям памяти для каждого виртуального раздела. В то время как операционная система, запущенная в разделе, может полагать, что она управляет всеми ресурсами физического процессора, в действительности она управляет только частью, которая задается диспетчером виртуальных машин.
Менее привилегированный, чем режим с привилегиями диспетчера виртуальных машин, режим 126 с привилегиями операционной системы имеет доступ ко всем ресурсам 120 операционной системы и к большей части или ко всей памяти операционной системы. Этот режим привилегий, однако, не имеет доступа к каким-либо ресурсам или памяти, соотнесенным с другим разделом, например, со вторым виртуальным разделом 112. Тем не менее, поскольку этот режим привилегий, как правило, имеет доступ ко всей памяти операционной системы, он иногда упоминается как "Привилегированный Режим". Названия "Режим 0-го кольца", "Режим Супервизора" или "Режим Ядра" также могут описывать этот режим привилегий. Как обсуждалось выше, пользовательское приложение, работающее в режиме 126 с привилегиями операционной системы, как правило, способно исполнять большинство инструкций, предоставляемых процессором, за исключением тех инструкций, которые зарезервированы для режима диспетчера виртуальных машин.
Этот режим с привилегиями операционной системы противопоставляется режиму 128 с привилегиями пользователя, иногда упоминаемому как "Непривилегированный Режим", "Режим 3-го Кольца" или просто "Пользовательский Режим". Как тоже обсуждалось выше, пользовательское приложение не может иметь доступа к определенной памяти, соотнесенной с операционной системой, или изменять ее при работе в режиме 128 с привилегиями пользователя. В большинстве случаев пользовательские приложения вычислительного устройства работают в этом режиме с привилегиями пользователя при выполнении основных операций.
В дополнение к режимам, обсужденным выше, Фиг. 1 также демонстрирует режим 130 с привилегиями второго виртуального раздела и режим 132 с привилегиями агента защиты. Как подробно обсуждается ниже, режим 132 с привилегиями агента защиты может иметь доступ к блоку памяти, к которому не имеет доступа режим с привилегиями операционной системы, и в то же время, как правило, не имеет такого большого доступа к памяти, как режим с привилегиями диспетчера виртуальных машин. В силу этого этот режим привилегий может быть более привилегированным, чем режим с привилегиями операционной системы, но менее привилегированным, чем режим с привилегиями диспетчера виртуальных машин.
Как тоже подробно обсуждается ниже, режим с привилегиями второго виртуального раздела, как правило, имеет доступ к памяти, соотнесенной со вторым виртуальным разделом 112. В дополнение, этот режим может иметь доступ к первому виртуальному разделу. Такой дополнительный доступ может, например, позволить агенту защиты, находящемуся во втором виртуальном разделе, просматривать память, соотнесенную с первым виртуальным разделом и его соответствующей операционной системой. Этот режим, как правило, не имеет доступа к диспетчеру виртуальных машин, и, следовательно, является менее привилегированным, чем режим с привилегиями диспетчера виртуальных машин. Тем не менее, режим с привилегиями второго виртуального раздела имеет доступ еще к блоку памяти, к которому не имеет доступа режим с привилегиями операционной системы.
Тем временем, Фиг. 2 демонстрирует права 200 на доступ к памяти вычислительного устройства. Этот чертеж, таким образом, представляет объем памяти, доступный модулям, изображенным на Фиг.1. Как продемонстрировано, диспетчер 108 виртуальных машин, работающий в режиме 124 с привилегиями диспетчера виртуальных машин, имеет наибольшие права на доступ к памяти из числа всех продемонстрированных модулей. Фактически, диспетчер виртуальных машин находится в блоке 202 памяти, и единственный имеет к нему доступ. На втором месте, агент 204 защиты (например, какой-либо из агентов защиты, проиллюстрированных на Фиг. 1) работает в режиме 132 с привилегиями агента защиты и имеет доступ ко всей памяти, за исключением блока 202, соответствующего диспетчеру виртуальных машин. Агент защиты, однако, имеет доступ к блоку 206 памяти, который является блоком памяти, в котором находится сам агент защиты.
Операционная система 114, тем временем, работает в режиме 126 с привилегиями операционной системы и имеет доступ ко всей памяти, за исключением блока 202 и блока 206. Притом что операционная система не может осуществить доступ к блоку 206 памяти, соотнесенному с агентом защиты, операционная система и соотнесенный с ней режим привилегий имеет доступ к блоку 208 памяти. Этот блок 208 памяти иногда именуется как память ядра или компонент низшего уровня операционной системы и, как правило, содержит ресурсы, показанные на Фиг. 1. Даже если вредоносное программное обеспечение загружается и работает в блоке 208 памяти, тем не менее, вредоносное программное обеспечение не может осуществить доступ к блоку 206 памяти, соотнесенному с агентом защиты.
Наконец, Фиг. 2 демонстрирует, что пользовательские приложения 116 имеют доступ только к блоку 210 памяти. Эти пользовательские приложения и соответствующий режим с привилегиями пользователя не имеют доступа к блоку 208 памяти, соотнесенному с компонентом низшего уровня операционной системы. Имея в виду эту операционную среду, следующие четыре параграфа подробно описывают иллюстративные способы, которые могут сделать агента защиты устойчивым к изменениям или недоступным из режима с привилегиями операционной системы.
Автономные Агенты Защиты
Следующий параграф описывает инструментальные средства, выполненные с возможностью определения, находясь в памяти, недоступной со стороны объекта, работающего в режиме с привилегиями операционной системы, независимо от того, были ли модифицированы один или более ресурсов операционной системы. В этой связи инструментальные средства могут предусматривать, что агент защиты находится в местоположении, отличном от местоположения памяти самой операционной системы. Конкретнее, следующие подпараграфы описывают, как агенты защиты могут находиться или в пределах диспетчера виртуальных машин, или в пределах автономного виртуального раздела.
Агенты Защиты в Диспетчере виртуальных машин
Этот подпараграф описывает, как агент 134 защиты может находиться непосредственно в пределах диспетчера виртуальных машин, как демонстрирует Фиг.1. Поскольку режим с привилегиями операционной системы не может осуществить доступ к диспетчеру виртуальных машин, это местоположение защищает агента защиты от любого вредоносного программного обеспечения, размещенного в памяти операционной системы. Чтобы работать из этого местоположения, агент защиты принимает идентификационную информацию одного или более ресурсов 120 операционной системы, которые агент 134 защиты может отслеживать. Эта идентификационная информация может приниматься посредством идентификатора 136 ресурса. Как продемонстрировано, операционная система может предоставить эту информацию диспетчеру виртуальных машин через вызовы интерфейса прикладного программирования (API), или операционная система может предоставить информацию в форме манифеста (блока информации, описывающего системное окружение) 138. Как обсуждалось выше, эти ресурсы могут включать в себя SSDT, IDT и GDT.
После приема идентификационной информации ресурсов агент 134 защиты распространяет службы 140 агента защиты на операционную систему 114. Эти службы агента защиты, как правило, содержат определение того, был ли какой-либо из идентифицированных ресурсов изменен. Если производится такое определение, агент защиты или диспетчер виртуальных машин может, например, завершить работу операционной системы. Службы агента защиты также могут включать в себя обеспечение неизменяемости в отношении любых ресурсов, помеченных как не имеющие возможности изменяться (например, "только для чтения").
Применение такой архитектуры начинается с загрузки и инициализации диспетчера виртуальных машин, который способен поддерживать рабочую среду для одной или более операционных систем. В данном примере диспетчер виртуальных машин поддерживает рабочую среду для единственной операционной системы 114, которая сама инициализируется после того, как загрузится диспетчер виртуальных машин. В процессе инициализации операционной системы сначала загружается блок 208 памяти, соотнесенный с компонентом низшего уровня операционной системы (например, ядром). В этом блоке 208 памяти, как правило, размещаются некоторые или все ресурсы 120 операционной системы (например, SSDT, GDT, IDT).
Перед тем или в то время как инициализируется операционная система, агент 134 защиты может начать функционировать изнутри диспетчера виртуальных машин. Как обсуждалось выше, агент защиты, как правило, принимает идентификационную информацию набора из одного или более ресурсов операционной системы и определяет, были ли изменены один или более из этих идентифицированных ресурсов. Заметим, что всякий идентифицированный ресурс часто содержит множественные компоненты в различных местоположениях, каждый из которых агент защиты может отслеживать, чтобы полностью защитить весь ресурс. Например, если манифест идентифицирует SSDT как ресурс, который подлежит мониторингу и защите, агент защиты защищает не только таблицу как таковую, но также и другие компоненты SSDT. Например, агент защиты может также отслеживать и просматривать регистр, который указывает на местоположение таблицы. Кроме того, агент защиты может также отслеживать структуры данных трансляции памяти (например, таблицы страниц), которые переводят виртуальный адрес SSDT в физический адрес. Если агент защиты не сможет делать этого, то вредоносный код может создать другую таблицу с иными отображениями таблицы страниц (т.е. обойти непосредственно SSDT).
В дополнение к идентификационной информации, агент защиты также может принимать атрибут защиты, указывающий агенту защиты, как защищать соответствующий ресурс. Например, агент защиты может принимать идентификационную информацию ресурса SSDT, а также соответствующий атрибут защиты "только для чтения". Следовательно, агент защиты узнает, что SSDT должна оставаться только для чтения и, в силу этого, не должна быть изменена. "Инициализация, только для чтения" является другим возможным атрибутом защиты, который указывает агенту защиты, что в соответствующий ресурс может быть произведена запись один раз в процессе инициализации, но после этого ресурс должен оставаться только для чтения.
Агент защиты может принимать эту идентификационную информацию ресурсов и атрибуты защиты ресурсов множеством способов и явно, и пассивно. Например, операционная система может предоставить удостоверенный цифровой подписью манифест, который идентифицирует ресурсы, которые агент защиты может отслеживать. Этот удостоверенный цифровой подписью манифест может идентифицировать ресурсы различными способами, например по имени (к примеру, SSDT, IDT, GDT и т.д.) или по адресу, который отображает ресурсы на соответствующие местоположения в блоке 208 памяти. В последних случаях, манифест может идентифицировать гостевой физический адрес, гостевой виртуальный адрес или системный физический адрес ресурса. Заметим, что в некоторых случаях, гостевой физический адрес может отображаться на фактический системный физический адрес для обнаружения фактического физического местоположения соответствующего компонента ресурса.
После того как диспетчер виртуальных машин или агент защиты принимают манифест, эти компоненты могут определить, был ли манифест фальсифицирован или изменен. Если диспетчер виртуальных машин или агент защиты производят такое определение, диспетчер виртуальных машин или агент защиты могут предпочесть отменить запуск операционной системы. В дополнение, шифрование, связанное со списком ресурсов, может быть признано недействительным, таким образом, защищая его безопасность.
В дополнение или в качестве альтернативы манифесту, агент защиты может принимать идентификационную информацию ресурсов и атрибутов защиты через один или более вызовов интерфейса прикладного программирования (API) к диспетчеру виртуальных машин (например, "гипервызовы"). По мере того как операционная система инициализируется, операционная система (и, возможно, компонент 208 низшего уровня операционной системы) может осуществлять гипервызовы к диспетчеру виртуальных машин, информирующие агента защиты об определенных ресурсах, которые могут отслеживаться и защищаться. Эти гипервызовы могут идентифицировать релевантные ресурсы так же, как обсуждалось выше. Как тоже обсуждалось выше, эти гипервызовы также могут идентифицировать атрибуты защиты ресурсов.
В вариантах осуществления, использующих удостоверенный цифровой подписью манифест наряду с одним или более гипервызовами, агент защиты может сначала просматривать ресурсы, идентифицированные в манифесте, перед тем или в то время как операционная система выполняет начальную загрузку. После этого начального просмотра операционная система может осуществлять гипервызовы к диспетчеру виртуальных машин, предписывающие агенту защиты определить, были ли изменены идентифицированные гипервызовами страницы. Манифест, таким образом, идентифицирует ресурсы для просмотра при каждой начальной загрузке операционной системы, в то время как гипервызовы идентифицируют ресурсы для динамического просмотра после их соответствующей инициализации.
Идентифицируя ресурсы, которые должны отслеживаться, агент защиты затем определяет, были ли изменены ресурсы (например, все части SSDT, обсуждавшейся выше). Агент защиты также может обеспечить неизменяемость в отношении идентифицированных ресурсов. Например, агент защиты может гарантировать, что любой ресурс, помеченный "только для чтения", не изменяется на "доступный для записи".
Чтобы отслеживать и защищать ресурсы этим способом, код, исполняющийся в пределах диспетчера виртуальных машин, может применять менеджер (средство управления) перехватов диспетчера виртуальных машин (например, менеджер 146, изображенный на Фиг. 1). Если это предписано, этот менеджер перехватов может регистрировать перехваты на различных компонентах идентифицированных ресурсов. Благодаря этой регистрации агент защиты в диспетчере виртуальных машин может теперь принимать перехваты, если делаются попытки осуществить доступ к этим идентифицированным ресурсам или модифицировать их. Собственно, агент защиты может проверять и просматривать различные компоненты идентифицированных ресурсов. Он также может активно блокировать попытки модифицировать эти ресурсы.
В некоторых вариантах осуществления агент защиты просматривает ресурсы и определяет исходное состояние ресурсов для использования при сравнении результатов будущих просмотров. В других вариантах осуществления агент защиты уже знает исходное состояние ресурсов для сравнения результатов будущих просмотров. В любом случае, агент защиты может вычислять значение хеш-функции или контрольной суммы этого исходного состояния. После этого вычисления агент защиты просматривает ресурсы перед тем, после того или в то время как операционная система выполняет начальную загрузку. После просмотра агент защиты вычисляет хеш-функцию или контрольную сумму результатов и сравнивает со значением хеш-функции или контрольной суммы исходного состояния. При равенстве агент защиты определяет, что соответствующие ресурсы не были изменены. Конечно, агент защиты может не принимать во внимание значения хеш-функции или контрольной суммы и вместо этого напрямую сравнивать исходное состояние с результатом просмотра.
Однако, если значения различаются, агент защиты и/или диспетчер виртуальных машин могут предпринять одно или более ответных действий. Во-первых, сам агент защиты может завершить работу операционной системы или режима с привилегиями операционной системы, или он может указать диспетчеру виртуальных машин сделать это. С другой стороны, поскольку агент защиты находится в диспетчере виртуальных машин и поскольку диспетчер виртуальных машин поддерживает рабочую среду для операционной системы, эти два компонента способны так завершить работу операционной системы. Кроме того, поскольку агент защиты находится в диспетчере виртуальных машин, в завершение работы операционной системы невозможно вмешаться даже из режима с привилегиями операционной системы.
В дополнение к завершению работы операционной системы, агент защиты и/или диспетчер виртуальных машин могут сначала предупредить операционную систему о предстоящем завершении работы. Канал связи между диспетчером виртуальных машин и операционной системой может предоставить возможность такого обмена информацией. В качестве альтернативы, агент защиты и/или диспетчер виртуальных машин могут записывать предупреждение в ячейку памяти или сообщать о событии, что отслеживается операционной системой.
Независимо от того, было ли подано предупреждение, завершение работы операционной системы может быть или резким или постепенным. В первом случае диспетчер виртуальных машин может просто отключить операционную систему сразу после получения сведений о несовпадении значений хеш-функции или контрольной суммы. В последнем случае диспетчер виртуальных машин может предоставить операционной системе некоторое время, чтобы аккуратно завершить свою работу. За это время операционная система может, например, закрыть какие-либо открытые файлы и сбросить на диск какие-либо соответствующие данные. Операционная система также может освободить назначенные ресурсы. Кроме того, завершение работы может использовать оба подхода. Например, если диспетчер виртуальных машин поддерживает рабочую среду для множественных разделов, она может немедленно завершить работу раздела с несовпадающими значениями хеш-функции или контрольной суммы, предоставляя другому разделу время для аккуратного завершения работы. В любом случае, способ завершения работы может менять конфигурацию в соответствии с политикой и может регулироваться.
В дополнение к завершению работы и соответствующему предупреждению, агент защиты и/или диспетчер виртуальных машин могут предпринять действия после начальной загрузки в ответ на недозволенное изменение идентифицированного ресурса. Например, диспетчер виртуальных машин и/или агент защиты после перезагрузки операционной системы могут уведомить операционную систему об изменении ресурса. В ответ операционная система может выполнить антивирусное обследование для выявления того, действительно ли находится какое-либо вредоносное программное обеспечение в памяти операционной системы, например, в блоке 208 (например, ядре). Кроме того, диспетчер виртуальных машин может выполнить начальную загрузку о