BRPI0720700B1 - Método implementado por computador para proteger os recursos de um sistema operacional - Google Patents

Método implementado por computador para proteger os recursos de um sistema operacional Download PDF

Info

Publication number
BRPI0720700B1
BRPI0720700B1 BRPI0720700-0A BRPI0720700A BRPI0720700B1 BR PI0720700 B1 BRPI0720700 B1 BR PI0720700B1 BR PI0720700 A BRPI0720700 A BR PI0720700A BR PI0720700 B1 BRPI0720700 B1 BR PI0720700B1
Authority
BR
Brazil
Prior art keywords
operating system
protection agent
resources
virtual
memory
Prior art date
Application number
BRPI0720700-0A
Other languages
English (en)
Inventor
Brandon Baker
Scott A. Field
Eric Traut
Suyash Sinha
Joy Ganguly
Forrest Foltz
David Cutler
Original Assignee
Microsoft Technology Licensing, Llc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing, Llc filed Critical Microsoft Technology Licensing, Llc
Publication of BRPI0720700A2 publication Critical patent/BRPI0720700A2/pt
Publication of BRPI0720700A8 publication Critical patent/BRPI0720700A8/pt
Publication of BRPI0720700B1 publication Critical patent/BRPI0720700B1/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/552Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/468Specific access rights for resources, e.g. using capability register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2105Dual mode as a secondary aspect
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2149Restricted operating environment

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Storage Device Security (AREA)

Abstract

método implementado por computador para proteger os recursos de um sistema operacional o presente documento descreve ferramentas capazes de permitir a um agente de proteção determinar, a partir de uma memória inacessível a partir de um modo de privilégio de sistema operacional, se um ou mais recursos de um sistema operacional foi modificado. em algumas instâncias, essas ferramentas podem permitir que o agente de proteção resida dentro de um monitor de máquina virtual. em outras instâncias, as ferramentas podem permitir que o agente de proteção resida dentro de uma partição virtual distinta, provida pelo monitor de máquina virtual. ao operar fora do modo de privilégio de sistema operacional, o agente de proteção pode se tornar menos vulnerável a ataques por entidades que operam dentro do modo de privilégio de sistema operacional.

Description

