BRPI0720921A2 - Agentes de proteção e modos de privilégio. - Google Patents

Agentes de proteção e modos de privilégio. Download PDF

Info

Publication number
BRPI0720921A2
BRPI0720921A2 BRPI0720921-5A BRPI0720921A BRPI0720921A2 BR PI0720921 A2 BRPI0720921 A2 BR PI0720921A2 BR PI0720921 A BRPI0720921 A BR PI0720921A BR PI0720921 A2 BRPI0720921 A2 BR PI0720921A2
Authority
BR
Brazil
Prior art keywords
operating system
protection agent
memory
privilege mode
privilege
Prior art date
Application number
BRPI0720921-5A
Other languages
English (en)
Inventor
Eric Traut
Forrest Foltz
Andrew J Thornton
Suyash Sinha
Original Assignee
Microsoft Corp
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 Corp filed Critical Microsoft Corp
Publication of BRPI0720921A2 publication Critical patent/BRPI0720921A2/pt
Publication of BRPI0720921A8 publication Critical patent/BRPI0720921A8/pt
Publication of BRPI0720921B1 publication Critical patent/BRPI0720921B1/pt

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors

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)
  • Storage Device Security (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

“AGENTES DE PROTEÇÃO E MODOS DE PRIVILÉGIO” ANTECEDENTES
Os processadores dentro dos dispositivos de computação frequentemente incluem modos privilegiados e não privilegiados. O software funcionando em um modo privilegiado geralmente está apto a executar cada instrução suportada pelo processador. Tipicamente, o núcleo do sistema operacional funciona dentro do modo privilegiado, o qual algumas vezes é referido como “Anel 0”, “Modo Supervisor”, ou “Modo Núcleo”.
Em contraste, algum software funcionando no dispositivo de computação pode ser restrito para funcionar somente em um modo não privilegiado. Este modo geralmente permite ao software funcionar um subgrupo de instruções do processador. Assim, um sistema operacional pode utilizar o modo não privilegiado para limitar a atividade do software funcionando neste modo. Por exemplo, o software pode ser restrito a um subconjunto particular de memória do dispositivo de computação. Este modo não privilegiado é algumas vezes conhecido como “Anel 3” ou “Modo do Usuário”. Em geral, as aplicações do usuário do dispositivo de computação operam neste modo não privilegiado.
Se uma aplicação de software operar neste modo não privilegiado, a aplicação pode requisitar acesso a uma parte da memória que não pode ser diretamente acessada a partir do modo não privilegiado. Por exemplo, a aplicação pode desejar executar uma operação nesta parte da memória tal como “criar um novo arquivo”. Esta requisição tipicamente é direcionada através de uma porta de chamada ou de outra instrução de chamada do sistema, a qual muda este código no modo não privilegiado para o código no modo privilegiado. Esta mudança garante que o modo não privilegiado não tenha acesso direto à memória que é designada como acessível a partir somente do modo privilegiado.
De acordo com estes modos, um autor de código malicioso pode acessar o modo privilegiado e instalar software mal intencionado que altera o comportamento do dispositivo de computação. Este software mal intencionado pode, por exemplo, alterar a localização de arquivos, ocultar arquivos, modificar arquivos, alterar digitações de tecla, e assim por diante. Alguns destes software mal intencionados podem compreender um “rootkit” (vírus), o qual não somente altera o comportamento do dispositivo de computação, mas também oculta ele próprio dentro da memória no modo privilegiado. As aplicações antivírus funcionando no dispositivo de computação por conseqüência podem falhar em descobrir este vírus oculto, assim permitindo ao software mal intencionado continuar suas ações mal intencionadas. Adicionalmente, tal software mal intencionado pode inserir código no sistema de proteção embutido no sistema operacional, como discutido abaixo.
O autor do software mal intencionado pode acessar o modo privilegiado e carregar o software mal intencionado em um dispositivo de computador de vários modos, incluindo enganar o usuário do dispositivo de computação para involuntariamente instalar o software mal intencionado no próprio dispositivo de usuário. Como resultado, os sistemas operacionais atuais frequentemente empregam um ou mais sistemas de proteção para detectar tal software mal intencionado. Estes sistemas de proteção geralmente monitoram certos recursos importantes do sistema operacional para detectar quaisquer alterações junto 5 a estes recursos. Se tal sistema de proteção detectar tal alteração, então, o sistema de proteção pode decidir que o recurso particular foi infectado pelo sistema mal intencionado. Estes sistemas de proteção também podem proporcionar, para a aplicação antivírus do usuário, uma lista de aplicações atualmente residentes na memória do modo não privilegiado. Obviamente, se o software mal intencionado teve sucesso em se ocultar, então 10 ela não irá aparecer na lista proporcionada. Adicionalmente, se o software mal intencionado teve sucesso em inserir código no sistema de proteção, então, o sistema de proteção pode falhar ao funcionar ou de outro modo falhar em detectar quaisquer alterações junto aos recursos importantes do sistema operacional.
Enquanto estes sistemas de proteção podem ser eficazes, eles também podem sofrer de umas poucas fraquezas. Primeiro, estes sistemas frequentemente contam com o anonimato, e assim, estão vulneráveis á exploração se identificados pelo software mal intencionado. Ou seja, se o software mal intencionado decifra a identidade e localiza o sistema de proteção, ele pode desativar o próprio sistema de proteção. O autor do software mal intencionado também pode instruir outras pessoas sobre como fazer o mesmo. Adicionalmente e relacionado com o primeiro item, estes sistemas de proteção geralmente operam em um mesmo domínio de proteção que este do sistema operacional (por exemplo, dentro do próprio modo privilegiado). Portanto, o próprio sistema de proteção está sujeito a ataque se o software mal intencionado obter acesso ao modo privilegiado e estiver apto a desmascarar o sistema de proteção no anonimato. Finalmente, estes sistemas de proteção iniciam ao mesmo tempo que o sistema operacional ou que o modo privilegiado. Portanto, se o software mal intencionado ou o autor do software mal intencionado obter controle do dispositivo de computação antes desta inicialização, ele pode impedir o sistema de proteção de iniciar.
SUMARIO
Este documento descreve ferramentas capazes de tornar uma parte da memória do
sistema operacional associada com uma agente de proteção inalterável ou inacessível a partir de um modo de privilégio do sistema operacional. Em algumas concretizações, estas ferramentas são capazes de criar uma modo de privilégio do agente de proteção por requisitar que um monitor virtual da máquina proteja esta parte da memória do sistema 35 operacional. Em outras concretizações, estas ferramentas são capazes de criar o modo de privilégio do agente de proteção por virtualizar um processador físico dentro de vários processadores virtuais, pelo menos um dos quais é um processador virtual do agente de proteção projetado para executar o agente de proteção. Por tornar esta parte da memória do sistema operacional inalterável ou inacessível a partir do modo de privilégio do sistema operacional, o agente de proteção pode ser menos vulnerável aos ataques por entidades operando dentro do modo de privilégio do sistema operacional.
Este Sumário é proporcionado para introduzir uma seleção de conceitos de uma
forma simplificada que são adicionalmente descritos abaixo na Descrição Detalhada. Este Sumário não é pretendido para identificar aspectos chave ou essenciais do assunto reivindicado, nem é pretendido para ser utilizado como um auxílio ao determinar o escopo do assunto reivindicado. O termo “ferramentas”, por exemplo, pode se referir ao sistema(s), 10 método(s), instruções legíveis por computador, e/ou técnica(s) como permitidos pelo contexto acima e por todo o documento.
BREVE DESCRIÇÃO DOS DESENHOS
A Fig. 1 ilustra um ambiente operacional ilustrativo no qual várias concretizações das ferramentas podem operar.
A Fig. 2 demonstra a variação dos direitos de memória do dispositivo de
computação dos módulos ilustrados na Fig. 1.
A Fig. 3 representa partes variadas da memória do dispositivo de computação nas quais alguns dos módulos ilustrados na Fig. 1 residem.
A Fig. 4 é um fluxograma ilustrando uma maneira ilustrativa na qual um monitor de máquina virtual pode proteger uma parte de memória associada com um agente de proteção e estabelecer um temporizador para executar o agente.
A Fig. 5 ilustra uma arquitetura ilustrativa possuindo um monitor de máquina virtual capaz de virtualizar processadores físicos em vários processador virtuais do sistema operacional e um processador virtual do agente de proteção.
A Fig. 6 ilustra como a largura de banda dos processadores físicos da Fig. 5 pode
ser alocada dentre os vários processadores virtuais.
A Fig. 7 é um processo ilustrativo de alguns modos nos quais as ferramentas podem habilitar e executar um agente de proteção que reside em uma localização que é inacessível a partir de um modo de privilégio do sistema operacional.
A Fig. 9 é um processo ilustrativo de alguns modos nos quais as ferramentas
podem criar um modo de privilégio do agente de proteção por fazer uma requisição para um monitor de máquina virtual.
A Fig. 10 é um processo ilustrativo de alguns modos nos quais as ferramentas podem criar um modo de privilégio do agente de proteção por virtualizar um processador real do computador em processadores virtuais do computador, pelo menos um dos quais é para executar um agente de proteção.
A Fig. 11 é um processo ilustrativo de alguns modos nos quais as ferramentas podem permitir uma adição de um modo de privilégio não presente em um processador físico subjacente.
Os mesmos números são utilizados por toda a revelação e figuras para fazerem referência a componentes e aspectos iguais.
DESCRIÇÃO DETALHADA
Vista Geral
O documento a seguir descreve ferramentas capazes de operar um agente de proteção de uma maneira que torna o agente de proteção inalterável e inacessível a partir de um modo de privilégio do sistema operacional. Assim, estas ferramentas permitem a 10 proteção do próprio agente de proteção, desse modo garantindo a habilidade do agente de proteção em detectar alterações junto a recursos importantes do sistema. Em adição, estas ferramentas podem encerrar um sistema operacional ou um modo de privilégio do sistema operacional em resposta a detectar alterações de recurso ou em resposta a uma tentativa de modificação do próprio agente de proteção. Adicionalmente, estas ferramentas podem 15 permitir que o agente de proteção imponha invariância nos recursos do sistema operacional, sem a necessidade de detectar posteriormente a modificação do recurso.
Um ambiente no qual as ferramentas podem permitir estas e outras ações é exposto abaixo em uma seção denominada Ambiente Operacional Ilustrativo. Um seção denominada Agentes de Proteção Autônomos vem a seguir e inclui duas subseções. A 20 primeira subseção, denominada Agentes de Proteção do Monitor de Máquina Virtual, descreve um modo ilustrativo no qual um agente de proteção pode residir e executar dentro de uma monitor de máquina virtual. Isto é seguido por outra subseção, denominada Agentes de Proteção de Partição Virtual, descrevendo um modo ilustrativo no qual um agente de proteção pode residir e executar dentro de uma partição virtual separada de uma partição do 25 sistema operacional.
Outra seção denominada Modos de Privilégio do Agente de Proteção Autônomo vem a seguir e também inclui duas subseções. A primeira subseção descreve uma modo ilustrativo no qual um temporizador do monitor de máquina virtual pode adicionar um modo de privilégio do agente de proteção, e é denominada Requisições de Proteção para um 30 Monitor de Máquina Virtual. Uma subseção denominada Processador Virtuais de Agente de Proteção vem a seguir e descreve outra maneira na qual um modo de privilégio do agente de proteção pode ser criado, neste caso, com o uso de vários processadores virtuais, incluindo um configurado para executar o agente de proteção no modo de privilégio do agente de proteção. Uma seção denominada Uso Ilustrativo das Ferramentas vem a seguir 35 e descreve um exemplo das ferramentas anteriormente descritas em operação. Finalmente, uma seção denominada Outras Concretizações das Ferramentas descreve várias outras concretizações e maneiras nas quais as ferramentas podem atuar. Esta vista geral, incluindo estes títulos de seção e resumos, é proporcionada para conveniência do leitor e não é pretendida para limitar o escopo das reivindicações ou das seções designadas.
Ambiente Operacional Ilustrativo
Antes de descrever as ferramentas em detalhes, a discussão seguinte de uma ambiente operacional ilustrativo é proporcionada para ajudar ao leitor a entender alguns modos nos quais vários aspectos da invenção das ferramentas podem ser empregados. O ambiente descrito abaixo constitui apenas um exemplo e não é pretendido para limitar a aplicação das ferramentas a qualquer ambiente operacional particular. Outros ambientes podem ser utilizados sem afastamento do espírito e do escopo do assunto reivindicado. Por exemplo, enquanto as seções seguintes descrevem concretizações com um único agente de proteção, vários agentes de proteção também podem ser utilizados. Em alguns casos, estes agentes de proteção podem funcionar independentemente e lado a lado. Em tais casos, os agentes de proteção tipicamente estão somente aptos a acessar memória dentro de sua respectiva partição. Adicionalmente, as técnicas descritas abaixo podem ser utilizadas simultaneamente. Ou seja, diferentes agentes de proteção podem utilizar diferentes técnicas dentro de um mesmo ambiente operacional.
Voltando-se para o exemplo corrente, a Figura 1 ilustra tal ambiente operacional geralmente designado por 100. Este ambiente inclui um dispositivo de computação 102, o qual ele próprio inclui um ou mais processadores 104 bem como meio legível por 20 computador 106. O meio legível por computador 106 inclui um monitor de máquina virtual 108 (por exemplo, um virtualizador), o qual pode permitir a virtualização de um ou mais processadores em vários processadores virtuais. O monitor de máquina virtual 108 também pode permitir várias partições virtuais. Um ou mais processadores virtuais podem ser associados com cada partição, e estes processadores virtuais têm o trabalho regulado nos 25 processadores físicos disponíveis. Como ilustrado, em algumas concretizações, o monitor de máquina virtual pode permitir uma primeira partição virtual 110 e uma segunda partição virtual 112. Como discutido em detalhes abaixo, estas partições podem servir para separar as funções do sistema operacional a partir dos serviços de agente de proteção.
Além disso, como ilustrado, o meio legível por computador 106 adicionalmente 30 inclui um sistema operacional (OS) 114, bem como uma ou mais aplicações do usuário 116. O sistema operacional 114 proporciona serviços do sistema operacional 118 para as aplicações do usuário 116, assim permitindo que as aplicações funcionem no dispositivo de computação. Em adição, um ou mais recursos do sistema operacional 120 residem no sistema operacional. Recursos ilustrativos incluem uma tabela de expedição de serviço do 35 sistema (SSDT)1 uma tabela de expedição de interrupção (IDT), uma tabela de descritor global (GDT) e assim por diante. Além disso, como ilustrado, o sistema operacional pode incluir software mal intencionado 122 (isto é, código com intenção maliciosa), o qual pode ter sido carregado no dispositivo de computação de modos discutidos acima ou de outros modos. Um ou mais agentes de proteção, discutidos abaixo, podem detectar alterações feitas junto aos recursos do sistema operacional pelo software mal intencionado e, em resposta à detecção, executar ação defensiva. Se o agente fizer tal determinação, então o 5 agente de proteção pode encerrar o sistema operacional e / ou o dispositivo de computação ou pode executar outra ação de contra-ataque.
Tendo discutido a estrutura do dispositivo de computação, a atenção agora é voltada para variar os modos de privilégio presentes nos um ou mais processadores físicos subjacentes 104. O modo de privilégio do monitor de máquina virtual 124 representa o modo 10 mais privilegiado ilustrado na figura 1. Este modo de privilégio tem acesso a todos ou a substancialmente todos os recursos e memória do dispositivo. A partir do modo de privilégio do monitor de máquina virtual 124, o monitor de máquina virtual pode programas os processadores e permitir acesso às áreas de memória para cada partição virtual. Enquanto um sistema operacional funcionando dentro de uma partição pode acreditar que ele controla 15 todos os recursos de um processador físico, na verdade ele somente controla uma parte como determinado pelo monitor de máquina virtual.
Menos privilegiado do que o modo de privilégio do monitor de máquina virtual, o modo de privilégio do sistema operacional 125 tem acesso a todos os recursos do sistema operacional 120 e à maior parte ou a toda a memória do sistema operacional. Este modo de 20 privilégio, entretanto, não tem acesso a quaisquer recursos ou memória associados com outra partição, tal como a segunda partição virtual 112. Contudo, devido a este modo de privilégio geralmente ter acesso a toda a memória do sistema operacional, ele é algumas vezes referido como “Modo Privilegiado”. “Anel 0”, “Modo Supervisor”, ou “Modo Núcleo” também podem descrever este modo de privilégio. Como discutido acima, uma aplicação do 25 usuário operando dentro do modo de privilégio do sistema operacional 126 geralmente está apta a executar a maioria das instruções proporcionadas pelo processador, com a exceção desta instruções reservadas para o modo de monitor de máquina virtual.
Este modo de privilégio do sistema operacional está em contraste com o modo de privilégio do usuário 128, algumas vezes referido como “Modo Não Privilegiado”, “Anel 3”, ou 30 simplesmente “Modo do Usuário”. Além disso, como discutido acima, a aplicação do usuário pode não acessar ou alterar certa memória associada com o sistema operacional quando operando a partir do modo de privilégio do usuário 128. Em geral, as aplicações do usuário do dispositivo de computação operam neste modo de privilégio do usuário quando executando operações básicas.
Em adição aos modos discutidos acima, a figura 1 também ilustra um modo de
privilégio de segunda partição virtual 130 e um modo de privilégio de agente de proteção 132. Como discutido em detalhes abaixo, o modo de privilégio de agente de proteção 132 pode ter acesso a uma parte da memória que o modo de privilégio do sistema operacional não possui, enquanto geralmente não tendo tanto acesso à memória quanto o modo de privilégio de monitor de máquina virtual. Como tal, este modo de privilégio pode ser mais privilegiado do que o modo de privilégio do sistema operacional mas menos privilegiado do que o modo de privilégio do monitor de máquina virtual.
Além disso, como discutido em detalhes abaixo, o modo de privilégio da segunda partição virtual geralmente tem acesso à memória associada com a segunda partição virtual 112. Em adição, este modo pode ter acesso à primeira partição virtual. Tal acesso adicional pode, por exemplo, permitir que um agente de proteção residindo na segunda partição 10 virtual varra a memória associada com a primeira partição virtual e com seu correspondente sistema operacional. Este modo geralmente não tem acesso ao monitor de máquina virtual, e assim, é menos privilegiado do que o modo de privilégio de monitor de máquina virtual. Contudo, o modo de privilégio da segunda partição virtual ainda tem acesso a uma parte de memória que o modo de privilégio de sistema operacional não tem.
Enquanto isso, a figura 2 ilustra os direitos de memória do dispositivo de
computação 200. Esta figura assim representa a quantidade de memória acessível pelos módulos da figura 1. Como ilustrado, o monitor de máquina virtual 108 - operando no modo de privilégio de monitor de máquina virtual 124 - possui a maior parte dos direitos de memória de todos módulos ilustrados. Na verdade, o monitor de máquina virtual reside, e 20 sozinho tem acesso, a uma parte da memória 202. A seguir, o agente de proteção 204 (por exemplo, qualquer um dos agentes de proteção ilustrados na figura 1) opera no modo de privilégio de agente de proteção 132 e tem acesso a toda a memória diferente da parte 202 correspondendo ao monitor de máquina virtual. Entretanto, o agente de proteção realmente tem acesso a uma parte da memória 206, a qual é a parte da memória na qual o próprio 25 agente de proteção reside.
O sistema operacional 114, enquanto isso, opera no modo de privilégio do sistema operacional 126 e tem acesso a toda a memória diferente da parte 202 e da parte 206. Enquanto o sistema operacional pode não acessar a parte da memória 206 associada com o agente de proteção, o sistema operacional e seu modo de privilégio associado realmente 30 têm acesso a uma parte de memória 208. Esta parte de memória 208 é algumas vezes conhecida como memória núcleo ou componente de nível mais baixo de um sistema operacional e geralmente contém os recursos apresentados na figura 1. Mesmo se o software mal intencionado carregar e operar na parte de memória 208, entretanto, o software mal intencionado não pode acessar a parte de memória 206 associada com o 35 agente de proteção.
Finalmente, a figura 2 ilustra que as aplicações do usuário 116 somente têm acesso a uma parte de memória 210. Estas aplicações do usuário e o modo de privilégio de usuário correspondente não têm acesso à parte de memória 208 associada com o componente de nível mais baixo do sistema operacional. Com este ambiente operacional em mente, as quatro seções seguintes descrevem em detalhes modo ilustrativos nos quais um agente de proteção pode ser tornado inalterado ou inacessível a partir do modo de privilégio do sistema operacional.
Agentes de Proteção Autônomos
A seção seguinte descreve ferramentas capazes de determinar, a parir da memória inacessível por uma entidade operando dentro de um modo de privilégio do sistema operacional, se um ou mais recursos do sistema operacional foram modificados. Como tal, 10 as ferramentas podem permitir que um agente de proteção resida em uma localização diferente da localização da própria memória do sistema operacional. Mais particularmente, as subseções seguintes descreve como os agentes de proteção podem residir dentro de um monitor de máquina virtual ou dentro de uma partição virtual autônoma.
Agentes de Proteção do Monitor de Máquina Virtual Esta subseção descreve como um agente de proteção 134 pode residir dentro do
próprio monitor de máquina virtual, como a figura 1 ilustra. Devido ao modo de privilégio de sistema operacional não poder acessar o monitor de máquina virtual, esta localização protege o agente de proteção de qualquer software mal intencionado localizado na memória de sistema operacional. De modo a operar a partir desta localização, o agente de proteção 20 recebe uma identificação do um ou mais recursos do sistema operacional 120 que o agente de proteção 134 pode monitorar. Esta identificação pode ser recebida via o identificador de recurso 136. Como ilustrado, o sistema operacional pode proporcionar esta informação para o monitor de máquina virtual através de chamadas da interface de programação de aplicação (API), ou o sistema operacional pode proporcionar a informação na forma de um 25 manifesto 138. Como discutido acima, estes recursos podem incluir a SSDT, IDT e a GDT.
Um vez que ele tenha recebido a identificação dos recursos, o agente de proteção 134 estende os serviços do agente de proteção 140 para o sistema operacional 114. Estes serviços do agente de proteção geralmente compreendem determinar se qualquer um dos recursos identificados foi alterado. Se tal determinação for feita, o agente de proteção ou o 30 monitor de máquina virtual pode, por exemplo, encerrar o sistema operacional. Os serviços do agente de proteção também podem incluir impor invariância junto a quaisquer recursos marcados como inalteráveis (por exemplo, “somente leitura”).
Empregar tal arquitetura começa com carregar e inicializar o monitor de máquina virtual, o qual é capaz de hospedar um ou mais sistemas operacionais. Neste exemplo, o monitor de máquina virtual hospeda um único sistema operacional 114, o qual ele próprio começa a inicialização após o monitor de máquina virtual carregar. Durante a inicialização do sistema operacional, a parte de memória 208 associada com o componente de nível mais baixo do sistema operacional (por exemplo, o núcleo) carrega primeiro. Alguns ou todos os recursos do sistema operacional 120 (por exemplo, a SSDT, GDT1 IDT) geralmente residem nesta parte de memória 208.
Antes ou enquanto o sistema operacional inicializa, o agente de proteção 134 pode começar a funcionar a partir de dentro do monitor de máquina virtual. Como discutido acima, o agente de proteção geralmente recebe uma identificação de um conjunto de um ou mais recursos do sistema operacional e determina se um ou mais dos recursos identificados foi alterado. Observe que cada recurso identificado frequentemente compreende vários componentes em várias localizações, cada um dos quais o agente de proteção pode monitorar de modo à totalmente proteger todo o recurso. Por exemplo, se o manifesto identifica uma SSDT como um recurso a ser monitorado e protegido, o agente de proteção não somente protege a tabela real mas também outros componentes da SSDT. Por exemplo, o agente de proteção também pode monitorar e varrer o registro que aponta para a localização da tabela. Adicionalmente, o agente de proteção também pode monitorar as estruturas de dados de tradução de memória (por exemplo tabelas de páginas) que traduzem o endereço virtual para um endereço físico. Se o agente de proteção falhar em fazer isto, então o código malicioso pode criar outra tabela com diferentes mapeamentos da tabela de páginas (isto é, desvia da própria SSDT).
Em adição à identificação, o agente de proteção também pode receber um atributo 20 de proteção instruindo o agente de proteção sobre como proteger um recurso correspondente. Por exemplo, o agente de proteção pode receber uma identificação de um recurso SSDT, bem como um atributo de proteção correspondente de “somente leitura”, e como tal, não deve ser alterado. “Inicia somente leitura” é outro atributo de proteção possível, o qual instrui o agente de proteção que o recurso correspondente pode gravar uma 25 vez durante a inicialização, mas após tal tempo o recurso deve permanecer somente de leitura.
O agente de proteção pode receber esta identificação dos recursos e os atributos de proteção do recurso de vários modos, tanto positivamente como passivamente. Por exemplo, o sistema operacional pode proporcionar um manifesto assinado de forma digital 30 que identifica os recursos que o agente de proteção pode monitorar. Este manifesto assinando de forma digital pode identificar os recursos de vários modos, tal como pelo nome (por exemplo, SSDT, IDT, GDT1 etc.) ou pelo endereço, o qual mapeia o recurso para as localizações correspondentes na parte de memória 208. Nos últimos casos, o manifesto pode identificar um endereços físico convidado do recurso, um endereço virtual convidado, 35 ou endereço físico do sistema. Observe que em alguns casos, um endereço físico convidado pode ser mapeado para um endereço físico real do sistema de modo a descobrir a localização física real do componente do recurso correspondente. Após o monitor de máquina virtual ou agente de proteção receber o manifesto, estes componentes podem determinar se o manifesto foi adulterado ou modificado. De o monitor de máquina virtual ou o agente de proteção fizer tal determinação, o monitor de máquina virtual ou agente de proteção pode optar em falhar a inicialização do sistema 5 operacional. Em adição, a criptografia associada com a lista de recursos pode ser invalidada, assim protegendo sua segurança.
Em adição ou em alternativa ao manifesto, o agente de proteção pode receber a identificação do recurso e o atributo de proteção via uma ou mais chamadas da interface de programação de aplicação (API) dentro do monitor de máquina virtual (por exemplo, 10 “hypercalls”). A medida que o sistema operacional inicializa, o sistema operacional (e talvez o componente de nível mais baixo do sistema operacional 208) pode fazer hypercalls para dentro do monitor de máquina virtual informado ao agente de proteção sobre certos recursos que podem ser monitorados e protegidos. Estas hypercalls podem identificar os recursos pertinentes dos mesmos modos discutidos acima. Além disso, como discutido acima, estas 15 hypercalls também podem identificar atributos de proteção do recurso.
Nas concretizações utilizando uma manifesto assinado de forma digital bem como uma ou mais hypercalls, o agente de proteção primeiro pode varrer os recursos identificados no manifesto antes ou enquanto o sistema operacional inicializa. Após esta varredura inicial, o sistema operacional então pode fazer hypercalls para o monitor de máquina virtual 20 instruindo ao agente de proteção para determinar se páginas identificadas por hypercalls foram alteradas. O manifesto assim identifica recursos a serem varridos a cada inicialização do sistema operacional, enquanto as hypercalls identificam recursos a serem dinamicamente varridos quando de sua respectiva inicialização.
Tendo identificado os recursos a serem monitorados, o agente de proteção então determina se os recursos (por exemplo, todas as partes da SSDT discutidas acima) foram ou não alterados. O agente de proteção também pode impor invariância junto aos recursos identificados. Por exemplo, o agente de proteção pode garantir que qualquer recurso designado “somente leitura” não altere para “pode ser gravado”.
De modo a monitorar e proteger os recursos deste modo, o código executando 30 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 instruído, este gerenciador de interceptação pode registrar interceptações nos vários componentes do recurso identificado. Devido a este registro, o agente de proteção dentro do monitor de máquina virtual pode agora receber interceptações se forem feitas tentativas de acessar ou 35 modificar estes recursos identificados. Como tal, o agente de proteção pode inspecionar e varrer vários componentes dos recursos identificados. Ele também pode ativamente bloquear tentativas de modificar estes recursos. Em algumas concretizações, o agente de proteção pode varrer os recursos e determinar um estado inicial dos recursos ao comparar os resultados de varreduras futuras. Em outras concretizações, o agente de proteção pode já conhecer um estado inicial dos recursos para comparar os resultados de varreduras futuras. Em qualquer caso, o agente de proteção pode calcular um valor hash (chave de codificação digital) ou de soma de verificação deste estado inicial. Após este cálculo, o agente de proteção varre os recursos antes, após, ou enquanto o sistema operacional inicializa. Após a varredura, o agente de proteção calcula um hash ou soma de verificação dos resultados e compara este com o valor hash ou soma de verificação do estado inicial. Se igual, o agente de proteção determina que os recursos correspondentes não foram alterados. Obviamente, o agente de proteção pode desviar os valores hash ou de soma de verificação e ao invés disso diretamente comparar o estado inicial com a varredura.
Se os valores forem diferentes, entretanto, o agente de proteção e/ou o monitor de máquina virtual pode executar uma ou mais ações de resposta. Primeiro, o próprio agente de proteção pode encerrar o sistema operacional ou o modo de privilégio de sistema operacional, ou ele pode instruir ao monitor de máquina virtual para fazer isto. Novamente, devido ao agente de proteção residir no monitor de máquina virtual e devido ao monitor de máquina virtual hospedar o sistema operacional, estes dois componentes são capazes de assim encerrar o sistema operacional. Adicionalmente, devido ao agente de proteção residir dentro do monitor de máquina virtual, o encerramento do sistema operacional não pode ser adulterado a partir de um igual modo de privilégio de sistema operacional.
Em adição a encerrar o sistema operacional, o agente de proteção e/ou o monitor de máquina virtual pode primeiro aviso ao sistema operacional sobre o encerramento eminente. 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 pode gravar um aviso em uma localização de memória ou sinalizar um evento que o sistema operacional monitora.
Sem considerar se um aviso foi ou não fornecido, o encerramento do sistema operacional pode ser abrupto ou harmonioso. No primeiro caso, o monitor de máquina virtual pode simplesmente desligar o sistema operacional imediatamente após o saber dos valores de hash ou de soma de verificação discrepantes. No último caso, o monitor de máquina virtual pode permitir ao sistema operacional uma certa quantidade de tempo para ele próprio se encerrar de forma limpa. Nesta hora, o sistema operacional pode, por exemplo, fechar quaisquer arquivos abertos e escoar quaisquer dados correspondentes. O sistema operacional também pode liberar recursos designados. Adicionalmente, o encerramento pode utilizar ambas as abordagens. Por exemplo, se o monitor de máquina virtual hospedar várias partições, ele pode imediatamente encerrar a partição com os valores de hash ou de soma de verificação discrepantes enquanto permitindo às outras partições tempo para encerrar de forma clara. Em qualquer caso, a maneira do encerramento pode ser configurável pela política e pode ser ajustável.
Em adição a um encerramento e ao aviso correspondente, o agente de proteção e/ou monitor de máquina virtual pode executar ações após a inicialização em resposta a uma alteração não permitida de um recurso identificado. Por exemplo, o monitor de máquina virtual e / ou o agente de proteção pode, quando da reinicialização do sistema operacional, notificar ao sistema operacional sobre a alteração do recurso. Em resposta, o sistema operacional pode executar uma varredura antivírus para detectar se qualquer software mal intencionado efetivamente reside dentro da memória do sistema operacional, tal como a parte 208 (por exemplo, o núcleo). Adicionalmente, o monitor de máquina virtual pode inicializar o sistema operacional em um modo seguro, ou o próprio sistema operacional pode escolher inicializar no modo seguro. Além disso, em resposta à notificação, o sistema operacional pode identificar a si próprio como tendo sido atacado e como tal, pode não permitir a si próprio acessar qualquer rede junto a qual ele Se acopla.
Agentes de Proteção de Partição Virtual
O invés de residir dentro do próprio monitor de máquina virtual, um agente de proteção (por exemplo, agente de proteção 142 da figura 1) pode residir em uma partição virtual separada (por exemplo, segunda partição virtual 112 da figura 1). Nestas concretizações, esta partição atua como um emissário confiável do monitor de máquina virtual. O agente de proteção 142 é assim inacessível a partir do modo de privilégio de sistema operacional. Como discutido acima, o monitor de máquina virtual 108 proporciona tal virtualização do dispositivo de computação 102. Enquanto o monitor de máquina virtual pode virtualizar o dispositivo de computação em qualquer número de partições, a figura 1 ilustra uma primeira partição hospedando o sistema operacional e uma segunda partição hospedando 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 única função ou função principal é executar o agente de proteção. Em outras concretizações, esta segunda partição virtual pode executar funções adicionais, tal como hospedar outro sistema operacional.
O agente de proteção 142 residindo dentro da segunda partição virtual é capas de executar várias ou todas as mesmas funções que descritas acima com respeito ao agente de proteção 134 residindo dentro do monitor de máquina virtual. Ou seja, o agente de proteção 142 pode positivamente ou passivamente receber uma identificação de um ou mais 35 recursos do sistema operacional 120. Em resposta à identificação, o agente de proteção pode novamente estender os serviços do agente de proteção 140, os quais geralmente compreendem determinar se um ou mais dos recursos identificados foi alterado e, se foi, executar ação de resposta. Estes serviços também podem incluir impor invariância de recursos específicos. O agente de proteção 142 pode executar estas funções via técnicas similares a estas descritas acima.
Como ilustrado, o agente de proteção 142 é acessível a partir do modo de privilégio 5 de segunda partição virtual 130, mas inacessível a partir do modo de privilégio de sistema operacional 126. Como tal, a arquitetura resultante permite a proteção do próprio agente de proteção de qualquer software mal intencionado localizado dentro do sistema operacional, mesmo se o software mal intencionado residir dentro da parte de memória 208 associada com o componente de nível mais baixo do sistema operacional.
Modos de Privilégio de Aaente de Proteção Autônomo
Esta seção descreve ferramentas capazes de tornarem uma parte da memória do sistema operacional associada com um agente de proteção inalterável ou inacessível a partir de um modo de privilégio de sistema operacional, enquanto ainda permitindo a esta parte de memória fisicamente residir em um espaço de memória físico do sistema 15 operacional. Estas ferramentas assim criam um modo de privilégio de agente de proteção autônomo que tem acesso à parte de memória associada com o agente de proteção bem como ao resto da memória que é acessível dentro do modo de privilégio de sistema operacional. Este modo de privilégio é assim mais privilegiado do que o modo de privilégio de sistema operacional.
A primeira subseção descreve ferramentas que são capazes de criar o modo de
privilégio de agente de proteção por requisitar que um monitor de máquina virtual proteja uma parte de memória associada com o agente de proteção. Contudo, a segunda subseção descreve ferramentas que permitem a criação do modo de privilégio de agente de proteção pela virtualização de um processador físico em vários processadores virtuais, incluindo um processador virtual dedicado para executar o agente de proteção.
Requisições de Proteção para um Monitor de Máquina Virtual Esta subseção descreve como um agente de proteção pode requisitar a um monitor de máquina virtual para proteger a memória associada com o agente de proteção e, como tal, o próprio agente de proteção. Esta proteção resulta em um agente de proteção 144 operando no modo de privilégio de agente de proteção 132, como ilustrado na figura 1. Como ilustrado, o agente de proteção 144 pode inicialmente residir dentro do modo de privilégio de sistema operacional, antes de mudar para o modo de privilégio de agente de proteção. Quando operando neste último modo de privilégio, o agente de proteção é geralmente impenetrável a ataques a partir de entidades operando no modo de privilégio de sistema operacional 126.
Quando operando no modo de privilégio de agente de proteção 132, um entidade possui ligeiramente mais privilégio do se operando no modo de privilégio de sistema operacional 126, mas ainda menos privilégio do que o modo de privilégio de monitor de máquina virtual 124. Como a figura 2 ilustra, um agente de proteção operando neste modo de privilégio possui acesso a toda a memória associada com o sistema operacional, em adição à parte de memória 206 associada com o próprio agente de proteção. O monitor de máquina virtual 108 impõe a capacidade de acesso de agente de proteção adicionada.
As figuras 3 e 4 ilustram uma maneira ilustrativa de criar este modo de privilégio de agente de proteção. A figura 3 representa toda ou substancialmente toda a memória do dispositivo de computação 300. A memória do dispositivo de computação 300 inclui uma parte de memória 302 associada com o modo de privilégio de sistema operacional (por 10 exemplo, o núcleo) e uma parte de memória 304 associada com o modo de privilégio de usuário. A parte de memória 302 também inclui, como ilustrado, uma parte de memória 306 associada com o agente de proteção 144 bem como uma parte de memória 308 na qual os controladores carregam.
Como a figura 4 ilustra, um processo 400 para criar o modo de privilégio de agente de proteção 132 começa no ato 1 pela inicialização da parte de memória 302 (por exemplo, núcleo). No ato 2, a parte de memória 306 ou o próprio agente de proteção chama o monitor de máquina virtual 108 para requisitar que o monitor de máquina virtual proteja a parte de memória associada com o agente de proteção. Ao requisitar, o agente de proteção ou a memória correspondente solicita que o código funcionando dentro do modo de privilégio de sistema operacional seja desabilitado para alterar ou de outro modo tocar esta parte de memória 306. O agente de proteção também pode ele mesmo verificar (por exemplo, por uma assinatura digital) junto ao monitor de máquina virtual 108. Esta parte de memória, ou o próprio agente de proteção, também pode requisitar que o monitor de máquina virtual estabeleça um temporizador e execute o agente de proteção quando o temporizador expirar. O ato 3 representa o monitor de máquina virtual protegendo a memória de entidades operando dentro do modo de privilégio de sistema operacional e estabelecendo um temporizador em resposta à requisição. Observe que devido a esta parte de memória 306 associada com o agente de proteção estar agora inalterável e/ou inacessível a partir do modo de privilégio de sistema operacional, o agente de proteção agora reside no modo de privilégio de agente de proteção.
No ato 4, os controladores são carregados na parte de memória 308. Observe que a requisição do ato 2 e a proteção correspondente do ato 3 geralmente ocorrem antes dos controladores serem carregados na memória, à medida que o software mal intencionado pode existir na forma de um controlador. Como discutido na seção “Uso Ilustrativo das 35 Ferramentas” abaixo, os autores de software mal intencionado frequentemente enganam os usuários para instalarem controladores mal intencionados em um dispositivo de computação. Se um ou mais controladores mal intencionados realmente forem carregados na memória antes da parte de memória 306 ser protegida, então os controladores mal intencionados podem potencialmente inserir código na requisição para se protegerem. Tal inserção de código desse modo impediria o funcionamento periódico do agente de proteção via o monitor de máquina virtual e, por conseqüência, a criação do modo de privilégio de 5 agente de proteção. Entretanto, por requisitar que o monitor de máquina virtual estabeleça um temporizador inicialmente, este processo garante que código dentro do modo de privilégio de sistema operacional não possa de esse modo desabilitar o funcionamento periódico do agente de proteção.
Entretanto, o ato 5 provavelmente ocorre algum tempo após os controladores terem 10 sido carregados. Como ilustrado, o ato 5 representa a expiração do temporizador do monitor de máquina virtual e, por conseqüência, o funcionamento do agente de proteção. Quando funcionando, o agente de proteção 144 executa funções similares ou idênticas a estas discutidas nas seções anteriores. Além disso, como discutido acima, o agente de proteção pode executar ação em resposta a uma determinação de que um ou mais recursos 15 identificados foram alterados. O agente de proteção também pode executar tal ação em resposta a um acesso ou alteração tentada do agente de proteção, ou de sua memória correspondente, a partir de entidades operando dentro do modo de privilégio de sistema operacional.
O ato 6 representa o agente de proteção notificando para o monitor de máquina virtual quando o agente de proteção termina a execução. Finalmente, o ato 7 representa a repetição dos atos 3, 5 e 6. Como tal, o monitor de máquina virtual pode reiniciar seu temporizador e executar o agente de proteção em intervalos periódicos, tal como a cada 100 milisegundos (ms).
Por estabelecer um temporizador seguro contra falha no monitor de máquina virtual, 25 o processo 400 desse modo elimina a habilidade do código do sistema operacional adulterar a parte de memória associada com o agente de proteção. Como tal, este processo garante que o agente de proteção irá continuar a funcionar e não terá código inserido por software mal intencionado atuando dentro do modo de privilégio de sistema operacional. Ao invés disso, o agente de proteção irá funcionar dentro de um modo de privilégio autônomo 30 enquanto ainda residindo dentro da memória física alocada para o sistema operacional.
Processadores Virtuais de Agente de Proteção
Esta subseção descreve como um monitor de máquina virtual pode criar um modo de privilégio de agente de proteção por programar um processador virtual para executar o agente de proteção 144. A Figura 5 ilustra uma arquitetura 500 que inclui o monitor de 35 máquina virtual 108 virtualizando o dispositivo de computação 102 em duas partições, cada uma incluindo um sistema operacional. Como ilustrado, o dispositivo de computação neste exemplo inclui dois processadores reais 104(a) e 104(b), em cada um dos quais o processador virtual pode programar múltiplos processadores virtuais. Também como 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 para executar um primeiro sistema operacional. De forma similar, a segunda partição virtual 5 inclui um segundo processador virtual 508 para executar um segundo sistema operacional. Neste caso, entretanto, o monitor de máquina virtual também inclui um processador virtual de agente de proteção 510 para executar um agente de proteção, tal como o agente de proteção 144 da figura 1.
Para criar a arquitetura 500, o monitor de máquina virtual primeiro é carregado e inicializado. Como ilustrado na figura 6, o monitor de máquina virtual então virtualiza os vários processadores virtuais e, ao fazer isso, aloca largura de banda de processador real 600. Para começar esta virtualização e alocação, o monitor de máquina virtual virtualiza o primeiro processador virtual sobre o primeiro processador real. No exemplo corrente, esta virtualização é feita em uma base de um para um como ilustrado pela figura 6. Ou seja, somente este único processador virtual 506 corresponde ao processador real 104(a) e, como tal, o monitor de máquina virtual aloca toda a largura de banda do processador real para este processador virtual. O monitor de máquina virtual então virtualiza o segundo processador virtual 508, sobre o segundo processador real 104(b). Ao invés de uma base de um para um, entretanto, o monitor de máquina virtual retém alguma parte da largura de banda do segundo processador real. O monitor de máquina virtual então virtualiza o processador virtual do agente de proteção 510 sobre esta largura de banda restante do segundo processador real 104(b), também como ilustrado pela figura 6.
Cada processador virtual operando no segundo processador real geralmente atua em uma base de tempo repartido. Ou seja, o segundo processador virtual pode operar no 25 segundo processador real durante algum tempo, antes da operação do segundo processador virtual suspender. Neste ponto, o segundo processador real troca para a operação do processador virtual do agente de proteção durante alguma outra quantidade de tempo. Por exemplo, o segundo processador virtual pode operar no segundo processador real durante 90 ms, ponto no qual a operação deste segundo processador virtual é suspensa 30 e a operação do processador virtual de agente de proteção começa durante 10 ms. O processador virtual de agente de proteção geralmente é transparente para ambas as partições do sistema operacional e para ambos os primeiro e segundo processadores virtuais. Como tal, ambos os sistemas operacionais acreditam que seus processadores virtuais correspondentes correspondem a um respectivo processador real.
Em adição a alocar a largura de banda do processador real, o monitor de máquina
virtual também gerencia a parte de memória que cada processador virtual pode acessar. No exemplo corrente, o primeiro processador virtual pode acessar toda a memória associada com o primeiro sistema operacional. O segundo processador virtual, entretanto, pode acessar toda a memória associada com o segundo sistema operacional, diferente da parte de memória associada com o agente de proteção. O processador virtual de agente de proteção sozinho tem acesso á parte de memória associada com o agente de proteção, em adição à memória alocada para o segundo sistema operacional.
Adicionalmente, o primeiro e o segundo processadores virtuais somente têm a habilidade de alterar sua memória associada. Como tal, nenhum dos processadores virtuais operando seus respectivos sistemas operacionais pode alterar a parte de memória associada com o agente de proteção. O processador virtual do agente de proteção, 10 entretanto, pode alterar a memória associada com o agente de proteção e, em algumas concretizações, a memória associada com o segundo processador virtual.
Por sua natureza programada, o processador virtual de agente de proteção irá periodicamente executar o agente de proteção. Enquanto em alguns casos o processador virtual de agente de proteção pode executar outras aplicações, o exemplo corrente ilustra 15 um processador virtual de agente de proteção dedicado. Como tal, este processador virtual geralmente somente serve para periodicamente executar o agente de proteção. Novamente, o agente de proteção pode executar funções similares ou idênticas, de maneiras similares ou idênticas, da mesma forma que os agentes de proteção descritos acima.
Por programar um processador virtual de agente de proteção dedicado, o monitor 20 de máquina virtual garante que o agente de proteção irá periodicamente executar sob controle deste processador e de um modo de privilégio de agente de proteção autônomo. Adicionalmente, devido a somente este processador virtual de agente de proteção ter acesso à parte de memória associada com o agente de proteção, o monitor de máquina virtual protege esta memória de código dentro de um sistema operacional. Portanto, 25 software mal intencionado dentro de um modo de privilégio de sistema operacional não pode inserir código no agente de proteção e impedir o agente de proteção de funcionar. Como tal, esta técnica essencialmente elimina a habilidade de um sistema operacional de adulterar o agente de proteção.
Uso Ilustrativo das Ferramentas Tendo anteriormente descrito ferramentas capazes de garantir proteção de um
agente de proteção, a seção seguinte descreve apenas um exemplo destas ferramentas em operação. Primeiro, imagine que um usuário do computador surfa na Internet e, enquanto surfando por certo Site da internet, uma caixa de diálogo com intenção maliciosa surge de repente no vídeo do usuário. A caixa de diálogo requisita permissão a partir do usuário para 35 instalar algum tipo de software mal intencionado no computador de um usuário. Apesar de esta requisição poder ser direta, imagine que a caixa de diálogo oculta a requisição como tipicamente é o caso. A caixa de diálogo pode, por exemplo, falsamente informar para o usuário que ele ou ela ganhou um prêmio. Ao informar isso, a caixa de diálogo maliciosamente instrui ao usuário para clicar o botão ΌΚ" na caixa de diálogo de modo a receber o prêmio. Imagine que o usuário realmente selecione o botão OK e assim o usuário escolhe continuar as operações requisitadas independente de um ou mais avisos a partir do software (por exemplo, uma aplicação antivírus) funcionando no dispositivo de computação.
Neste ponto, o dispositivo de computação começa a instalação de um controlador que contém o software mal intencionado. Como é geralmente verdadeiro com os controladores, este controlador malicioso tem acesso concedido para um modo de privilégio de sistema operacional e é carregado na memória associada com este modo de privilégio 10 (por exemplo, o núcleo). Uma vez carregado no núcleo, o controlador malicioso e seu software mal intencionado acompanhante essencialmente possuem acesso com carta branca à memória do computador e ao sistema operacional. Infelizmente para o usuário, imagine que este software mal intencionado inclui um registrador cronológico de tecla que registra as digitações de tecla de um usuário. Agora imagine que o usuário navega para o 15 site da Internet do seu banco e entra em sua conta bancária. Devido a sua habilidade de registrar as digitações de tecla, o registrador cronológico de tecla aprende a senha da conta bancária do usuário e envia esta senha através da Internet para o autor do controlador malicioso.
Para tornar a situação pior, imagine que o software mal intencionado é um “rootkit” - ou software mal intencionado que tenta ativamente se ocultar de um agente de proteção e do software antivírus do usuário. Nos sistemas convencionais, um agente de proteção reside dentro do núcleo (isto é, na memória junto a qual o controlador malicioso tem acesso). Portanto, nestes sistemas convencionais, o software mal intencionado tem acesso ao agente de proteção e pode tentar se ocultar do agente de proteção. Se obtiver sucesso, o software mal intencionado iria aparecer para o agente de proteção como não existindo dentro do núcleo. Portanto, quando o software antivírus do usuário chama o agente de proteção e requisita uma lista de todas as aplicações presentes na memória do computador, o software mal intencionado estaria ausente. Esta ausência torna o software antivírus ineficaz para saber e remover o software mal intencionado. Adicionalmente, o software mal intencionado pode inserir código no agente de proteção, desse modo impedindo o agente de proteção de funcionar. Como tal, o agente de proteção pode falhar em perceber se o software mal intencionado alterar quaisquer recursos do sistema operacional.
Ao invés de residir dentro do núcleo como nos sistemas convencionais, entretanto, imagine que o agente de proteção no dispositivo de computação do usuário reside na memória ou funciona em um modo que é inacessível a partir do modo de privilégio de sistema operacional. Portanto, quando o controlador malicioso é carregado no núcleo, ele não tem acesso á memória na qual o agente de proteção reside ou ao modo no qual o agente de proteção funciona. Por conseqüência, o controlador e seu software mal intencionado acompanhante não possuem acesso ao próprio agente de proteção. O software mal intencionado então está inapto a se ocultar do agente de proteção e por conseqüência, também do software antivírus. Portanto, quando o software antivírus solicita 5 ao agente de proteção uma lista de todas as aplicações presentes na memória do computador, a lista retornada inclui o software mal intencionado. O software antivírus então reconhece este código como software mal intencionado e por conseqüência remove o mesmo do dispositivo de computador do usuário. Adicionalmente, o próprio agente de proteção pode perceber se o software mal intencionado altera recursos do sistema 10 operacional e em resposta, pode encerrar o dispositivo de computação do usuário.
Portanto, por residir na memória ou funcionar em um modo que é inacessível a partir do modo de privilégio de sistema operacional, as concretizações descritas neste documento impedem software mal intencionado de se ocultar de um agente de proteção ou de inserir código no agente de proteção. No exemplo acima, portanto, o dispositivo de 15 computação do usuário está apto a remover o software mal intencionado da máquina ou, em alguns casos, encerrar o sistema quando o software mal intencionado altera recursos importantes. Em qualquer caso, estas concretizações servem para diminuir a eficácia do software mal intencionado em relação ao seu desejo de causar dano.
Outras Concretizações das Ferramentas As seções acima descrevem alguns exemplos particulares onde um agente de
proteção é feito inalterado ou inacessível a partir do modo de privilégio de sistema operacional. Nesta seção, outras concretizações das ferramentas são descritas, tal como adicionar um modo de privilégio para um processador que não está presente em um processador subjacente.
Estas concretizações ilustrativas são descritas como partes do processo 700 até
1100 das figuras 7 até 11. Estes processos, bem como os processos ilustrativos descritos ou ilustrados com referência às figuras 1 até 6, podem ser implementados em qualquer hardware, software, firmware, ou em combinações dos mesmos; no caso de software e firmware, estes processos representam grupos de operações implementadas como 30 instruções legíveis por computador armazenadas em meio legível por computador e executáveis por um ou mais processadores. Estas concretizações das ferramentas descritas nesta seção não são pretendidas para limitar o escopo das ferramentas ou das reivindicações.
Com referência à figura 7, o bloco 702 recebe uma política de imposição identificando um ou mais recursos do sistema operacional. Esta política de imposição, a qual pode compreender dados criptografados, pode ser recebida via um manifesto assinado de forma digital ou pela exposição de um interface de programa de aplicação (API) ao sistema operacional (por exemplo, hypercall). O bloco 704 identifica, a partir da memória inacessível a partir de uma entidade operando dentro de um modo de privilégio de sistema operacional, um ou mais recursos do sistema operacional. Recursos ilustrativos incluem uma tabela de expedição de serviços do sistema (SSDT), uma tabela de expedição de interrupção (IDT), e 5 /ou uma tabela de descritor global (GDT). Como descrito acima, esta identificação pode ocorrer dentro de um monitor de máquina virtual (por exemplo, pelo agente de proteção 134 da figura 1) ou dentro de uma partição virtual separada (por exemplo, pelo agente de proteção 142 da figura 1).
Enquanto isso, o bloco 706 representa determinar se qualquer um dos recursos 10 identificados foi alterado. Novamente, isto pode acontecer dentro de um monitor de máquina virtual ou dentro de uma partição separada. Se o bloco 706 determinar que um ou mais dos recursos identificados realmente foi alterado, então o bloco 708 termina o sistema operacional em resposta a esta determinação. Finalmente, o bloco 710 notifica ao sistema operacional sobre uma operação ilegal quando da reinicialização do sistema operacional.
A figura 8 ilustra um processo 800 para permitir a um agente de proteção funcionar
dentro de um monitor de máquina virtual. O bloco 802 altera um gerenciador de interceptação de monitor de máquina virtual eficaz para permitir a recepção de uma identificação de que uma página da memória ou registrador associado com uma recurso do sistema operacional foi alterado. Este recurso pode compreender um dos recursos descritos 20 com referência à figura 7, ou pode ser outro recurso do sistema operacional. Em qualquer caso, o bloco 804 recebe uma política de imposição identificando o recurso do sistema operacional e possivelmente um ou mais outros recursos do sistema operacional. Novamente, esta identificação pode ser feita via as técnicas discutidas acima. Como descrito acima, um atributo de proteção (por exemplo, “somente leitura” ou “inicialização 25 somente leitura”) do recurso pode acompanhar a identificação do recurso. O bloco 806, enquanto isso, representa a recepção de uma indicação de que a página ou registrador da memória associado com o recurso do sistema operacional realmente foi alterada. Em resposta, o bloco 808 encerra um modo de privilégio de sistema operacional eficaz em encerrar um sistema operacional associado com o recurso do sistema operacional. Em 30 alguns casos, o monitor de máquina virtual 108 da figura 1 pode realizar este encerramento do modo de privilégio de sistema operacional.
A seguir, a figura 9 descreve um processo ilustrativo 900 para criar 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 requisição de que uma faixa particular de 35 memória seja feita inalterável ou inacessível a partir de um modo de privilégio de sistema operacional. Novamente, um monitor de máquina virtual pode receber esta requisição, a qual pode se originar a partir da própria faixa de memória ou a partir de um agente de proteção residindo na faixa de memória. O bloco 904 protege a faixa de memória e estabelece um temporizador para periodicamente executar o agente de proteção residindo na faixa de memória. Novamente, um monitor de máquina virtual pode estabelecer tal temporizador, o qual pode instruir o monitor de máquina virtual para executar o agente de proteção em intervalos regulares.
Enquanto isso, o bloco 906 recebe uma política de imposição descrevendo um recurso do sistema operacional. Novamente, a política de imposição e o recurso descrito podem ser similares ou idênticos a estes discutidos acima. O bloco 908 executa o agente de proteção, o qual pode ser obtido pelo monitor de máquina virtual. O bloco de decisão 910 10 questiona se o recurso do sistema operacional foi alterado. O agente de proteção pode fazer esta determinar por funcionar da forma descrita em detalhes acima. Se o bloco 910 realmente determinar que uma alteração ocorreu, então o bloco 812 encerra o sistema operacional. Entretanto, se nenhuma determinação for feita, então o bloco 914 recebe uma notificação de que o agente de proteção terminou a execução. Em alguns casos e como 15 descrito acima, o próprio agente de proteção pode desse modo notificar o monitor de máquina virtual. O bloco 916, enquanto isso, representa a ciclagem entre executar o agente de proteção e não executar o agente de proteção. Finalmente, observe que enquanto o agente de proteção não executa, o monitor de máquina virtual pode encerrar o sistema operacional em resposta a um acesso tentado a partir de uma entidade operando dentro do 20 modo de privilégio de sistema operacional, da faixa de memória associada com o agente de proteção.
A figura 10 ilustra outro processo ilustrativo 1000 para criar 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 de computador real em vários 25 processadores de computador virtuais. Estes processadores virtuais podem compreender um ou mais processadores virtuais de sistema operacional, cada um possuindo um privilégio para alterar sua própria memória do sistema operacional e utilizar uma parte de uma largura de banda de processamento dos processadores reais, como ilustrado na figura 6. Os processadores virtuais também podem incluir pelo menos um processador virtual de agente 30 de proteção possuindo um privilégio para alterar sua própria memória de agente de proteção e utilizar uma parte diferente da largura de banda de processamento dos processadores reais. Enquanto todos os processadores virtuais podem ser programados pelo monitor de máquina virtual, o processador virtual de agente de proteção pode ser transparente para os processadores virtuais de sistema operacional. Em alguns casos, os processadores virtuais 35 de sistema operacional podem ser incapazes de alterar memória designada para o processador virtual de agente de proteção. Adicionalmente, o processador virtual de agente de proteção pode ser um processador dedicado cujo propósito principal ou único é causar que o agente de proteção execute, como discutido acima. A seguir, o bloco 1004 causa que o processador virtual de agente de proteção execute um agente de proteção, o qual pode ser eficaz para determinar se uma parte da dita memória do sistema operacional foi ou não alterada. O bloco 1006, enquanto isso, recebe uma indicação de que uma parte da memória de sistema operacional foi alterada. Em resposta, o bloco 1008 encerra um sistema operacional correspondente.
Finalmente, a figura 11 representa um processo 1100 para adicionar um modo de privilégio para um processador de computação real. O bloco 1102 representa a determinação, identificação, ou classificação de um ou mais modos de privilégio presentes em um processador físico subjacente. Estes modos de privilégio são geralmente definidos pelo próprio processador físico subjacente. De qualquer forma, o bloco 1104 adiciona um modo de privilégio que não está presente no processador físico subjacente. Em alguns casos, o modo de privilégio adicionado é capaz de alterar uma parte de memória do dispositivo de computação que é diferente de uma parte de memória que pode ser alterada por um ou mais modos de privilégio presentes. O modo de privilégio adicionado também pode ser capaz de adicionar e executar instruções que anteriormente não existiam ou não eram executáveis no processador subjacente.
Adicionalmente, o um ou mais modos de privilégio presentes no processador físico subjacente podem incluir um modo de privilégio de usuário e um modo de privilégio de sistema operacional. Nestas concretizações, o modo de privilégio adicionado pode ser mais privilegiado do que tanto o modo de privilégio de usuário como o modo de privilégio de sistema operacional, mais privilegiado do que o modo de privilégio de usuário, mas menos privilegiado do que o modo de privilégio de sistema operacional, ou menos privilegiado do que ambos modos de privilégio do usuário e de sistema operacional. Finalmente, observe que um caso da adição do modo de privilégio pode compreender adicionar 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) dos vários modos discutidos acima. Por exemplo, um agente de proteção ou sua faixa de memória associada pode requisitar que a faixa de memória seja feita inacessível a partir de entidades operando dentro do modo de privilégio de sistema operacional. Um monitor de máquina virtual também pode criar este modo de privilégio por programar um processador virtual de agente de proteção para executar o agente de proteção.
Conclusão
As ferramentas descritas acima 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, por permitir que o agente de proteção resida em uma localização que é inacessível a partir do modo de privilégio de sistema operacional, ou por criar um modo de privilégio de agente de proteção. Apesar das ferramentas terem sido descritas em linguagem específica para aspectos estruturais e/ou atos metodológicos, é para ser entendido que as ferramentas definidas nas reivindicações anexas não estão necessariamente limitadas aos aspetos ou aos atos específicos descritos. Ao invés disso, os aspectos e atos específicos são revelados como formas ilustrativas de implementação das ferramentas.

