BRPI0720921A2 - Agentes de proteção e modos de privilégio. - Google Patents
Agentes de proteção e modos de privilégio. Download PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1491—Protection 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/554—Detecting local intrusion or implementing counter-measures involving event detection and direct action
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; 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).
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)
| 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)
| 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 |
-
2007
- 2007-01-25 US US11/627,320 patent/US8380987B2/en active Active
- 2007-12-12 EP EP07869154.0A patent/EP2115570B1/en active Active
- 2007-12-12 WO PCT/US2007/087225 patent/WO2008091452A1/en not_active Ceased
- 2007-12-12 RU RU2009128673/08A patent/RU2468418C2/ru not_active IP Right Cessation
- 2007-12-12 JP JP2009547243A patent/JP5055380B2/ja not_active Expired - Fee Related
- 2007-12-12 ES ES07869154.0T patent/ES2683074T3/es active Active
- 2007-12-12 CN CN200780050472.6A patent/CN101589364B/zh active Active
- 2007-12-12 BR BRPI0720921A patent/BRPI0720921B1/pt not_active IP Right Cessation
- 2007-12-25 TW TW096150027A patent/TWI475388B/zh not_active IP Right Cessation
-
2008
- 2008-01-21 CL CL2008000168A patent/CL2008000168A1/es unknown
-
2012
- 2012-06-14 JP JP2012134970A patent/JP5249450B2/ja not_active Expired - Fee Related
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. |