MÉTODO IMPLEMENTADO POR COMPUTADOR PARA PROTEGER OS RECURSOS DE UM SISTEMA OPERACIONAL FUNDAMENTOS DA INVENÇÃO [001] Os processadores dentro dos dispositivos computacionais frequentemente incluem modos privilegiados e não privilegiados. Um software executável em um modo privilegiado é de modo geral capaz de executar todas as instruções suportadas por um processador. Normalmente, o kernel de um sistema operacional é executado no modo privilegiado, por vezes, referido como Ring 0, Modo de Supervisor, ou Modo Kernel.
[002] Em contrapartida, alguns softwares executáveis em um dispositivo computacional podem se limitar a trabalhar apenas em um modo não privilegiado. Este modo geralmente permite que o software execute um subconjunto de instruções do processador. Um sistema operacional pode, assim, utilizar o modo não privilegiado no sentido de limitar a atividade de um software executável neste modo. Por exemplo, o software pode ficar restrito a um subconjunto específico da memória do dispositivo computacional. Este modo não privilegiado é, por vezes, conhecido como Ring 3 ou Modo de Usuário. Em geral, as aplicações do usuário de um dispositivo computacional operam neste modo não privilegiado.
[003] Quando um aplicativo de software opera neste modo não privilegiado, o aplicativo poderá solicitar acesso a uma porção da memória que não pode ser diretamente acessada a partir deste modo não privilegiado. O aplicativo pode desejar, por exemplo, realizar uma operação nesta porção de memória, tal como criar um novo arquivo. Esta solicitação é normalmente roteada através de uma porta de chamada ou outra instrução de chamada de sistema, que transita este código de modo não privilegiado para um código de modo privilegiado. Esta transição garante que o modo não privilegiado não tenha acesso direto a
Petição 870180159773, de 07/12/2018, pág. 7/49
2/36 uma memória designada como acessível somente a partir de um modo privilegiado.
[004] De acordo com esses modos, o autor de um código malicioso poderá acessar o modo privilegiado e instalar um malware que altera o comportamento do dispositivo computacional. Este malware pode, por exemplo, alterar a localização de arquivos, esconder arquivos, modificar arquivos, alterar comandos de teclas, ou coisas do gênero. Alguns destes malwares pode incluir um rootkit, que não só muda o comportamento do dispositivo computacional, mas também se esconde dentro da própria memória do modo privilegiado. Os aplicativos de antivírus executáveis em um dispositivo computacional, por conseguinte, não conseguem descobrir este rootkit escondido, permitindo, assim, que o malware continue os seus atos maliciosos. Além disso, esses malwares podem se inserir em um sistema de proteção embutido no sistema operacional, conforme apresentado a seguir.
[005] Um autor de malware pode acessar o modo privilegiado e carregar o malware para o dispositivo computacional de diversas maneiras, inclusive enganando o usuário do dispositivo computacional que inconscientemente instala o malware em seu próprio dispositivo computacional. Como resultado, os atuais sistemas operacionais com frequência empregam um ou mais sistemas de proteção a fim de detectar tais malwares. Estes sistemas de proteção geralmente monitoram alguns importantes recursos do sistema operacional no sentido de detectar quaisquer alterações nestes recursos. Quando um sistema de proteção deste tipo detecta tal mudança, o sistema de proteção poderá, então, decidir se o recurso em questão foi infectado por um malware. Estes sistemas de proteção podem também oferecer, ao aplicativo antivírus do usuário, uma lista de aplicativos correntemente residentes na memória do modo não privilegiado. Evidentemente, se o malware consegue se esconder, neste caso ele não irá aparecer na lista forne
Petição 870180159773, de 07/12/2018, pág. 8/49
3/36 cida. Além disso, quando o malware consegue se inserir no sistema de proteção, neste caso, o sistema de proteção não conseguirá rodar ou de outra forma não conseguirá detectar nenhuma mudança nos importantes recursos do sistema operacional.
[006] Embora estes sistemas de proteção possam ser eficazes, eles também podem apresentar algumas deficiências. Em primeiro lugar, estes sistemas muitas vezes dependem de obscuridade e, assim, ficam vulneráveis à exploração, caso identificados por um malware. Ou seja, quando um malware decifra a identidade do e detecta o sistema de proteção, ele poderá desativar o sistema de proteção em si. O autor do malware pode também instruir outros autores a fazer o mesmo. Além disso, e relacionado ao primeiro caso, estes sistemas de proteção geralmente operam em um mesmo domínio de proteção que o domínio do sistema operacional (por exemplo, no próprio modo privilegiado). Portanto, o sistema de proteção será em si mesmo objeto de ataque caso o malware ganhe acesso ao modo privilegiado e consiga desmascarar o sistema de proteção obscurecido. Finalmente, estes sistemas de proteção se inicializam ao mesmo tempo que o sistema operacional ou o modo privilegiado. Deste modo, quando o malware ou o autor de malware obtém o controle do dispositivo computacional antes desta inicialização, ele poderá impedir que o sistema de proteção se inicialize.
SUMÁRIO DA INVENÇÃO [007] O presente documento descreve as ferramentas capazes de permitir que um agente de proteção determine, a partir da memória inacessível a partir de um modo de privilégio de sistema operacional, caso um ou mais recursos de um sistema operacional tenha sido modificado. Em algumas modalidades, estas ferramentas podem permitir que o agente de proteção resida dentro de um monitor de máquina virtual. Em outras modalidades, as ferramentas podem permitir que o
Petição 870180159773, de 07/12/2018, pág. 9/49
4/36 agente de proteção resida dentro de uma partição virtual distinta provida pelo monitor de máquina virtual. Ao operar fora do modo de privilégio de sistema operacional, o agente de proteção poderá ficar menos vulnerável a ataques por parte de entidades que operam dentro do modo de privilégio de sistema operacional.
[008] Este sumário é provido de modo a introduzir uma seleção dos conceitos em uma forma simplificada a serem mais exaustivamente descritos a seguir, na seção Descrição Detalhada. O presente sumário não se destina a identificar as características principais ou essenciais da matéria reivindicada, nem se destina a ser utilizado como um coadjuvante na determinação do âmbito de aplicação da matéria reivindicada. O termo ferramentas, por exemplo, pode se referir a sistema(s), método(s), instruções legíveis em computador e/ou técnica (s), conforme permitido pelo contexto acima e em todo o documento. BREVE DESCRIÇÃO DOS DESENHOS [009] A Figura 1 ilustra um ambiente operacional exemplar no qual várias modalidades de ferramentas podem operar.
[0010] A Figura 2 demonstra os vários direitos de memória de um dispositivo computacional dos módulos ilustrados na Figura 1.
[0011] A Figura 3 representa as diferentes porções de memória de dispositivo computacional nas quais residem alguns dos módulos ilustrados na Figura 1.
[0012] A Figura 4 é um fluxograma que ilustra uma forma exemplar pela qual um monitor de máquina virtual pode proteger uma porção de memória associada a um agente de proteção e definir um cronômetro para executar o agente.
[0013] A Figura 5 ilustra uma arquitetura exemplar tendo um monitor de máquina virtual capaz de virtualizar os processadores físicos em múltiplos processadores virtuais de sistema operacional e em um processador virtual de agente de proteção.
Petição 870180159773, de 07/12/2018, pág. 10/49
5/36 [0014] A Figura 6 ilustra como a largura de banda dos processadores físicos da Figura 5 pode ser alocada entre os diversos processadores virtuais.
[0015] A Figura 7 é um processo exemplar que ilustra algumas maneiras pelas quais as ferramentas podem ativar e executar um agente de proteção que reside em um local inacessível a partir de um modo de privilégio de um sistema operacional.
[0016] A Figura 8 é um processo exemplar que ilustra algumas maneiras pelas quais as ferramentas podem alterar um monitor de máquina virtual de modo a permitir e executar um agente de proteção que reside em um local inacessível a partir de um modo de privilégio de sistema operacional.
[0017] A Figura 9 é um processo exemplar que ilustra algumas maneiras pelas quais as ferramentas podem criar um modo de privilégio de agente de proteção ao produzir uma solicitação para um monitor de máquina virtual.
[0018] A Figura 10 é um processo exemplar que ilustra algumas formas pelas quais as ferramentas podem criar um modo de privilégio de proteção de agente ao virtualizar um processador real de computador em processadores de computador virtuais, sendo que pelo menos um dos quais devem executar um agente de proteção.
[0019] A Figura 11 é um processo exemplar que ilustra algumas maneiras pelas quais as ferramentas podem permitir a adição de um modo de privilégio não presente em um processador físico subjacente. [0020] Os mesmos números são utilizados em toda a apresentação e figuras ao se referir a componentes e aspectos similares. DESCRIÇÃO DETALHADA DA INVENÇÃO
RESUMO INTRODUTÓRIO [0021] A seguir, o documento descreve ferramentas capazes de operar uma agente de proteção de uma maneira a tornar o agente de
Petição 870180159773, de 07/12/2018, pág. 11/49
6/36 proteção inalterável ou inacessível a partir de um modo de privilégio de sistema operacional. Estas ferramentas, deste modo, permitem a proteção do próprio agente de proteção, garantindo, assim, a capacidade de o agente de proteção detectar alterações aos importantes recursos do sistema operacional. Além disso, estas ferramentas podem desligar um sistema operacional ou um modo de privilégio de sistema operacional em resposta à detecção de alterações de recursos ou em resposta a uma tentativa de modificação do agente de proteção propriamente dito. Além disso, essas ferramentas podem permitir que o agente de proteção valide invariâncias nos recursos de um sistema de recursos, sem a necessidade de detectar, em seguida, a modificação dos recursos.
[0022] Um ambiente no qual as ferramentas podem permitir estas e outras ações é definido a seguir na seção intitulada Ambiente Operacional Exemplar. Em seguida, é apresentada uma seção intitulada Agentes de Proteção Autônomos e inclui duas subseções. A primeira subseção, intitulada Agentes de Proteção de Monitor de Máquina Virtual, descreve uma maneira exemplar pela qual um agente de proteção pode residir e executar dentro de um monitor de máquina virtual. Esta subseção é seguida de outra subseção, intitulada Agentes de Proteção de Partição Virtual, que descreve uma maneira exemplar pela qual um agente de proteção pode habitar e executar dentro de uma partição virtual separada de uma partição do sistema operacional. [0023] Em seguida, é apresentada outra seção intitulada Modos de Privilégio Autônomos do Agente de Proteção, incluindo também duas subseções. A primeira subseção descreve uma maneira exemplar como um cronômetro de monitor de máquina virtual pode adicionar um modo de privilégio de agente de proteção a um processador subjacente, e se intitula Solicitações de Proteção a um Monitor de Máquina Virtual. Em seguida, é apresentada uma subseção intitulada
Petição 870180159773, de 07/12/2018, pág. 12/49
7/36
Processadores Virtuais de Agente de Proteção e descreve uma outra maneira pela qual um modo de privilégio de agente de proteção pode ser criado, neste caso com o uso de múltiplos processadores virtuais, inclusive um configurado para executar o agente de proteção no modo de privilégio de agente de proteção. Em seguida, é apresentada a seção intitulada Uso Exemplar das Ferramentas e descreve um exemplo das ferramentas previamente descritas, em operação. Por último, uma seção intitulada Outras Modalidades de Ferramentas descreve várias outras modalidades e maneiras nas quais as ferramentas podem funcionar. Este resumo introdutório, incluindo estes títulos e sumários de seções, foi provido para a conveniência do leitor e não se destina a limitar o âmbito de aplicação das reivindicações ou das seções intituladas.
AMBIENTE OPERACIONAL EXEMPLAR [0024] Antes de descrever em detalhe as ferramentas, é feita a apresentação a seguir de um ambiente operacional exemplar com a finalidade de auxiliar o leitor no entendimento de algumas maneiras nas quais vários aspectos inventivos das ferramentas podem ser empregados. O ambiente descrito abaixo constitui, no entanto, um exemplo e não se destina a limitar a aplicação das ferramentas a qualquer um ambiente operacional em particular. Outros ambientes podem ser utilizados sem se afastar do espírito e do ambiente de aplicação da matéria reivindicada. Por exemplo, embora as seções a seguir descrevam modalidades com um único agente de proteção, poderão também ser utilizados múltiplos agentes de proteção. Em alguns casos, esses agentes de proteção podem ser executados independentemente ou lado a lado. Nesses casos, os agentes de proteção normalmente só poderão acessar a memória dentro de suas respectivas partições. Além disso, as técnicas descritas abaixo podem ser utilizadas de forma simultânea. Ou seja, diferentes agentes de proteção poderão utili
Petição 870180159773, de 07/12/2018, pág. 13/49
8/36 zar diferentes técnicas dentro de um mesmo ambiente operacional. [0025] Voltando ao exemplo corrente, a Figura 1 ilustra um ambiente operacional exemplar, de modo geral com a referência numérica 100. Este ambiente inclui um dispositivo computacional 102, que inclui em si um ou mais processadores 104, bem como um meio legível em computador 106. O meio legível em computador 106 inclui um monitor de máquina virtual 108 (por exemplo, um hipervisor), que poderá permitir a virtualização do um ou mais processadores em múltiplos processadores virtuais. O monitor de máquina virtual 108 pode também ativar múltiplas partições virtuais. Um ou mais processadores virtuais podem ser associados a cada partição, e estes processadores virtuais são programados para nos processadores físicos disponíveis. Conforme ilustrado, em algumas modalidades, o monitor de máquina virtual pode ativar uma primeira partição virtual 110 e uma segunda partição virtual 112. Conforme apresentado em detalhe abaixo, estas partições podem servir para separar as funções do sistema operacional dos serviços de agente de proteção.
[0026] Ainda, conforme ilustrado, o meio legível em computador 106 inclui também um sistema operacional (OS) 114, bem como um ou mais aplicativos de usuário 116. O sistema operacional 114 provê serviços de sistema operacional 118 aos aplicativos de usuário 116, permitindo, assim, que os aplicativos sejam executáveis no dispositivo computacional. Além disso, um ou mais recursos de sistema operacional 120 reside no sistema operacional. Estes recursos exemplares incluem uma tabela de despacho de serviço de sistema (SSDT), uma tabela de despacho de interrupção (IDT), uma tabela de descritor global (GDT), ou coisa do gênero. Ainda, conforme ilustrado, o sistema operacional pode incluir um malware 122 (ou seja, um código de intenção maliciosa), que pode ter sido carregado para o dispositivo computacional nas formas apresentadas acima ou de qualquer outra forma.
Petição 870180159773, de 07/12/2018, pág. 14/49
9/36
Um ou mais agentes de proteção, apresentados abaixo, pode detectar as alterações feitas nos recursos do sistema operacional pelo malware e, em resposta à detecção, tomar medidas defensivas. Se o agente tiver tal determinação, o agente de proteção, neste caso, poderá desligar o sistema operacional e/ou o dispositivo computacional ou tomar outras medidas em contrário.
[0027] Tendo apresentado a estrutura do dispositivo computacional, as atenções agora se voltam para os diferentes modos de privilégio presentes no um ou mais processadores físicos subjacentes 104. O modo de privilégio de monitor de máquina virtual 124 representa o modo mais privilegiado ilustrado na Figura 1. Este modo de privilégio tem acesso a todos ou substancialmente a todos os recursos e memória do dispositivo. A partir do modo de privilégio de monitor de máquina virtual 124, o monitor de máquina virtual pode programar processadores e permitir acesso às áreas de memória para cada partição virtual. Embora um sistema operacional executável dentro de uma partição possa crer que controle todos os recursos de um processador físico, na verdade ele só controla uma parte, conforme determinado pelo monitor de máquina virtual.
[0028] Menos privilegiado que o modo de privilégio do monitor de máquina virtual, o modo de privilégio de sistema operacional 126 tem acesso a todos os recursos do sistema operacional 120 e à maior parte ou a toda memória do sistema operacional. Este modo de privilégio, porém, não tem acesso a quaisquer recursos ou à memória associada a uma outra partição, tal como a segunda partição virtual 112. No entanto, uma vez que este modo de privilégio, de modo geral, tem acesso a toda a memória do sistema operacional, ele é, por vezes, referido como o Modo Privilegiado, sendo que o Ring 0, o Modo de Supervisor, ou o Modo Kernel podem também descrever este modo de privilégio. Conforme apresentado acima, um aplicativo de usuário que
Petição 870180159773, de 07/12/2018, pág. 15/49
10/36 opera no modo de privilégio de sistema operacional 126 é, de modo geral, capaz de executar a maior parte das instruções providas pelo processador, com exceção das instruções reservadas para o modo de monitor da máquina virtual.
[0029] Este modo de privilégio de sistema operacional é diferente do modo de privilégio do usuário 128, por vezes referido como Modo não privilegiado, Ring 3, ou simplesmente Modo de Usuário. Também, conforme apresentado acima, o aplicativo do usuário não poderá acessar ou alterar uma determinada memória associada ao sistema operacional quando em funcionamento a partir do modo de privilégio de usuário 128. Em geral, os aplicativos de usuário do dispositivo computacional operam neste modo de privilégio de usuário ao realizar operações básicas.
[0030] Além dos modos acima apresentados, a Figura 1 ilustra ainda um segundo modo de privilégio de partição visual 130 e um modo de privilégio de agente de proteção 132. Conforme apresentado em detalhe abaixo, o modo de privilégio de agente de proteção 132 pode ter acesso a uma porção da memória que o modo de privilégio de sistema operacional não tem, embora, de modo geral, o mesmo não tenha tanto acesso memória como o modo de privilégio de monitor de máquina virtual. Assim sendo, este modo de privilégio pode ser mais privilegiado do que o modo de privilégio de sistema operacional, porém menos privilegiado que o modo de privilégio de monitor de máquina virtual.
[0031] Ainda, conforme apresentado em detalhe abaixo, o segundo modo de privilégio de partição virtual, de modo geral, tem acesso à memória associada à segunda partição virtual 112. Além disso, este modo pode ter acesso à primeira partição virtual. Este acesso adicional pode, por exemplo, permitir que um agente de proteção resida na segunda partição virtual a fim de fazer a varredura da memória associ
Petição 870180159773, de 07/12/2018, pág. 16/49
11/36 ada à primeira partição virtual e seu correspondente sistema operacional. Este modo, geralmente, não tem acesso ao monitor de máquina virtual, e é, portanto, menos privilegiado do que o modo de privilégio de monitor de máquina virtual. No entanto, o segundo modo de privilégio de partição virtual ainda tem acesso a uma porção de memória que o modo de privilégio de sistema operacional não possui.
[0032] No entanto, a Figura 2 ilustra os direitos de memória de dispositivo computacional 200. Esta figura representa, portanto, a quantidade de memória acessível a partir dos módulos da Figura 1. Conforme ilustrado, o monitor de máquina virtual 108 - que opera no modo de privilégio de monitor de máquina virtual 124 - tem a maior parte dos direitos de memória dentre todos os módulos ilustrados. De fato, o monitor de máquina virtual reside em, e sozinho tem acesso a uma porção da memória 202. Em seguida, o agente de proteção 204 (por exemplo, qualquer um dos agentes de proteção ilustrados na Figura 1) opera em um modo de privilégio de agente de proteção 132 e tem acesso a toda a memória que não seja a porção 202 correspondente ao monitor de máquina virtual. O agente de proteção, no entanto, tem acesso a uma porção da memória 206, que vem a ser a porção de memória na qual o próprio agente de proteção reside.
[0033] O sistema operacional 114, por outro lado, opera no modo de privilégio de sistema operacional 126 e tem acesso a toda a memória que não seja a porção 202 e a porção 206. Embora o sistema operacional não possa acessar a porção de memória 206 associada ao agente de proteção, o sistema operacional e seu modo de privilégio associado não têm acesso a uma porção de memória 208. Esta porção de memória 208 é, por vezes, conhecida como memória kernel ou como o componente de nível mais baixo de um sistema operacional e, de modo geral, contém os recursos mostrados na Figura 1. Mesmo que o malware carregue e opere na porção de memória 208, no entan
Petição 870180159773, de 07/12/2018, pág. 17/49
12/36 to, o malware não poderá acessar a porção de memória 206 associada ao agente de proteção.
[0034] Por último, a Figura 2 ilustra que os aplicativos de usuário 116 só têm acesso a uma porção de memória 210. Estes aplicativos de usuário e correspondente modo de privilégio de usuário não tem acesso à porção de memória 208 associada ao componente de nível mais baixo do sistema operacional. Com este ambiente operacional em mente, as seguintes quatro seções descrevem em detalhe as maneiras exemplares como um agente de proteção pode se tornar inalterável ou inacessível a partir do modo de privilégio de sistema operacional.
AGENTES DE PROTEÇÃO AUTÔNOMOS [0035] Esta seção descreve as ferramentas capazes de determinar, a partir da memória inacessível por uma entidade que opera dentro de um modo de privilégio de sistema operacional, se um ou mais recursos do sistema operacional foi modificado. Deste modo, as ferramentas podem permitir que um agente de proteção resida em um local diferente do local da memória do sistema operacional em si. Mais especificamente, as subseções a seguir descrevem como os agentes de proteção podem residir, quer dentro de um monitor de máquina virtual ou dentro de uma partição virtual autônoma.
AGENTES DE PROTEÇÃO DE MONITOR DE MÁQUINA VIRTUAL [0036] Esta subseção descreve como um agente de proteção 134 pode residir dentro do próprio monitor de máquina virtual, conforme ilustra a Figura 1. Uma vez que o modo de privilégio de sistema operacional não pode acessar o monitor de máquina virtual, este local protege o agente de proteção de qualquer malware localizado na memória do sistema operacional. A fim de operar a partir deste local, o agente de proteção recebe uma identificação do um ou mais recursos do sistema operacional 120 que o agente de proteção 134 pode monitorar.
Petição 870180159773, de 07/12/2018, pág. 18/49
13/36
Esta identificação pode ser recebida através do identificador de recursos 136. Conforme ilustrado, o sistema operacional pode prover esta informação para o monitor de máquina virtual através de chamadas de interface de programação de aplicativos (API), ou o sistema operacional poderá fornecer as informações sob a forma de um manifesto 138. Conforme acima descrito, esses recursos podem incluir a tabela SSDT, a tabela IDT, ou a tabela GDT.
[0037] Uma vez recebida a identificação dos recursos, o agente de proteção 134 estende os serviços de agente de proteção 140 ao sistema operacional 114. Estes serviços de agente de proteção, de modo geral, compreendem a determinação se qualquer um dos recursos identificados foram alterados. Quando tal determinação é feita, o agente de proteção ou o monitor de máquina virtual poderá, por exemplo, desligar o sistema operacional. Os serviços de agente de proteção podem também incluir uma invariância executável contra quaisquer recursos marcados como inalteráveis (por exemplo, o de somente leitura (read-only)).
[0038] A utilização de tal arquitetura começa com o carregamento e a inicialização do monitor de máquina virtual, que é capaz de agrupar um ou mais sistemas operacionais. Neste exemplo, o monitor de máquina virtual conecta o sistema operacional único 114, que, por si só, começa a inicialização após as cargas do monitor de máquina virtual. Durante a inicialização do sistema operacional, a porção de memória 208 associada ao componente de menor nível do sistema operacional (por exemplo, o kernel) é carregada em primeiro lugar. Alguns ou todos os recursos do sistema operacional 120 (por exemplo, a tabela SSDT, a tabela GDT, a tabela IDT) geralmente habitam esta porção da memória 208.
[0039] Antes ou enquanto o sistema operacional se inicializa, o agente de proteção 134 pode começar a execução a partir de dentro
Petição 870180159773, de 07/12/2018, pág. 19/49
14/36 do monitor de máquina virtual. Conforme acima apresentado, o agente de proteção de modo geral recebe uma identificação de um conjunto de um ou mais recursos do sistema operacional e determina se um ou mais dos recursos identificados foram alterados. Observa-se que cada recurso identificado, com frequência, compreende múltiplos componentes em vários locais, cada um dos quais o agente de proteção poderá monitorar, a fim de proteger completamente todo o recurso. Por exemplo, quando um manifesto identifica uma tabela SSDT como um recurso a ser monitorado e protegido, o agente de proteção não só protegerá a tabela em questão, como também outros componentes da tabela SSDT. Por exemplo, o agente de proteção pode também monitorar e escanear o registrador que aponta para o local da tabela. Além disso, o agente de proteção poderá também monitorar as estruturas de dados de tradução de memória (por exemplo, as tabelas de página), que traduzem o endereço virtual da tabela SSDT para um endereço físico. Quando o agente de proteção não o faz, neste caso o código malicioso poderá criar outra tabela com diferentes mapeamentos de tabela de páginas (ou seja, ignorar a própria tabela SSDT).
[0040] Além da identificação, o agente de proteção pode também receber um atributo de proteção instruindo o agente de proteção sobre a forma de proteger um recurso correspondente. Por exemplo, o agente de proteção pode receber uma identificação de um recurso de tabela SSDT, bem como um atributo de proteção correspondente de somente leitura. O agente de proteção aprende, portanto, que a tabela SSDT deve permanecer apenas de leitura e, como tal, não deve ser alterada. Iniciar somente leitura é outro atributo de proteção possível, que instrui o agente de proteção que o recurso correspondente pode escrever uma vez durante a inicialização, mas após esse período, o recurso deve continuar a ser apenas de leitura.
[0041] O agente de proteção pode receber esta identificação dos
Petição 870180159773, de 07/12/2018, pág. 20/49
15/36 recursos e dos atributos de proteção de recursos de diversas maneiras, tanto positiva como passivamente. Por exemplo, o sistema operacional pode prover um manifesto assinado digitalmente, que identifica os recursos que o agente de proteção pode monitorar. Este manifesto digitalmente assinado pode identificar os recursos de uma multiplicidade de formas, como pelo nome (por exemplo, a tabela SSDT, a tabela IDT, a tabela GDT, etc.) ou pelo endereço, que mapeia os recursos aos locais correspondentes na porção de memória 208. Neste último caso, o manifesto poderá identificar o endereço físico convidado de um recurso, o endereço virtual convidado, ou o endereço físico do sistema. Observa-se que, em alguns casos, um endereço físico convidado pode ser mapeado para um endereço físico de sistema corrente, a fim de descobrir o local físico real do componente de recurso correspondente.
[0042] Depois de o monitor de máquina virtual ou o agente de proteção receber o manifesto, estes componentes poderão determinar se o manifesto foi adulterado ou modificado. Caso o monitor de máquina virtual ou agente de proteção faça tal determinação, o monitor de máquina virtual ou agente de proteção poderá optar por não iniciar o sistema operacional. Além disso, a criptografia associada à lista de recursos pode ser invalidada, protegendo, assim, a sua segurança.
[0043] Além de ou em alternativa ao manifesto, o agente de proteção pode receber uma identificação de atributo de recurso e proteção através de uma ou mais chamadas de interface de programação de aplicativos (API) para o monitor de máquina virtual (por exemplo, as hiperchamadas). Quando o sistema operacional inicializa, o sistema operacional (e talvez o componente de nível mais baixo do sistema operacional 208) pode fazer hiperchamadas no monitor de máquina virtual informando o agente de proteção de determinados recursos que podem ser monitorados ou protegidos. Estas hiperchamadas podem
Petição 870180159773, de 07/12/2018, pág. 21/49
16/36 identificar os recursos pertinentes das mesmas maneiras que as apresentadas acima. Ainda, conforme referido anteriormente, estas hiperchamadas podem também identificar os atributos de proteção dos recursos.
[0044] Nas modalidades que utilizam um manifesto assinado digitalmente, bem como uma ou mais hiperchamadas, o agente de proteção poderá primeiro escanear os recursos identificados no manifesto antes ou durante a partida do sistema operacional. Após esta primeira varredura, o sistema operacional pode então fazer hiperchamadas para o monitor de máquina virtual instruindo o agente de proteção a determinar se as páginas identificadas pelas hiperchamadas foram alteradas. O manifesto, assim, identifica os recursos a escanear a cada inicialização do sistema operacional, ao mesmo tempo que as hiperchamadas identificam os recursos a escanear dinamicamente em suas respectivas inicializações.
[0045] Tendo identificado os recursos a serem monitorados, o agente de proteção em seguida determina se os recursos (por exemplo, todas as porções da tabela SSDT acima apresentada) foram alterados ou não. O agente de proteção também pode executar uma invariância contra os recursos identificados recursos. Por exemplo, o agente de proteção pode garantir que qualquer recurso designado como de somente leitura não muda para escrevível.
[0046] A fim de monitorar e proteger os recursos desta maneira, o código executável dentro do monitor de máquina virtual pode empregar um gerenciador de intercepção de monitor de máquina virtual (por exemplo, o gerenciador 146 da Figura 1). Se assim for instruído, este gerenciador de intercepção poderá registrar intercepções em diversos componentes dos recursos identificados. Devido a este registrador, o agente de proteção dentro do monitor de máquina virtual pode agora receber intercepções caso forem feitas tentativas no sentido de aces
Petição 870180159773, de 07/12/2018, pág. 22/49
17/36 sar ou modificar estes recursos identificados. Assim sendo, o agente de proteção poderá inspecionar e escanear os vários componentes dos recursos identificados. O agente poderá também bloquear ativamente as tentativas no sentido de modificar estes recursos.
[0047] Em algumas modalidades, o agente de proteção escaneia os recursos e determina o estado inicial dos recursos para uso na comparação dos resultados das futuras varreduras. Em outras modalidades, o agente de proteção já conhece o estado inicial dos recursos para a comparação dos resultados das futuras varreduras. De qualquer forma, o agente de proteção pode computar um valor de sinal numérico ou de soma de verificação deste estado inicial. Após esta computação, o agente de proteção escaneia os recursos antes, depois ou durante as inicializações do sistema operacional botas. Após a varredura, o agente de proteção calcula um sinal numérico ou soma de verificação dos resultados e compara este valor com o valor do sinal numérico ou da soma de verificação. Quando igual, o agente de proteção determina se os recursos correspondentes não foram alterados. Evidentemente, o agente de proteção pode ignorar os valores de sinal numérico e de soma de verificação e, em contrapartida, comparar diretamente o estado à varredura.
[0048] No entanto, quando os valores são diferentes, o agente de proteção e/ou o monitor de máquina virtual podem tomar uma ou mais ações responsivas. Primeiramente, o próprio agente de proteção pode desligar o sistema operacional ou o modo de privilégio de sistema operacional, ou pode instruir o monitor de máquina virtual a fazê-lo. Mais uma vez, já que o agente de proteção reside no monitor de máquina virtual e tendo em vista que o monitor de máquina virtual agrupa o sistema operacional, estes dois componentes são, portanto, capazes de desligar o sistema operacional. Além disso, uma vez que o agente de proteção reside dentro do monitor de máquina virtual, o desligamento
Petição 870180159773, de 07/12/2018, pág. 23/49
18/36 do sistema operacional não poderá ser violado a partir do mesmo modo de privilégio de sistema operacional.
[0049] Além de desligar o sistema operacional, o agente de proteção e/ou o monitor de máquina virtual podem, primeiramente, avisar o sistema operacional do iminente desligamento. Um canal de comunicação entre o monitor de máquina virtual e o sistema operacional pode permitir tal comunicação. Em alternativa, o agente de proteção e/ou o monitor de máquina virtual podem escrever um aviso em um local de memória ou sinalizar um evento que o sistema operacional monitora.
[0050] Sem considerar o fato se um aviso foi dado ou não, o desligamento do sistema operacional poderá ser abrupto ou suave. No primeiro caso, o monitor de máquina virtual pode simplesmente desligar o sistema operacional imediatamente após ter conhecimento dos valores díspares do sinal numérico ou da soma de verificação. No segundo caso, o monitor de máquina virtual pode dar ao sistema operacional um certo período de tempo para que ele se desligue livremente. Neste momento, o sistema operacional pode, por exemplo, fechar todos os arquivos abertos e esvaziar quaisquer dados correspondentes. O sistema operacional pode também liberar recursos atribuídos. Além disso, o fechamento poderá utilizar ambas abordagens. Por exemplo, quando o monitor de máquina virtual agrupa múltiplas partições, ele poderá fechar imediatamente a partição com os valores díspares do sinal numérico ou da soma de verificação, e, ao mesmo tempo, dar tempo às demais partições para que se fechem livremente. Em qualquer caso, o modo de desligamento pode ser configurado por meio de uma diretiva, podendo ser ajustável.
[0051] Além de um desligamento e correspondente aviso, o agente de proteção e/ou o monitor de máquina virtual pode tomar ações pósinicialização em resposta a uma alteração não autorizada de um recurso identificado. Por exemplo, o monitor de máquina virtual e/ou o
Petição 870180159773, de 07/12/2018, pág. 24/49
19/36 agente de proteção podem, após a reinicialização do sistema operacional, notificar o sistema operacional da alteração do recurso. Em resposta, o sistema operacional poderá executar uma varredura de antivírus a fim de detectar se qualquer malware de fato reside na memória do sistema operacional, como na porção 208 (por exemplo, o kernel). Além disso, o monitor de máquina virtual pode inicializar o sistema operacional em um modo seguro, ou o próprio sistema operacional poderá preferir inicializar no modo seguro. Ainda em resposta à notificação, o sistema operacional pode se identificar como tendo sido atacado e, assim sendo, não poderá se permitir acesso a nenhuma rede à qual se encontra acoplado.
AGENTES DE PROTEÇÃO DE PARTIÇÃO VIRTUAL [0052] Ao invés de residir dentro do monitor de máquina virtual em si, um agente de proteção (por exemplo, o agente de proteção 142 da Figura 1) pode residir em uma partição virtual separada (por exemplo, na segunda partição virtual 112 da Figura 1). Nestas modalidades, esta partição separada atua como um representante de confiança do monitor de máquina virtual. O agente de proteção 142 é, portanto, inacessível a partir do modo de privilégio de sistema operacional. Conforme acima apresentado, o monitor de máquina virtual 108 provê tal virtualização do dispositivo computacional 102. Embora o monitor de máquina virtual possa virtualizar o dispositivo computacional em qualquer número de partições, a Figura 1 ilustra uma primeira partição que agrupa o sistema operacional e uma segunda partição que agrupa o agente de proteção. A segunda partição virtual na qual o agente de proteção reside pode ser, em alguns casos, uma partição de segurança dedicada cuja função básica ou única é executar o agente de proteção. Em outras modalidades, esta segunda partição virtual pode realizar funções adicionais, tais como o grupamento de outro sistema operacional.
Petição 870180159773, de 07/12/2018, pág. 25/49
20/36 [0053] O agente de proteção 142 que reside dentro da segunda partição virtual é capaz de realizar muitas das ou todas as funções já descritas acima com relação ao agente de proteção 134 que reside dentro do monitor de máquina virtual. Ou seja, o agente de proteção 142 pode positiva ou passivamente receber uma identificação de um ou mais recursos de sistema operacional 120. Em resposta à identificação, o agente de proteção poderá, mais uma vez, estender os serviços de agente de proteção 140, que, de modo geral, compreendem a determinação se um ou mais dentre os recursos identificados foram alterados ou não e, caso positivo, providenciar a ação responsiva. Estes serviços podem incluir ainda a execução da invariância de recursos especificados. O agente de proteção 142 pode realizar estas funções através de técnicas similares às acima descritas.
[0054] Conforme ilustrado, o agente de proteção 142 é acessível a partir do segundo modo de privilégio de partição virtual 130, porém inacessível a partir do modo de privilégio de sistema operacional 126. Assim sendo, a arquitetura resultante permite a proteção do próprio agente de proteção com relação a qualquer malware localizado dentro do sistema operacional, mesmo que o malware resida dentro da porção de memória 208 associada ao componente de nível mais baixo do sistema operacional.
MODOS DE PRIVILÉGIO DE AGENTE DE PROTEÇÃO AUTÔNOMO [0055] Esta seção descreve as ferramentas capazes de tornar uma porção da memória de sistema operacional associada a um agente de proteção inalterável ou inacessível a partir de um modo de privilégio de sistema operacional, ao mesmo tempo permitindo ainda que esta porção de memória resida fisicamente em um espaço de memória física de sistema operacional. Estas ferramentas criam, portanto, um modo de privilégio de agente de proteção autônomo que tem acesso à porção de memória associada ao agente de proteção, como também
Petição 870180159773, de 07/12/2018, pág. 26/49
21/36 ao restante da memória acessível dentro do modo de privilégio de sistema operacional. Este modo de privilégio é, portanto, mais privilegiado que o modo de privilégio de sistema operacional.
[0056] A primeira subseção descreve as ferramentas capazes de criar o modo de privilégio de agente de proteção ao solicitar que um monitor de máquina virtual proteja a porção de memória associada ao agente de proteção. A segunda subseção, por outro lado, descreve as ferramentas que permitem a criação do modo de privilégio de agente de proteção por meio da virtualização de um processador físico em múltiplos processadores virtuais, inclusive um processador virtual dedicado a fim de executar o agente de proteção.
SOLICITAÇÕES DE PROTEÇÃO A UM MONITOR DE MÁQUINA VIRTUAL [0057] Esta subseção descreve como um agente de proteção pode solicitar a um monitor de máquina virtual para proteger a memória associada ao agente de proteção e, em consequência, o próprio agente de proteção. Esta proteção resulta em um agente de proteção 144 que opera no modo de privilégio de agente de proteção 132, conforme ilustrado na Figura 1. Conforme ilustrado, o agente de proteção 144 pode inicialmente residir dentro do modo de privilégio de sistema operacional, antes de trocar para o modo de privilégio de agente de proteção. Ao operar neste último modo de privilégio, o agente de proteção fica, de modo geral, impermeável aos ataques das entidades que operam no modo de privilégio de sistema operacional 126.
[0058] Ao operar no modo de privilégio de agente de proteção 132, uma entidade terá um privilégio mais leve que ao operar no modo de privilégio de sistema operacional 126, mas ainda assim com um privilégio ainda menor que o modo de privilégio de monitor de máquina virtual 124. De acordo com a ilustração da Figura 2, um agente de proteção que opera neste modo de privilégio tem acesso a toda memória
Petição 870180159773, de 07/12/2018, pág. 27/49
22/36 associada ao sistema operacional, além da porção de memória 206 associada ao próprio agente de proteção. O monitor de máquina virtual 108 executa a acessibilidade ao agente de proteção adicionado.
[0059] As Figuras 3 e 4 ilustram uma maneira exemplar de se criar este modo de privilégio de agente de proteção. A Figura 3 ilustra toda a ou substancialmente toda a memória de dispositivo computacional 300. A memória de dispositivo computacional 300 inclui uma porção de memória 302 associada ao modo de privilégio de sistema operacional (por exemplo, o kernel) e uma porção de memória 304 associada ao modo de privilégio de usuário. A porção de memória 302 inclui ainda, conforme ilustrado, uma porção de memória 306 associada ao agente de proteção 144, assim como uma porção de memória 308 na qual os drivers se carregam.
[0060] Conforme a Figura 4 ilustra, um processo 400 de criação do modo de privilégio de agente de proteção 132 se inicia na etapa 1 por meio da inicialização da porção de memória 302 (por exemplo, o kernel). Na etapa 2, a porção de memória 306 ou o próprio agente de proteção 144 chama o monitor de máquina virtual 108 a fim de pedir que o monitor de máquina virtual proteja a porção de memória associada ao agente de proteção. Ao solicitar esta proteção, o agente de proteção ou a memória correspondente solicita que o código executável dentro do modo de privilégio de sistema operacional fique impossibilitado de alterar ou, de outra forma, tocar esta porção de memória 306. O agente de proteção pode também se auto-verificar (por exemplo, por meio de uma assinatura digital) ao monitor de máquina virtual 108. Esta porção de memória, ou o próprio agente de proteção, pode solicitar ainda que o monitor de máquina virtual ajuste um cronômetro e execute o agente de proteção assim que o cronômetro expira. A Etapa 3 representa o monitor de máquina virtual protegendo a memória contra as entidades que operam dentro do modo de privilégio de sistema opera
Petição 870180159773, de 07/12/2018, pág. 28/49
23/36 cional e ajustando um cronômetro em resposta à solicitação. Observase que, uma vez que esta porção de memória 306 associada ao agente de proteção se encontra, neste momento, inalterável e/ou inacessível a partir do modo de privilégio de sistema operacional, o agente de proteção passa a residir agora no modo de privilégio de agente de proteção.
[0061] Na etapa 4, os drivers se carregam para a porção de memória 308. Observa-se que a solicitação da etapa 2 e a correspondente proteção da etapa 3 de modo geral ocorrem antes de os drivers se carregarem para a memória, uma vez que um malware poderá existir sob a forma de um driver. Conforme apresentado na seção Uso Exemplar das Ferramentas abaixo, os autores de malware com frequência enganam os usuários no sentido de instalar drivers maliciosos em um dispositivo computacional. Quando um ou mais drivers maliciosos é de fato carregado para uma memória antes de a porção de memória 306 estar protegida, os drivers maliciosos, então, poderão potencialmente se inserir através da própria solicitação de proteção. Tal inserção, portanto, impediria a execução periódica do agente de proteção através do monitor de máquina virtual e, por conseguinte, a criação do modo de privilégio de agente de proteção. No entanto, ao solicitar que o monitor de máquina virtual ajuste antes um cronômetro, este processo irá garantir que o código dentro do modo de privilégio de sistema operacional não consiga desabilitar a execução periódica do agente de proteção.
[0062] A etapa 5, por sua vez, provavelmente ocorre um pouco depois de os drivers terem sido carregados. Conforme ilustrado, a etapa 5 representa a expiração do cronômetro do monitor de máquina virtual e, por conseguinte, a execução do agente de proteção. Ao ser executado, o agente de proteção 144 realiza funções similares ou idênticas às apresentadas nas seções anteriores. Ainda, conforme
Petição 870180159773, de 07/12/2018, pág. 29/49
24/36 apresentado acima, o agente de proteção pode agir em resposta a uma determinação de que um ou mais recursos identificados foram alterados. O agente de proteção pode ainda agir desta maneira em resposta a uma tentativa de acesso ao ou de alteração do agente de proteção, ou a sua memória correspondente, por parte de entidades que operam dentro do modo de privilégio de sistema operacional. [0063] A etapa 6 representa o agente de proteção notificando o monitor de máquina virtual quando o agente de proteção termina a sua execução. Finalmente, a etapa 7 representa a repetição das etapas 3, 5, e 6. Assim sendo, o monitor de máquina virtual poderá reinicializar o seu cronômetro e executar o agente de proteção a intervalos periódicos, como a cada 100 milissegundos (ms).
[0064] Ao ajustar um cronômetro a prova de falhas no monitor de máquina virtual, o processo 400, deste modo, eliminará a capacidade de um código de sistema operacional violar a porção de memória associada ao agente de proteção. Assim sendo, este processo garante que o agente de proteção continue a ser executado e que não será inserido através de um malware que atua dentro do modo de privilégio de sistema operacional. Em vez disto, o agente de proteção será executado dentro de um modo de privilégio autônomo, embora ainda assim residindo dentro da memória física alocada ao sistema operacional.
PROCESSADORES VIRTUAIS DE AGENTE DE PROTEÇÃO [0065] Esta subseção descreve como um monitor de máquina virtual pode criar um modo de privilégio de agente de proteção por meio da programação de um processador virtual no sentido de executar o agente de proteção 144. A Figura 5 ilustra uma arquitetura 500 que inclui a etapa de o monitor de máquina virtual 108 virtualizar o dispositivo computacional 102 em duas partições, cada qual incluindo um sistema operacional. Conforme ilustrado, o dispositivo computacional
Petição 870180159773, de 07/12/2018, pág. 30/49
25/36 neste exemplo inclui dois processadores reais 104(a) e 104(b), em cada um dos quais o processador virtual poderá programar múltiplos processadores virtuais. Ainda, conforme ilustrado, o monitor de máquina virtual cria uma primeira partição virtual 502 e uma segunda partição virtual 504. A primeira partição virtual inclui um primeiro processador virtual 506 executável em um primeiro sistema operacional. De maneira similar, a segunda partição virtual inclui um segundo processador virtual 508 executável em um segundo sistema operacional. Neste caso, no entanto, o monitor de máquina virtual inclui ainda um processador virtual de agente de proteção 510 a fim de executar um agente de proteção, tal como o agente de proteção 144 da Figura 1.
[0066] Para criar a arquitetura 500, o monitor de máquina virtual, primeiramente, é carregado e inicializado. Conforme ilustrado na Figura 6, o monitor de máquina virtual, em seguida, virtualiza os diversos processadores virtuais e, fazendo isso, aloca a largura de banda de processador real 600. A fim de iniciar esta virtualização e alocação, o monitor de máquina virtual virtualiza o primeiro processador virtual no primeiro processador real. No exemplo corrente, esta virtualização é feita em uma base uma a uma, conforme ilustrado na Figura 6. Ou seja, apenas este único processador virtual 506 corresponderá ao processador real 104(a) e, assim sendo, o monitor de máquina virtual alocará toda a largura de banda do processador real neste processador virtual. O monitor de máquina virtual em seguida virtualiza o segundo processador virtual 508 no segundo processador real 104(b). Ao invés de base uma para uma, no entanto, o monitor de máquina virtual reterá uma porção da largura de banda do segundo processador real. O monitor de máquina virtual em seguida virtualiza o processador virtual de agente de proteção 510 nesta largura de banda restante do segundo processador real 104(b), também conforme ilustrado na Figura 6.
[0067] Cada processador virtual que opera no segundo processa
Petição 870180159773, de 07/12/2018, pág. 31/49
26/36 dor real de modo geral atua em uma base de fração de tempo. Ou seja, o segundo processador virtual pode operar no segundo processador real por certa duração de tempo, antes de a operação do segundo processador virtual ser suspensa. Neste momento, o segundo processador real muda para a operação do processador virtual de agente de proteção por certa extensão de tempo. Por exemplo, o segundo processador virtual pode operar no segundo processador real por 90 ms, quando a operação deste segundo processador virtual é suspensa e a operação do processador virtual de agente de proteção se inicia por uma duração de 10 ms. O processador virtual de agente de proteção é de modo geral transparente a ambas as partições de sistema operacional a ambos o primeiro e segundo processadores virtuais. Assim sendo, ambos os sistemas operacionais acreditam que seus associados processadores virtuais correspondam a um respectivo processador real.
[0068] Além da alocação da largura de banda de processador real, o monitor de máquina virtual também gerencia a porção de memória que cada processador virtual pode acessar. No exemplo corrente, o primeiro processador virtual pode acessar toda a memória associada ao primeiro sistema operacional. O segundo processador virtual, por outro lado, pode acessar toda a memória associada ao segundo sistema operacional, diferente da porção de memória associada ao agente de proteção. O processador virtual de agente de proteção sozinho tem acesso à porção de memória associada ao agente de proteção, além da memória alocada para o segundo sistema operacional.
[0069] Além disso, o primeiro e segundo processadores virtuais só têm a capacidade de alterar sua memória associada. Assim sendo, nenhum dos processadores virtuais que operam seus respectivos sistemas operacionais poderá alterar a porção de memória associada ao agente de proteção. O processador virtual de agente de proteção, no
Petição 870180159773, de 07/12/2018, pág. 32/49
27/36 entanto, pode alterar a memória associada ao agente de proteção e, em algumas modalidades, a memória associada ao segundo processador virtual também.
[0070] Em função de sua natureza programada, o processador virtual de agente de proteção periodicamente executará o agente de proteção. Embora, em alguns casos, o processador virtual de agente de proteção possa executar outros aplicativos, o exemplo corrente ilustra um processador virtual de agente de proteção dedicado. Assim sendo, este processador virtual de modo geral só servirá para, a intervalos regulares, executar o agente de proteção. Mais uma vez, o agente de proteção poderá realizar funções similares ou idênticas, de uma maneira similar ou idêntica, às dos agentes de proteção acima descritos.
[0071] Ao programar um processador virtual de agente de proteção dedicado, o monitor de máquina virtual garante que o agente de proteção será periodicamente executado sob o controle deste processador e em um modo de privilégio de agente de proteção autônomo. Além disso, tendo em vista que apenas este processador virtual de agente de proteção tem acesso à porção de memória associada ao agente de proteção, o monitor de máquina virtual protegerá esta memória a partir do código de dentro de um sistema operacional. Sendo assim, o malware que opera dentro de um modo de privilégio de sistema operacional não poderá inserir o agente de proteção e impedir que o agente de proteção seja executado. Deste modo, esta técnica elimina essencialmente a capacidade de o sistema operacional violar o agente de proteção.
USO EXEMPLAR DAS FERRAMENTAS [0072] Tendo descrito previamente ferramentas capazes de garantir a proteção de um agente de proteção, a seção a seguir descreverá tão-somente um exemplo destas ferramentas em operação. PrimeiraPetição 870180159773, de 07/12/2018, pág. 33/49
28/36 mente, vamos supor que um usuário de computador está surfando na Internet e, enquanto surfa em um determinado Website, uma caixa de diálogo com intenção maliciosa surge súbita e inesperadamente no vídeo do usuário. A caixa de diálogo solicita a permissão do usuário para instalar um certo tipo de malware no computador do usuário. Embora esta solicitação possa ser direta, vamos supor que a caixa de diálogo disfarce a solicitação, como normalmente se faz. A caixa de diálogo pode, por exemplo, falsamente informar ao usuário que ele ganhou um prêmio. Na emissão desta informação, a caixa de diálogo maliciosamente instrui o usuário a clicar o botão OK na caixa de diálogo a fim de receber o prêmio. Vamos supor que o usuário selecione de fato o botão OK e que o usuário queira prosseguir as operações solicitadas apesar de um ou mais avisos por parte do software (por exemplo, um aplicativo de antivírus) que é executado no dispositivo computacional.
[0073] Neste momento, o dispositivo computacional inicia a instalação de um driver que contém o malware. Conforme geralmente acontece com os drivers, se concede acesso a este driver malicioso a um modo de privilégio de sistema operacional e o mesmo é carregado para a memória associada a este modo de privilégio (por exemplo, o kernel). Assim que carregado no kernel, o driver malicioso e seu malware em anexo essencialmente obtém um acesso de carta branca à memória do computador e ao seu sistema operacional. Infelizmente para o usuário, vamos supor que este malware inclua um registrador chave que registra os comandos de tecla do usuário. Agora, vamos supor que o usuário navega para o Website do seu banco e sinaliza para a sua conta bancária. Devido a esta habilidade em registrar os comandos de tecla, o registrador chave passa a conhecer a senha da conta bancária e envia esta senha pela Internet para o autor do driver malicioso.
Petição 870180159773, de 07/12/2018, pág. 34/49
29/36 [0074] Para piorar a situação, vamos supor que o malware seja um rootkit — ou um malware que tenta ativamente se esconder de um agente de proteção e do software antivírus do usuário. Nos sistemas convencionais, o agente de proteção reside dentro do kernel (ou seja, na memória à qual o driver malicioso obteve acesso). Sendo assim, nestes sistemas convencionais, o malware terá acesso ao agente de proteção e poderá tentar se esconder do agente de proteção. Caso tenha sucesso, para o agente de proteção parecerá que o malware não existe dentro do kernel. Deste modo, quando o software antivírus do usuário chama o agente de proteção e solicita uma lista de todos os aplicativos presentes na memória do computador, o malware estará ausente. Esta ausência torna o software antivírus incapaz de reconhecer e remover o malware. Além disso, o malware poderá se inserir no agente de proteção, deste modo impedindo que o agente de proteção seja executado de alguma maneira. Assim sendo, o agente de proteção não conseguirá perceber quando o malware estiver alterando quaisquer recursos do sistema operacional.
[0075] Ao invés de residir dentro do kernel, como nos sistemas convencionais, em contrapartida, vamos supor que o agente de proteção do dispositivo computacional do usuário resida na memória, ou seja, executado em um modo inacessível a partir do modo de privilégio do sistema operacional. Deste modo, quando o driver malicioso for carregado para o kernel, o mesmo não terá acesso à memória na qual o agente de proteção reside ou ao modo no qual o agente de proteção é executado. Por conseguinte, o driver e seu malware em anexo não terá acesso ao agente de proteção em si. O malware, assim, não conseguirá se esconder do agente de proteção e, portanto, do software antivírus também. Deste modo, quando o software antivírus solicita ao agente de proteção uma lista de todos os aplicativos presentes na memória do computador, a lista retornada incluirá o malware. O sof
Petição 870180159773, de 07/12/2018, pág. 35/49
30/36 tware antivírus, então, reconhecerá este código como um malware e, por conseguinte, removerá o mesmo do dispositivo computacional do usuário. Além disso, o agente de proteção poderá ele mesmo perceber quando o malware altera os recursos do sistema operacional e, em resposta, poderá desligar o dispositivo computacional do usuário. [0076] Sendo assim, ao residir na memória ou ao ser executado em um modo inacessível a partir do modo de privilégio de sistema operacional, as modalidades descritas no presente documento impedem que um malware se esconda do ou se insira no agente de proteção. No exemplo acima, o dispositivo computacional do usuário se torna, portanto, capaz de remover o malware da máquina ou, em alguns casos, desligar o sistema quando o malware altera recursos importantes. Em ambos os casos, estas modalidades servem para diminuir a eficácia de um malware em seu desejo de causar danos.
OUTRAS MODALIDADES DAS FERRAMENTAS [0077] As seções acima descrevem alguns exemplos particulares nos quais um agente de proteção se torna inalterável ou inacessível a partir do modo de privilégio de sistema operacional. Nesta seção, são descritas outras modalidades das ferramentas, tais como a adição de um modo de privilégio a um processador que não se encontra presente em um processador subjacente.
[0078] Estas modalidades exemplares são descritas como parte dos processos 700 a 1100 das Figuras 7 a 11. Estes processos, assim como os processos exemplares descritos ou ilustrados com referência às Figuras 1 a 6, podem ser implementados em qualquer hardware, software, firmware disponível, ou combinação dos mesmos; no caso de um software ou de um firmware, estes processos representam conjuntos de operações implementadas como instruções executáveis em computador armazenadas em um meio legível em computador e executáveis por um ou mais processadores. Estas modalidades das ferPetição 870180159773, de 07/12/2018, pág. 36/49
31/36 ramentas descritas nesta seção não foram concebidas no sentido de limitar o âmbito de aplicação das ferramentas ou das reivindicações. [0079] Com referência à Figura 7, o bloco 702 recebe um diretiva de execução que identifica um ou mais recursos de sistema operacional. Esta diretiva de execução, que pode compreender dados criptografados, pode ser recebida através de um manifesto digitalmente sinalizado ou por meio da exposição de uma interface de programas aplicativos (API) ao sistema operacional (por exemplo, uma hiperchamada). O bloco 704 identifica, a partir da memória inacessível de uma entidade que opera em um modo de privilégio de sistema operacional, um ou mais recursos de sistema operacional. Os recursos exemplares incluem uma tabela de despacho de serviço de sistema (SSDT), uma tabela de despacho de interrupção (IDT), e/ou uma tabela de descritor global (GDT). Conforme descrito acima, esta identificação pode ocorrer dentro de um monitor de máquina virtual (por exemplo, por meio do agente de proteção 134 da Figura 1) ou dentro de uma partição virtual separada (por exemplo, por meio do agente de proteção 142 da Figura
1).
[0080] O bloco 706, por outro lado, representa a determinação de algum recurso identificado foi alterado. Mais uma vez, isto pode acontecer em um monitor de máquina virtual ou dentro de uma partição separada. Quando o bloco 706 determina que um ou mais recursos identificados foram de fato alterados, neste caso o bloco 708 finaliza o sistema operacional em resposta a esta determinação. Finalmente, o bloco 710 notifica o sistema operacional a respeito de uma operação ilegal após a reinicialização do sistema operacional.
[0081] A Figura 8 ilustra um processo 800 que permite que um agente de proteção seja executado em um monitor de máquina virtual.
O bloco 802 altera um gerenciador de intercepção de monitor de máquina virtual no sentido de permitir o recebimento de uma indicação de
Petição 870180159773, de 07/12/2018, pág. 37/49
32/36 que uma página de memória ou um registrador associado a um recurso de recurso de sistema operacional foi alterado.
[0082] Este recurso pode compreender um dos recursos descritos com referência à Figura 7, ou pode ser um outro recurso de sistema operacional. De qualquer forma, o bloco 804 recebe uma diretiva de execução identificando o recurso de sistema operacional e possivelmente um ou mais outros recursos de sistema operacional. Mais uma vez, esta identificação pode ser feita através das técnicas apresentadas acima. Conforme acima descrito, um atributo de proteção (por exemplo, o somente leitura ou iniciar somente leitura) do recurso pode acompanhar a identificação do recurso. O bloco 806, por sua vez, representa o recebimento de uma indicação de que a página de memória ou registrador associada ao recurso de sistema operacional foi de fato alterada. Em resposta, o bloco 808 fecha um modo de privilégio de sistema operacional efetivo para desligar um sistema operacional associado ao recurso de sistema operacional. Em alguns casos, o monitor de máquina virtual 108 da Figura 1 pode realizar este desligamento do modo de privilégio de sistema operacional.
[0083] Em seguida, a Figura 9 descreve um processo exemplar 900 para a criação de um modo de privilégio de agente de proteção, tal como o modo de privilégio de agente de proteção 132 ilustrado na Figura 1. O bloco 902 recebe uma solicitação de que uma faixa específica da memória pode se tornar inalterável ou inacessível a partir de um modo de privilégio de sistema operacional. Mais uma vez, um monitor de máquina virtual pode receber esta solicitação, que pode se originar a partir da própria faixa de memória ou de um agente de proteção residente na faixa de memória. O bloco 904 protege a faixa de memória e ajusta um cronômetro no sentido de executar periodicamente o agente de proteção que reside com a faixa de memória. Mais uma vez, um monitor de máquina virtual pode ajustar tal cronômetro, o
Petição 870180159773, de 07/12/2018, pág. 38/49
33/36 qual poderá instruir o monitor de máquina virtual a executar o agente de proteção a intervalos regulares.
[0084] Por sua vez, o bloco 906 recebe uma diretiva de execução descrevendo um recurso de sistema operacional. De novo, a diretiva de execução e o recurso descrito podem ser similares ou idênticos aos apresentados acima. O bloco 908 executa o agente de proteção, o que pode ser feito pelo monitor de máquina virtual. O bloco de decisão 910 pergunta se o recurso de sistema operacional foi alterado. O agente de proteção pode fazer esta determinação ao operar nas maneiras descritas em detalhe acima. Quando o bloco 910 determina de que uma alteração de fato ocorreu, neste caso o bloco 912 desliga o sistema operacional. Se, no entanto, não for feita nenhuma determinação neste sentido, o bloco 914 então receberá uma notificação de que o agente de proteção finalizou sua execução. Em algumas instâncias e conforme acima descrito, o próprio agente de proteção poderá notificar o monitor de máquina virtual neste sentido. O bloco 916, por outro lado, representa o ciclo entre a execução do agente de proteção e a não execução do agente de proteção. Finalmente, observa-se que, embora o agente de proteção não seja executado, o monitor de máquina virtual poderá desligar o sistema operacional em resposta a uma tentativa de acesso, a partir de uma entidade que opera no modo de privilégio de sistema operacional, da faixa de memória associada ao agente de proteção.
[0085] A Figura 10 ilustra um outro processo exemplar 1000 para a criação de um modo de privilégio de agente de proteção, tal como o modo de privilégio de agente de proteção 132 ilustrado na Figura 1. O bloco 1002 virtualiza um processador real de computador em múltiplos processadores de computador virtuais. Estes processadores virtuais podem compreender um ou mais processadores de sistema operacional virtuais, cada qual tendo o privilégio de alterar a sua própria memó
Petição 870180159773, de 07/12/2018, pág. 39/49
34/36 ria de sistema operacional memória e usar uma parte de uma largura de banda de processamento dos processadores reais, conforme ilustrado na Figura 6. Os processadores virtuais podem incluir ainda pelo menos um processador virtual de agente de proteção tendo o privilégio de alterar a sua própria memória de agente de proteção e usar uma parte diferente da largura de banda de processamento dos processadores reais. Embora todos os processadores virtuais possam ser programados pelo monitor de máquina virtual, o processador virtual de agente de proteção pode ser transparente aos processadores virtuais de sistema operacional. Em algumas instâncias, os processadores virtuais do sistema operacional podem ser incapazes de alterar a memória atribuída ao processador virtual de agente de proteção. Além disso, o processador virtual de agente de proteção pode ser um processador dedicado cuja única ou básica finalidade é fazer com que o agente de proteção seja executável, conforme acima apresentado.
[0086] Em seguida, o bloco 1004 faz com que o processador virtual de agente de proteção execute um agente de proteção, o qual pode ser efetivo no sentido de determinar se uma parte da dita memória de sistema operacional foi alterada ou não. O bloco 1006, por outro lado, recebe uma indicação de que uma parte da memória de sistema operacional foi alterada. Em resposta, o bloco 1008 desliga o correspondente sistema operacional.
[0087] Por último, a Figura 11 ilustra um processo 1100 para a adição de um modo de privilégio a um processador real de computador. O bloco 1102 representa a determinação, a identificação, ou a classificação de um ou mais modos de privilégio presentes em um processador físico subjacente. Estes modos de privilégio são de modo geral definidos pelo próprio processador físico subjacente. De qualquer forma, o bloco 1104 adiciona um modo de privilégio que não se encontra presente no processador físico subjacente. Em algumas instâncias,
Petição 870180159773, de 07/12/2018, pág. 40/49
35/36 o modo de privilégio adicionado é capaz de alterar uma parte da memória do dispositivo computacional diferente da parte de memória que é alterável por um ou mais modos de privilégio presentes. O modo de privilégio adicional pode ser capaz ainda de adicionar e executar instruções que não existiam previamente ou não eram executáveis no processador subjacente.
[0088] Além disso, o um ou mais modos de privilégio presentes no processador físico subjacente pode incluir um modo de privilégio de usuário e um modo de privilégio de sistema operacional. Nestas modalidades, o modo de privilégio adicionado pode ser mais privilegiado que ambos o modo de privilégio de usuário e o modo de privilégio de sistema operacional, mais privilegiado que o modo de privilégio de usuário, porém menos privilegiado que o modo de privilégio de sistema operacional, ou menos privilegiado que ambos os modos de privilégio de usuário e de sistema operacional. Finalmente, observa-se que uma instância da adição do modo de privilégio pode compreender a adição de um modo de privilégio de agente de proteção (por exemplo, o modo de privilégio de agente de proteção 132 ilustrado na Figura 1) na multiplicidade de maneiras acima apresentadas. Por exemplo, o agente de proteção ou sua faixa de memória associada pode solicitar que a faixa de memória se torne inacessível por entidades que operam no modo de privilégio de sistema operacional. Um monitor de máquina virtual pode criar ainda este modo de privilégio por meio da programação de um processador virtual de agente de proteção de modo a executar o agente de proteção.
CONCLUSÃO [0089] As ferramentas acima descritas são capazes de tornar um agente de proteção inalterável ou inacessível a partir de um modo de privilégio de sistema operacional, tanto ao permitir que o agente de proteção resida em um local inacessível a partir do modo de privilégio
Petição 870180159773, de 07/12/2018, pág. 41/49
36/36 de sistema operacional, como também ao criar um modo de privilégio de agente de proteção. Embora as ferramentas tenham sido descritas em uma linguagem específica aos aspectos estruturais e/ou a etapas metodológicas, deve-se entender que as ferramentas definidas nas reivindicações em apenso não necessariamente se limitam a estes aspectos específicos ou etapas descritas. Em contrapartida, estes aspectos e etapas específicos são apresentados como formas exemplares de se implementar as ferramentas.

