Система и способы для дешифрования сетевого трафика в виртуализированной среде
SYSTEM AND METHODS FOR DECRYPTING NETWORK TRAFFIC IN A VIRTUALIZED ENVIRONMENT

РОДСТВЕННЫЕ ЗАЯВКИ
[0001] По настоящей заявке испрашивается приоритет по дате подачи предварительной патентной заявки США №62/317804, поданной 4 апреля 2016 года, с названием "Системы и способы дешифрования сетевого трафика в виртуализированной среде", полное содержание которой включено в настоящий документ посредством ссылки.
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
[0002] Данное изобретение относится к системам и способам обеспечения компьютерной безопасности, в частности, к электронной зашифрованной связи.
[0003] В современном цифровом мире широкий спектр продуктов и услуг основан на шифровании данных. Шифрованная связь позволяет, помимо прочего, осуществлять онлайн-торговлю, онлайн-банкинг и телефонию по сетям передачи данных, таким как Интернет.Шифрование также широко используется для защиты конфиденциальности и персональных данных пользователей. В эпоху распространения взаимосвязанных электронных устройств (Интернета вещей) использование шифрования - это не только сила, но и уязвимость.
[0004] В последнее время шифрование все чаще используется с целью злонамеренного использования, например, для сокрытия активности вредоносного программного обеспечения или для захвата ценных пользовательских данных для получения выкупа. Одним из типичных примеров активности вредоносных программ является создание сети взломанных вычислительных систем, известной под названием "ботнет", и использование соответствующей сети для запуска распределенной атаки типа "отказ в обслуживании" на целевой веб-сервер. В рамках создания ботнета агент програмного обеспечения проникает в каждый член ботнета, используя различные способы (например, прямой взлом, фишинг и т.д.). Затем агент может использовать шифрование для незаметной связи с удаленным сервером, например, для получения сетевого адреса цели и/или для координации атаки с другими членами ботнета. Были описаны различные способы предотвращения или противодействия таким вредоносным действиям, но данные контрмеры могут быть бесполезны из-за эффективного использования шифрования вредоносными программами.
[0005] Кроме того, операции по борьбе с вредоносными программами еще больше усложняются из-за технологии аппаратной виртуализации, позволяющей создать искусственные компьютерные среды, известные как "виртуальные машины". На одной физической машине может одновременно работать несколько виртуальных машин, делящих между собой аппаратные ресурсы, что позволяет снизить капиталовложения и стоимость эксплуатации. Каждая виртуальная машина может использовать собственную операционную систему и/или программные приложения отдельно от других виртуальных машин. Аппаратная виртуализация используется по различным причинам, например, для обеспечения переносимости программного обеспечения или для повышения безопасности. Другие популярные приложения аппаратной виртуализации, известные под общим названием "облачные вычисления", включают в себя серверные фермы и инфраструктуру виртуальных рабочих столов (VDI). В типичной конфигурации VDI программное приложение исполняется в первой компьютерной системе, в то время как пользователь взаимодействует с соответствующим приложением, используя вторую компьютерную систему (терминал). Виртуальная машина, запускающая соответствующее приложение, создается по требованию в первой компьютерной системе, что в конечном итоге может привести к исполнению сотен таких виртуальных машин для нескольких удаленных пользователей. Из-за устойчивого распространения вредоносного программного обеспечения каждая виртуальная машина потенциально требует защиты от него.
[0006] Эскалация угроз безопасности и растущий спрос на виртуализацию вызывают серьезный интерес к разработке эффективных систем и способов защиты от вредоносных программ, которые предназначены для решения проблем аппаратной виртуализации.
КРАТКОЕ ОПИСАНИЕ СУЩНОСТИ ИЗОБРЕТЕНИЯ
[0007] Согласно одному аспекту изобретения, предложена клиентская система, содержащая аппаратный процессор и память, причем аппаратный процессор конфигурирован для исполнения виртуальной машины и модуля самодиагностики. Виртуальная машина конфигурирована для осуществления сеанса связи с удаленной стороной, причем сеанс связи включает в себя сообщение о подтверждении связи, с последующей зашифрованной полезной нагрузкой, причем сообщение о подтверждении связи содержит параметр шифрования, используемый клиентской системой для получения ключа шифрования, и зашифрованная полезная нагрузка зашифрована упомянутым ключом шифрования. Модуль самодиагностики выполнен с возможностью исполнения вне виртуальной машины и конфигурирован для идентификации в памяти целевой страницы памяти в соответствии с тем, изменилось ли содержимое страницы целевой памяти между наступлением первого события сеанса связи и наступлением второго события сеанса связи. Кроме того, модуль самодиагностики конфигурирован для передачи содержимого целевой страницы памяти модулю дешифрования, конфигурированному для дешифрования зашифрованной полезной нагрузки в соответствии с содержимым.
[0008] В соответствии с другим аспектом предложена серверная компьютерная система, содержащая аппаратный процессор, конфигурированный для исполнения модуля дешифрования, конфигурированного для осуществления процедур дешифрования для множества клиентских систем. Процедура дешифрования содержит получение содержимого целевой страницы памяти одной клиентской системы из множества клиентских систем, получение зашифрованной полезной нагрузки сеанса связи, осуществляемого между виртуальной машиной, исполняемой в клиентской системе, и удаленной стороной, и, в ответ, дешифрование зашифрованной полезной нагрузки в соответствии с содержимым целевой страницы памяти. Сеанс связи включает в себя сообщение о подтверждении связи, с последующей зашифрованной полезной нагрузкой, причем сообщение о подтверждении связи содержит параметр шифрования, используемый клиентской системой для получения ключа шифрования, причем зашифрованная полезная нагрузка зашифрована упомянутым ключом шифрования. Клиентская система конфигурирована для исполнения модуля самодиагностики вне виртуальной машины, причем модуль самодиагностики конфигурирован для идентификации целевой страницы памяти в памяти клиентской системы в соответствии с тем, изменилось ли содержимое целевой страницы памяти между наступлением первого события сеанса связи и наступлением второго события сеанса связи.
[0009] В соответствии с еще одним аспектом изобретения предложен энергонезависимый машиночитаемый носитель, хранящий команды, которые при исполнении аппаратным процессором клиентской системы, дополнительно содержащей память, вызывают формирование аппаратным процессором модуля самодиагностики, исполняемого вне виртуальной машины, которая исполняется в клиентской системе. Виртуальная машина конфигурирована для осуществления сеанса связи с удаленной стороной, причем сеанс связи содержит сообщение о подтверждении связи, с последующей зашифрованной полезной нагрузкой, причем сообщение о подтверждении связи включает в себя параметр шифрования, используемый клиентской системой для получения ключа шифрования, причем зашифрованная полезная нагрузка зашифрована упомянутым ключом шифрования. Модуль самодиагностики конфигурирован для идентификации целевой страницы памяти в памяти в соответствии с тем, изменилось ли содержимое целевой страницы памяти между наступлением первого события сеанса связи и наступлением второго события сеанса связи. Модуль самодиагностики дополнительно конфигурирован для передачи содержимого целевой страницы памяти в модуль дешифрования, конфигурированный для дешифрования зашифрованной полезной нагрузки в соответствии с содержимым.
[0010] В соответствии с еще одним аспектом изобретения предложен способ дешифрования зашифрованных связей между клиентской системой и удаленной стороной. Клиентская система конфигурирована для исполнения виртуальной машины. Виртуальная машина конфигурирована для осуществления сеанса связи с удаленной стороной, причем сеанс связи содержит сообщение о подтверждении связи, с последующей зашифрованной полезной нагрузкой, причем сообщение о подтверждении связи включает в себя параметр шифрования, используемый клиентской системой для получения ключа шифрования, а зашифрованная полезная нагрузка зашифрована указанным ключом шифрования. Указанный способ содержит этапы, на которых применяют по меньшей мере один аппаратный процессор для идентификации целевой страницы памяти в памяти клиентской системы в соответствии с тем, изменилось ли содержимое целевой страницы памяти между наступлением первого события сеанса связи и наступлением второго события сеанса связи. Кроме того, указанный способ включает в себя этапы, на которых применяют по меньшей мере один аппаратный процессор для сбора зашифрованной полезной нагрузки и применяют по меньшей мере один аппаратный процессор для дешифрования зашифрованной полезной нагрузки в соответствии с содержимым целевой страницы памяти.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0011] Упомянутые выше аспекты и преимущества данного изобретения станут более понятны после прочтения нижеследующего подробного описания со ссылками на чертежи, на которых показано следующее.
[0012] Фиг. 1 иллюстрирует примерную конфигурацию, в которой клиентские системы взаимодействуют с сервером безопасности для дешифрования потенциально вредоносного сетевого трафика согласно некоторым вариантам осуществления настоящего изобретения.
[0013] Фиг. 2-А иллюстрирует примерную аппаратную конфигурацию клиентской системы согласно некоторым вариантам осуществления настоящего изобретения.
[0014] Фиг. 2-В иллюстрирует примерную аппаратную конфигурацию сервера безопасности согласно некоторым вариантам осуществления данного изобретения.
[0015] Фиг. 3 иллюстрирует гостевую виртуальную машину (ВМ), отображенную гипервизором, исполняемым на клиентской системе, и модуль самодиагностики, исполняемый вне гостевой ВМ (гостевых ВМ) согласно некоторым вариантам осуществления настоящего изобретения.
[0016] Фиг. 4 иллюстрирует примерное преобразование адреса памяти в конфигурации аппаратной виртуализации с фиг. 3.
[0017] Фиг. 5 иллюстрирует примерную последовательность этапов, выполняемых модулем самодиагностики для перехвата зашифрованного трафика, поступающего в гостевую ВМ или из нее, согласно некоторым вариантам осуществления данного изобретения.
[0018] Фиг. 6 иллюстрирует примерную последовательность этапов, выполняемых модулем самодиагностики для получения оптимизированного снимка памяти гостевых ВМ согласно некоторым вариантам осуществления настоящего изобретения.
[0019] Фиг. 7 иллюстрирует примерную последовательность этапов, выполняемых модулем самодиагностики для получения оптимизированных снимков памяти для нескольких одновременных сеансов шифрованной связи согласно некоторым вариантам осуществления настоящего изобретения.
[0020] Фиг. 8 иллюстрирует примерный механизм дешифрования, исполняемый на сервере безопасности согласно некоторым вариантам осуществления настоящего изобретения.
[0021] Фиг. 9 иллюстрирует примерную последовательность этапов, выполняемых механизмом дешифрования согласно некоторым вариантам осуществления настоящего изобретения.
ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯ
[0022] В нижеследующем описании подразумевается, что все описанные соединения между структурами могут быть непосредственными функциональными соединениями или опосредованными функциональными соединениями через промежуточные структуры. Набор элементов включает в себя один или более элементов. Подразумевается, что любое упоминание элемента относится по меньшей мере к одному элементу. Множество элементов включает в себя по меньшей мере два элемента. Если не указано иное, любое использование «ИЛИ» относится к неисключительному «или». Если не требуется иное, любые описанные этапы способа не обязательно должны выполняться в конкретном показанном порядке. Первый элемент (например, данные), полученный из второго элемента, включает в себя первый элемент, эквивалентный второму элементу, а также первый элемент, генерированный путем обработки второго элемента, и, опционально, другие данные. Выполнение определения или решения в соответствии с параметром охватывает выполнение определения или решения в соответствии с данным параметром и, опционально, в соответствии с другими данными. Если не указано иное, индикатор некоторой величины/данных может представлять собой саму величину/данные, или индикатор, отличный от самой величины/данных. Компьютерная безопасность включает в себя защиту пользователей и оборудования от непреднамеренного или несанкционированного доступа к данным и/или аппаратному оборудованию, непреднамеренной или несанкционированной модификации данных и/или аппаратного оборудования, а также от разрушения данных и/или аппаратного оборудования. Компьютерная программа представляет собой последовательность процессорных команд, выполняющих задачу. Компьютерные программы, описанные в некоторых вариантах осуществления настоящего изобретения, могут быть автономными программными объектами или подобъектами (например, подпрограммами, библиотеками) других компьютерных программ. Если не указано иное, гостевое программное обеспечение исполняется в виртуальной машине. Считается, что программа исполняется в виртуальной машине, если она выполняется на виртуальном процессоре соответствующей виртуальной машины. Процесс представляет собой пример машинной программы, например, приложение или часть операционной системы, и характеризуется тем, что имеет по меньшей мере один поток исполнения и назначенное ему пространство виртуальной памяти, причем содержимое соответствующего пространства виртуальной памяти включает в себя исполняемый код. Если не указано иное, страница является наименьшей единицей виртуальной памяти, которую можно отдельно сопоставить с физической памятью главной системы. Если не указано иное, снимок памяти клиентской системы/виртуальной машины содержит копию содержимого раздела памяти, используемого соответствующей клиентской системой/виртуальной машиной. Машиночитаемые носители включают в себя энергонезависимые носители, такие как магнитные, оптические и полупроводниковые запоминающие носители (например, жесткие диски, оптические диски, флеш-память, динамическая память с произвольным доступом (DRAM), а также линии связи, например, токопроводящие кабели и волоконно-оптические линии. Согласно некоторым вариантам осуществления, а настоящем изобретении предложены, помимо прочего, компьютерные системы, содержащие аппаратное оборудование (например, один или более микропроцессоров), запрограммированное для выполнения способов, описанных в данном документе, а также машиночитаемые носители, кодирующие команды для выполнения способов, описанных в данном документе.
[0023] Нижеследующее описание поясняет изобретение на примерах вариантов его осуществления, необязательно с наложением ограничений.
[0024] На фиг. 1 показана примерная конфигурация согласно некоторым вариантам осуществления настоящего изобретения, в которой набор клиентских систем 12a-d взаимодействует с сервером 15 безопасности, чтобы перехватывать и дешифровать шифрованный сетевой трафик между соответствующими системами 12a-d и удаленной стороной, показанной в виде сервера 13 содержимого. В общем случае каждый из серверов 13 и 15 представляет собой набор соединенных друг с другом вычислительных систем, которые могут находиться или не находиться в физической близости друг к другу.
[0025] Примерные клиентские системы 12a-d включают в себя корпоративные вычислительные системы, а также системы персональных компьютеров, мобильные вычислительные платформы (ноутбуки, планшеты, мобильные телефоны), носимые электронные устройства (умные часы), бытовую технику (смарт-телевизоры, термостаты, системы домашнего наблюдения/безопасности) или любое другое электронное устройство, имеющее процессор и память и поддерживающее аппаратную виртуализацию. Одна примерная клиентская система, представляющая особый интерес для компьютерной безопасности, - это компьютер, конфигурированный как хост-приманка. Хост-приманка -это общий термин, используемый в данной области техники, чтобы описать набор систем и способов для привлечения вредоносных объектов с целью сбора данных и изучения вредоносного программного обеспечения. Примерный хост-приманка содержит внешне незащищенную компьютерную систему, которая может позволить хакеру или вредоносному агенту войти, установить программное обеспечение и/или общаться с другими компьютерами по сети.
[0026] Показанные клиентские системы соединены друг с другом по локальной сети 10 связи, такой как корпоративная сеть или домашняя сеть. Части локальной сети 10 могут включать в себя локальную вычислительную сеть (ЛВС). Шлюз 14 может обеспечивать доступ клиентских систем 12a-d к расширенной сети 11 (например, Интернет), так что весь сетевой трафик или его часть между клиентскими системами 12a-d и удаленной стороной проходит через шлюз 14. Примерный шлюз 14 содержит физическое устройство, такое как маршрутизатор и/или коммутатор.
[0027] На фиг. 2-А показана примерная аппаратная конфигурация клиентской системы 12 согласно некоторым вариантам осуществления настоящего изобретения. Клиентская система 12 может представлять собой любую из систем 12a-d с фиг. 1. Для упрощения показанная клиентская система представляет собой персональный компьютер. Аппаратная конфигурация других клиентских систем, таких как мобильные телефоны, планшетные компьютеры и т.д., может несколько отличаться от конфигурации с фиг. 2-А. Клиентская система 12 содержит набор физических устройств, в том числе аппаратный процессор 16 и память 18. Процессор 16 содержит физическое устройство (например, микропроцессор, многоядерную интегральную схему, сформированную на полупроводниковой подложке и т.д.), конфигурированное для исполнения вычислительных и/или логических операций с набором сигналов и/или данных. В некоторых вариантах осуществления такие операции поступают в процессор 16 в виде последовательности машинных команд (например, машинного кода или кода другого типа). Блок 18 памяти может содержать энергозависимые машиночитаемые носители (например, динамическое оперативное запоминающее устройство (ОЗУ), статическое ОЗУ), хранящие инструкции и/или данные, к которым обращается процессор 16, или которые генерируются им.
[0028] Устройства 20 ввода могут включать в себя, среди прочего, компьютерные клавиатуры и мыши, благодаря которым пользователь может вводить данные и/или команды в систему 12. Устройства 22 вывода могут включать в себя устройства отображения, например, мониторы. В некоторых вариантах осуществления устройства 20 ввода и устройства 22 вывода могут использовать общую часть оборудования, как в случае устройств с сенсорным экраном. Устройства 24 хранения включают в себя машиночитаемые носители, обеспечивающие энергонезависимое хранение, считывание и запись команд и/или данных программного обеспечения. Примерные устройства 24 хранения включают в себя магнитные и оптические диски и устройство флеш-памяти, а также съемные носители, такие как CD и/или DVD-диски и приводы. Сетевые адаптеры 26 позволяют системе 12 подключаться к сети 10 и/или к другим машинам/компьютерным системам. Контроллер-концентратор 28 в общем представляет собой множество системных, периферийных и внутрикристальных шин, и/или любые другие схемы, обеспечивающие взаимосвязь между устройствами 16-26 системы 12. В частности, контроллер-концентратор 28 может включать в себя контроллер памяти, контроллер ввода/вывода и контроллер прерываний. В другом примере концентратор 28 может содержать, помимо прочего, шину северного моста, соединяющую процессор 16 с памятью 18, и/или шину южного моста, соединяющую процессор 16 с устройствами 20, 22, 24 и 26.
[0029] На фиг. 2-В показана примерная аппаратная конфигурация сервера 15 безопасности согласно некоторым вариантам осуществления настоящего изобретения. В показанной конфигурации сервер 15 содержит серверный процессор 16, серверную память 18, группу серверных устройств 124 хранения и набор сетевых адаптеров 126. Серверный процессор 116 может содержать микропроцессор или другое физическое устройство, конфигурированное для выполнения математических и/или логических операций с набором данных. Память 18 может содержать энергозависимые машиночитаемые носители, хранящие команды и/или данные для исполнения и/или обработки процессором 116. Серверные устройства 124 хранения содержат энергонезависимые машиночитаемые носители, такие как, среди прочего, жесткие диски, CD и DVD-ROM и флеш-память. Серверные сетевые адаптеры 126 обеспечивают соединение и обмен данными сервера 15 безопасности с другими электронными устройствами по расширенной сети 11.
[0030] Фиг. 3 иллюстрирует типичную конфигурацию программного обеспечения согласно некоторым вариантам осуществления настоящего изобретения. Клиентская система 12 конфигурирована для отображения набора виртуальных машин (ВМ). Хотя на фиг. 3 показана только одна гостевая ВМ 32, некоторые варианты осуществления могут служить в качестве хоста для множества (например, для сотен) одновременно работающих ВМ. Каждая виртуальная машина содержит эмуляцию действительной физической машины/вычислительной системы и может исполнять операционную систему и различные программные приложения. Варианты осуществления с фиг. 3 могут быть использованы для защиты клиентов облачных вычислений от вредоносного программного обеспечения, такого как программное обеспечение, пытающееся украсть личные, частные и/или конфиденциальные данные, или программное обеспечение, пытающееся захватить и преобразовать клиентскую систему 12 в элемент ботнета. В таких вариантах осуществления клиентская система 12 может представлять собой серверную компьютерную систему поставщика облачных услуг. В других примерных вариантах осуществления клиентская система 12 представляет собой личное устройство пользователя, такое как персональный компьютер или мобильный телефон. Такие устройства часто используют аппаратную виртуализацию, например, для улучшения переносимости программного обеспечения или усиления безопасности. В еще одном примерном варианте осуществления клиентская система 12 может быть конфигурирована как хост-приманка. В таких вариантах осуществления клиентская система 12 может отображать множество виртуальных машин, например, одну машину, выдающую себя за веб-сервер, и другую машину, выдающую себя за персональный компьютер, подключенный к корпоративной сети, и т.д.
[0031] В некоторых вариантах осуществления гипервизор 30 исполняется в клиентской системе 12, причем гипервизор 30 содержит программное обеспечение, конфигурированное для создания или запуска множества виртуализированных устройств, таких как виртуальный процессор и блок управления виртуальной памятью, и предоставления таких виртуализированных устройств программному обеспечению вместо реальных физических устройств клиентской системы 12. Такие операции известны в данной области техники как отображение виртуальной машины. Кроме того, гипервизор 30 может запустить множество виртуальных машин, чтобы совместно использовать аппаратные ресурсы главной системы 12, так что каждая ВМ работает независимо и не знает, что одновременно в клиентской системе 12 выполняются другие ВМ. Примерами популярных гипервизоров являются VMware vSphere™ фирмы VMware Inc. и бесплатный гипервизор Xen.
[0032] В примерной конфигурации, показанной на фиг. 3, гостевая ВМ 32 исполняет гостевую операционную систему (ОС) 34 и набор приложений 36а-b. Гостевая ОС 34 может содержать любую широкодоступную операционную систему, в частности, Microsoft Windows, MacOS, Linux, iOS, or Android™, предоставляющую интерфейс между приложениями, исполняемыми в ВМ 32, и виртуализированными аппаратными устройствами гостевой ВМ 32. В общем, приложения 36а-b представляют собой любое пользовательское приложение, такое как текстовый процессор, приложение для работы с электронными таблицами, графическое приложение, браузер, приложение для социальных сетей и приложение электронной связи. Считается, что гостевая ОС 34 и приложения 36а-b здесь исполняются в гостевой ВМ 32, т.е. они исполняются на виртуальном процессоре ВМ 32. Напротив, считается, что гипервизор 30 исполняется вне гостевой ВМ 32.
[0033] В некоторых вариантах осуществления отображение гостевой ВМ 32 включает в себя конфигурирование структуры данных, используемой гипервизором 30 для управления работой гостевой ВМ 32. Ниже такая структура будет именоваться объектом состояния виртуальной машины (ОСВМ). Примерные ОСВМ включают в себя структуру управления виртуальной машины (СУВМ) на платформах Intel и блок управления виртуальной машины (БУВМ) на платформах AMD. В некоторых вариантах осуществления процессор 16 связывает область в памяти с каждым ОСВМ, так что программное обеспечение может ссылаться на конкретный ОСВМ с использованием адреса или указателя памяти (например, указателя СУВМ на платформах Intel).
[0034] Каждый ОСВМ может содержать данные, отображающие текущее состояние соответствующего виртуализированного процессора, отображенного в клиентской системе 12. В многопоточных конфигурациях аппаратный процессор 16 может управлять множеством ядер, причем каждое ядро дополнительно содержит множество логических процессоров, и каждый логический процессор может обрабатывать исполняемый поток независимо и одновременно с другими логическими процессорами. Множество логических процессоров могут совместно использовать некоторые аппаратные ресурсы, например, общий блок управления памятью. В многопоточном варианте осуществления для каждого отдельного логического процессора может быть настроен отдельный ОСВМ. Каждый ОСВМ может содержать область состояния гостя и область состояния хоста, причем область состояния гостя хранит состояние центрального процессора соответствующей виртуальной машины (т.е. соответствующего виртуализированного процессора), а область состояния хоста хранит текущее состояние гипервизора 30. В некоторых вариантах осуществления область состояния гостя ОСВМ включает в себя, помимо прочего, содержимое контрольных регистров (например, CRO, CR3 и т.д.), указатель команд (например, регистр-указатель команд RIP), регистры общего назначения (например, ЕАХ, ЕСХ и т.д.) и регистры флагов (например, EFLAGS) виртуального процессора соответствующей ВМ. Область состояния хоста ОСВМ может включать в себя указатель (например, указатель расширенной таблицы страниц (ЕРТ) на платформах Intel) для таблицы страниц, конфигурированной для преобразования адресов для соответствующей ВМ.
[0035] В некоторых вариантах осуществления процессор 16 может хранить часть ОСВМ внутри специально назначенных внутренних регистров/кэшей, тогда как другие части соответствующего ОСВМ могут находиться в памяти 18. В любой момент времени в логический процессор может быть загружено не более одного ОСВМ (здесь именуемого текущим ОСВМ), идентифицирующего виртуальную машину, которая в данный момент управляет соответствующим логическим процессором. Когда процессор 16 переключается с исполнения программного обеспечения внутри ВМ (например, приложения 36а на фиг. 3) на исполнение программного обеспечения вне соответствующей ВМ (например, гипервизор 30), процессор 16 может сохранить текущее состояние процессора в области состояния гостевой машины текущего ОСВМ и загрузить состояние главной машины ОСВМ в процессор. Наоборот, когда процессор 16 переключается с исполнения программного обеспечения вне ВМ на исполнение программного обеспечения в соответствующей ВМ, процессор 16 может сохранить текущее состояние процессора в области состояния главной машины ОСВМ и загрузить состояние гостевой машины текущего ОСВМ в процессор 16.
[0036] В некоторых вариантах осуществления модуль 40 самодиагностики исполняется вне всех гостевых ВМ, отображенных в соответствующей клиентской системе. Самодиагностика - это устоявшийся термин в области аппаратной виртуализации, в целом обозначающий сбор информации о различных аспектах работы виртуальной машины вне соответствующей ВМ. В некоторых вариантах осуществления настоящего изобретения самодиагностика включает в себя, среди прочего, такие операции, как процессы контроля, исполняемые в гостевой ВМ 32, перехват попытки выполнения определенной функции ОС или процессорной команды в гостевой ВМ 32, перехват попытки доступа к странице памяти, используемой гостевой ВМ 32, и определение местоположения в памяти 18, где хранятся специальнвю данные, используемые гостевой ВМ, помимо прочего. Модуль 40 может быть включен в гипервизор 30 или быть программным компонентом, отдельным и независимым от гипервизора 30, но исполняемым по существу на таком же уровне привилегий процессора, как гипервизор 30. Один модуль 40 может быть конфигурирован для диагностики множества ВМ, исполняемых в клиентской системе 12. Модуль 40 может взаимодействовать с гипервизором 30 для дешифрования связей, проходящих в клиентские системы 12 и/или из них. Точнее, модуль 40 может быть конфигурирован для нахождения ключа шифрования в памяти 18, который используется для шифрования сообщения, отправленного или полученного гостевой ВМ 32, как подробно описано ниже.
[0037] Программное обеспечение, исполняемое в клиентской системе 12, может дополнительно содержать сетевой фильтр 42, конфигурированный для перехвата связей, проходящих в гостевую ВМ 32 или из нее, и для обмена информацией с модулем 40 самодиагностики. Фильтр 42 может прослушивать определенные сетевые порты, например, порт 443 для соединений, относящихся к протоколу TLS. Фильтр 42 может исполняться внутри ВМ 32 или вне ее. При исполнении вне ВМ 32 один сетевой фильтр может контролировать связи, проходящие во множество ВМ, исполняемых в клиентской системе 12, или из них. Для достижения такого контроля гипервизор 30 может направлять все связи в клиентскую систему 12 и/или из нее через сетевой фильтр 42. Фильтр 42 может иметь привилегированное управление сетевым адаптером (сетевыми адаптерами) 26, данная конфигурация может быть реализована, например, с использованием технологии VT-d от Intel. При контроле множества ВМ фильтр 42 может поддерживать очередь пакетов, специфичную для ВМ, т.е. связывать каждый перехваченный сетевой пакет с исходной и/или целевой ВМ.
[0038] В некоторых вариантах осуществления модуль 40 самодиагностики работает путем обнаружения различных событий, происходящих во время исполнения программного обеспечения в гостевой ВМ 32. Примерные события, обнаруженные модулем 40 самодиагностики, включают в себя, например, исключение и/или прерывание процессора, попытку исполнения определенной функции гостевой ОС 34, изменение привилегий процессора (например, системный вызов), попытку доступа (чтение, запись или исполнение) к определенной ячейке памяти и т.д. Кроме того, модуль 40 самодиагностики может быть конфигурирован для определения адресов памяти различных программных компонентов, исполняемых в гостевой ВМ 32, как описано ниже.
[0039] Некоторые варианты осуществления дополнительно содержат вспомогательный агент 44, исполняемый в гостевой ВМ 32, причем агент 44 взаимодействует с модулем 40 самодиагностики для обнаружения и анализа событий, происходящих в гостевой ВМ 32. Например, агент 44 может содержать, например, драйвер, исполняемый на уровне привилегий процессора гостевой ОС 34 (например, кольцо уровня 0, режим ядра) и может быть зарегистрирован как обработчик различных событий в работе процессора, таких как ошибки страницы и аппаратные прерывания. Одним из преимуществ таких конфигураций является то, что некоторую информацию намного проще получить изнутри ВМ, чем вне соответствующей ВМ, поскольку внутренний агент имеет доступ ко всем функциям гостевой ОС 34. Недостатком является то, что агенты, исполняемые в гостевой ВМ 32, потенциально уязвимы для вредоносного программного обеспечения, исполняемого в соответствующей ВМ. Чтобы уменьшить этот риск, некоторые варианты осуществления могут вводить агент 44 в гостевую ВМ 32 только временно, а после завершения исполнения агента 44 удалять агент 44.
[0040] Для обнаружения событий, происходящих в гостевой ВМ 32, модуль 40 самодиагностики может использовать любой способ, известный из области виртуализации. Важная категория данных способов использует попытку доступа к определенной ячейке памяти в качестве индикатора наступления конкретного события. Для обнаружения такой попытки доступа к памяти некоторые варианты осуществления устанавливают разрешения доступа к памяти, чтобы данная попытка нарушала соответствующие разрешения. Затем данное нарушение перехватывается модулем самодиагностики и/или вспомогательным агентом 44. Как правило, виртуальные машины работают с виртуализированной физической памятью, также известной в данной области техники как гостевая физическая память. Виртуализированная физическая память содержит абстрактное отображение фактической физической памяти 18, например, в виде непрерывного пространства адресов, специфического для каждой ВМ, причем части данного пространства соответствуют адресам физической памяти 18 и/или физических устройств 24 хранения данных. В современных платформах аппаратной виртуализации такое соответствие обычно достигается с помощью специальных структур данных и механизмов, управляемых процессором 16, которые известны как преобразование адресов второго уровня (SLAT). Распространенные применения SLAT включают в себя расширенные таблицы страниц (ЕРТ) на платформах Intel и вложенные таблицы страниц (NPT) на платформах AMD. В таких системах виртуальная физическая память разделена на единицы, известные в данной области техники как страницы, причем страница является наименьшей единицей виртуализированной физической памяти, индивидуально соотнесенной с физической памятью с помощью SLAT, т.е. соотнесение между физической и виртуализированной физической памятью осуществляется со страничной гранулярностью. Как правило, все страницы имеют определенный размер, например, 4 килобайта, 2 мегабайта и т.д. Обычно размещение виртуализированной физической памяти в страницах конфигурировано гипервизором 30. В некоторых вариантах осуществления гипервизор 30 также конфигурирует структуры SLAT и, следовательно, соотнесение между физической памятью и виртуализированной физической памятью. В некоторых вариантах осуществления указатель на структуру данных SLAT (например, на таблицу страниц) хранится в ОСВМ соответствующей виртуальной машины. Фактическое соотнесение (трансляция) адреса виртуализированной памяти с адресом физической памяти может включать в себя просмотр адреса физической памяти в буфере быстрого преобразования адресов (TLB) клиентской системы 12. В некоторых вариантах осуществления трансляция адресов включает в себя выполнение просмотра страниц, включающего в себя набор последовательных просмотров адресов в группе таблиц страниц и/или каталогов страниц и выполнение вычислений, например, прибавление смещения страницы к адресу, относящемуся к соответствующей странице.
[0041] Фиг. 4 иллюстрирует такое соотнесение адресов памяти согласно варианту осуществления с фиг. 3. После гипервизором 30 гостевая ВМ 32 видит пространство 218 виртуализированной физической памяти как свое собственное пространство физической памяти. Гостевая ОС 34 назначает программному объекту (например, приложению 36а), исполняемому в гостевой ВМ 32, пространство 318 виртуальной памяти. Если программный объект пытается получить доступ к содержимому примерной страницы 50а памяти пространства 318а, адрес страницы 50а преобразуется виртуализированным процессором гостевой ВМ 32 в адрес страницы 50b пространства 218 виртуализированной физической памяти, в соответствии с таблицами страниц, конфигурированными и управляемыми гостевой ОС 34. Затем адрес страницы 50b соотносится с адресом страницы 50 с в физической памяти 18 посредством физического процессора 16 с использованием SLAT, конфигурированного гипервизором 30.
[0042] В области техники, к которой относится изобретение, виртуальное адресное пространство 218 обычно известно как "гостевая физическая память", а адрес в таком пространстве памяти называется гостевым физическим адресом (GPA). Адресное пространство 318 обычно называется гостевой виртуальной памятью и содержит гостевые виртуальные адреса (GVA). Адреса в физической памяти 18 обычно называются физическими адресами хоста (HPA). Таким образом, такое преобразование/соотнесение адресов, как, например, показанное на фиг. 4, называется преобразованием из GVA в GPA. Напротив, преобразования адресов, как, например, преобразование 54, обычно называются преобразованиями GPA в НРА.
[0043] В некоторых вариантах осуществления гипервизор 30 устанавливает свое собственное пространство 418 виртуальной памяти, содержащее отображение физической памяти 18, и применяет механизм преобразования (например, таблицы страниц), чтобы соотнести адреса в пространстве 418 с адресами физической памяти 18. На фиг. 4 в результате такого примерного соотнесения адрес страницы 50f в виртуальном пространстве 418 преобразуется в физический адрес страницы 50с, а адрес страницы 50d преобразуется в физический адрес страницы 50е. Благодаря таким соотнесениям потенциально любой программный объект, исполняемый на уровне привилегий процессора гипервизора 30, может управлять страницами памяти, относящимися к программным объектам, исполняемым в различных ВМ, работающих в клиентской системе 12. В частности, модуль 40 самодиагностики памяти может таким образом перечислять, читать, записывать и управлять доступом к страницам физической памяти, используемым любым процессом, исполняемым в гостевой ВМ 32.
[0044] В некоторых вариантах осуществления обнаружение события, происходящего в гостевой ВМ 32, содержит взаимодействие модуля 40 самодиагностики с гипервизором 30, чтобы установить права доступа к памяти в структуре данных SLAT. Такие функции могут быть специфичными для конкретной платформы, но разрешения доступа обычно задаются со страничной гранулярностью. Например, на платформах Intel, поддерживающих виртуализацию, запись ЕРТ каждой страницы памяти включает набор битов разрешений доступа, указывающих, может ли соответствующая страница быть считана, записана и, соответственно, исполнена. Когда попытка доступа к определенной странице памяти нарушает набор разрешений доступа для соответствующей страницы памяти, соответствующая попытка может инициировать событие в работе процессора, например, событие исключения или событие выхода из виртуальной машины (VMExit на платформах Intel). В ответ на это событие в работе процессора процессор 16 может переключиться на исполнение процедуры обработчика события вне соответствующей ВМ, что позволяет модулю 40 самодиагностики обнаруживать возникновение соответствующего нарушения доступа. В альтернативном варианте осуществления нарушение доступа к памяти может инициировать исключение процессора (например, исключение виртуализации или #VE на платформах Intel). В ответ на такие события в работе процессора процессор 16 может переключиться на выполнение процедуры обработчика события в соответствующей ВМ, т.е. без выхода из соответствующей ВМ. В вариантах осуществления, имеющих вспомогательный агент 44, как показано на фиг. 4, агент 44 может быть зарегистрирован как обработчик исключений виртуализации, с обнаружением, таким образом, нарушения доступа к памяти.
[0045] В некоторых вариантах осуществления запись SLAT страницы памяти дополнительно содержит поля (например, биты), которые указывают, был ли осуществлен доступ к соответствующей странице и/или была ли осуществлена запись в соответствующую страницу. Такие биты обычно называются доступными и грязными битами. В некоторых вариантах осуществления доступные и/или грязные биты используются для идентификации страниц памяти, которые могут содержать ключи шифрования, как показано ниже.
[0046] В некоторых вариантах осуществления настоящего изобретения модуль 40 самодиагностики конфигурирован для контроля шифрованных связей, поступающих в гостевую ВМ или из нее. Сеанс связи обычно включает в себя предварительные согласования между сторонами, за которыми следует фактический обмен зашифрованными сообщениями. В данной области техники согласования между сторонами обычно называют подтверждением связи, тогда как содержание сообщения обычно называют полезной нагрузкой. Подтверждение связи содержит набор обменов, которые, среди прочего, определяют шифр (т.е. алгоритм шифрования), и компонент для получения ключа шифрования. Примерные шифры включают в себя блочные шифры с симметричным алгоритмом блочного шифрования (AES) и потоковые шифры, например, ChaCha-20. В некоторых вариантах осуществления подтверждение связи может включать в себя обмен фактическими ключами, выполняемый в соответствии со специальным протоколом, и/или дополнительные этапы для проверки идентичности одной или обеих сторон. В зависимости от шифра компоненты для получения ключа шифрования могут включать в себя набор случайных чисел, открытый ключ контактирующих сторон и т.д.
[0047] Конкретным примером протокола защищенной связи является протокол защиты транспортного уровня (TLS), описанный, например, в Рабочем предложении (RFC) 5246 рабочей группы "Сеть" Инженерного совета Интернета (IETF). В настоящее время протокол TLS используется в большинстве браузеров, электронной торговле и приложениях для безопасных электронных банковских услуг. Сеанс TLS включает в себя, помимо прочего, уникальный идентификатор сеанса, спецификацию шифра и общий секрет, совместно используемый контактирующими сторонами. Обычно общий секрет вычисляется отдельно каждой стороной с использованием компонентов, которыми стороны обменялись во время подтверждения связи. Протокол подтверждения связи TLS включает в себя следующие шаги/этапы:
a) Обмен приветственными сообщениями для согласования криптографических параметров связи. Клиентское приветственное сообщение, отправленное от клиента на сервер, может указывать список поддерживаемых шифров и включать в себя, помимо прочего, предоставленное клиентом случайное число. Серверное приветственное сообщение, отправленное сервером клиенту, может указывать выбор шифра из шифров, предложенных клиентом, и включать в себя предоставленное сервером случайное число.
b) Выполнение аутентификации сторон. Сервер может отправить сертификат, подтверждающий его идентичность, и в свою очередь запросить сертификат от клиента. Этот этап может содержать сообщение ClientCertificate от клиента и сообщение ServerCertificate с сервера.
c) Обмен необходимыми криптографическими параметрами, чтобы клиент и сервер могли согласовать или рассчитать общий секрет (например, предварительный секрет). Криптографические параметры могут содержать набор ключей или другую информацию в соответствии с выбранным шифром. Например, ключи, обмениваемые на этом этапе, могут быть открытыми криптографическими ключами (Rivest-Shamir-Adleman, Diffie-Hellman и т.д.) клиента и сервера. Этот этап может содержать сообщение ClientKeyExchange, переданное клиентом, и/или сообщение ServerKeyExchange, переданное сервером. Если для аутентификации сервера и обмена ключами используется Rivest-Shamir-Adleman (RSA), клиентом генерируется предварительный секрет, зашифрованный с помощью открытого ключа, и передается на сервер как часть сообщения ClientKeyExchange. Затем сервер применяет свой личный ключ для дешифрования предварительного секрета. Если используется Diffie-Hellman, каждая сторона вычисляет свой собственный предварительный секрет в соответствии с согласованным ключом.
d) Обмен сообщениями ChangeCipherSpec, чтобы показать, что каждая передающая сторона будет шифровать исходящие сообщения с использованием согласованных криптографических параметров.
e) Обмен сообщениями Finished (ClientFinished and ServerFinished) для формального завершения сеанса подтверждения связи. Для того, чтобы клиент и сервер могли убедиться в том, что их узел получил и/или рассчитал правильные параметры безопасности (например, разделенный секрет), и что подтверждение связи произошло без вмешательства взломщика, сообщения ClientFinished и ServerFinished шифруются. Каждая принимающая сторона должна попытаться расшифровать полученное сообщение Finished, успешное дешифрование указывает на успешное подтверждение связи.
[0048] В протоколе TLS каждая сторона вычисляет общий секрет в соответствии с криптографическими параметрами, обмениваемыми во время подтверждения связи, например, в соответствии с предварительным секретом и случайными числами, предоставленными клиентом и сервером. Затем по общему секрету каждая сторона может определить набор сеансовых ключей. Ниже термин "сеансовые ключи" используется для общего обозначения значений криптографических параметров, применяемых для шифрования и/или дешифрования связей во время текущего сеанса. Примерные сеансовые ключи, в частности, включают в себя предварительный секрет, общий секрет, ключи записи на стороне клиента и сервера, векторы/защитные слова инициализации и коды аутентификации сообщений (MAC). В варианте осуществления с использованием криптографии с симметричным ключом ключи шифрования и дешифрования идентичны, поэтому для расшифровки достаточно знать ключ шифрования. В криптографии с ассиметричным ключом ключи шифрования и дешифрования различаются. Таким образом, использование сеансовых ключей зависит от согласованного шифра.
[0049] Некоторые варианты осуществления настоящего изобретения основаны на том факте, что сеансовые ключи, используемые для шифрования в течение текущего сеанса, должны вычисляться каждой стороной перед отправкой сообщения о подтверждении связи Finished (иначе соответствующее сообщение не может быть зашифровано). Кроме того, компоненты для получения сеансовых ключей принимаются каждой стороной как часть подтверждения связи, например, как часть сообщений ServerHello, ClientKeyExchange и ServerKeyExchange. Таким образом, сеансовые ключи, скорее всего, будут появляться в памяти клиентской системы в какой-то момент подтверждения связи. В некоторых вариантах осуществления изобретения синхронизация подтверждения связи используется для определения приблизительной ячейки памяти сеансовых ключей.
[0050] На фиг. 5 показана примерная последовательность этапов, выполняемых модулем 40 самодиагностики согласно некоторым вариантам осуществления изобретения. В последовательности этапов 502-504 модуль 40 может взаимодействовать с сетевым фильтром 42, чтобы обнаружить сообщение о подтверждении связи, переданное клиентской системой 12 удаленной стороне (например, сервер 13 содержимого с фиг. 1). В одном примере запрос соединения может поступить от приложения, исполняемого в гостевой ВМ 32, например, браузера, и может указывать на намерение инициировать сеанс зашифрованной связи, например, сеанс TLS, сеанс соединения с защищенной оболочкой (SSH), сеанс соединения через виртуальную частную сеть (VPN) и т.д. Запрос соединения как таковой может включать в себя сообщение о подтверждении связи (например, ClientHello) на сервер 3. В другом примере обнаруженное сообщение о подтверждении связи содержит сообщение от сервера 13 (например, ServerHello), переданное в ответ на ClientHello, полученное из клиентской системы 12.
[0051] Если обнаружено сообщение о подтверждении связи, на этапе 506 модуль 40 самодиагностики может извлечь ряд параметров подтверждения, таких как идентификатор сеанса и индикатор шифра, который будет использоваться для данного сеанса. В варианте осуществления, контролирующем TLS-соединения, этап 506 может дополнительно извлекать криптографические параметры, такие как случайные числа, предоставленные сервером и/или клиентом. Затем модуль 40 самодиагностики может дать сетевому фильтру 42 команду на пересылку сообщения о подтверждении связи в его предполагаемую ВМ получателя (например, в гостевую ВМ 32 с фиг. 3).
[0052] На этапе 508 модуль 40 самодиагностики может получить оптимизированный снимок памяти гостевой ВМ 32. Снимок памяти содержит копию содержимого набора страниц памяти, используемых соответствующей ВМ. В некоторых вариантах осуществления оптимизированный снимок включает в себя содержимое набора страниц памяти, которые наиболее вероятно будут содержать сеансовые ключи, или по меньшей мере значения криптографических параметров, используемые для получения сеансовых ключей текущего сеанса связи. Примерные способы получения оптимизированного снимка описаны ниже.
[0053] Этап 510 может собирать зашифрованную полезную нагрузку текущего сеанса путем получения копии соответствующей полезной нагрузки от сетевого фильтра 42. В некоторых вариантах осуществления сетевой фильтр 42 конфигурирован для администрирования множества очередей данных, например, индексированных идентификатором сеанса и/или виртуальной машиной. Таким образом, сетевой фильтр 42 может однозначно и последовательно восстанавливать зашифрованную полезную нагрузку сеанса, даже если соответствующая полезная нагрузка разделена на несколько пакетов, распределенных между другими связями. Затем на этапе 512 модуль 40 самодиагностики может передать собранный оптимизированный снимок памяти, параметры подтверждения связи и зашифрованную полезную нагрузку на сервер 15 безопасности для анализа.
[0054] На фиг. 6 показана примерная последовательность этапов, выполняемых модулем 40 самодиагностики, чтобы получить оптимизированный снимок памяти гостевой ВМ 32. Для того, чтобы получить приблизительную ячейку памяти сеансовых ключей, некоторые варианты осуществления настоящего изобретения идентифицируют набор страниц памяти, содержимое которых изменилось в течение временного интервала, который приблизительно совпадает со временем, когда были созданы соответствующие сеансовые ключи.
[0055] Страницы памяти, содержимое которых недавно изменилось, т.е. страницы, в которые недавно была произведена запись, могут быть идентифицированы с использованием любого метода, известного в данной области техники. В одном примере модуль 40 самодиагностики может помечать набор страниц памяти, используемых гостевой ВМ 32, как недоступные для записи в структуре данных SLAT, связанной с гостевой ВМ 32. Любая последующая попытка изменить содержимое такой страницы будет являться нарушением доступа к памяти и, таким образом, инициировать событие в работе процессора (например, выход ВМ или исключение виртуализации), которое затем будет перехвачено модулем 40 самодиагностики и/или вспомогательным агентом 44. В ответ на перехват события модуль 40 может пометить соответствующую страницу как доступную для записи и повторно запустить соответствующую ВМ для обеспечения возможности продолжения соответствующей записи. Таким образом, модуль 40 может получить список "грязных" страниц памяти, содержание которых представляет собой требуемый оптимизированный снимок памяти.
[0056] Вышеописанный сценарий довольно неэффективен и требует больших вычислительных затрат. На выбранных аппаратных платформах возможны некоторые оптимизации. Например, на платформах, которые поддерживают доступные и/или грязные биты, некоторые варианты осуществления могут сбросить грязный бит записи таблицы страниц (запись ЕРТ на платформах Intel) страницы памяти, используемой гостевой ВМ 32, и проверить значение грязного бита немного позже, чтобы определить, была ли осуществлена запись в соответствующую страницу. Данный механизм может быть дополнительно оптимизирован. Например, некоторые поколения процессоров Intel обладают функцией под названием «протоколирование изменений страницы» (PML), которая автоматически экспортирует список страниц, содержимое которых изменилось, в ячейку памяти, доступную для модуля 40 самодиагностики памяти.
[0057] Другая возможная стратегия оптимизации использует функцию "Динамическая миграция", которую используют некоторые гипервизоры (например, Xen) для эффективной миграции и/или клонирования виртуальных машин. Соответствующая функция строится вокруг набора примитивов, которые автоматически отслеживают грязные страницы, в которые была осуществлена запись, и экспортируют список таких страниц в соответствии с расписанием.
[0058] Последовательность шагов, показанных на фиг. 6, идентифицирует страницы, которые были изменены в течение временного интервала между событием сеанса первого рода и событием сеанса второго рода. Здесь события сеанса обозначают различные этапы протокола связи, например, как описано выше в отношении протокола TLS. Примерные события сеанса включают в себя, например, отправление и/или прием сообщений, составляющих часть конкретного сеанса связи (например, сообщение о подтверждении связи, переданное между клиентской системой 12 и сервером 13, сообщение, содержащее часть зашифрованной полезной нагрузки соответствующего сеанса и т.д.). Обнаружение события 1-го рода (этапы 522-524) включает контроль изменений страниц (этап 526). В некоторых вариантах осуществления этап 526 включает в себя приостановку работы гостевой ВМ 32, повторную установку грязного бита записей SLAT, соответствующих страницам памяти, используемым гостевой ВМ 32, и повторный запуск гостевой ВМ 32. В некоторых вариантах осуществления набор страниц памяти, подлежащих контролю на записи, может быть ограничен, например, набором страниц, используемых процессом (например, браузером), выполняющим текущий сеанс связи, или процессом, обрабатывающим шифрование/дешифрование (например, LSASS.EXE в Windows). Модуль 40 самодиагностики памяти может идентифицировать страницы, используемые соответствующим процессом/приложением, благодаря тому, что он просматривает структуры данных, используемых гостевой ОС 34 для управления потоками и процессами. Задача идентификации таких страниц памяти может быть упрощена благодаря взаимодействию со вспомогательным агентом 44, выполняемым в гостевой ВМ 32 - агент 44 обычно имеет доступ к гораздо большему объему данных, чем модуль 40.
[0059] Контроль записей выключается (этап 534) при обнаружении события сеанса второго рода (этапы 528-530), например, при получении другого сообщения о подтверждении связи соответствующего сеанса. Этап 532 может приостановить исполнение гостевой ВМ 32, чтобы предотвратить изменения в памяти при создании снимка памяти. В следующей последовательности этапов 536-538 модуль 40 идентифицирует страницы, в которые были осуществлены записи между первым и вторым событиями сеанса, и копирует содержимое страниц, таких как оптимизированный снимок памяти. На следующем этапе 540 модуль 40 самодиагностики может повторно запустить гостевую ВМ 32.
[0060] В альтернативном варианте осуществления исполнение гостевой ВМ 32 не приостанавливается на время сбора оптимизированного снимка памяти. Такие приостановки могут замедлить работу системы и повлиять на работу пользователей. Кроме того, приостановка гостевой ВМ 32 может быть нежелательной с точки зрения безопасности, поскольку это может дать понять, что соответствующая виртуальная машина контролируется. Поскольку сеансовые ключи обычно записываются один раз и не перемещаются в памяти, согласованность всех страниц, используемых гостевой ВМ 32, не требуется. Необходимо просто убедиться в том, что текущий сеанс не заканчивается (и поэтому ключи не пропадают) до того, как будут скопированы грязные страницы. Вместо того, чтобы останавливать гостевую ВМ 32, некоторые варианты осуществления используют сетевой фильтр 42 для управления потоком связи в гостевую ВМ 32 или из гостевой ВМ 32. Например, фильтр 42 может задерживать доставку пакетов данных с сервера 13 в гостевую ВМ 32 на время сбора снимка памяти. Программному обеспечению, исполняемому в гостевой ВМ 32, данная задержка может показаться вполне обычной сетевой задержкой. Для получения функции задержки в некоторых вариантах осуществления используется механизм межпроцессного уведомления для взаимодействия между модулем 40 и сетевым фильтром 42. Например, модуль 40 может уведомить фильтр 42 в ответ на успешный сбор оптимизированного снимка памяти. В свою очередь фильтр 42 может уведомить модуль 40 в ответ на перехват определенных сетевых пакетов (например, ServerHello сообщений ServerFinished).
[0061] Исходя из того факта, что сеансовые ключи обычно получают во время части сеанса, в которой происходит подтверждение связи, различные варианты осуществления настоящего изобретения используют различные события подтверждения связи, такие как события сеанса 1-го и 2-го рода. Например, в некоторых вариантах осуществления события 1-го рода, которые включают контроль страниц, включают в себя перехват сетевым фильтром 42 сетевого пакета, содержащего компонент для получения сеансового ключа для соответствующего сеанса. Примеры таких компонентов, в частности, включают в себя случайное число, ключ и разделенный секрет. Одним из таких примерных событий сеанса 1-го рода является сообщение ServerHello, полученное от сервера 13. Также могут использоваться другие варианты осуществления. Другие возможные варианты события 1-го рода включают в себя сообщение ClientHello от гостевой ВМ 32, сообщение ClientKeyExchange и сообщение ServerKeyExchange. Что касается событий сеанса 2-го рода, которые отключают контроль страниц, некоторые варианты осуществления используют перехват сетевым фильтром 42 зашифрованного сообщения, переданного в гостевую ВМ 32 или из нее. Одним из примеров события 2-го рода является перехват сообщения ClientFinished или ServerFinished. Другим возможным событием выбора 2-го рода является перехват пакета, содержащего часть полезной нагрузки, зашифрованной с использованием сеансового ключа текущего сеанса.
[0062] Примерные способы, описанные выше в отношении фиг. 5 и 6, применяются к одному сеансу связи. На практике, в одной виртуальной машине может одновременно выполняться множество сеансов, например, множеством экземпляров браузера (как при просмотре с использованием вкладок) или отдельными приложениями, работающими одновременно. Некоторые варианты осуществления конфигурированы для отслеживания грязных страниц отдельно для каждого сеанса. Для ясности в нижеследующем описании основное внимание будет сосредоточено на конкретной задаче сбора снимков памяти сеансов TLS, причем каждый снимок содержит страницы памяти, измененные между сообщением ServerHello каждого сеанса и сообщением ClientFinished соответствующего сеанса.
[0063] Получение зависящих от сеанса оптимизированных снимков создает дополнительную проблему распутывания произвольной последовательности событий сеанса. Некоторые варианты осуществления конфигурируют механизм контроля страниц для идентификации всех страниц, в которых была осуществлена запись между двумя последовательными событиями. Однако такие события могут относиться к различным сеансам и могут являться событиями первого или второго рода (заимствовать номенклатуру, использованную выше в отношении фиг. 6). Для того, чтобы учесть эту неоднозначность, некоторые варианты осуществления модуля 40 самодиагностики поддерживают полный список активных в данный момент сеансов, причем каждая запись списка содержит информацию, такую как идентификатор сеанса, исходный адрес Интернет-протокола (IP), номер порта источника, IP-адрес получателя, номер порта получателя и временную метку сообщения ServerHello соответствующего сеанса. Кроме того, модуль 40 может поддерживать глобальный массив временных меток и хранить по меньшей мере одну временную метку для каждой страницы контролируемой памяти. Каждая временная метка данного массива может указывать на момент времени, когда была произведена запись в соответствующую страницу. Поэтому массив временных веток будет рассматриваться здесь как массив временных меток изменения страницы.
[0064] На фиг. 7 показана примерная последовательность этапов, выполняемых модулем самодиагностики памяти согласно варианту осуществления, конфигурированным для отслеживания множества одновременных сеансов TLS. Этап 552 инициализирует массив временных меток изменения страницы. Кроме того, этап 552 может включать в себя конфигурирование механизма обнаружения изменения страницы (например, PML, сброс грязных битов и т.д.). Последовательность шагов 554-556 прослушивает события типа Hello или Finished. Если событие обнаружено, на этапе 558 модуль 40 самодиагностики может задействовать механизм обнаружения изменения страницы для идентификации текущих грязных страниц, то есть страниц памяти, содержимое которых изменилось с момента предыдущего обнаруженного события, независимо от того, было ли это сообщение Hello или Finished. Затем этап 560 может обновить массив временных меток изменения страницы, чтобы временные метки, соответствующие грязным страницам, обновились до текущей метки времени или метки времени, указывающей на возникновение обнаруженного в данный момент события. Если соответствующее событие относится к 1-му роду (например, ServerHello), на этапе 564 модуль 40 может инициализировать новую структуру данных сеанса, в том числе идентификатор сеанса, IP-адрес и порты источника и получателя. Следующий этап 566 записывает временную метку, указывающую текущее событие ServerHello, которое в этом случае будет считаться временной меткой Hello соответствующего сеанса.
[0065] Если обнаруженное в данный момент событие относится ко 2-му роду (например, ClientFinished), на этапе 570 модуль 40 самодиагностики может просмотреть массив временных меток изменения страницы. Для каждой страницы некоторые варианты осуществления могут сравнивать временную метку изменения соответствующей страницы с временной меткой Hello соответствующего сеанса (т.е. сеанса, к которому относится обнаруженное в данный момент событие). Если временная метка изменения указывает, что запись на соответствующей странице была осуществлена после события Hello соответствующего сеанса, модуль 40 может включить соответствующую страницу в оптимизированный снимок памяти соответствующего сеанса.
[0066] На фиг. 8 показано примерное программное обеспечение, исполняемое на сервере 15 безопасности, в том числе механизм 60 дешифрования согласно некоторым вариантам осуществления настоящего изобретения. Для каждого контролируемого сеанса связи механизм 60 может принимать данные сеанса от соответствующей клиентской системы (например, от клиентских систем 12a-d с фиг. 1), такие как набор параметров 72 подтверждения связи, оптимизированный снимок 70 памяти и/или зашифрованная полезная нагрузка 74. Такие данные могут дополнительно содержать индикаторы, однозначно связывающие каждый элемент с конкретной клиентской системой, виртуальной машиной и/или сеансом связи. Параметры 72 подтверждения связи могут содержать индикатор шифра, используемого для шифрования полезной нагрузки 74. Оптимизированный снимок 70 памяти содержит копию содержимого страницы памяти клиентской системы, как описано выше. Полезная нагрузка 74 содержит часть зашифрованной связи (например, сетевой пакет).
[0067] На фиг. 9 показана примерная последовательность этапов, выполняемых механизмом 60 дешифрования согласно некоторым вариантам осуществления настоящего изобретения. В ответ на получение данных сеанса от клиентской системы 12 (этап 582) на этапе 584 механизм 60 может извлечь из данных сеанса индикатор шифра, используемого в соответствующем сеансе. Затем в соответствии с данным шифром механизм 60 дешифрования может выбрать процедуру/алгоритм дешифрования. Затем последовательность шагов 586-588-590 циклично повторяется до тех пор, пока не будет выполнено условие завершения, например, пока не будет достигнуто успешное дешифрование полезной нагрузки, или пока не истечет период времени, назначенный для дешифрования.
[0068] Попытки дешифрования полезной нагрузки могут выполняться в соответствии с любым способом, известным в области криптографии. Процедура сбора оптимизированного снимка памяти была создана таким образом, что сеансовые ключи или, по меньшей мере, значения криптографических параметров, используемые для получения ключей шифрования и дешифрования для соответствующего сеанса, будут скорее всего находиться внутри соответствующего снимка памяти. Размер байта сеансовых ключей может быть известен априори или получен из параметров шифрования, полученных от клиентской системы 12. Однако, точное местоположение сеансовых ключей в снимке может быть неизвестно. Поэтому некоторые варианты осуществления могут искать ключевые данные методом проб и ошибок. В одном из таких примеров, показанном на фиг. 9, этап 586 может получать потенциальный ключ дешифрования из снимка оптимизированной памяти. В варианте осуществления, использующем криптографию с симметричным ключом (например, протокол TLS), ключи шифрования и дешифрования идентичны, поэтому возможный ключ дешифрования может содержать, например, последовательность байтов снимка, причем эта последовательность имеет требуемый размер байта. На этапе 588 механизм 60 может пытаться расшифровать, по меньшей мере, часть соответствующей полезной нагрузки сеанса с использованием возможных ключей. Успех может быть оценен с использованием различных способов, известных в данной области техники. Например, некоторые варианты осуществления вычисляют информационную энтропию расшифрованного сообщения. Низкая энтропия обычно указывает на успешное дешифрование, хотя, как известно, такие способы могут давать ошибочные позитивные или негативные результаты.
[0069] Альтернативный подход к расшифровке использует способ, известный в данной области техники как атака на основе открытых текстов. Один из таких вариантов использует тот факт, что механизм 60 дешифрования имеет доступ к зашифрованной версии известного сообщения, например, к содержимому (зашифрованного) сообщения ClientFinished и/или ServerFinished, которыми обмениваются во время соответствующего сеанса. Формат и открытый текст таких сообщений, задокументированный в протоколе TLS, известен априори.
[0070] Некоторые варианты осуществления настоящего изобретения позволяют дешифровать некоторые или все связи между клиентской системой и удаленной стороной. Примеры таких связей включают в себя любую связь, зашифрованную с использованием алгоритмов с симметричными или асимметричными ключами, в том числе соединения по протоколу с уровнем защищенных сокетов (SSL) или протоколу защиты транспортного уровня (TLS), соединения с защищенной оболочкой (SSH), соединения через виртуальную частную сеть (VPN) и соединения с обеспечением анонимной маршрутизации/анонимных сетей (например, программное обеспечение TOR). Примеры использования описанных способов включают в себя, помимо прочего, обнаружение и анализ вредоносного программного обеспечения, обнаружение вторжения и наблюдение.
[0071] В одном примерном приложении компьютерная система, служащая в качестве хоста по меньшей мере для части системы дешифрования, является частью хоста-приманки. Хосты-приманки обычно конфигурированы для обеспечения установки вредоносного программного обеспечения и/или контроля злоумышленником некоторых аспектов соответствующей компьютерной системы. В этом случае вредоносные программы и злоумышленники могут использовать зашифрованный канал для связи с внешними объектами, такими как серверы команд и управления (С & С). Благодаря возможности дешифрования таких связей некоторые варианты осуществления изобретения могут облегчить исследование вредоносных программ, вторжений и/или способов взлома.
[0072] Еще один пример использования некоторых вариантов осуществления для защиты от вредоносных программ включает в себя обнаружение вредоносного содержимого до того, как оно проникнет в клиентскую систему. В некоторых продвинутых сценариях атак вредоносными программами вредоносный программный агент попадает к клиенту через зашифрованную связь с безопасным в других отношениях сервером, например, через электронную почту (фишинг) или онлайн-рекламу. Из-за шифрования данный агент обычно не может быть обнаружен до тех пор, пока он не будет распакован и установлен на хосте, или даже до тех пор, пока он не выполнит какое-либо вредоносное действие. Некоторые варианты осуществления настоящего изобретения обеспечивают возможность раннего обнаружения таких агентов и выведения их из строя.
[0073] В еще одном примерном приложении поставщики облачных услуг могут использовать некоторые варианты осуществления для проверки зашифрованного трафика в квазиреальном времени и быстрого обнаружения вредоносных данных, распространяющихся на их серверы или с их серверов. Такое обнаружение может предотвратить выступление соответствующих серверов в качестве стартовой площадки для вредоносной атаки, например, атаки типа "распределенный отказ в обслуживании" (DDOS).
[0074] Как известно, расшифровка зашифрованной связи является сложной задачей. Некоторые стандартные подходы к взлому шифрования пытаются избежать дешифрования вообще. Такие способы включают в себя, например, изменение библиотек шифрования для предоставления дополнительной информации или введение "бэкдоров", которые позволяют пользователю незаметно получить доступ к открытому тексту соответствующей связи или к действительному ключу шифрования или к какой-либо другой информации, ведущей к ключу. Такие подходы считаются опасными, поскольку в конце концов они могут снизить безопасность Интернета. Они также неудобны, так как обычно они являются непереносимыми, то есть они эффективны только на определенных аппаратных платформах и/или операционных системах. Другое неудобство заключается в том, что изменение криптографической библиотеки видно программному обеспечению, исполняемому в соответствующем клиенте, и поэтому может быть обнаружено и нейтрализовано.
[0075] Современные шифры могут быть взломаны только с использованием какой-либо версии атаки методом подбора ключа, которая обычно требует значительных вычислительных затрат. Одна из таких атак включает в себя опробование множества возможных ключей, пока в конце концов один из них не сработает. Некоторые стандартные системы/способы дешифрования ищут ключевые данные в памяти клиентской системы. Однако незнание фактического местоположения ключевых данных может сделать такие способы нецелесообразными из-за огромных вычислительных затрат, необходимых для поиска. Кроме того, остановка соответствующей машины на время, необходимое для получения больших дампов памяти, может негативно повлиять на взаимодействие с пользователем. Некоторые стандартные способы пытаются оптимизировать поиск ключевых данных путем установки "точек отвода", чтобы получить дампы памяти в определенные моменты исполнения. Однако точки отвода определены заранее и, таким образом, могут прерываться, если обновляется основная система и/или программное обеспечение связи.
[0076] Некоторые варианты осуществления настоящего изобретения основаны на двух ключевых фактах. Во-первых, большое количество клиентских систем, потенциально извлекающих пользу из дешифрования, исполняются в конфигурациях аппаратной виртуализации (в виртуальных машинах). Примеры включают в себя серверные фермы и облачные провайдеры инфраструктуры виртуального рабочего стола. Да того, чтобы воспользоваться преимуществами таких конфигураций, некоторые варианты осуществления настоящего изобретения размещают модуль самодиагностики вне виртуальной машины, выполняющей зашифрованную связь, на уровне привилегий процессора гипервизора, отображающего соответствующую ВМ. Модуль самодиагностики может использовать технологии виртуализации для доступа и проверки содержимого памяти, используемой соответствующей виртуальной машиной, возможно без знания или вмешательства со стороны программного обеспечения, исполняемого в соответствующей виртуальной машине. Таким образом, один модуль самодиагностики может незаметно контролировать связи, осуществляемые множеством виртуальных машин, исполняемых одновременно в соответствующей клиентской системе.
[0077] Во-вторых, партнеры по связи обмениваются ключами шифрования или по меньшей мере криптографическими параметрами, используемыми для получения соответствующих ключей, во время конкретной фазы сеанса, например, во время подтверждения связи. В некоторых вариантах осуществления данный факт позволяет получить приблизительное местоположение сеансовых ключей, что позволяет сократить область поиска в памяти с сотен мегабайт, как в стандартных способах, до нескольких страниц памяти (например, от десятков килобайт до нескольких мегабайт). Это существенно снижает вычислительные затраты на расшифровку, что позволяет осуществить атаку методом подбора ключа.
[0078] Некоторые варианты осуществления используют аппаратные оптимизации современных процессоров, такие как возможность устанавливать доступ и/или грязные флаги внутри записи таблицы страниц или функцию протоколирования изменений страниц (PML) некоторых процессоров Intel для идентификации набора страниц памяти, содержимое которых изменяется в течение временного интервала, включающего в себя обмен и/или создание сеансовых ключей. Затем некоторые варианты осуществления выполняют поиск ключевых данных в содержимом соответствующих страниц памяти.
[0079] Благодаря расположению сеансовых ключей в соответствии с признаками протокола связи, вместо того, чтобы полагаться на конкретные аппаратные или программные признаки клиентской системы/виртуальной машины, некоторые варианты осуществления позволяют дешифровать связи на разных устройствах (персональные компьютеры, мобильные телефоны, бытовые приборы и т.д.), а также в клиентских системах, исполняющих множество гетерогенных виртуальных машин, независимо от операционной системы и приложения связи (например, браузер, приложение для обмена сообщениями, программное обеспечение VPN и т.д.).
[0080] Для того, чтобы избежать обнаружения программным обеспечением, исполняемым в контролируемой ВМ, некоторые варианты осуществления маскируют случайные задержки, вызванные сбором оптимизированного снимка памяти соответствующей ВМ, как сетевую задержку. В одном примере модуль самодиагностики взаимодействует с сетевым фильтром для задержки доставки определенных сетевых пакетов в контролируемую ВМ на время получения снимка памяти. Программному обеспечению, исполняемому в ВМ, такие задержки могут казаться задержками, вызванными проблемами с передачей в сети. Кроме того, чтобы избежать влияния на взаимодействие с пользователем, некоторые варианты осуществления переносят затраты вычислительных ресурсов на дешифрование на отдельную машину (сервер безопасности). Поэтому фактическое дешифрование может быть выполнено в автономном режиме.
[0081] Специалисту в данной области техники будет понятно, что в приведенные выше варианты осуществления изобретения могут быть внесены различные модификации без изменения сущности изобретения. Соответственно, объем правовой охраны изобретения определяется прилагаемой формулой изобретения и ее юридическими эквивалентами.