Claims (20)

1. Meio legível por computador, CARACTERIZADO por possuir instruções legíveis por computador no mesmo que, quando executadas por um dispositivo de computação (102), fazem com que o dispositivo de computação (102) execute atos, compreendendo: receber (902), em um monitor de máquina virtual (108), uma requisição para que uma faixa de memória (205, 306) seja feita inalterável ou inacessível a partir de um modo de privilégio de sistema operacional (126); tornar (904) a faixa de memória (206, 306) inalterável ou inacessível a partir do modo de privilégio de sistema operacional (126); e executar (908) um agente de proteção (144) que reside dentro da faixa de memória (206,306).
2. Meio, de acordo com a reivindicação 1, CARACTERIZADO por adicionalmente compreender estabelecer (904) um temporizador para executar o agente de proteção (144).
3. Meio, de acordo com a reivindicação 2, CARACTERIZADO pelo fato de que o 15 temporizador instrui o monitor de máquina virtual (108) para executar o agente de proteção (144) em intervalos regulares.
4. Meio, de acordo com a reivindicação 1, CARACTERIZADO pelo fato de que o agente de proteção (144) é configurado para receber (906) uma política de imposição descrevendo um ou mis recursos (120) acessíveis a partir do modo de privilégio de sistema operacional (126) e, em resposta à receber a política de imposição, determinar (910) se o um ou mais dentre o um ou mais recursos (120) oram alterados.
5. Meio, de acordo com a reivindicação 4, CARACTERIZADO por adicionalmente compreender encerra (912) um sistema operacional (114) associado com o modo de privilégio de sistema operacional (126) em resposta a uma determinação pelo agente de proteção (144) de que um ou mais dos um ou mais recursos (120) foram alterados.
6. Meio, de acordo com a reivindicação 4, CARACTERIZADO pelo fato de que o um ou mais recursos (120) incluem uma tabela de expedição de serviços do sistema (SSDT), uma tabela de expedição de interrupção (IDT), ou uma tabela de descritores globais (GDT).
7. Meio, de acordo com a reivindicação 1, CARACTERIZADO por adicionalmente compreender receber (914), no monitor de máquina virtual (108) e após a execução (908) do agente de proteção (144), uma notificação de que o agente de proteção (144) acabou de executar.
8. Meio, de acordo com a reivindicação 1, CARACTERIZADO por adicionalmente compreender encerrar um sistema operacional (114) associado com o modo de privilégio de sistema operacional (126) em resposta a uma tentativa de acesso a partir do modo de privilégio de sistema operacional (126), da faixa de memória (206, 306) ou do agente de proteção (144).
9. Meio, de acordo com a reivindicação 1, CARACTERIZADO por adicionalmente compreender fazer um ciclo (916) entre a execução (908) do agente de proteção (144) e a não execução do agente de proteção (144), de modo que pelo menos quando o agente de proteção (144) executa, ele fica inalterável ou inacessível a partir do modo de privilégio de sistema operacional (126).
10. Método, CARACTERIZADO por compreender: virtualizar (1002) um ou mais processadores de computação real (104(a), 104(b)) em processadores de computação virtual (506, 508, 510), os processadores de computação virtual (506, 508, 510) compreendendo: um ou mais processadores virtuais de sistema operacional (506, 508), cada um possuindo um privilégio para alterar sua própria memória de sistema operacional e utilizar uma parte de uma largura de banda de processamento (600) do um ou mais processadores de computação reais (104(a), 104(c)); e pelo menos um processador virtual de agente de proteção (510) possuindo um privilégio para alterar sua própria memória de agente de proteção e utilizar uma parte diferente da largura de banda de processamento (600) do um ou mais processadores de computação reais (104(a), 104(b)); e fazer (1004) com que o processador virtual de agente de proteção (510) execute uma agente de proteção (144) eficaz para determinar se uma parte da dita memória de sistema operacional foi ou não alterada.
11. Método, de acordo com a reivindicação 10, CARACTERIZADO por adicionalmente compreender: receber (1006) uma indicação de que o agente de proteção (144) determinou que a parte da dita memória de sistema operacional foi alterada; e em resposta a recepção da indicação, encerrar (1008) um sistema operacional correspondente (114).
12. Método, de acordo com a reivindicação 10, CARACTERIZADO pelo fato de que o um ou mais processadores virtuais de sistema operacional (506, 508) são incapazes de alterar a memória de agente de proteção.
13. Método, de acordo com a reivindicação 10, CARACTERIZADO pelo fato de que o ato de causar (1004) que o processador virtual de agente de proteção (510) execute o agente de proteção (144) compreende causar que o processador virtual de agente de proteção (510) execute o agente de proteção (144) em intervalos de tempo especificados.
14. Método, de acordo com a reivindicação 10, CARACTERIZADO pelo fato de que o processador virtual de agente de proteção (510) é dedicado somente para executar o agente de proteção (144).
15. Método, de acordo com a reivindicação 10, CARACTERIZADO pelo fato de que o processador virtual de agente de proteção (510) é programado por um monitor de máquina virtual (108) e é transparente para um sistema operacional (114) associado com a dita memória de sistema operacional.
16. Meio legível por computador, CARACTERIZADO por possuir instruções legíveis por computador nos mesmos que, quando executadas por um dispositivo de computação (102) compreendendo um processador físico subjacente (104) que inclui um ou mais modos de privilégio, fazem com que o dispositivo de computação (102) adicione (1104) um modo de privilégio que não está presente no processador físico subjacente (104).
17. Meio, de acordo com a reivindicação 16, CARACTERIZADO pelo fato de que o modo de privilégio adicionado é capaz de alterar uma parte de memória do dispositivo de computação (102) que é diferente de uma parte de memória que é inalterável pelo um ou mais modos de privilégio que estão inicialmente presentes no processador físico subjacente (104).
18. Meio, de acordo com a reivindicação 16, CARACTERIZADO pelo fato de que o um ou mais modos de privilégio inicialmente presentes no processador físico subjacente (102) incluem um modo de privilégio de usuário (128) e um modo de privilégio de sistema operacional (126), e onde o modo de privilégio adicionado é mais privilegiado do que tanto o modo de privilégio de usuário (128) como o modo de privilégio de sistema operacional (126).
19. Meio, de acordo com a reivindicação 16, CARACTERIZADO pelo fato de que o um ou mais modos de privilégio inicialmente presentes no processador físico subjacente (104) incluem um modo de privilégio de usuário (128) e um modo de privilégio de sistema operacional (126), e onde o modo de privilégio adicionado é mais privilegiado do que o modo de privilégio de usuário (128), mas menos privilegiado do que o modo de privilégio de sistema operacional (126).
20. Meio, de acordo com a reivindicação 16, CARACTERIZADO pelo fato de que o um ou mais modos de privilégio inicialmente presentes no processador físico subjacente incluem um modo de privilégio de sistema operacional (126), e onde a adição (1104) do modo de privilégio compreende chamar um monitor de máquina virtual (108) para requisitar que uma faixa de memória (206, 306) associada com um agente de proteção (144) seja feita inalterável ou inacessível a partir do modo de privilégio de sistema operacional (126).
BRPI0720921A 2007-01-25 2007-12-12 agentes de proteção e modos de privilégio. BRPI0720921B1 (pt)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/627.320 2007-01-25
US11/627,320 US8380987B2 (en) 2007-01-25 2007-01-25 Protection agents and privilege modes
PCT/US2007/087225 WO2008091452A1 (en) 2007-01-25 2007-12-12 Protection agents and privilege modes