Claims (5)

  1. REIVINDICAÇÕES
    1. Método implementado por computador para proteger os recursos de um sistema operacional caracterizado pelo fato de que compreende as etapas de:
    fornecer uma ou mais partições virtuais (110, 112) por um monitor de máquina virtual (108), em que pelo menos uma (110) das uma ou mais partições virtuais possuem um sistema operacional (114) próprio, o sistema operacional operando em um modo de privilégio de sistema operacional (126);
    receber (804), em uma porção de memória (206) associada com um agente de proteção (144) e inacessível ou inalterável a partir do modo de privilégio de sistema operacional (126), uma diretiva de execução que identifica um conjunto de um ou mais recursos (120) do sistema operacional da pelo menos uma partição;
    identificar, pelo agente de proteção (144) localizado no interior da pelo menos uma partição virtual (110), o conjunto de um ou mais recursos (120) do sistema operacional, em que o agente de proteção é operativo em modo de privilégio de agente de proteção (132) que é mais privilegiado do que o modo de privilégio de sistema operacional e tem acesso à porção da memória (206); e determinar (806), pelo agente de proteção (144), a partir da porção da memória (206), se um ou mais recursos do conjunto de um ou mais recursos foi alterado ou não.
  2. 2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a diretiva de execução compreende um manifesto digitalmente assinado (138), sendo que as etapas de receber (720) o manifesto digitalmente assinado (138) e determinar (706) se um ou mais recursos do conjunto de um ou mais nrecursos (120) foram alterados ou não, ocorrem antes ou durante a partida do sistema operacional (114).
    Petição 870180159773, de 07/12/2018, pág. 43/49
    2/2
  3. 3. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que ainda compreende expor uma interface de programas aplicativos (API) ao sistema operacional (114) e receber, através da interface API, uma identificação de um ou mais recursos dentre o conjunto de um ou mais recursos (120).
  4. 4. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que o conjunto de um ou mais recursos (120) inclui uma tabela de despacho de serviço de sistema (SSDT), uma tabela de despacho de interrupção (IDT), ou uma tabela de descritor global (GDT).
  5. 5. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que ainda compreende um ou mais dentre:
    finalizar (708) o sistema operacional (114) em resposta à determinação de que um ou mais recursos do conjunto de um ou mais recursos (120) foi alterado; e notificar (710) o sistema operacional (114) mediante a reinicialização de uma operação ilegal, em resposta à determinação de que um ou mais recursos do conjunto de um ou mais recursos (120) foi alterado.
