Агенты защиты и привилегированные режимы

Иллюстрации

Показать все

Группа изобретений относится к процессорам в вычислительных устройствах, содержащим агент защиты. Технический результат заключается в повышении надежности функционирования процессора за счет использования агента защиты. Для этого виртуализируют один или более реальных вычислительных процессоров в виртуальные вычислительные процессоры, каждый из которых ассоциативно связан с соответствующим разделом, причем виртуальные вычислительные процессоры содержат: виртуальный процессор операционной системы, ассоциативно связанный с первым разделом и имеющий привилегию изменять собственную память операционной системы и использовать часть производительности обработки одного или более реальных вычислительных процессоров; и виртуальный процессор агента защиты, ассоциативно связанный со вторым разделом и имеющий привилегию изменять собственную память агента защиты и использовать другую часть производительности обработки одного или более реальных вычислительных процессоров, причем память агента защиты недоступна из виртуального процессора операционной системы; и инструктируют виртуальному процессору агента защиты выполнять агент защиты, постоянно размещающийся во втором разделе, чтобы определять то, изменялась ли часть упомянутой памяти операционной системы. 3 н. и 15 з.п. ф-лы, 11 ил.

Реферат

Уровень техники

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

В отличие от этого, определенное программное обеспечение, запущенное на вычислительном устройстве, может быть ограничено так, чтобы запускаться только в непривилегированном режиме. Этот режим, в общем, дает возможность программному обеспечению выполнять поднабор инструкций процессора. Операционная система, таким образом, может использовать непривилегированный режим для того, чтобы ограничивать действия программного обеспечения, работающего в этом режиме. Например, программное обеспечение может быть ограничено конкретным поднабором памяти вычислительного устройства. Этот непривилегированный режим иногда называют "кольцо 3" или "пользовательский режим". В общем, пользовательские приложения вычислительного устройства работают в этом непривилегированном режиме.

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

В соответствии с этими режимами, автор вредоносного кода может осуществлять доступ к привилегированному режиму и устанавливать вредоносные программы, которые изменяют режим работы вычислительного устройства. Эти вредоносные программы могут, например, менять местоположение файлов, скрывать файлы, модифицировать файлы, изменять нажатия клавиши и т.п. Некоторые из этих вредоносных программ могут содержать "руткит", который не только изменяет режим работы вычислительного устройства, но также скрывает себя в памяти привилегированного режима. Антивирусные приложения, запущенные на вычислительном устройстве, соответственно, могут не быть в состоянии обнаруживать этот скрытый руткит, тем самым давая возможность вредоносным программам продолжать свои вредоносные операции. Кроме того, такие вредоносные программы могут вносить исправления поверх встроенной системы защиты операционной системы, как пояснено ниже.

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

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

Сущность изобретения

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

Данная сущность изобретения предоставлена для того, чтобы представлять в упрощенной форме выбор концепций, которые дополнительно описаны ниже в подробном описании. Эта сущность не имеет намерение идентифицировать ключевые или важнейшие признаки заявляемого предмета изобретения, а также не имеет намерение использоваться в качестве помощи при определении объема заявляемого предмета изобретения. Термин "инструментальные средства", например, может упоминаться как система(ы), способ(ы), машиночитаемые инструкции и/или методика(и) в соответствии с вышеозначенным контекстом по всему документу.

Краткое описание чертежей

Фиг.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 дополнительно включают в себя операционную систему (OS) 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, ассоциативно связанная с самым низкоуровневым компонентом операционной системы (к примеру, ядром). Некоторые или все ресурсы 120 операционной системы (к примеру, SSDT, GDT, IDT), в общем, постоянно размещаются в этой части памяти 208.

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

В дополнение к идентификационным данным, агент защиты также может принимать атрибут защиты, инструктирующий агенту защиты то, как защищать соответствующий ресурс. Например, агент защиты может принимать идентификационные данные ресурса SSDT, а также соответствующий атрибут защиты "только для чтения". Следовательно, агент защиты узнает, что SSDT должна оставаться только для чтения и также не должна быть изменена. "Инициализировать только для чтения" - это другой возможный атрибут защиты, который инструктирует агенту защиты то, что в соответствующий ресурс можно выполнять запись один раз в ходе инициализации, а после этого ресурс должен оставаться только для чтения.

Агент защиты может принимать эти идентификационные данные ресурсов и атрибутов защиты ресурсов рядом способов как явно, так и пассивно. Например, операционная система может предоставлять манифест с цифровой подписью, который идентифицирует ресурсы, которые может отслеживать агент защиты. Этот манифест с цифровой подписью может идентифицировать ресурсы множеством способов, к примеру, по имени (например, SSDT, IDT, GDT и т.д.) или по адресу, который преобразовывает ресурсы в соответствующие местоположения в части памяти 208. В последних случаях, манифест может идентифицировать гостевой физический адрес, гостевой виртуальный адрес или системный физический адрес для ресурса. Отметим, что в некоторых случаях, гостевой физический адрес может быть преобразован в фактический системный физический адрес, чтобы обнаруживать фактическое физическое местоположение соответствующего компонента ресурса.

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

Помимо или альтернативно манифесту, агент защиты может принимать идентификационные данные ресурсов и атрибутов защиты через один или более вызовов интерфейса прикладного программирования (API) в мониторе виртуальной машины (к примеру, "гипервызовов"). Когда операционная система инициализируется, операционная система (и возможно самый низкоуровневый компонент операционной системы 208) может выполнять гипервызовы к монитору виртуальной машины, информируя агент защиты об определенных ресурсах, которые могут быть отслежены и защищены. Эти гипервызовы могут идентифицировать применимые ресурсы такими же способами, как пояснено выше. Как также пояснено выше, эти гипервызовы также могут идентифицировать атрибуты защиты ресурсов.

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

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

Чтобы отслеживать и защищать ресурсы таким образом, код, выполняющийся в мониторе виртуальной машины, может использовать диспетчер перехвата монитора виртуальной машины (к примеру, диспетчер 146 по фиг.1). В таком случае, этот диспетчер перехвата может регистрировать перехваты в различных компонентах идентифицированных ресурсов. Благодаря этой регистрации, агент защиты в мониторе виртуальной машины теперь может принимать перехваты, если предпринимаются попытки осуществлять доступ или модифицировать эти идентифицированные ресурсы. По сути, агент защиты может анализировать и сканировать различные компоненты идентифицированных ресурсов. Он также может активно блокировать попытки модифицировать эти ресурсы.

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

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

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

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

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

Агенты защиты виртуальных разделов

Вместо постоянного размещения в рамках самого монитора виртуальной машины, агент за