Publications (3)

Publication Number Publication Date
BRPI0720921A2 true BRPI0720921A2 (pt) 2014-08-05
BRPI0720921A8 BRPI0720921A8 (pt) 2017-01-17
BRPI0720921B1 BRPI0720921B1 (pt) 2018-11-13

Family

ID=39644770

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0720921A BRPI0720921B1 (pt) 2007-01-25 2007-12-12 agentes de proteção e modos de privilégio.

Country Status (10)

Country Link
US (1) US8380987B2 (pt)
EP (1) EP2115570B1 (pt)
JP (2) JP5055380B2 (pt)
CN (1) CN101589364B (pt)
BR (1) BRPI0720921B1 (pt)
CL (1) CL2008000168A1 (pt)
ES (1) ES2683074T3 (pt)
RU (1) RU2468418C2 (pt)
TW (1) TWI475388B (pt)
WO (1) WO2008091452A1 (pt)

Families Citing this family (268)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8539063B1 (en) 2003-08-29 2013-09-17 Mcafee, Inc. Method and system for containment of networked application client software by explicit human input
US7840968B1 (en) 2003-12-17 2010-11-23 Mcafee, Inc. Method and system for containment of usage of language interfaces
US8171553B2 (en) 2004-04-01 2012-05-01 Fireeye, Inc. Heuristic based capture with replay to virtual machine
US9106694B2 (en) 2004-04-01 2015-08-11 Fireeye, Inc. Electronic message analysis for malware detection
US8528086B1 (en) 2004-04-01 2013-09-03 Fireeye, Inc. System and method of detecting computer worms
US8584239B2 (en) 2004-04-01 2013-11-12 Fireeye, Inc. Virtual machine with dynamic data flow analysis
US7587537B1 (en) 2007-11-30 2009-09-08 Altera Corporation Serializer-deserializer circuits formed from input-output circuit registers
US8898788B1 (en) 2004-04-01 2014-11-25 Fireeye, Inc. Systems and methods for malware attack prevention
US8549638B2 (en) 2004-06-14 2013-10-01 Fireeye, Inc. System and method of containing computer worms
US8539582B1 (en) * 2004-04-01 2013-09-17 Fireeye, Inc. Malware containment and security analysis on connection
US9027135B1 (en) 2004-04-01 2015-05-05 Fireeye, Inc. Prospective client identification using malware attack detection
US8566946B1 (en) 2006-04-20 2013-10-22 Fireeye, Inc. Malware containment on connection
US8793787B2 (en) 2004-04-01 2014-07-29 Fireeye, Inc. Detecting malicious network content using virtual environment components
US8881282B1 (en) 2004-04-01 2014-11-04 Fireeye, Inc. Systems and methods for malware attack detection and identification
US7873955B1 (en) 2004-09-07 2011-01-18 Mcafee, Inc. Solidifying the executable software set of a computer
US7856661B1 (en) 2005-07-14 2010-12-21 Mcafee, Inc. Classification of software on networked systems
US7757269B1 (en) 2006-02-02 2010-07-13 Mcafee, Inc. Enforcing alignment of approved changes and deployed changes in the software change life-cycle
US7895573B1 (en) 2006-03-27 2011-02-22 Mcafee, Inc. Execution environment file inventory
US7870387B1 (en) 2006-04-07 2011-01-11 Mcafee, Inc. Program-based authorization
US8352930B1 (en) 2006-04-24 2013-01-08 Mcafee, Inc. Software modification by group to minimize breakage
US8555404B1 (en) 2006-05-18 2013-10-08 Mcafee, Inc. Connectivity-based authorization
US9424154B2 (en) 2007-01-10 2016-08-23 Mcafee, Inc. Method of and system for computer system state checks
US8332929B1 (en) 2007-01-10 2012-12-11 Mcafee, Inc. Method and apparatus for process enforced configuration management
US8380987B2 (en) 2007-01-25 2013-02-19 Microsoft Corporation Protection agents and privilege modes
US7765374B2 (en) 2007-01-25 2010-07-27 Microsoft Corporation Protecting operating-system resources
US8190778B2 (en) * 2007-03-06 2012-05-29 Intel Corporation Method and apparatus for network filtering and firewall protection on a secure partition
KR101396831B1 (ko) * 2007-03-30 2014-05-21 삼성전자주식회사 메모리 접근 제어 방법
US20090007100A1 (en) * 2007-06-28 2009-01-01 Microsoft Corporation Suspending a Running Operating System to Enable Security Scanning
US9164784B2 (en) * 2007-10-12 2015-10-20 International Business Machines Corporation Signalizing an external event using a dedicated virtual central processing unit
US8195931B1 (en) 2007-10-31 2012-06-05 Mcafee, Inc. Application change control
US8515075B1 (en) 2008-01-31 2013-08-20 Mcafee, Inc. Method of and system for malicious software detection using critical address space protection
US8615502B2 (en) 2008-04-18 2013-12-24 Mcafee, Inc. Method of and system for reverse mapping vnode pointers
US8997219B2 (en) 2008-11-03 2015-03-31 Fireeye, Inc. Systems and methods for detecting malicious PDF network content
US8850571B2 (en) 2008-11-03 2014-09-30 Fireeye, Inc. Systems and methods for detecting malicious network content
US8544003B1 (en) 2008-12-11 2013-09-24 Mcafee, Inc. System and method for managing virtual machine configurations
US8776028B1 (en) * 2009-04-04 2014-07-08 Parallels IP Holdings GmbH Virtual execution environment for software delivery and feedback
US8341749B2 (en) * 2009-06-26 2012-12-25 Vmware, Inc. Preventing malware attacks in virtualized mobile devices
US8381284B2 (en) * 2009-08-21 2013-02-19 Mcafee, Inc. System and method for enforcing security policies in a virtual environment
US8341627B2 (en) 2009-08-21 2012-12-25 Mcafee, Inc. Method and system for providing user space address protection from writable memory area in a virtual environment
US8635705B2 (en) * 2009-09-25 2014-01-21 Intel Corporation Computer system and method with anti-malware
US8832829B2 (en) 2009-09-30 2014-09-09 Fireeye, Inc. Network-based binary file extraction and analysis for malware detection
US8621460B2 (en) * 2009-11-02 2013-12-31 International Business Machines Corporation Endpoint-hosted hypervisor management
US9552497B2 (en) 2009-11-10 2017-01-24 Mcafee, Inc. System and method for preventing data loss using virtual machine wrapped applications
US8925101B2 (en) 2010-07-28 2014-12-30 Mcafee, Inc. System and method for local protection against malicious software
US8938800B2 (en) 2010-07-28 2015-01-20 Mcafee, Inc. System and method for network level protection against malicious software
US8495750B2 (en) 2010-08-31 2013-07-23 International Business Machines Corporation Filesystem management and security system
US8549003B1 (en) 2010-09-12 2013-10-01 Mcafee, Inc. System and method for clustering host inventories
US20120144489A1 (en) * 2010-12-07 2012-06-07 Microsoft Corporation Antimalware Protection of Virtual Machines
US9075993B2 (en) 2011-01-24 2015-07-07 Mcafee, Inc. System and method for selectively grouping and managing program files
US9112830B2 (en) 2011-02-23 2015-08-18 Mcafee, Inc. System and method for interlocking a host and a gateway
EP3651042A1 (en) * 2011-03-22 2020-05-13 Telefonaktiebolaget LM Ericsson (publ) Method for switching between virtualized and non-virtualized system operation
US9087199B2 (en) 2011-03-31 2015-07-21 Mcafee, Inc. System and method for providing a secured operating system execution environment
US8813227B2 (en) 2011-03-29 2014-08-19 Mcafee, Inc. System and method for below-operating system regulation and control of self-modifying code
US9317690B2 (en) 2011-03-28 2016-04-19 Mcafee, Inc. System and method for firmware based anti-malware security
US8966624B2 (en) 2011-03-31 2015-02-24 Mcafee, Inc. System and method for securing an input/output path of an application against malware with a below-operating system security agent
US8959638B2 (en) 2011-03-29 2015-02-17 Mcafee, Inc. System and method for below-operating system trapping and securing of interdriver communication
US9032525B2 (en) 2011-03-29 2015-05-12 Mcafee, Inc. System and method for below-operating system trapping of driver filter attachment
US8925089B2 (en) 2011-03-29 2014-12-30 Mcafee, Inc. System and method for below-operating system modification of malicious code on an electronic device
US20120255003A1 (en) * 2011-03-31 2012-10-04 Mcafee, Inc. System and method for securing access to the objects of an operating system
US8863283B2 (en) 2011-03-31 2014-10-14 Mcafee, Inc. System and method for securing access to system calls
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
US8966629B2 (en) * 2011-03-31 2015-02-24 Mcafee, Inc. System and method for below-operating system trapping of driver loading and unloading
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
US8650642B2 (en) * 2011-03-31 2014-02-11 Mcafee, Inc. System and method for below-operating system protection of an operating system kernel
US9298910B2 (en) 2011-06-08 2016-03-29 Mcafee, Inc. System and method for virtual partition monitoring
JP6063941B2 (ja) 2011-08-30 2017-01-18 ヒューレット−パッカード デベロップメント カンパニー エル.ピー.Hewlett‐Packard Development Company, L.P. システム管理要求のための仮想高特権モード
US9594881B2 (en) 2011-09-09 2017-03-14 Mcafee, Inc. System and method for passive threat detection using virtual memory inspection
US8694738B2 (en) 2011-10-11 2014-04-08 Mcafee, Inc. System and method for critical address space protection in a hypervisor environment
US8973144B2 (en) 2011-10-13 2015-03-03 Mcafee, Inc. System and method for kernel rootkit protection in a hypervisor environment
US9069586B2 (en) 2011-10-13 2015-06-30 Mcafee, Inc. System and method for kernel rootkit protection in a hypervisor environment
US8788763B2 (en) * 2011-10-13 2014-07-22 International Business Machines Corporation Protecting memory of a virtual guest
US8782351B2 (en) * 2011-10-13 2014-07-15 International Business Machines Corporation Protecting memory of a virtual guest
US8800024B2 (en) 2011-10-17 2014-08-05 Mcafee, Inc. System and method for host-initiated firewall discovery in a network environment
US8713668B2 (en) 2011-10-17 2014-04-29 Mcafee, Inc. System and method for redirected firewall discovery in a network environment
CN102521531B (zh) * 2011-11-24 2014-11-12 华中科技大学 基于硬件虚拟化的密码保护系统
US9916454B2 (en) 2011-12-22 2018-03-13 Intel Corporation User controllable platform-level trigger to set policy for protecting platform from malware
EP2795511A4 (en) 2011-12-22 2015-12-16 Intel Corp USER-CONTROLLABLE PLATFORM LEVEL SHIFTER FOR SETTING GUIDELINES FOR THE PROTECTION OF THE PLATFORM FROM DAMAGE PROGRAMS
CN104025041B (zh) * 2011-12-29 2018-05-25 英特尔公司 管理员模式执行保护
US9519782B2 (en) 2012-02-24 2016-12-13 Fireeye, Inc. Detecting malicious network content
US8739272B1 (en) 2012-04-02 2014-05-27 Mcafee, Inc. System and method for interlocking a host and a gateway
US20130312099A1 (en) * 2012-05-21 2013-11-21 Mcafee, Inc. Realtime Kernel Object Table and Type Protection
US9405682B2 (en) * 2012-06-23 2016-08-02 Microsoft Technology Licensing, Llc Storage device access using unprivileged software code
EP2864876B1 (en) * 2012-06-26 2017-10-04 Lynuxworks, Inc. Systems and methods involving features of hardware virtualization such as separation kernel hypervisors, hypervisors, hypervisor guest context, hypervisor context, rootkit detection/prevention, and/or other features
US8832837B2 (en) * 2012-06-29 2014-09-09 Mcafee Inc. Preventing attacks on devices with multiple CPUs
US8973146B2 (en) 2012-12-27 2015-03-03 Mcafee, Inc. Herd based scan avoidance system in a network environment
US10572665B2 (en) 2012-12-28 2020-02-25 Fireeye, Inc. System and method to create a number of breakpoints in a virtual machine via virtual machine trapping events
US9183161B2 (en) * 2012-12-28 2015-11-10 Intel Corporation Apparatus and method for page walk extension for enhanced security checks
US10063380B2 (en) 2013-01-22 2018-08-28 Amazon Technologies, Inc. Secure interface for invoking privileged operations
US9170956B2 (en) * 2013-02-07 2015-10-27 Texas Instruments Incorporated System and method for virtual hardware memory protection
US9367681B1 (en) 2013-02-23 2016-06-14 Fireeye, Inc. Framework for efficient security coverage of mobile software applications using symbolic execution to reach regions of interest within an application
US9824209B1 (en) 2013-02-23 2017-11-21 Fireeye, Inc. Framework for efficient security coverage of mobile software applications that is usable to harden in the field code
US9009823B1 (en) 2013-02-23 2015-04-14 Fireeye, Inc. Framework for efficient security coverage of mobile software applications installed on mobile devices
US9159035B1 (en) 2013-02-23 2015-10-13 Fireeye, Inc. Framework for computer application analysis of sensitive information tracking
US9176843B1 (en) 2013-02-23 2015-11-03 Fireeye, Inc. Framework for efficient security coverage of mobile software applications
US9009822B1 (en) 2013-02-23 2015-04-14 Fireeye, Inc. Framework for multi-phase analysis of mobile applications
US9195829B1 (en) 2013-02-23 2015-11-24 Fireeye, Inc. User interface with real-time visual playback along with synchronous textual analysis log display and event/time index for anomalous behavior detection in applications
US8990944B1 (en) 2013-02-23 2015-03-24 Fireeye, Inc. Systems and methods for automatically detecting backdoors
US9407505B2 (en) * 2013-03-04 2016-08-02 Amazon Technologies, Inc. Configuration and verification by trusted provider
US9565202B1 (en) 2013-03-13 2017-02-07 Fireeye, Inc. System and method for detecting exfiltration content
US9355247B1 (en) 2013-03-13 2016-05-31 Fireeye, Inc. File extraction from memory dump for malicious content analysis
US9626509B1 (en) 2013-03-13 2017-04-18 Fireeye, Inc. Malicious content analysis with multi-version application support within single operating environment
US9104867B1 (en) 2013-03-13 2015-08-11 Fireeye, Inc. Malicious content analysis using simulated user interaction without user involvement
WO2014142817A1 (en) * 2013-03-13 2014-09-18 Intel Corporation Managing device driver cross ring accesses
US9311479B1 (en) 2013-03-14 2016-04-12 Fireeye, Inc. Correlation and consolidation of analytic data for holistic view of a malware attack
US9430646B1 (en) 2013-03-14 2016-08-30 Fireeye, Inc. Distributed systems and methods for automatically detecting unknown bots and botnets
WO2014145805A1 (en) 2013-03-15 2014-09-18 Mandiant, Llc System and method employing structured intelligence to verify and contain threats at endpoints
US10713358B2 (en) 2013-03-15 2020-07-14 Fireeye, Inc. System and method to extract and utilize disassembly features to classify software intent
US9251343B1 (en) 2013-03-15 2016-02-02 Fireeye, Inc. Detecting bootkits resident on compromised computers
EP2981925B1 (en) * 2013-04-05 2019-08-28 OLogN Technologies AG Systems, methods and apparatuses for protection of antivirus software
US9495180B2 (en) 2013-05-10 2016-11-15 Fireeye, Inc. Optimized resource allocation for virtual machines within a malware content detection system
US9635039B1 (en) 2013-05-13 2017-04-25 Fireeye, Inc. Classifying sets of malicious indicators for detecting command and control communications associated with malware
US9542230B2 (en) * 2013-05-15 2017-01-10 Apple Inc. System and method for selective timer coalescing
US9904575B2 (en) 2013-05-15 2018-02-27 Apple Inc. System and method for selective timer rate limiting
RU2541120C2 (ru) 2013-06-06 2015-02-10 Закрытое акционерное общество "Лаборатория Касперского" Система и способ обнаружения вредоносных исполняемых файлов на основании сходства ресурсов исполняемых файлов
US10133863B2 (en) 2013-06-24 2018-11-20 Fireeye, Inc. Zero-day discovery system
US9536091B2 (en) 2013-06-24 2017-01-03 Fireeye, Inc. System and method for detecting time-bomb malware
US9888016B1 (en) 2013-06-28 2018-02-06 Fireeye, Inc. System and method for detecting phishing using password prediction
US9300686B2 (en) 2013-06-28 2016-03-29 Fireeye, Inc. System and method for detecting malicious links in electronic messages
US9117080B2 (en) * 2013-07-05 2015-08-25 Bitdefender IPR Management Ltd. Process evaluation for malware detection in virtual machines
US9736179B2 (en) 2013-09-30 2017-08-15 Fireeye, Inc. System, apparatus and method for using malware analysis results to drive adaptive instrumentation of virtual machines to improve exploit detection
US10192052B1 (en) 2013-09-30 2019-01-29 Fireeye, Inc. System, apparatus and method for classifying a file as malicious using static scanning
US9690936B1 (en) 2013-09-30 2017-06-27 Fireeye, Inc. Multistage system and method for analyzing obfuscated content for malware
US9294501B2 (en) 2013-09-30 2016-03-22 Fireeye, Inc. Fuzzy hash of behavioral results
US9628507B2 (en) 2013-09-30 2017-04-18 Fireeye, Inc. Advanced persistent threat (APT) detection center
US9171160B2 (en) 2013-09-30 2015-10-27 Fireeye, Inc. Dynamically adaptive framework and method for classifying malware using intelligent static, emulation, and dynamic analyses
US10515214B1 (en) 2013-09-30 2019-12-24 Fireeye, Inc. System and method for classifying malware within content created during analysis of a specimen
US10089461B1 (en) 2013-09-30 2018-10-02 Fireeye, Inc. Page replacement code injection
EP3061030A4 (en) 2013-10-24 2017-04-19 McAfee, Inc. Agent assisted malicious application blocking in a network environment
US9921978B1 (en) 2013-11-08 2018-03-20 Fireeye, Inc. System and method for enhanced security of storage devices
US9189627B1 (en) 2013-11-21 2015-11-17 Fireeye, Inc. System, apparatus and method for conducting on-the-fly decryption of encrypted objects for malware detection
JP5963313B2 (ja) * 2013-12-19 2016-08-03 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 情報処理装置、方法、及び、プログラム
US9756074B2 (en) 2013-12-26 2017-09-05 Fireeye, Inc. System and method for IPS and VM-based detection of suspicious objects
US9747446B1 (en) 2013-12-26 2017-08-29 Fireeye, Inc. System and method for run-time object classification
US9756069B1 (en) * 2014-01-10 2017-09-05 Trend Micro Inc. Instant raw scan on host PC with virtualization technology
US9292686B2 (en) * 2014-01-16 2016-03-22 Fireeye, Inc. Micro-virtualization architecture for threat-aware microvisor deployment in a node of a network environment
US9262635B2 (en) 2014-02-05 2016-02-16 Fireeye, Inc. Detection efficacy of virtual machine-based analysis with application specific events
US9241010B1 (en) 2014-03-20 2016-01-19 Fireeye, Inc. System and method for network behavior detection
US10242185B1 (en) 2014-03-21 2019-03-26 Fireeye, Inc. Dynamic guest image creation and rollback
US9591015B1 (en) 2014-03-28 2017-03-07 Fireeye, Inc. System and method for offloading packet processing and static analysis operations
US9432389B1 (en) 2014-03-31 2016-08-30 Fireeye, Inc. System, apparatus and method for detecting a malicious attack based on static analysis of a multi-flow object
US9223972B1 (en) 2014-03-31 2015-12-29 Fireeye, Inc. Dynamically remote tuning of a malware content detection system
RU2580030C2 (ru) * 2014-04-18 2016-04-10 Закрытое акционерное общество "Лаборатория Касперского" Система и способ распределения задач антивирусной проверки между виртуальными машинами в виртуальной сети
WO2016004263A1 (en) 2014-07-01 2016-01-07 Lynx Software Technologies, Inc. Systems and methods involving aspects of hardware virtualization such as separation kernel hypervisors, hypervisors, hypervisor guest context, hypervisor context, anti-fingerprinting, and/or other features
US9213840B2 (en) 2014-05-15 2015-12-15 Lynx Software Technologies, Inc. Systems and methods involving features of hardware virtualization, hypervisor, APIs of interest, and/or other features
US9203855B1 (en) 2014-05-15 2015-12-01 Lynx Software Technologies, Inc. Systems and methods involving aspects of hardware virtualization such as hypervisor, detection and interception of code or instruction execution including API calls, and/or other features
US9390267B2 (en) 2014-05-15 2016-07-12 Lynx Software Technologies, Inc. Systems and methods involving features of hardware virtualization, hypervisor, pages of interest, and/or other features
US9973531B1 (en) 2014-06-06 2018-05-15 Fireeye, Inc. Shellcode detection
US9438623B1 (en) 2014-06-06 2016-09-06 Fireeye, Inc. Computer exploit detection using heap spray pattern matching
US9594912B1 (en) 2014-06-06 2017-03-14 Fireeye, Inc. Return-oriented programming detection
US10084813B2 (en) 2014-06-24 2018-09-25 Fireeye, Inc. Intrusion prevention and remedy system
US10805340B1 (en) 2014-06-26 2020-10-13 Fireeye, Inc. Infection vector and malware tracking with an interactive user display
US9398028B1 (en) 2014-06-26 2016-07-19 Fireeye, Inc. System, device and method for detecting a malicious attack based on communcations between remotely hosted virtual machines and malicious web servers
US11782745B2 (en) 2014-07-01 2023-10-10 Lynx Software Technologies, Inc. Systems and methods involving aspects of hardware virtualization such as separation kernel hypervisors, hypervisors, hypervisor guest context, hypervisor context, anti-fingerprinting and/or other features
US10002252B2 (en) 2014-07-01 2018-06-19 Fireeye, Inc. Verification of trusted threat-aware microvisor
US9363280B1 (en) 2014-08-22 2016-06-07 Fireeye, Inc. System and method of detecting delivery of malware using cross-customer data
US10671726B1 (en) 2014-09-22 2020-06-02 Fireeye Inc. System and method for malware analysis using thread-level event monitoring
US10027689B1 (en) 2014-09-29 2018-07-17 Fireeye, Inc. Interactive infection visualization for improved exploit detection and signature generation for malware and malware families
US9773112B1 (en) 2014-09-29 2017-09-26 Fireeye, Inc. Exploit detection of malware and malware families
RU2585978C2 (ru) * 2014-09-30 2016-06-10 Закрытое акционерное общество "Лаборатория Касперского" Способ вызова системных функций в условиях использования средств защиты ядра операционной системы
US9690933B1 (en) 2014-12-22 2017-06-27 Fireeye, Inc. Framework for classifying an object as malicious with machine learning for deploying updated predictive models
US10075455B2 (en) 2014-12-26 2018-09-11 Fireeye, Inc. Zero-day rotating guest image profile
US9934376B1 (en) 2014-12-29 2018-04-03 Fireeye, Inc. Malware detection appliance architecture
US9838417B1 (en) 2014-12-30 2017-12-05 Fireeye, Inc. Intelligent context aware user interaction for malware detection
US10725770B2 (en) 2015-01-19 2020-07-28 Vmware, Inc. Hot-swapping operating systems using inter-partition application migration
US10445123B2 (en) 2015-01-19 2019-10-15 Vmware, Inc. Hypervisor exchange with virtual-machine consolidation
US10007546B2 (en) * 2015-01-19 2018-06-26 Vmware, Inc. Operating-system exchanges using memory-pointer transfers
US9779240B2 (en) * 2015-01-30 2017-10-03 Vmware, Inc. System and method for hypervisor-based security
US9690606B1 (en) 2015-03-25 2017-06-27 Fireeye, Inc. Selective system call monitoring
US10148693B2 (en) 2015-03-25 2018-12-04 Fireeye, Inc. Exploit detection system
US9438613B1 (en) 2015-03-30 2016-09-06 Fireeye, Inc. Dynamic content activation for automated analysis of embedded objects
US10474813B1 (en) 2015-03-31 2019-11-12 Fireeye, Inc. Code injection technique for remediation at an endpoint of a network
US9483644B1 (en) 2015-03-31 2016-11-01 Fireeye, Inc. Methods for detecting file altering malware in VM based analysis
US10417031B2 (en) 2015-03-31 2019-09-17 Fireeye, Inc. Selective virtualization for security threat detection
US9654485B1 (en) 2015-04-13 2017-05-16 Fireeye, Inc. Analytics-based security monitoring system and method
US9594904B1 (en) 2015-04-23 2017-03-14 Fireeye, Inc. Detecting malware based on reflection
US9958933B2 (en) 2015-06-04 2018-05-01 Apple Inc. Opportunistic waking of an application processor
GB2539429B (en) 2015-06-16 2017-09-06 Advanced Risc Mach Ltd Address translation
GB2539436B (en) * 2015-06-16 2019-02-06 Advanced Risc Mach Ltd Secure initialisation
GB2539428B (en) 2015-06-16 2020-09-09 Advanced Risc Mach Ltd Data processing apparatus and method with ownership table
GB2539433B8 (en) 2015-06-16 2018-02-21 Advanced Risc Mach Ltd Protected exception handling
GB2539435B8 (en) 2015-06-16 2018-02-21 Advanced Risc Mach Ltd Data processing memory access control, in which an owning process for a region of memory is specified independently of privilege level
US10454950B1 (en) 2015-06-30 2019-10-22 Fireeye, Inc. Centralized aggregation technique for detecting lateral movement of stealthy cyber-attacks
US10726127B1 (en) 2015-06-30 2020-07-28 Fireeye, Inc. System and method for protecting a software component running in a virtual machine through virtual interrupts by the virtualization layer
US10642753B1 (en) 2015-06-30 2020-05-05 Fireeye, Inc. System and method for protecting a software component running in virtual machine using a virtualization layer
US10216927B1 (en) 2015-06-30 2019-02-26 Fireeye, Inc. System and method for protecting memory pages associated with a process using a virtualization layer
US11113086B1 (en) 2015-06-30 2021-09-07 Fireeye, Inc. Virtual system and method for securing external network connectivity
US10395029B1 (en) * 2015-06-30 2019-08-27 Fireeye, Inc. Virtual system and method with threat protection
US10715542B1 (en) 2015-08-14 2020-07-14 Fireeye, Inc. Mobile application risk analysis
US10176321B2 (en) 2015-09-22 2019-01-08 Fireeye, Inc. Leveraging behavior-based rules for malware family classification
US10033759B1 (en) 2015-09-28 2018-07-24 Fireeye, Inc. System and method of threat detection under hypervisor control
US10033747B1 (en) 2015-09-29 2018-07-24 Fireeye, Inc. System and method for detecting interpreter-based exploit attacks
US10601865B1 (en) 2015-09-30 2020-03-24 Fireeye, Inc. Detection of credential spearphishing attacks using email analysis
US9825989B1 (en) 2015-09-30 2017-11-21 Fireeye, Inc. Cyber attack early warning system
US9825976B1 (en) 2015-09-30 2017-11-21 Fireeye, Inc. Detection and classification of exploit kits
US10706149B1 (en) 2015-09-30 2020-07-07 Fireeye, Inc. Detecting delayed activation malware using a primary controller and plural time controllers
US10210329B1 (en) 2015-09-30 2019-02-19 Fireeye, Inc. Method to detect application execution hijacking using memory protection
US10817606B1 (en) 2015-09-30 2020-10-27 Fireeye, Inc. Detecting delayed activation malware using a run-time monitoring agent and time-dilation logic
EP3369028B1 (en) * 2015-10-29 2021-01-20 Hewlett-Packard Development Company, L.P. Checking a security value calculated for a part of a program code
US9536088B1 (en) 2015-11-09 2017-01-03 AO Kaspersky Lab System and method for protection of memory in a hypervisor
US10284575B2 (en) 2015-11-10 2019-05-07 Fireeye, Inc. Launcher for setting analysis environment variations for malware detection
DE102015223335A1 (de) * 2015-11-25 2017-06-01 Robert Bosch Gmbh Verfahren zum Betreiben eines Mikrocontrollers
US10447728B1 (en) 2015-12-10 2019-10-15 Fireeye, Inc. Technique for protecting guest processes using a layered virtualization architecture
US10846117B1 (en) 2015-12-10 2020-11-24 Fireeye, Inc. Technique for establishing secure communication between host and guest processes of a virtualization architecture
US10108446B1 (en) 2015-12-11 2018-10-23 Fireeye, Inc. Late load technique for deploying a virtualization layer underneath a running operating system
RU2610228C1 (ru) * 2015-12-18 2017-02-08 Акционерное общество "Лаборатория Касперского" Система и способ выполнения запросов процессов операционной системы к файловой системе
US10621338B1 (en) 2015-12-30 2020-04-14 Fireeye, Inc. Method to detect forgery and exploits using last branch recording registers
US10050998B1 (en) 2015-12-30 2018-08-14 Fireeye, Inc. Malicious message analysis system
US10133866B1 (en) 2015-12-30 2018-11-20 Fireeye, Inc. System and method for triggering analysis of an object for malware in response to modification of that object
US10565378B1 (en) 2015-12-30 2020-02-18 Fireeye, Inc. Exploit of privilege detection framework
US11552986B1 (en) 2015-12-31 2023-01-10 Fireeye Security Holdings Us Llc Cyber-security framework for application of virtual features
US9824216B1 (en) 2015-12-31 2017-11-21 Fireeye, Inc. Susceptible environment detection system
US10581874B1 (en) 2015-12-31 2020-03-03 Fireeye, Inc. Malware detection system with contextual analysis
US12248560B2 (en) * 2016-03-07 2025-03-11 Crowdstrike, Inc. Hypervisor-based redirection of system calls and interrupt-based task offloading
US12339979B2 (en) 2016-03-07 2025-06-24 Crowdstrike, Inc. Hypervisor-based interception of memory and register accesses
US10476906B1 (en) 2016-03-25 2019-11-12 Fireeye, Inc. System and method for managing formation and modification of a cluster within a malware detection system
US10671721B1 (en) 2016-03-25 2020-06-02 Fireeye, Inc. Timeout management services
US10601863B1 (en) 2016-03-25 2020-03-24 Fireeye, Inc. System and method for managing sensor enrollment
US10785255B1 (en) 2016-03-25 2020-09-22 Fireeye, Inc. Cluster configuration within a scalable malware detection system
US10826933B1 (en) 2016-03-31 2020-11-03 Fireeye, Inc. Technique for verifying exploit/malware at malware detection appliance through correlation with endpoints
US10893059B1 (en) 2016-03-31 2021-01-12 Fireeye, Inc. Verification and enhancement using detection systems located at the network periphery and endpoint devices
RU2626350C1 (ru) * 2016-04-11 2017-07-26 Андрей Сергеевич Моляков Способ функционирования операционной системы вычислительного устройства программно-аппаратного комплекса
US10705867B2 (en) 2016-06-22 2020-07-07 Vmware, Inc. Hypervisor exchange with virtual machines in memory
US10169585B1 (en) 2016-06-22 2019-01-01 Fireeye, Inc. System and methods for advanced malware detection through placement of transition events
US10462173B1 (en) 2016-06-30 2019-10-29 Fireeye, Inc. Malware detection verification and enhancement by coordinating endpoint and malware detection systems
US10592678B1 (en) 2016-09-09 2020-03-17 Fireeye, Inc. Secure communications between peers using a verified virtual trusted platform module
US10491627B1 (en) 2016-09-29 2019-11-26 Fireeye, Inc. Advanced malware detection using similarity analysis
US10795991B1 (en) 2016-11-08 2020-10-06 Fireeye, Inc. Enterprise search
US10587647B1 (en) 2016-11-22 2020-03-10 Fireeye, Inc. Technique for malware detection capability comparison of network security devices
US10581879B1 (en) 2016-12-22 2020-03-03 Fireeye, Inc. Enhanced malware detection for generated objects
US10552610B1 (en) 2016-12-22 2020-02-04 Fireeye, Inc. Adaptive virtual machine snapshot update framework for malware behavioral analysis
US10523609B1 (en) 2016-12-27 2019-12-31 Fireeye, Inc. Multi-vector malware detection and analysis
US10904286B1 (en) 2017-03-24 2021-01-26 Fireeye, Inc. Detection of phishing attacks using similarity analysis
US10902119B1 (en) 2017-03-30 2021-01-26 Fireeye, Inc. Data extraction system for malware analysis
US10791138B1 (en) 2017-03-30 2020-09-29 Fireeye, Inc. Subscription-based malware detection
US10848397B1 (en) 2017-03-30 2020-11-24 Fireeye, Inc. System and method for enforcing compliance with subscription requirements for cyber-attack detection service
US10798112B2 (en) 2017-03-30 2020-10-06 Fireeye, Inc. Attribute-controlled malware detection
US10387186B2 (en) 2017-06-28 2019-08-20 Vmware, Inc. Hypervisor with virtual-memory file system
US10601848B1 (en) 2017-06-29 2020-03-24 Fireeye, Inc. Cyber-security system and method for weak indicator detection and correlation to generate strong indicators
US10855700B1 (en) 2017-06-29 2020-12-01 Fireeye, Inc. Post-intrusion detection of cyber-attacks during lateral movement within networks
US10503904B1 (en) 2017-06-29 2019-12-10 Fireeye, Inc. Ransomware detection and mitigation
US10893068B1 (en) 2017-06-30 2021-01-12 Fireeye, Inc. Ransomware file modification prevention technique
US10747872B1 (en) 2017-09-27 2020-08-18 Fireeye, Inc. System and method for preventing malware evasion
US10805346B2 (en) 2017-10-01 2020-10-13 Fireeye, Inc. Phishing attack detection
US11108809B2 (en) 2017-10-27 2021-08-31 Fireeye, Inc. System and method for analyzing binary code for malware classification using artificial neural network techniques
US11271955B2 (en) 2017-12-28 2022-03-08 Fireeye Security Holdings Us Llc Platform and method for retroactive reclassification employing a cybersecurity-based global data store
US11240275B1 (en) 2017-12-28 2022-02-01 Fireeye Security Holdings Us Llc Platform and method for performing cybersecurity analyses employing an intelligence hub with a modular architecture
US11005860B1 (en) 2017-12-28 2021-05-11 Fireeye, Inc. Method and system for efficient cybersecurity analysis of endpoint events
US10826931B1 (en) 2018-03-29 2020-11-03 Fireeye, Inc. System and method for predicting and mitigating cybersecurity system misconfigurations
US11558401B1 (en) 2018-03-30 2023-01-17 Fireeye Security Holdings Us Llc Multi-vector malware detection data sharing system for improved detection
US11003773B1 (en) 2018-03-30 2021-05-11 Fireeye, Inc. System and method for automatically generating malware detection rule recommendations
US10956477B1 (en) 2018-03-30 2021-03-23 Fireeye, Inc. System and method for detecting malicious scripts through natural language processing modeling
US11075930B1 (en) 2018-06-27 2021-07-27 Fireeye, Inc. System and method for detecting repetitive cybersecurity attacks constituting an email campaign
US11314859B1 (en) 2018-06-27 2022-04-26 FireEye Security Holdings, Inc. Cyber-security system and method for detecting escalation of privileges within an access token
US11228491B1 (en) 2018-06-28 2022-01-18 Fireeye Security Holdings Us Llc System and method for distributed cluster configuration monitoring and management
US11316900B1 (en) 2018-06-29 2022-04-26 FireEye Security Holdings Inc. System and method for automatically prioritizing rules for cyber-threat detection and mitigation
US11182473B1 (en) 2018-09-13 2021-11-23 Fireeye Security Holdings Us Llc System and method for mitigating cyberattacks against processor operability by a guest process
US11763004B1 (en) 2018-09-27 2023-09-19 Fireeye Security Holdings Us Llc System and method for bootkit detection
US10534730B1 (en) * 2018-12-20 2020-01-14 Ati Technologies Ulc Storing microcode for a virtual function in a trusted memory region
US11368475B1 (en) 2018-12-21 2022-06-21 Fireeye Security Holdings Us Llc System and method for scanning remote services to locate stored objects with malware
US12074887B1 (en) 2018-12-21 2024-08-27 Musarubra Us Llc System and method for selectively processing content after identification and removal of malicious content
US11258806B1 (en) 2019-06-24 2022-02-22 Mandiant, Inc. System and method for automatically associating cybersecurity intelligence to cyberthreat actors
US11556640B1 (en) 2019-06-27 2023-01-17 Mandiant, Inc. Systems and methods for automated cybersecurity analysis of extracted binary string sets
US11392700B1 (en) 2019-06-28 2022-07-19 Fireeye Security Holdings Us Llc System and method for supporting cross-platform data verification
JP7416480B2 (ja) * 2019-08-16 2024-01-17 フィドゥシアエッジ テクノロジーズ カンパニー リミテッド オープンインターコネクトを介してヘテロジニアスプロセッサ上でリモート認証及び情報分離を備えた信頼できるコンピューティングを実行するためのシステム及び方法
US11886585B1 (en) 2019-09-27 2024-01-30 Musarubra Us Llc System and method for identifying and mitigating cyberattacks through malicious position-independent code execution
US11637862B1 (en) 2019-09-30 2023-04-25 Mandiant, Inc. System and method for surfacing cyber-security threats with a self-learning recommendation engine
CN113867828B (zh) * 2020-06-30 2025-05-16 深圳引望智能技术有限公司 一种运行进程的方法及装置
CN112799776B (zh) * 2020-12-31 2022-03-25 科东(广州)软件科技有限公司 多分区操作系统监控方法、装置、计算设备及存储介质

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4912628A (en) 1988-03-15 1990-03-27 International Business Machines Corp. Suspending and resuming processing of tasks running in a virtual machine data processing system
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
GB2325061B (en) 1997-04-30 2001-06-06 Advanced Risc Mach Ltd Memory access protection
RU2134931C1 (ru) 1999-03-15 1999-08-20 ОАО "Всероссийский научно-исследовательский институт автоматизации управления в непромышленной сфере" Способ обеспечения доступа к объектам в операционной системе мсвс
US7210040B2 (en) 2000-07-14 2007-04-24 Computer Associates Think, Inc. Detection of suspicious privileged access to restricted computer resources
TW472190B (en) * 2000-09-08 2002-01-11 Inventec Corp Method for directly accessing mass storage under protection mode
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
GB2378535A (en) 2001-08-06 2003-02-12 Ibm Method and apparatus for suspending a software virtual machine
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 富士通株式会社 データサーバへの不正侵入対処方法、及びプログラム
US20030196100A1 (en) * 2002-04-15 2003-10-16 Grawrock David W. Protection against memory attacks following reset
US20050160423A1 (en) 2002-12-16 2005-07-21 Bantz David F. Enabling a guest virtual machine in a windows environment for policy-based participation in grid computations
US7793286B2 (en) 2002-12-19 2010-09-07 Intel Corporation Methods and systems to manage machine state in virtual machine operations
US7496958B2 (en) * 2003-10-29 2009-02-24 Qualcomm Incorporated System for selectively enabling operating modes of a device
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
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
US7765374B2 (en) 2007-01-25 2010-07-27 Microsoft Corporation Protecting operating-system resources