BRPI0720700-0A 2007-01-25 2007-12-19 Método implementado por computador para proteger os recursos de um sistema operacional BRPI0720700B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/627,314 US7765374B2 (en) 2007-01-25 2007-01-25 Protecting operating-system resources
US11/627.314 2007-01-25
PCT/US2007/088219 WO2008091462A1 (en) 2007-01-25 2007-12-19 Protecting operating-system resources

Publications (3)

Publication Number Publication Date
BRPI0720700A2 BRPI0720700A2 (pt) 2014-04-15
BRPI0720700A8 BRPI0720700A8 (pt) 2017-01-17
BRPI0720700B1 true BRPI0720700B1 (pt) 2019-05-21

Family

ID=39644773

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0720700-0A BRPI0720700B1 (pt) 2007-01-25 2007-12-19 Método implementado por computador para proteger os recursos de um sistema operacional

Country Status (10)

Country Link
US (1) US7765374B2 (pt)
EP (2) EP2106583B1 (pt)
JP (1) JP2010517164A (pt)
KR (1) KR101279683B1 (pt)
CN (1) CN101589365B (pt)
BR (1) BRPI0720700B1 (pt)
CL (1) CL2008000176A1 (pt)
RU (1) RU2462747C2 (pt)
TW (1) TWI470471B (pt)
WO (1) WO2008091462A1 (pt)

