Уровень техники
Процессоры в вычислительных устройствах зачастую включают в себя привилегированные и непривилегированные режимы. Программное обеспечение, работающее в привилегированном режиме, в общем, может выполнять все инструкции, поддерживаемые посредством процессора. Как правило, ядро операционной системы выполняется в привилегированном режиме, который иногда упоминается как "кольцо 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 (к примеру, ядро). Кроме того, монитор виртуальной машины может загружать операционную систему в безопасном режиме или операционная система может сама выбирать загружаться в безопасном режиме. Также в ответ на уведомление, операционная система может идентифицировать себя как подвергшуюся атаке и, по сути, может запрещать себе осуществлять доступ к любой сети, к которой она подключена.
Агенты защиты виртуальных разделов
Вместо постоянного размещения в рамках самого монитора виртуальной машины, агент защиты (к примеру, агент 142 защиты по фиг.1) может постоянно размещаться в отдельном виртуальном разделе (к примеру, во втором виртуальном разделе 112 по фиг.1). В этих вариантах осуществления, данный отдельный раздел выступает в качестве доверенного делегата монитора виртуальной машины. Агент 142 защиты, таким образом, является недоступным из привилегированного режима операционной системы. Как пояснено выше, монитор 108 виртуальной машины предусматривает такую виртуализацию вычислительного устройства 102. Хотя монитор виртуальной машины может виртуализировать вычислительное устройство в любое число разделов, фиг.1 иллюстрирует первый раздел, выступающий в качестве хоста для операционной системы, и второй раздел, выступающий в качестве хоста для агента защиты. Второй виртуальный раздел, в котором постоянно размещается агент защиты, может быть, в некоторых случаях, выделенным защитным разделом, основная или единственная функция которого состоит в том, чтобы запускать агент защиты. В других вариантах осуществления, этот второй виртуальный раздел может выполнять дополнительные функции, например, функционирование в качестве хоста для другой операционной системы.
Агент 142 защиты, постоянно размещающийся в рамках второго виртуального раздела, допускает выполнение большинства или всех тех же функций, что описаны выше в отношении агента 134 защиты, постоянно размещающегося в мониторе виртуальной машины. Таким образом, агент 142 защиты может непосредственно или пассивно принимать идентификационные данные одного или более ресурсов 120 операционной системы. В ответ на идентификационные данные агент защиты может снова расширять службы 140 агента защиты, что, в общем, содержит определение того, изменялись ли один или более из идентифицированных ресурсов, и, если да, осуществление ответного действия. Эти услуги также могут включать в себя принудительную активацию инвариантности указанных ресурсов. Агент 142 защиты может выполнять эти функции через методики, аналогичные описанным выше.
Как проиллюстрировано, агент 142 защиты доступен из привилегированного режима 130 второго виртуального раздела, но недоступен из привилегированного режима 126 операционной системы. По сути, результирующая архитектура предоставляет возможность защиты самого агента защиты от любых вредоносных программ, находящихся в операционной системе, даже если вредоносные программы постоянно размещаются в части памяти 208, ассоциативно связанной с самым низкоуровневым компонентом операционной системы.
Привилегированные режимы автономных агентов защиты
Этот раздел описывает инструментальные средства, допускающие создание части памяти операционной системы, ассоциативно связанной с агентом защиты, неизменяемым или недоступным из привилегированного режима операционной системы, при этом давая возможность этой части памяти физически постоянно размещаться в пространстве адресов физической памяти операционной системы. Эти инструментальные средства, таким образом, создают привилегированный режим автономного агента защиты, который имеет доступ к части памяти, ассоциативно связанной с агентом защиты, а также к остальной части памяти, которая доступна в привилегированном режиме операционной системы. Этот привилегированный режим, таким образом, имеет больше привилегий, чем привилегированный режим операционной системы.
Первый подраздел описывает инструментальные средства, которые допускают создание привилегированного режима агента защиты посредством запроса того, чтобы монитор виртуальной машины защищал часть памяти, ассоциативно связанную с агентом защиты. Второй подраздел, между тем, описывает инструментальные средства, которые предоставляют создание привилегированного режима агента защиты посредством виртуализации физического процессора в несколько виртуальных процессоров, включая выделенный виртуальный процессор для того, чтобы запускать агент защиты.
Запросы по защите к монитору виртуальной машины
Этот подраздел описывает то, как агент защиты может запрашивать монитор виртуальной машины защищать память, ассоциативно связанную с агентом защиты, и также сам агент защиты. Эта защита имеет результатом работу агента 144 защиты в привилегированном режиме 132 агента защиты, как проиллюстрировано на фиг.1. Как проиллюстрировано, агент 144 защиты первоначально может постоянно размещаться в привилегированном режиме операционной системы до перехода в привилегированный режим агента защиты. При работе в этом втором привилегированном режиме агент защиты, в общем, является невосприимчивым к атакам от объектов, работающих в привилегированном режиме 126 операционной системы.
При работе в привилегированном режиме 132 агента защиты, объект имеет немного больше привилегий, чем при работе в привилегированном режиме 126 операционной системы, но по-прежнему меньше привилегий, чем в привилегированном режиме 124 монитора виртуальной машины. Как фиг.2 иллюстрирует, агент защиты, работающий в этом привилегированном режиме, имеет доступ ко всей памяти, ассоциативно связанной с операционной системой, в дополнение к части памяти 206, ассоциативно связанный с самим агентом защиты. Монитор 108 виртуальной машины принудительно активирует дополнительную доступность агента защиты.
Фиг.3 и 4 иллюстрируют примерный способ создания этого привилегированного режима агента защиты. Фиг.3 иллюстрирует всю или практически всю память 300 вычислительного устройства. Память 300 вычислительного устройства включает в себя часть памяти 302, ассоциативно связанную с привилегированным режимом операционной системы (к примеру, ядро), и часть памяти 304, ассоциативно связанную с пользовательским привилегированным режимом. Часть памяти 302 также включает в себя, как проиллюстрировано, часть памяти 306, ассоциативно связанную с агентом 144 защиты, а также часть памяти 308, в которую загружаются драйверы.
Как фиг.4 иллюстрирует, процесс 400 создания привилегированного режима 132 агента защиты начинается на этапе 1 посредством инициализации части памяти 302 (к примеру, ядра). На этапе 2, часть памяти 306 или сам агент 144 защиты вызывает монитор 108 виртуальной машины, чтобы запрашивать то, чтобы монитор виртуальной машины защищал часть памяти, ассоциативно связанную с агентом защиты. При этом запросе, агент защиты или соответствующая память требует, чтобы коду, запущенному в привилегированном режиме операционной системы, было запрещено изменять или иным образом соприкасаться с этой частью памяти 306. Агент защиты также может верифицировать себя (к примеру, посредством цифровой подписи) для монитора 108 виртуальной машины. Эта часть памяти или сам агент защиты также может запрашивать, чтобы монитор виртуальной машины задавал таймер и запускал агент защиты, когда таймер истекает. Этап 3 представляет монитор виртуальной машины, защищающий память от объектов, работающих в привилегированном режиме операционной системы, и задающий таймер в ответ на запрос. Отметим, что поскольку эта часть памяти 306, ассоциативно связанная с агентом защиты, теперь является неизменяемой и/или недоступной из привилегированного режима операционной системы, агент защиты теперь постоянно размещается в привилегированном режиме агента защиты.
На этапе 4, драйверы загружаются в часть памяти 308. Отметим, что запрос на этапе 2 и соответствующая защита на этапе 3, в общем, осуществляется до того, как драйверы загружаются в память, поскольку вредоносные программы могут существовать в форме драйвера. Как пояснено в разделе "Примерное использование инструментальных средств" ниже, авторы вредоносной программы зачастую обманывают пользователей, вовлекая в установку вредоносных драйверов на вычислительное устройство. Если один или более вредоносных драйверов действительно загружены в память до того, как часть памяти 306 будет защищена, то вредоносные драйверы могут потенциально вносить исправления поверх самого запроса на защиту. Такое внесение исправлений тем самым препятствует периодическому выполнению агента защиты через монитор виртуальной машины и, следовательно, созданию привилегированного режима агента защиты. Тем не менее, посредством запроса того, чтобы монитор виртуальной машины задавал таймер на ранней стадии, этот процесс обеспечивает то, что код в привилегированном режиме операционной системы не может таким образом отключать периодическое выполнение агента защиты.
Этап 5, между тем, вероятно осуществляется в некоторый момент после того, как драйверы загружены. Как проиллюстрировано, этап 5 представляет истечение таймера монитора виртуальной машины и, следовательно, выполнение агента защиты. При выполнении агент 144 защиты выполняет функции, аналогичные или идентичные поясненным в предыдущих разделах. Как также пояснено выше, агент защиты может осуществлять действие в ответ на определение того, что один или более идентифицированных ресурсов изменялись. Агент защиты также может осуществлять такое действие в ответ на попытку получения доступа или изменения агента защиты или его соответствующей памяти от объектов, работающих в привилегированном режиме операционной системы.
Этап 6 представляет уведомление посредством агента защиты монитора виртуальной машины, когда агент защиты заканчивает выполнение. Наконец, этап 7 представляет повторение этапов 3, 5, и 6. По сути, монитор виртуальной машины может сбрасывать свой таймер и запускать агент защиты с периодическими интервалами, к примеру, каждые 100 миллисекунд (мс).
Посредством задания отказоустойчивого таймера в мониторе виртуальной машины процесс 400 этим исключает способность кода операционной системы искажать часть памяти, ассоциативно связанную с агентом защиты. По сути, этот процесс обеспечивает то, что агент защиты продолжит выполняться и в него не будут внесены исправления посредством вредоносных программ, действующих в привилегированном режиме операционной системы. Вместо этого, агент защиты будет выполняться в автономном привилегированном режиме, при этом постоянно размещаясь в физической памяти, выделяемой для операционной системы.
Виртуальные процессоры агентов защиты
Этот подраздел описывает то, как монитор виртуальной машины может создавать привилегированный режим агента защиты посредством диспетчеризации виртуального процессора так, чтобы запускать агент 144 защиты. Фиг.5 иллюстрирует архитектуру 500, которая включает в себя монитор 108 виртуальной машины, виртуализирующий вычислительное устройство 102 на два раздела, каждый из которых включает в себя операционную систему. Как проиллюстрировано, вычислительное устройство в этом примере включает в себя два реальных процессора 104(a) и 104(b), на каждый из которых виртуальный процессор может диспетчеризовать несколько виртуальных процессоров. Как также проиллюстрировано, монитор виртуальной машины создает первый виртуальный раздел 502 и второй виртуальный раздел 504. Первый виртуальный раздел включает в себя первый виртуальный процессор 506, чтобы запускать первую операционную систему. Аналогично, второй виртуальный раздел включает в себя второй виртуальный процессор 508, чтобы запускать вторую операционную систему. В этом случае, тем не менее, монитор виртуальной машины также включает в себя виртуальный процессор 510 агента защиты, чтобы запускать агент защиты, такой как агент 144 защиты по фиг.1.
Чтобы создавать архитектуру 500, монитор виртуальной машины сначала загружается и инициализируется. Как проиллюстрировано на фиг.6, монитор виртуальной машины затем виртуализирует различные виртуальные процессоры и тем самым выделяет производительность 600 реального процессора. Чтобы начинать эту виртуализацию и выделение, монитор виртуальной машины виртуализирует первый виртуальный процессор на первый реальный процессор. В текущем примере, эта виртуализация выполняется на взаимно-однозначной основе, как проиллюстрировано посредством фиг.6. Таким образом, только этот один виртуальный процессор 506 соответствует реальному процессору 104(a), и, по сути, монитор виртуальной машины выделяет всю производительность реального процессора этому виртуальному процессору. Монитор виртуальной машины затем виртуализирует второй виртуальный процессор 508 на второй реальный процессор 104(b). Вместо взаимно-однозначного основания, тем не менее, монитор виртуальной машины сохраняет некоторую часть производительности второго реального процессора. Монитор виртуальной машины затем виртуализирует виртуальный процессор 510 агента защиты на эту оставшуюся производительность второго реального процессора 104(b), как также проиллюстрировано посредством фиг.6.
Каждый виртуальный процессор, оперирующий со вторым реальным процессором, в общем, действует на основе квантования времени. Таким образом, второй виртуальный процессор может оперировать со вторым реальным процессором в течение некоторого интервала времени до того, как работа второго виртуального процессора приостанавливается. Здесь, второй реальный процессор переключается на режим виртуального процессора агента защиты в течение некоторого другого интервала времени. Например, второй виртуальный процессор может оперировать со вторым реальным процессором в течение 90 мс, и в этой точке работа этого второго виртуального процессора приостанавливается, и работа виртуального процессора агента защиты начинается в течение 10 мс. Виртуальный процессор агента защиты, в общем, является прозрачным как к разделам операционной системы, так и к первому и второму виртуальным процессорам. По сути, обе операционные системы полагают, что их соответствующие виртуальные процессоры соответствуют надлежащему реальному процессору.
В дополнение к выделению производительности реального процессора, монитор виртуальной машины также управляет частью памяти, к которой может осуществлять доступ каждый виртуальный процессор. В текущем примере, первый виртуальный процессор может осуществлять доступ ко всей памяти, ассоциативно связанной с первой операционной системой. Второй виртуальный процессор, между тем, может осуществлять доступ ко всей памяти, ассоциативно связанной со второй операционной системой, кроме части памяти, ассоциативно связанной с агентом защиты. Виртуальный процессор агента защиты исключительно имеет доступ к части памяти, ассоциативно связанной с агентом защиты, в дополнение к памяти, выделяемой второй операционной системе.
Кроме того, первый и второй виртуальные процессоры имеют возможность изменять только свою ассоциативно связанную память. По сути, ни один из виртуальных процессоров, оперирующих с соответствующими операционными системами, не может изменять часть памяти, ассоциативно связанную с агентом защиты. Виртуальный процессор агента защиты, тем не менее, может изменять память, ассоциативно связанную с агентом защиты, и, в некоторых вариантах осуществления, также память, ассоциативно связанную со вторым виртуальным процессором.
Вследствие своего программированного характера, виртуальный процессор агента защиты должен периодически запускать агент защиты. Хотя в некоторых случаях виртуальный процессор агента защиты может запускать другие приложения, текущий пример иллюстрирует выделенный виртуальный процессор агента защиты. По сути, этот виртуальный процессор, в общем, служит только для того, чтобы периодически запускать агент защиты. К тому же, агент защиты может выполнять аналогичные или идентичные функции, аналогичными или идентичными способами, что и агенты защиты, описанные выше.
Посредством диспетчеризации выделенного виртуального процессора агента защиты, монитор виртуальной машины обеспечивает то, что агент защиты периодически запускается под управлением этого процессора и в автономном привилегированном режиме агента защиты. Кроме того, поскольку только этот виртуальный процессор агента защиты имеет доступ к части памяти, ассоциативно связанной с агентом защиты, монитор виртуальной машины защищает эту память от кода в рамках операционной системы. Следовательно, вредоносные программы, работающие в привилегированном режиме операционной системы, не могут вносить исправления поверх агента защиты и препятствовать запуску агента защиты. По сути, эта методика фактически исключает возможность для операционной системы искажать агент защиты.
Примерное использование инструментальных средств
После описания инструментальных средств, допускающих обеспечение защиты агента защиты, следующий раздел описывает один пример этих инструментальных средств в работе. Во-первых, представим себе, что пользователь компьютера просматривает веб-страницы в Интернете, и при переходе к определенному веб-узлу диалоговое окно со злым умыслом появляется на дисплее пользователя. Диалоговое окно запрашивает разрешение от пользователя, чтобы устанавливать некоторую вредоносную программу на компьютере пользователя. Хотя этот запрос может быть прямым, представим себе, что диалоговое окно маскирует запрос, как типично имеет место. Диалоговое окно может, например, ложно сообщать пользователю о том, что он выиграл приз. Посредством такого сообщения, диалоговое окно злонамеренно инструктирует пользователя нажать кнопку "OK" в диалоговом окне, чтобы получить приз. Представим себе, что пользователь действительно выбирает кнопку OK и что пользователь выбирает продолжать запрошенные операции, несмотря на одно или более предупреждений от программного обеспечения (к примеру, антивирусного приложения), запущенного на вычислительном устройстве.
Здесь, вычислительное устройство начинает установку драйвера, который содержит вредоносную программу. Как обычно происходит с драйверами, этому вредоносному драйверу предоставляется доступ к привилегированному режиму операционной системы, и он загружается в память, ассоциативно связанную с этим привилегированным режимом (к примеру, ядро). После загрузки в ядро, вредоносный драйвер и его сопутствующая вредоносная программа фактически имеют доступ с неограниченными полномочиями к памяти компьютера и операционной системе. К сожалению для пользователя, представим себе, что эти вредоносные программы включают в себя регистратор нажатий клавиш, который регистрирует нажатия клавиш пользователем. Теперь представим себе, что пользователь переходит на веб-узел своего банка и входит в свой банковский счет. Вследствие своей возможности регистрировать нажатия клавиш, регистратор нажатий клавиш узнает пароль банковского счета пользователя и отсылает этот пароль по Интернету автору вредоносного драйвера.
Что еще хуже, представим себе, что вредоносная программа - это "руткит" или вредоносная программа, которая пытается активно скрываться от агента защиты и антивирусного программного обеспечения пользователя. В традиционных системах, агент защиты постоянно размещается в ядре (т.е. в памяти, к которой у вредоносного драйвера есть доступ). Следовательно, в этих традиционных системах вредоносные программы имеют доступ к агенту защиты и могут пытаться скрывать себя от агента защиты. В случае успеха, вредоносные программы, как кажется агенту защиты, не существуют в ядре. Следовательно, когда антивирусное программное обеспечение пользователя вызывает агент защиты и запрашивает список всех приложений, присутствующих в памяти компьютера, вредоносные программы отсутствуют. Это отсутствие не дает антивирусному программному обеспечению обнаруживать и удалять вредоносные программы. Кроме того, вредоносные программы могут вносить исправления поверх агента защиты, тем самым полностью препятствуя запуску агента защиты. По сути, агент защиты может не иметь возможности уведомлять, если вредоносные программы изменяют какие-либо ресурсы операционной системы.
Вместо постоянного размещения в ядре, как в традиционных системах, тем не менее, представим себе, что агент защиты на вычислительном устройстве пользователя постоянно размещается в памяти или работает в режиме, который недоступен из привилегированного режима операционной системы. Следовательно, когда вредоносный драйвер загружается в ядро, он не имеет доступа к памяти, в которой постоянно размещается агент защиты, или к режиму, в котором запускается агент защиты. Следовательно, драйвер и его сопутствующая вредоносная программа не имеет доступа к самому агенту защиты. Вредоносные программы, таким образом, неспособны скрывать себя от агента защиты и, следовательно, также от антивирусного программного обеспечения. Следовательно, когда антивирусное программное обеспечение запрашивает у агента защиты список всех приложений, присутствующих в памяти компьютера, возвращенный список включает в себя вредоносные программы. Антивирусное программное обеспечение затем распознает этот код как вредоносную программу и, соответственно, удаляет ее из компьютерного устройства пользователя. Кроме того, агент защиты может сам выдавать уведомление, если вредоносные программы изменяют ресурсы операционной системы, и, в ответ, может завершать работу вычислительного устройства пользователя.
Следовательно, посредством постоянного размещения в памяти или запуска в режиме, который недоступен из привилегированного режима операционной системы, варианты осуществления, описанные в данном документе, препятствуют скрытию вредоносных программ от агента защиты или внесению исправлений поверх агента защиты. В примере выше, вычислительное устройство пользователя, как следствие, может удалять вредоносные программы из машины или, в некоторых случаях, завершать работу системы, когда вредоносные программы изменяют важные ресурсы. Так или иначе, эти варианты осуществления служат для того, чтобы снижать эффективность вредоносных программ в стремлении приносить вред.
Другие варианты осуществления инструментальных средств
Вышеприведенные разделы описывают несколько конкретных примеров, где агент защиты делается неизменяемым или недоступным из привилегированного режима операционной системы. В этом разделе описываются другие варианты осуществления инструментальных средств, такие как добавление привилегированного режима в процессор, который отсутствует в базовом процессоре.
Эти примерные варианты осуществления описываются как часть процессов 700-1100 по фиг.7-11. Эти процессы, а также примерные процессы, описанные или проиллюстрированные со ссылкой на фиг.1-6, могут быть реализованы в любых подходящих аппаратных средствах, программном обеспечении, микропрограммном обеспечении или комбинации вышеозначенного; в случае программного обеспечения и микропрограммного обеспечения, эти процессы представляют наборы операций, реализованных как машиноисполняемые инструкции, сохраненные в машиночитаемых носителях и выполняемые посредством одного или более процессоров. Эти варианты осуществления инструментальных средств, описанные в данном разделе, не имеют намерение ограничивать объем инструментальных средств или формулы изобретения.
Со ссылкой на фиг.7, этап 702 принимает политику принудительной защиты, идентифицирующую один или более ресурсов операционной системы. Эта политика принудительной защиты, которая может содержать зашифрованные данные, может быть принята через манифест с цифровой подписью или посредством предоставления интерфейса прикладного программирования (API) для операционной системы (к примеру, гипервызова). Этап 704 идентифицирует, из памяти, недоступной из объекта, работающего в привилегированном режиме операционной системы, один или более ресурсов операционной системы. Примерные ресурсы включают в себя таблицу диспетчеризации системных служб (SSDT), таблицу диспетчеризации прерываний (IDT) и/или таблицу глобальных дескрипторов (GDT). Как описано выше, эта идентификация может осуществляться в мониторе виртуальной машины (к примеру, посредством агента 134 защиты по фиг.1) или в отдельном виртуальном разделе (к примеру, посредством агента 142 защиты по фиг.1).
Этап 706, между тем, представляет определение, изменялись ли какие-либо из идентифицированных ресурсов. К тому же, он может осуществляться в мониторе виртуальной машины или в отдельном разделе. Если этап 706 определяет, что один или более из идентифицированных ресурсов фактически изменялись, то этап 708 останавливает операционную систему в ответ на это определение. Наконец, этап 710 уведомляет операционную систему о запрещенной операции после перезагрузки операционной системы.
Фиг.8 иллюстрирует процесс 800 для предоставления возможности агенту защиты запускаться в мониторе виртуальной машины. Этап 802 фактически изменяет диспетчер перехвата монитора виртуальной машины, чтобы предоставлять возможность приема индикатора того, что страница или регистр памяти, ассоциативно связанные с ресурсом операционной системы, изменялись. Этот ресурс может содержать один из ресурсов, описанных со ссылкой на фиг.7, или может быть другим ресурсом операционной системы. В любом случае, этап 804 принимает политику принудительной защиты, идентифицирующую ресурс операционной системы и, возможно, один или более других ресурсов операционной системы. К тому же, эта идентификация может осуществляться через методики, поясненные выше. Как описано выше, атрибут защиты (к примеру, "только для чтения" или "инициализировать только для чтения") ресурса может прилагаться к идентификационным данным ресурса. Этап 806, между тем, представляет прием индикатора, что страница или регистр памяти, ассоциативно связанные с ресурсом операционной системы, действительно изменялись. В ответ, этап 808 фактически завершает привилегированный режим операционной системы, чтобы завершать работу операционной системы, ассоциативно связанной с ресурсом операционной системы. В некоторых случаях, монитор 108 виртуальной машины по фиг.1 может выполнять это завершение привилегированного режима операционной системы.
Далее, фиг.9 описывает примерный процесс 900 для создания привилегированного режима агента защиты, такого как привилегированный режим 132 агента защиты, проиллюстрированный на фиг.1. Этап 902 принимает запрос на то, чтобы конкретный диапазон памяти был сделан неизменяемым или недоступным из привилегированного режима операционной системы. К тому же, монитор виртуальной машины может принимать этот запрос, который может исходить из самого диапазона памяти или из агента защиты, постоянно размещающегося в диапазоне памяти. Этап 904 защищает диапазон памяти и задает таймер так, чтобы периодически запускать агент защиты, постоянно размещающийся в диапазоне памяти. К тому же, монитор виртуальной машины может задавать такой таймер, который может инструктировать монитору виртуальной машины запускать агент защиты с регулярными интервалами.
Между тем, этап 906 принимает политику принудительной защиты, описывающую ресурс операционной системы. К тому же, политика принудительной защиты и описанный ресурс могут быть аналогичными или идентичными поясненным выше. Этап 908 запускает агент защиты, что может быть осуществлено посредством монитора виртуальной машины. Этап 910 принятия решения опрашивает то, изменялся ли ресурс операционной системы. Агент защиты может выполнять это определение посредством функционирования способами, подробно описанными выше. Если этап 910 действительно определяет, что изменение произошло, то этап 912 завершает работу операционной системы. Тем не менее, если это определение не выполнено, то этап 914 принимает уведомление о том, что агент защиты закончил выполнение. В некоторых случаях и как описано выше, сам агент защиты может уведомлять об этом монитор виртуальной машины. Этап 916, между тем, представляет чередование между запуском агента защиты и незапуском агента защиты. В завершение, отметим, что когда агент защиты не запущен, монитор виртуальной машины может завершать работу операционной системы в ответ на попытку получения доступа от объекта, работающего в привилегированном режиме операционной системы, к диапазону памяти, ассоциативно связанному с агентом защиты.
Фиг.10 иллюстрирует другой примерный процесс 1000 для создания привилегированного режима агента защиты, такого как привилегированный режим 132 агента защиты проиллюстрированный на фиг.1. Этап 1002 виртуализирует процессор реального компьютера в несколько процессоров виртуальных компьютеров. Эти виртуальные процессоры могут содержать один или более виртуальных процессоров операционной системы, каждый из которых имеет привилегию изменять собственную память операционной системы и использовать часть производительности обработки реальных процессоров, как проиллюстрировано на фиг.6. Виртуальные процессоры также могут включать в себя, по меньшей мере, один виртуальный процессор агента защиты, имеющий привилегию изменять собственную память агента защиты и использовать другую часть производительности обработки реальных процессоров. Хотя все виртуальные процессоры могут быть диспетчеризованы посредством монитора виртуальной машины, виртуальный процессор агента защиты может быть прозрачным для виртуальных процессоров операционной системы. В некоторых случаях, виртуальные процессоры операционной системы могут быть неспособными к изменению памяти, назначенной для виртуального процессора агента защиты. Кроме того, виртуальный процессор агента защиты может быть выделенным процессором, основная или единственная цель которого состоит в том, чтобы инструктировать агенту защиты выполняться, как пояснено выше.
Затем этап 1004 инструктирует виртуальному процессору агента защиты выполнять агент защиты, что может быть эффективным для того, чтобы определять, изменялась ли часть упомянутой памяти операционной системы. Этап 1006, между тем, принимает индикатор, что часть памяти операционной системы изменялась. В ответ, этап 1008 завершает работу соответствующей операционной системы.
Наконец, фиг.11 иллюстрирует процесс 1100 для добавления привилегированного режима в реальный вычислительный процессор. Этап 1102 представляет определение, идентификацию или классификацию одного или более привилегированных режимов, присутствующих в базовом физическом процессоре. Эти привилегированные режимы, в общем, задаются посредством самого базового физического процессора. В любом случае, этап 1104 добавляет привилегированный режим, который отсутствует в базовом физическом процессоре. В некоторых случаях, режим с дополнительными привилегиями допускает изменение части памяти вычислительного устройства, которая отличается от части памяти, которая является изменяемой посредством одного или более присутствующих привилегированных режимов. Режим с дополнительными привилегиями также может допускать добавление и выполнение инструкций, которые ранее не существовали или не выполнялись в базовом процессоре.
Кроме того, один или более привилегированных режимов, присутствующих в базовом физическом процессоре, могут включать в себя пользовательский привилегированный режим и привилегированный режим операционной системы. В этих вариантах осуществления, режим с дополнительными привилегиями может иметь больше привилегий, чем привилегированный режим пользователя и чем привилегированный режим операционной системы, больше привилегий, чем пользовательский привилегированный режим, но меньше привилегий, чем привилегированный режим операционной системы, или меньше привилегий, чем как пользовательский привилегированный режим, так и привилегированный режим операционной системы. Наконец, отметим, что один пример добавления привилегированного режима может содержать добавление привилегированного режима агента защиты (к примеру, привилегированного режима 132 агента защиты, проиллюстрированного на фиг.1) множеством способов, поясненных выше. Например, агент защиты или его ассоциативно связанный диапазон памяти могут запрашивать, чтобы диапазон памяти стал недоступным из объектов, работающих в привилегированном режиме операционной системы. Монитор виртуальной машины также может создавать этот привилегированный режим посредством диспетчеризации виртуального процессора агента защиты, чтобы запускать агент защиты.
Заключение
Вышеописанные инструментальные средства допускают создание агента защиты, неизменяемого или недоступного из привилегированного режима операционной системы, либо посредством предоставления возможности агенту защиты постоянно размещаться в местоположении, которое недоступно из привилегированного режима операционной системы, либо посредством создания привилегированного режима агента защиты. Хотя инструментальные средства описаны на языке, характерном для структурных признаков и/или методологических действий, следует понимать, что инструментальные средства, определенные в прилагаемой формуле изобретения, не обязательно ограничены описанными характерными признаками или действиями. Наоборот, характерные признаки и действия раскрываются как примерные формы реализации инструментальных средств.
Группа изобретений относится к процессорам в вычислительных устройствах, содержащим агент защиты. Технический результат заключается в повышении надежности функционирования процессора за счет использования агента защиты. Для этого виртуализируют один или более реальных вычислительных процессоров в виртуальные вычислительные процессоры, каждый из которых ассоциативно связан с соответствующим разделом, причем виртуальные вычислительные процессоры содержат: виртуальный процессор операционной системы, ассоциативно связанный с первым разделом и имеющий привилегию изменять собственную память операционной системы и использовать часть производительности обработки одного или более реальных вычислительных процессоров; и виртуальный процессор агента защиты, ассоциативно связанный со вторым разделом и имеющий привилегию изменять собственную память агента защиты и использовать другую часть производительности обработки одного или более реальных вычислительных процессоров, причем память агента защиты недоступна из виртуального процессора операционной системы; и инструктируют виртуальному процессору агента защиты выполнять агент защиты, постоянно размещающийся во втором разделе, чтобы определять то, изменялась ли часть упомянутой памяти операционной системы. 3 н. и 15 з.п. ф-лы, 11 ил.
1. Машиночитаемый носитель, имеющий машиночитаемые инструкции, которые, когда выполняются посредством вычислительного устройства, инструктируют вычислительному устройству осуществлять действия, содержащие:
прием в мониторе виртуальной машины запроса на то, чтобы диапазон памяти стал неизменяемым или недоступным из привилегированного режима операционной системы;
задание диапазона памяти неизменяемым или недоступным из привилегированного режима операционной системы; и
выполнение агента защиты, который постоянно размещается в диапазоне памяти, при этом агент защиты выполнен с возможностью принимать политику принудительной защиты, описывающую один или более ресурсов, работающих в первом разделе, причем один или более ресурсов доступны из привилегированного режима операционной системы, и, в ответ на прием политики принудительной защиты, определять, с использованием политики принудительной защиты и из диапазона памяти, резидентного для второго раздела, недоступного из привилегированного режима операционной системы, изменялись ли один или более из одного или более ресурсов, работающих в первом разделе.
2. Носитель по п.1, дополнительно содержащий настройку таймера так, чтобы запускать агент защиты.
3. Носитель по п.2, в котором таймер инструктирует монитору виртуальной машины запускать агент защиты с регулярными интервалами.
4. Носитель по п.1, в котором:
монитор виртуальной машины работает в привилегированном режиме монитора виртуальной машины;
агент защиты работает в привилегированном режиме агента защиты; и
привилегированный режим агента защиты имеет больше привилегий, чем привилегированный режим операционной системы, но меньше привилегий, чем привилегированный режим монитора виртуальной машины.
5. Носитель по п.1, дополнительно содержащий инструкции завершения работы операционной системы, ассоциативно связанной с привилегированным режимом операционной системы, в ответ на определение посредством агента защиты того, что один или более из одного или более ресурсов изменялся.
6. Носитель по п.1, в котором один или более ресурсов включают в себя таблицу диспетчеризации системных служб (SSDT), таблицу диспетчеризации прерываний (IDT) или таблицу глобальных дескрипторов (GDT).
7. Носитель по п.1, дополнительно содержащий прием, в мониторе виртуальной машины и после запуска агента защиты, уведомления о том, что агент защиты завершил выполнение.
8. Носитель по п.1, дополнительно содержащий завершение работы операционной системы, ассоциативно связанной с привилегированным режимом операционной системы, в ответ на попытку получения доступа, из привилегированного режима операционной системы, к диапазону памяти или агенту защиты.
9. Носитель по п.1, дополнительно содержащий чередование между запуском агента защиты и незапуском агента защиты, так что, по меньшей мере, когда агент защиты запущен, он является неизменяемым или недоступным из привилегированного режима операционной системы.
10. Способ создания привилегированного режима агента защиты вычислительного устройства, содержащий этапы, на которых:
виртуализируют один или более реальных вычислительных процессоров в виртуальные вычислительные процессоры, каждый из которых ассоциативно связан с соответствующим разделом, причем виртуальные вычислительные процессоры содержат:
виртуальный процессор операционной системы, ассоциативно связанный с первым разделом и имеющий привилегию изменять собственную память операционной системы и использовать часть производительности обработки одного или более реальных вычислительных процессоров; и
виртуальный процессор агента защиты, ассоциативно связанный со вторым разделом и имеющий привилегию изменять собственную память агента защиты и использовать другую часть производительности обработки одного или более реальных вычислительных процессоров, причем память агента защиты недоступна из виртуального процессора операционной системы; и
инструктируют виртуальному процессору агента защиты выполнять агент защиты, постоянно размещающийся во втором разделе, чтобы определять то, изменялась ли часть упомянутой памяти операционной системы.
11. Способ по п.10, дополнительно содержащий этапы, на которых:
фактически изменяют диспетчер перехвата монитора виртуальной машины, чтобы предоставлять возможность приема индикатора того, что часть памяти операционной системы изменялась, причем часть памяти операционной системы располагается в первом разделе;
принимают посредством диспетчера перехвата монитора виртуальной машины индикатор того, что агент защиты определил, что часть упомянутой памяти операционной системы изменялась; и
в ответ на прием индикатора завершают работу соответствующей операционной системы.
12. Способ по п.10, в котором инструктирование виртуальному процессору агента защиты выполнять агент защиты содержит этап, на котором инструктируют виртуальному процессору агента защиты выполнять агент защиты с указанными интервалами времени.
13. Способ по п.10, в котором виртуальный процессор агента защиты выделен только для выполнения агента защиты.
14. Способ по п.10, в котором виртуальный процессор агента защиты диспетчеризуется посредством монитора виртуальной машины и является прозрачным для операционной системы, ассоциативно связанной с упомянутой памятью операционной системы.
15. Машиночитаемый носитель, имеющий машиночитаемые инструкции, которые, когда выполняются посредством вычислительного устройства, содержащего базовый физический процессор, который включает в себя один или более привилегированных режимов, инструктируют вычислительному устройству добавлять привилегированный режим, который отсутствует в базовом физическом процессоре, посредством вызова монитора виртуальной машины, запрашивая, чтобы диапазон памяти, ассоциативно связанный с агентом защиты добавленного привилегированного режима, стал неизменяемым или недоступным из другого привилегированного режима, причем добавленный привилегированный режим выполнен с возможностью добавлять и выполнять инструкции, которые ранее не выполнялись в базовом физическом процессоре.
16. Носитель по п.15, в котором режим с дополнительными привилегиями допускает изменение части памяти вычислительного устройства, которая отличается от части памяти, которая является изменяемой посредством одного или более привилегированных режимов, которые первоначально присутствуют в базовом физическом процессоре.
17. Носитель по п.15, в котором один или более привилегированных режимов, первоначально присутствующих в базовом физическом процессоре, включают в себя пользовательский привилегированный режим и привилегированный режим операционной системы, и в котором режим с дополнительными привилегиями имеет больше привилегий, чем как пользовательский привилегированный режим, так и привилегированный режим операционной системы.
18. Носитель по п.15, в котором один или более привилегированных режимов, первоначально присутствующих в базовом физическом процессоре, включают в себя пользовательский привилегированный режим и привилегированный режим операционной системы, и в котором режим с дополнительными привилегиями имеет больше привилегий, чем пользовательский привилегированный режим, но меньше привилегий, чем режим операционной системы.
US 6938164 B1, 30.08.2005 | |||
US 2003101322 A1, 29.05.2003 | |||
ЗАЩИТА ДОСТУПА К ПАМЯТИ | 1998 |
|
RU2215321C2 |
СПОСОБ ОБЕСПЕЧЕНИЯ ДОСТУПА К ОБЪЕКТАМ В ОПЕРАЦИОННОЙ СИСТЕМЕ МСВС | 1999 |
|
RU2134931C1 |
Авторы
Даты
2012-11-27—Публикация
2007-12-12—Подача