Also Published As

Publication number Publication date
BRPI0720921B1 (pt) 2018-11-13
ES2683074T3 (es) 2018-09-24
CL2008000168A1 (es) 2009-01-09
JP5055380B2 (ja) 2012-10-24
TW200836064A (en) 2008-09-01
JP2010517162A (ja) 2010-05-20
CN101589364A (zh) 2009-11-25
JP2012198927A (ja) 2012-10-18
US8380987B2 (en) 2013-02-19
EP2115570B1 (en) 2018-06-13
EP2115570A4 (en) 2010-06-16
TWI475388B (zh) 2015-03-01
US20080184373A1 (en) 2008-07-31
RU2009128673A (ru) 2011-01-27
CN101589364B (zh) 2016-03-09
JP5249450B2 (ja) 2013-07-31
EP2115570A1 (en) 2009-11-11
RU2468418C2 (ru) 2012-11-27
BRPI0720921A8 (pt) 2017-01-17
WO2008091452A1 (en) 2008-07-31

Similar Documents

Publication Publication Date Title
BRPI0720921A2 (pt) Agentes de proteção e modos de privilégio.
US7765374B2 (en) Protecting operating-system resources
US10447728B1 (en) Technique for protecting guest processes using a layered virtualization architecture
Christodorescu et al. Cloud security is not (just) virtualization security: a short paper
US10956184B2 (en) On-demand disposable virtual work system
KR102189296B1 (ko) 가상 머신 보안 어플리케이션을 위한 이벤트 필터링
KR101946982B1 (ko) 가상 머신에서 멀웨어 탐지를 위한 프로세스 평가
JP5763278B2 (ja) ハイパーバイザ環境におけるクリティカル・アドレス空間保護のためのシステム及び方法
US10296470B2 (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
Kuzuno et al. KPRM: Kernel Page Restriction Mechanism to Prevent Kernel Memory Corruption

Legal Events

Date Code Title Description
B25A Requested transfer of rights approved

Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC (US)

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 13/11/2018, OBSERVADAS AS CONDICOES LEGAIS.

B21F Lapse acc. art. 78, item iv - on non-payment of the annual fees in time

Free format text: REFERENTE A 13A ANUIDADE.

B24J Lapse because of non-payment of annual fees (definitively: art 78 iv lpi, resolution 113/2013 art. 12)

Free format text: EM VIRTUDE DA EXTINCAO PUBLICADA NA RPI 2609 DE 05-01-2021 E CONSIDERANDO AUSENCIA DE MANIFESTACAO DENTRO DOS PRAZOS LEGAIS, INFORMO QUE CABE SER MANTIDA A EXTINCAO DA PATENTE E SEUS CERTIFICADOS, CONFORME O DISPOSTO NO ARTIGO 12, DA RESOLUCAO 113/2013.