Families Citing this family (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8380987B2 (en) 2007-01-25 2013-02-19 Microsoft Corporation Protection agents and privilege modes
DE102007030396B4 (de) * 2007-06-29 2014-11-27 Trumpf Werkzeugmaschinen Gmbh + Co. Kg Vorrichtung zur Steuerung einer Maschine sowie Fernkommunikationssystem
CN101334825B (zh) * 2007-06-29 2011-08-24 联想(北京)有限公司 应用程序管理和运行系统及方法
US8607020B2 (en) * 2008-06-06 2013-12-10 International Business Machines Corporation Shared memory partition data processing system with hypervisor managed paging
JP5166169B2 (ja) * 2008-08-27 2013-03-21 株式会社日立製作所 ハイパバイザを有する計算機システム
US8954897B2 (en) * 2008-08-28 2015-02-10 Microsoft Corporation Protecting a virtual guest machine from attacks by an infected host
US7975034B1 (en) * 2008-10-31 2011-07-05 Symantec Corporation Systems and methods to secure data and hardware through virtualization
US8776028B1 (en) * 2009-04-04 2014-07-08 Parallels IP Holdings GmbH Virtual execution environment for software delivery and feedback
US8621460B2 (en) * 2009-11-02 2013-12-31 International Business Machines Corporation Endpoint-hosted hypervisor management
US8819826B2 (en) 2010-01-27 2014-08-26 Mcafee, Inc. Method and system for detection of malware that connect to network destinations through cloud scanning and web reputation
US8955131B2 (en) 2010-01-27 2015-02-10 Mcafee Inc. Method and system for proactive detection of malicious shared libraries via a remote reputation system
US9104872B2 (en) * 2010-01-28 2015-08-11 Bank Of America Corporation Memory whitelisting
US9536089B2 (en) 2010-09-02 2017-01-03 Mcafee, Inc. Atomic detection and repair of kernel memory
US8082585B1 (en) * 2010-09-13 2011-12-20 Raymond R. Givonetti Protecting computers from malware using a hardware solution that is not alterable by any software
US9032013B2 (en) * 2010-10-29 2015-05-12 Microsoft Technology Licensing, Llc Unified policy over heterogenous device types
US20120144489A1 (en) * 2010-12-07 2012-06-07 Microsoft Corporation Antimalware Protection of Virtual Machines
US8516509B2 (en) * 2011-02-08 2013-08-20 BlueStripe Software, Inc. Methods and computer program products for monitoring system calls using safely removable system function table chaining
US9038176B2 (en) 2011-03-31 2015-05-19 Mcafee, Inc. System and method for below-operating system trapping and securing loading of code into memory
US9317690B2 (en) 2011-03-28 2016-04-19 Mcafee, Inc. System and method for firmware based anti-malware security
KR101626424B1 (ko) * 2011-03-28 2016-06-01 맥아피 인코퍼레이티드 가상 머신 모니터 기반 안티 악성 소프트웨어 보안 시스템 및 방법
US9262246B2 (en) 2011-03-31 2016-02-16 Mcafee, Inc. System and method for securing memory and storage of an electronic device with a below-operating system security agent
US8635615B2 (en) 2011-05-14 2014-01-21 Industrial Technology Research Institute Apparatus and method for managing hypercalls in a hypervisor and the hypervisor thereof
US9143530B2 (en) 2011-10-11 2015-09-22 Citrix Systems, Inc. Secure container for protecting enterprise data on a mobile device
US9280377B2 (en) * 2013-03-29 2016-03-08 Citrix Systems, Inc. Application with multiple operation modes
CN104247361B (zh) * 2011-12-01 2018-07-24 英特尔公司 用于安全消息过滤的方法、设备和相关车辆控制系统,以及含对应指令的计算机可读存储器
CN102521016A (zh) * 2011-12-08 2012-06-27 中兴通讯股份有限公司 一种运行多个虚拟机的方法及系统
US9043903B2 (en) * 2012-06-08 2015-05-26 Crowdstrike, Inc. Kernel-level security agent
US9292881B2 (en) 2012-06-29 2016-03-22 Crowdstrike, Inc. Social sharing of security information in a group
CN102779250B (zh) * 2012-06-29 2016-04-13 腾讯科技(深圳)有限公司 文件可控执行的检测方法及虚拟机
US9971585B2 (en) 2012-10-16 2018-05-15 Citrix Systems, Inc. Wrapping unmanaged applications on a mobile device
US9170800B2 (en) 2012-10-16 2015-10-27 Citrix Systems, Inc. Application wrapping for application management framework
US9201642B2 (en) * 2013-03-15 2015-12-01 International Business Machines Corporation Extending platform trust during program updates
US10284627B2 (en) 2013-03-29 2019-05-07 Citrix Systems, Inc. Data management for an application with multiple operation modes
US9197654B2 (en) * 2013-06-28 2015-11-24 Mcafee, Inc. Rootkit detection by using HW resources to detect inconsistencies in network traffic
GB2515736A (en) 2013-07-01 2015-01-07 Ibm Controlling access to one or more datasets of an operating system in use
FR3012643B1 (fr) * 2013-10-28 2017-03-17 Oberthur Technologies Systeme de detection d'intrusion dans un dispositif comprenant un premier systeme d'exploitation et un deuxieme systeme d'exploitation
US9772953B2 (en) 2014-02-03 2017-09-26 Samsung Electronics Co., Ltd. Methods and apparatus for protecting operating system data
US10289405B2 (en) 2014-03-20 2019-05-14 Crowdstrike, Inc. Integrity assurance and rebootless updating during runtime
US10318765B2 (en) * 2014-05-02 2019-06-11 Avago Technologies International Sales Pte. Limited Protecting critical data structures in an embedded hypervisor system
US9760712B2 (en) * 2014-05-23 2017-09-12 Vmware, Inc. Application whitelisting using user identification
US10951655B2 (en) * 2014-09-26 2021-03-16 Oracle International Corporation System and method for dynamic reconfiguration in a multitenant application server environment
RU2585978C2 (ru) * 2014-09-30 2016-06-10 Закрытое акционерное общество "Лаборатория Касперского" Способ вызова системных функций в условиях использования средств защиты ядра операционной системы
US10339316B2 (en) 2015-07-28 2019-07-02 Crowdstrike, Inc. Integrity assurance through early loading in the boot phase
CN108351938B (zh) * 2015-10-29 2022-02-08 惠普发展公司,有限责任合伙企业 校验针对程序代码的一部分所计算的安全值的装置、系统和方法
RU2624554C1 (ru) * 2016-05-17 2017-07-04 Закрытое акционерное общество "Перспективный мониторинг" Способ обнаружения скрытого программного обеспечения в вычислительной системе, работающей под управлением POSIX-совместимой операционной системы
JP6319369B2 (ja) * 2016-06-23 2018-05-09 日本電気株式会社 処理制御装置、処理制御方法、及び、処理制御プログラム
US20180004931A1 (en) * 2016-07-02 2018-01-04 Intel Corporation Process management
US10387228B2 (en) 2017-02-21 2019-08-20 Crowdstrike, Inc. Symmetric bridge component for communications between kernel mode and user mode
KR102022168B1 (ko) * 2017-12-15 2019-09-18 이방훈 하드웨어 태스크 스위칭을 이용한 은닉 태스크의 감지 방법 및 장치
US10740459B2 (en) 2017-12-28 2020-08-11 Crowdstrike, Inc. Kernel- and user-level cooperative security processing
JP7151530B2 (ja) * 2019-02-13 2022-10-12 日本電信電話株式会社 サーバ基盤および物理cpu割当プログラム
USD905765S1 (en) 2019-03-07 2020-12-22 Caterpillar Inc. Adapter for a ground engaging machine implement
RU2728504C1 (ru) * 2019-03-29 2020-07-29 Акционерное общество "Лаборатория Касперского" Система и способ поэтапного повышения информационной безопасности элементов технологической системы
US20220156879A1 (en) * 2020-11-18 2022-05-19 Intel Corporation Multi-tile graphics processing unit
US20230092808A1 (en) * 2021-09-17 2023-03-23 Mediatek Inc. Model protection system

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4091447A (en) 1976-07-19 1978-05-23 Union Carbide Corporation Interrupt control system for a microcomputer
DE2744111A1 (de) 1977-09-30 1979-04-05 Siemens Ag Schaltungsanordnung zur eingabe von unterbrechungsbefehlen und ausgabe von unterbrechungsbestaetigungen fuer computer-systeme
US5469556A (en) 1989-12-12 1995-11-21 Harris Corporation Resource access security system for controlling access to resources of a data processing system
US5684948A (en) * 1995-09-01 1997-11-04 National Semiconductor Corporation Memory management circuit which provides simulated privilege levels
US7210040B2 (en) * 2000-07-14 2007-04-24 Computer Associates Think, Inc. Detection of suspicious privileged access to restricted computer resources
US6938164B1 (en) * 2000-11-22 2005-08-30 Microsoft Corporation Method and system for allowing code to be securely initialized in a computer
US7035963B2 (en) * 2000-12-27 2006-04-25 Intel Corporation Method for resolving address space conflicts between a virtual machine monitor and a guest operating system
US7631160B2 (en) 2001-04-04 2009-12-08 Advanced Micro Devices, Inc. Method and apparatus for securing portions of memory
KR100389206B1 (ko) * 2001-04-25 2003-06-27 주식회사 성진씨앤씨 컴퓨터 운영 시스템 보호 방법 및 장치
GB2376761A (en) 2001-06-19 2002-12-24 Hewlett Packard Co An arrangement in which a process is run on a host operating system but may be switched to a guest system if it poses a security risk
US7272832B2 (en) * 2001-10-25 2007-09-18 Hewlett-Packard Development Company, L.P. Method of protecting user process data in a secure platform inaccessible to the operating system and other tasks on top of the secure platform
JP4256107B2 (ja) * 2002-03-07 2009-04-22 富士通株式会社 データサーバへの不正侵入対処方法、及びプログラム
US7793286B2 (en) 2002-12-19 2010-09-07 Intel Corporation Methods and systems to manage machine state in virtual machine operations
US20050114687A1 (en) * 2003-11-21 2005-05-26 Zimmer Vincent J. Methods and apparatus to provide protection for firmware resources
US20050132122A1 (en) * 2003-12-16 2005-06-16 Rozas Carlos V. Method, apparatus and system for monitoring system integrity in a trusted computing environment
US7222062B2 (en) 2003-12-23 2007-05-22 Intel Corporation Method and system to support a trusted set of operational environments using emulated trusted hardware
US7802250B2 (en) 2004-06-28 2010-09-21 Intel Corporation Support for transitioning to a virtual machine monitor based upon the privilege level of guest software
US7694121B2 (en) 2004-06-30 2010-04-06 Microsoft Corporation System and method for protected operating system boot using state validation
US8955104B2 (en) * 2004-07-07 2015-02-10 University Of Maryland College Park Method and system for monitoring system memory integrity
US7757231B2 (en) * 2004-12-10 2010-07-13 Intel Corporation System and method to deprivilege components of a virtual machine monitor
US7409719B2 (en) * 2004-12-21 2008-08-05 Microsoft Corporation Computer security management, such as in a virtual machine or hardened operating system
JP4400448B2 (ja) * 2004-12-22 2010-01-20 コニカミノルタセンシング株式会社 分光輝度計の校正方法、及び校正システムの動作プログラム
US8533777B2 (en) * 2004-12-29 2013-09-10 Intel Corporation Mechanism to determine trust of out-of-band management agents
US8856473B2 (en) * 2005-07-01 2014-10-07 Red Hat, Inc. Computer system protection based on virtualization
AU2006100099A4 (en) * 2006-02-08 2006-03-16 Pc Tools Technology Pty Limited Automated Threat Analysis System
US8380987B2 (en) 2007-01-25 2013-02-19 Microsoft Corporation Protection agents and privilege modes

Also Published As

Publication number Publication date
TW200842646A (en) 2008-11-01
BRPI0720700A8 (pt) 2017-01-17
US20080183996A1 (en) 2008-07-31
KR101279683B1 (ko) 2013-06-27
EP2521062A1 (en) 2012-11-07
TWI470471B (zh) 2015-01-21
RU2009128684A (ru) 2011-01-27
CN101589365B (zh) 2012-07-04
KR20090107035A (ko) 2009-10-12
EP2106583B1 (en) 2015-11-11
US7765374B2 (en) 2010-07-27
JP2010517164A (ja) 2010-05-20
EP2106583A4 (en) 2012-01-25
EP2106583A1 (en) 2009-10-07
WO2008091462A1 (en) 2008-07-31
EP2521062B1 (en) 2020-11-04
BRPI0720700A2 (pt) 2014-04-15
RU2462747C2 (ru) 2012-09-27
CL2008000176A1 (es) 2008-08-01
CN101589365A (zh) 2009-11-25

Similar Documents

Publication Publication Date Title
BRPI0720700B1 (pt) Método implementado por computador para proteger os recursos de um sistema operacional
JP5249450B2 (ja) 保護エージェント及び特権モード
US10956184B2 (en) On-demand disposable virtual work system
US9202046B2 (en) Systems and methods for executing arbitrary applications in secure environments
US6938164B1 (en) Method and system for allowing code to be securely initialized in a computer
US10325116B2 (en) Dynamic privilege management in a computer system
CA2915646C (en) Page fault injection in virtual machines to cause mapping of swapped-out memory pages into (vm) virtualized memory
US8584254B2 (en) Data access reporting platform for secure active monitoring
US20170308484A1 (en) Systems And Methods For Dynamically Protecting A Stack From Below The Operating System
US10108800B1 (en) ARM processor-based hardware enforcement of providing separate operating system environments for mobile devices with capability to employ different switching methods
Medley Hardware Virtualization Applied to Rootkit Defense

Legal Events

Date Code Title Description
B25A Requested transfer of rights approved

Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC (US)

B07A Application suspended after technical examination (opinion) [chapter 7.1 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]

Free format text: PRAZO DE VALIDADE: 10 (DEZ) ANOS CONTADOS A PARTIR DE 21/05/2019, OBSERVADAS AS CONDICOES LEGAIS. (CO) 10 (DEZ) ANOS CONTADOS A PARTIR DE 21/05/2019, OBSERVADAS AS CONDICOES LEGAIS