KR20180099682A - 가상 머신 감사를 위한 시스템 및 방법들 - Google Patents

가상 머신 감사를 위한 시스템 및 방법들 Download PDF

Info

Publication number
KR20180099682A
KR20180099682A KR1020187017896A KR20187017896A KR20180099682A KR 20180099682 A KR20180099682 A KR 20180099682A KR 1020187017896 A KR1020187017896 A KR 1020187017896A KR 20187017896 A KR20187017896 A KR 20187017896A KR 20180099682 A KR20180099682 A KR 20180099682A
Authority
KR
South Korea
Prior art keywords
audit
target
agent
engine
driver
Prior art date
Application number
KR1020187017896A
Other languages
English (en)
Other versions
KR102255767B1 (ko
Inventor
산도르 루칵스
안드레이-블라드 루차스
이오넬 씨. 아니키테이
Original Assignee
비트데펜더 아이피알 매니지먼트 엘티디
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 비트데펜더 아이피알 매니지먼트 엘티디 filed Critical 비트데펜더 아이피알 매니지먼트 엘티디
Publication of KR20180099682A publication Critical patent/KR20180099682A/ko
Application granted granted Critical
Publication of KR102255767B1 publication Critical patent/KR102255767B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/301Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is a virtual computing platform, e.g. logically partitioned systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3051Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3089Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
    • G06F11/3093Configuration details thereof, e.g. installation, enabling, spatial arrangement of the probes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/105Arrangements for software license management or administration, e.g. for managing licenses at corporate level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

Abstract

비교적 많은 수의 클라이언트 시스템들(예를 들어, 기업 네트워크, 가상 데스크탑 인프라스트럭쳐 시스템, 등) 상에서 원격 및 자동으로 소프트웨어 감사를 수행할 수 있는 시스템들과 방법들을 설명한다. 감사 엔진은 하드웨어 가상화 구성에서 각각의 클라이언트 시스템 상에서 실행되며, 상기 감사 엔진은 감사되는 가상 머신 밖에서 실행된다. 감사 서버로부터 감사 요청을 수신한 경우, 상기 감사 엔진의 일부 실시예들은 감사 에이전트를 상기 감사되는 가상 머신에 드롭하고, 상기 감사가 완료되면 상기 감사 에이전트를 제거한다.

Description

가상 머신 감사를 위한 시스템 및 방법들
본 출원은 2016년 1월 5일에 출원된 미합중국 가특허출원 번호 제62/274,902호(발명의 명칭 "가상 머신 감사를 위한 시스템 및 방법들(Systems and Methods for Auditing a Virtual Machine)")의 출원일에 대한 우선권을 주장하며 그 전체 내용은 본 명세서에서 참조로서 포함된다.
본 발명은 소프트웨어 감사를 수행하기 위한 시스템들과 방법들에 대한 것이며, 구체적으로는 하드웨어 가상화 구성에서 수행되는 소프트웨어 감사에 대한 것이다.
현대의 소프트웨어 중심 경제에서는, 기업이 보유하고 있는 하드웨어 및 소프트웨어 자산의 양과 복잡성이 계속해서 증가하고 있다. 직원들이 데스크탑 컴퓨터를 사용하는 것에서 랩탑, 태블릿 컴퓨터 및 모바일 전화기와 같은 모바일 장치를 사용하는 것으로 이동하고, 업무가 비국지화(de-localized) 됨에 따라, 회사의 하드웨어 및 소프트웨어 자산 추적을 계속하는 것은 심각한 문제가 된다. 예를 들어, 모든 회사 컴퓨터 전체에서 소프트웨어 어플리케이션의 단일 버전을 사용하는 대신, 일반적으로 오늘날의 회사들은 직원들이 현대식 모바일 사무실에서 사용하는 다양한 하드웨어 플랫폼과 운영 시스템을 고려하여 각 어플리케이션의 여러 버전을 사용한다. 소프트웨어 업데이트를 적용할 때, 이러한 업데이트가 모든 컴퓨터와 모바일 장치에 균일하게 전달되지 않을 수 있어 상황이 더욱 복잡해지게 된다.
이러한 이질성(heteroheneity)의 증가는 소프트웨어 라이센싱과 서비스 수준 계약을 복잡하게 만들 수 있다. 또한, 최근 모바일 장치에서 사용되는 어플리케이션 소프트웨어의 확산으로 컴퓨터 보안 위험이 증가하고 있다. 악성 소프트웨어 및 스파이웨어는 무수한 합법적인(legitimate) 어플리케이션 및 버전 사이에 쉽게 숨어들 수 있기 때문에, 특히 직원과 회사가 사유 데이터(proprietary data)에 대해 인가받지 않은 접근 및 생산성 저하 위험에 노출될 수 있다.
클래식한 컴퓨팅 모델을 변화시킨 또 다른 최근의 발전은 하드웨어 가상화(hardware virtualization)이다. 웹 서버 팜(webserver farms) 및 가상 데스크탑 인프라스트럭쳐(virtual desktop infrastructure, VDI)와 같은 어플리케이션에서는, 수백 개의 가상 머신들이 단일 물리적 플랫폼에서 동시에 실행될 수 있다. 이러한 가상 머신들은 동적으로 인스턴스화 및/또는 제거될 수 있으며, 이는 각각의 물리적 플랫폼에서 언제든 한번에 실행되는 소프트웨어의 이질성을 더욱 증가시킨다.
감사 소프트웨어(Auditing software)는 특히, 라이센싱, 디지털 권한 관리, 어플리케이션 제어, 및 컴퓨터 보안과 같은 목적으로 컴퓨터 시스템 상에 설치되어 있거나 및/또는 현재 실행 중인 소프트웨어의 추적을 계속하는 데 사용될 수 있다. 현대의 가상화된 환경에 특히 적합한 감사 시스템 및 방법들을 개발하는 데 관심이 증가하고 있다.
일 태양에 따르면, 본 발명의 컴퓨터 시스템은 게스트 가상 머신(virtual machine, VM)들의 세트를 실행하고 상기 게스트 VM들의 세트 밖에서 VM 감사 엔진(audit engine)을 추가로 실행하도록 구성된 적어도 하나의 하드웨어 프로세서를 포함한다. 상기 VM 감사 엔진은, 원격 감사 서버로부터 감사 요청을 수신하는 것에 응답으로, 감사 에이전트(audit agent)를 상기 게스트 VM들의 세트의 타겟 VM에 삽입하도록 구성되되, 상기 감사 에이전트는 상기 타겟 VM의 감사(audit)를 수행하도록 구성되고, 상기 감사는 상기 타겟 VM 상에서의 실행을 위해 설치된 적법한(legitimate) 컴퓨터 프로그램들의 리스트를 생성하는 것과 하드웨어 리소스의 용량으로서 상기 타겟 VM에 의해 현재 사용되고 있는 용량을 결정하는 것으로 이루어진 그룹으로부터 선택된 항목을 포함한다. 상기 VM 감사 엔진은 추가로, 상기 감사 에이전트를 삽입하는 것에 응답으로, 상기 타겟 VM으로 하여금 상기 감사 에이전트를 실행하도록 유발하도록 구성되고, 그리고 상기 타겟 VM이 상기 감사 에이전트를 실행하는 것에 응답으로, 상기 타겟 VM으로부터 상기 감사 에이전트를 제거하도록 구성된다.
또 다른 태양에 따르면, 본 발명의 방법은 컴퓨터 시스템 상에서 실행되는 게스트 VM들의 세트 밖에서 가상 머신(virtual machine, VM) 감사 엔진을 실행하기 위하여 상기 컴퓨터 시스템의 적어도 하나의 하드웨어 프로세서를 채용하는 것을 포함한다. 상기 VM 감사 엔진을 실행하는 것은, 원격 서버로부터 감사 요청을 수신하는 것에 응답으로, 감사 에이전트를 상기 게스트 VM들의 세트의 타겟 VM에 삽입하는 것을 포함하고, 상기 감사 에이전트는 상기 타겟 VM의 감사(audit)를 수행하도록 구성되고, 상기 감사는 상기 타겟 VM 상에서의 실행을 위해 설치된 적법한 컴퓨터 프로그램들의 리스트를 생성하는 것과 하드웨어 리소스의 용량으로서 상기 타겟 VM에 의해 현재 사용되고 있는 용량을 결정하는 것으로 이루어진 그룹으로부터 선택된 항목을 포함한다. 상기 VM 감사 엔진을 실행하는 것은 추가로, 상기 감사 에이전트를 삽입하는 것에 응답으로, 상기 타겟 VM으로 하여금 상기 감사 에이전트를 실행하도록 유발하는 것, 그리고 상기 타겟 VM이 상기 감사 에이전트를 실행하는 것에 응답으로, 상기 타겟 VM으로부터 상기 감사 에이전트를 제거하는 것을 포함한다.
또 다른 태양에 따르면, 본 발명의 서버 컴퓨터 시스템은 복수의 클라이언트 시스템들과 감사 트랜잭션(audit transaction)을 수행하도록 구성된 적어도 하나의 하드웨어 프로세서를 포함한다. 감사 트랜잭션은, 상기 복수의 클라이언트 시스템들의 클라이언트 시스템으로 감사 요청을 전송하는 것, 그리고 응답으로, 상기 클라이언트 시스템으로부터 감사 리포트를 수신하는 것을 포함하고, 상기 감사 리포트는 상기 클라이언트 시스템 상에서 실행되는 게스트 VM들의 세트 밖에서 상기 클라이언트 시스템 상에서 실행되는 가상 머신(virtual machine, VM) 감사 엔진에 의해 결정된다. 상기 감사 리포트를 결정하는 것은, 상기 서버 컴퓨터 시스템으로부터 감사 요청을 수신하는 것에 응답으로, 감사 에이전트를 상기 게스트 VM들의 세트의 타겟 VM에 삽입하는 것을 포함하고, 상기 감사 에이전트는 상기 타겟 VM의 감사(audit)를 수행하도록 구성되고, 상기 감사는 상기 타겟 VM 상에서의 실행을 위해 설치된 적법한 컴퓨터 프로그램들의 리스트를 생성하는 것과 하드웨어 리소스의 용량으로서 상기 타겟 VM에 의해 현재 사용되고 있는 용량을 결정하는 것으로 이루어진 그룹으로부터 선택된 항목을 포함한다. 상기 감사 리포트를 결정하는 것은 추가로, 상기 감사 에이전트를 삽입하는 것에 응답으로, 상기 타겟 VM으로 하여금 상기 감사 에이전트를 실행하도록 유발하고, 그리고 상기 타겟 VM이 상기 감사 에이전트를 실행하는 것에 응답으로, 상기 타겟 VM으로부터 상기 감사 에이전트를 제거하는 것을 포함한다.
또 다른 태양에 따르면, 본 발명의 비-일시적 컴퓨터 판독가능 매체(non-transitory computer-readable medium)는 컴퓨터 시스템의 적어도 하나의 하드웨어 프로세서에 의해 실행될 때, 상기 컴퓨터 시스템으로 하여금 가상 머신 감사 엔진을 형성하도록 유발하는 명령들을 저장하고, 상기 VM 감사 엔진은 상기 컴퓨터 시스템 상에 노출된 게스트 VM들의 세트 밖에서 실행되고, 상기 VM 감사 엔진은, 원격 감사 서버로부터 감사 요청을 수신하는 것에 응답으로, 감사 에이전트를 상기 게스트 VM들의 세트의 타겟 VM에 삽입하도록 구성되고, 상기 감사 에이전트는 상기 타겟 VM의 감사(audit)를 수행하도록 구성되고, 상기 감사는 상기 타겟 VM 상에서의 실행을 위해 설치된 적법한 컴퓨터 프로그램들의 리스트를 생성하는 것과 하드웨어 리소스의 용량으로서 상기 타겟 VM에 의해 현재 사용되고 있는 용량을 결정하는 것으로 이루어진 그룹으로부터 선택된 항목을 포함한다. 상기 VM 감사 엔진은 추가로, 상기 감사 에이전트를 삽입하는 것에 응답으로, 상기 타겟 VM으로 하여금 상기 감사 에이전트를 실행하도록 유발하고, 그리고 상기 타겟 VM이 상기 감사 에이전트를 실행하는 것에 응답으로, 상기 타겟 VM으로부터 상기 감사 에이전트를 제거하도록 구성된다.
본 발명의 전술한 태양들 및 장점은 후술하는 상세한 설명 및 도면을 참조로 이해하면 더욱 잘 이해될 것이다.
도 1은 본 발명의 일부 실시예에 따라, 복수의 클라이언트 시스템들이 감사 서버의 요청에 의해 감사되는 예시적 구성을 보여주는 도면.
도 2a는 본 발명의 일부 실시예에 따른, 감사되는 클라이언트 시스템의 예시적 하드웨어 구성을 보여주는 도면.
도 2b는 본 발명의 일부 실시예에 따른, 감사 서버의 예시적 하드웨어 구성을 보여주는 도면.
도 3a는 본 발명의 일부 실시예에 따른, 감사되는 VM 밖에서 실행되는 VM 감사 엔진, 및 감사되는 클라이언트 시스템 상에서 실행되는 하이퍼바이저에 의해 노출된 예시적 가상 머신을 보여주는 도면.
도 3b는 본 발명의 일부 실시예에 따라, 게스트 가상 머신이 클라이언트 시스템 상에서 실행되는 별도의 감사 VM에 의해 감사되는 선택적인 구성을 보여주는 도면.
도 4는 본 발명의 일부 실시예에 따른, 클라이언트 시스템의 감사를 설정하기 위한 감사 설치기 어플리케이션에 의해 수행되는 예시적 단계들의 시퀀스를 보여주는 도면.
도 5는 본 발명의 일부 실시예에 따른, 감사되는 클라이언트 시스템과 감사 서버 사이의 예시적인 데이터 교환을 보여주는 도면.
도 6은 본 발명의 일부 실시예에 따른, VM 감사 엔진에 의해 수행되는 예시적 단계들의 시퀀스를 보여주는 도면.
도 7은 본 발명의 일부 실시예에 따른, 다양한 프로세서 권한 레벨에서 실행되는 감사 에이전트의 예시적 구성 요소들을 보여주는 도면.
도 8은 본 발명의 일부 실시예에 따라, 감사 에이전트를 감사되는 VM에 드롭하는, VM 감사 엔진에 의해 수행되는 예시적 단계들의 시퀀스를 보여주는 도면.
도 9는 본 발명의 일부 실시예에 따른, 감사 에이전트의 드라이버 로더에 의해 수행되는 예시적 단계들의 시퀀스를 보여주는 도면.
도 10은 본 발명의 일부 실시예에 따른, 감사 드라이버에 의해 수행되는 예시적 단계들의 시퀀스를 보여주는 도면.
이하의 설명에서, 구조들 사이에서 언급된 모든 연결들은 직접적인 동작 연결들 또는 매개 구조들을 통한 간접적인 동작 연결들일 수 있는 것으로 이해된다. 구성 요소들의 세트는 하나 이상의 구성 요소를 포함한다. 구성 요소의 임의의 열거는 적어도 하나의 구성 요소를 언급하는 것으로 이해된다. 복수의 구성 요소는 적어도 2개의 구성 요소를 포함한다. 달리 요구되지 않는다면, 기술된 어떠한 방법 단계들도 설명된 특정 순서로 반드시 실행될 필요는 없다. 제2 구성 요소로부터 유도되는 제1 구성 요소(예컨대, 데이터)는 제2 구성 요소와 동일한 제1 구성 요소는 물론, 제2 구성 요소 그리고 선택적으로는 다른 데이터를 처리하는 것에 의해 생성된 제1 구성 요소를 포함한다. 파라미터에 따라 결정 또는 판정하는 것은 파라미터에 따라 그리고 선택적으로는 다른 데이터에 따라 결정 또는 판정하는 것을 포함한다. 달리 구체화되지 않는다면, 일부 수량/데이터의 표시자는 수량/데이터 그 자체, 또는 수량/데이터 그 자체와 상이한 표시자일 수 있다. 컴퓨터 프로그램은 과업을 수행하는 프로세서 명령들의 시퀀스이다. 본 발명의 일부 실시예들에서 설명되는 컴퓨터 프로그램들은 독립형 소프트웨어 개체들 또는 다른 컴퓨터 프로그램들의 서브-개체들(예를 들어, 서브루틴들, 라이브러리들)일 수 있다. 달리 특정되지 않는다면, 합법적인(legitimate, 적법한) 컴퓨터 프로그램은 개별 컴퓨터 시스템의 합법적인(적법한) 사용자가 설치하거나 또는 그렇지 않으면 실행하도록 구성된 컴퓨터 프로그램이다. 대조적으로, 인가 받지 않은 침입자에 의해 개별 컴퓨터 시스템에 설치되는 무허가 악성 소프트웨어(surreptitious malicious software)(멀웨어) 및 컴퓨터 프로그램은 본 명세서에서 불법적인 컴퓨터 프로그램으로 간주된다. 개별 컴퓨터 프로그램이 개별 가상 머신의 적어도 하나의 가상 프로세서 상에서 실행되는 경우, 컴퓨터 프로그램은 가상 머신 내에서 또는 안에서 실행된다고 (또는 상기 개별 가상 머신이 상기 개별 컴퓨터 프로그램을 실행한다고) 지칭한다. 프로세스는 어플리케이션이나 또는 운영 시스템의 일부와 같은 컴퓨터 프로그램의 인스턴스(instance)이고, 적어도 실행 쓰레드(execution thread)와 이것에 할당된 가상 메모리 공간을 가지는 특징을 가지며, 개별 가상 메모리 공간의 콘텐트는 실행가능 코드(executable code)를 포함한다. 달리 특정되지 않는다면, 페이지는 호스트 시스템의 물리적 메모리에 개별적으로 매핑될 수 있는 가상 메모리의 최소 유닛을 나타낸다. 달리 특정되지 않는다면, 레지스터는 프로세서와 일체화되거나 또는 그 일부를 형성하는 저장 요소를 나타내고 램(RAM, random access memory)과는 다르다. 터널(tunnel)은 통신 네트워크에 연결된 두 개체(entity) 사이의 가상의 점대점 연결이다. 컴퓨터 판독 가능 매체는 자성, 광, 및 반도체 저장 매체와 같은 비-일시적 매체(non-transitory medium)(예컨대, 하드 드라이브, 광 디스크, 플래시 메모리, DRAM)는 물론, 전도성 케이블 및 파이버 옵틱 링크와 같은 통신 링크들을 포함한다. 일부 실시예들에 따르면, 본 발명은, 그 중에서도, 본원에 설명된 방법들을 수행하기 위해 프로그래밍된 하드웨어(예를 들어서, 하나 이상의 마이크로프로세서들)는 물론, 본원에서 설명된 방법들을 수행하기 위한 명령들을 인코딩하는 컴퓨터-판독 가능 매체를 포함하는 컴퓨터 시스템을 제공한다.
후술하는 설명은 본 발명의 실시예들을 예시적으로 설명하는 것이며, 반드시 제한적인 것은 아니다.
도 1은 본 발명의 일부 실시예에 따라, 복수의 클라이언트 시스템들(12a-d)이 감사 서버(audit server)(14)의 요청에 의해 원격으로 감사되는 예시적 구성을 보여준다. 예시적인 클라이언트 시스템들(12a-d)은 개인용 컴퓨터 시스템, 모바일 컴퓨팅 플랫폼(랩탑 컴퓨터, 태블릿, 모바일 전화기), 엔터테인먼트 장치(TV, 게임 컨솔), 웨어러블 장치(스마트워치, 피트니스 밴드), 가전 제품 및 프로세서 및 메모리를 포함하는 임의의 다른 전자 장치를 포함하고, 하드웨어 가상화 플랫폼을 작동시킬 수 있다. 클라이언트 시스템들(12a-d)은 기업 네트워크(corporate network) 또는 인터넷과 같은 통신 네트워크(10)를 통해 상호연결된다. 네트워크(10)의 일부는 LAN(local area network)를 포함할 수 있다.
감사 서버(14)는 클라이언트 시스템들(12a-d)과 통신가능하게 연결되고, 각각의 클라이언트 시스템(12a-d)과 협력하여 개별 클라이언트 시스템의 감사를 수행한다. 예시적인 감사 활동에는, 특히, 소프트웨어 자산의 식별 및 라이센스, 사용 및 권리에 관한 개별 소프트웨어 자산의 검증이 포함된다. 이러한 감사의 단위(granularity)는 비교적 높은 수준(예를 들어, 클라이언트 시스템 상에 설치된 어플리케이션/버전 결정)에서부터 예컨대 클라이언트 시스템 상에서 실행중인 소프트웨어가 중요 구성 요소(예를 들어, 드라이버, 패치, 안티-멀웨어 모듈)의 특정 버전을 사용하는지, 각 구성 요소가 설치되거나 액세스 될 때, 단일 어플리케이션이 사용하는 하드웨어 리소스가 어느 정도인지 등을 결정하는 것을 포함하는 면밀한 감사까지 다양할 수 있다. 다른 예시적인 감사 활동은, 특히, 어떤 소프트웨어 구성 요소(어플리케이션, 프로세스, 드라이버 등)가 감사 중에 클라이언트 시스템 상에서 현재 실행 중인지를 결정하는 것, 개별 클라이언트 시스템의 프로세서의 현재 상태를 결정하는 것, 리소스 사용(예를 들어, CPU, 메모리, 디스크, 네트워크 등)의 현재 수준을 결정하는 것, 개별 클라이언트 시스템의, 다양한 어플리케이션, 사용자 설정 등의, OS의 구성 파라미터 값/설정의 세트를 결정하는 것이 포함된다.
서버(14)는 일반적으로 서로 물리적으로 근접할 수도 있고 그렇지 않을 수도 있는 상호연결된 컴퓨팅 시스템의 세트를 나타낸다. 일부 실시예들에서, 감사 서버(14)는 클라이언트 데이터베이스(15)에 액세스하도록 구성된다. 예시적인 클라이언트 데이터베이스(15)에서, 각각의 엔트리는 감사되는 클라이언트 시스템(12a-d)과 연관되며, 상기 개별 클라이언트 시스템으로부터 수신된 감사 리포트의 세트의 콘텐트(content)를 포함할 수 있다(하기 참조). 각각의 엔트리는 개별 클라이언트 시스템으로부터 수신된 각각의 감사 리포트에 대한 수신 시간의 표시자로 타임 스탬프가 추가로 된 것일 수 있다. 데이터베이스(15)의 각각의 엔트리는, 예를 들어서, 개별 클라이언트 시스템의 하드웨어 구성의 표시자, 운영 시스템(operating system, OS)의 유형 및 버전의 표시자, 합법적으로 설치된 어플리케이션 또는 다른 소프트웨어 구성 요소들(예를 들어, 드라이버, 패치)의 세트의 표시자, 감사 시에 현재 로딩된 그리고/또는 실행 중인 소프트웨어 구성 요소들(어플리케이션, 프로세스, 드라이버 등)의 세트의 표시자, 다양한 OS를 나타내는 파라미터의 세트, 개별 클라이언트 시스템을 위한 어플리케이션 및/또는 사용자 설정, 및 감사 시에 리소스 사용(예를 들어, CPU, 메모리, 디스크 등)의 표시자의 세트를 포함하는, 개별 클라이언트 시스템에 대해 결정된 감사 데이터를 포함할 수 있다. 감사 데이터는 나열된(리스팅된) 각 소프트웨어 구성 요소가 설치되었을 때 및/또는 나열된(리스팅된) 각 구성 요소가 액세스 또는 수정된 최신 순간을 나타내는 시간 표시자를 더 포함할 수 있다.
도 2a는 도 1의 시스템들(12a-d)과 같은, 클라이언트 시스템(12)의 예시적인 하드웨어 구성을 보여준다. 단순성을 위하여, 도시된 클라이언트 시스템은 컴퓨터 시스템이지만; 모바일 전화기, 시계 등과 같은 다른 클라이언트 시스템의 하드웨어 구성은 도시된 구성과는 다소 다를 수 있다. 클라이언트 시스템(12)은 하드웨어 프로세서(16) 및 메모리 유닛(18)을 포함하는 물리적 장치들의 세트를 포함한다. 프로세서(16)는 신호 및/또는 데이터의 세트로 산술 및/또는 논리 연산을 실행하도록 구성된 물리적 장치(예컨대, 반도체 기판에 형성된 멀티-코어 집적 회로, 마이크로프로세서 등)를 포함한다. 일부 실시예들에서, 이러한 연산들은 프로세서 명령들(예를 들어, 머신 코드 또는 다른 유형의 인코딩)의 시퀀스 형태로 프로세서(16)에 전달된다. 메모리 유닛(18)은 프로세서(16)에 의해 액세스되거나 생성되는 명령들 및/또는 데이터를 저장하는 휘발성 컴퓨터-판독 가능 매체(예컨대, DRAM, SRAM)를 포함할 수 있다.
입력 장치(20)는 사용자가 클라이언트 시스템(12)으로 데이터 및/또는 명령들을 도입할 수 있게 하는 개별 하드웨어 인터페이스 및/또는 어댑터를 포함하는, 특히 컴퓨터 키보드, 마우스, 및 마이크를 포함할 수 있다. 출력 장치(22)는 특히 모니터와 같은 디스플레이 장치 및 스피커는 물론, 클라이언트 시스템(12)이 사용자에게 데이터를 통신하게 할 수 있는 그래픽 카드와 같은 하드웨어 인터페이스/어댑터를 포함할 수 있다. 일부 실시예들에서, 입력 장치(20)와 출력 장치(22)는 터치-스크린 장치들의 경우와 같이, 하드웨어의 공통적인 부품을 공유할 수 있다. 저장 장치(24)는 소프트웨어 명령들 및/또는 데이터의 비휘발성 저장, 판독, 및 기록을 가능하게 하는 컴퓨터-판독 가능 매체를 포함한다. 예시적인 저장 장치(24)는 자기 디스크 및 광 디스크 및 플래시 메모리 장치들은 물론, CD 및/또는 DVD 디스크들 및 드라이브들과 같은 소거 가능 매체를 포함한다. 네트워크 어댑터(26)들 세트는 클라이언트 시스템(12)이 컴퓨터 네트워크 및/또는 다른 장치들/컴퓨터 시스템들에 연결될 수 있게 한다. 컨트롤러 허브(28)는 프로세서(16)와 장치들(18, 20, 22, 24 및 26) 사이의 통신을 가능하게 하는 복수의 시스템, 주변, 및/또는 칩셋 버스들, 및/또는 다른 모든 회로망을 나타낸다. 예를 들어, 컨트롤러 허브(28)는 특히 메모리 컨트롤러, 입력/출력(I/O) 컨트롤러, 및 인터럽트 컨트롤러(interrupt controller)를 포함할 수 있다. 다른 예에서, 컨트롤러 허브(28)는 프로세서(16)를 메모리(18)에 연결시키는 노스브리지, 및/또는 프로세서(16)를 장치들(20, 22, 24 및 26)에 연결시키는 사우스브리지를 포함할 수 있다.
도 2b는 본 발명의 일부 실시예에 따른, 감사 서버(14)의 예시적인 하드웨어 구성을 보여준다. 서버(14)는 적어도 하나의 하드웨어 프로세서(116)(예를 들어, 마이크로프로세서, 멀티-코어 집적 회로), 물리적 메모리(118), 및 서버 네트워크 어댑터(126)들의 세트를 포함한다. 어댑터(126)들은 감사 서버(14)가 통신 네트워크(10)와 연결될 수 있도록 하는 네트워크 카드 및 다른 통신 인터페이스를 포함할 수 있다. 일부 실시예들에서, 서버(14)는 각각 입력, 출력 및 저장 장치(20, 22 및 24)와 기능면에서 유사할 수 있는 입력, 출력 및 저장 장치를 추가로 포함할 수 있다.
일부 실시예들에서, 클라이언트 시스템(12)은, 예를 들어 도 3a 및 도 3b에 도시된 바와 같이, 가상 머신들의 세트를 노출시키도록 구성된다. 가상 머신(virtual machine, VM)은 하드웨어 가상화 기술 분야에 알려져 있는 임의의 다양한 기술을 사용하여 실제 물리적 머신/컴퓨터 시스템을 모방(emulate, 에뮬레이트)한다. 일부 실시예들에서, 본 기술분야에서 가상 머신 모니터(virtual machine monitor, VMM)로도 알려져 있는 하이퍼바이저(30)는, 클라이언트 시스템(12) 상에서 실행되고, 가상 프로세서와 가상 메모리 관리 유닛과 같은 복수의 가상화된 장치들을 생성하거나 가능하게 하고, 그리고 클라이언트 시스템(12)의 실제의 물리적인 장치들을 대신하여, 그러한 가상화된 장치들을 소프트웨어에 노출시키도록 구성된다. 그러한 작동들은 통상적으로 본 기술분야에서 가상 머신 노출로 알려져 있다. 하이퍼바이저(30)는 또한 다수의 가상 머신들이 호스트 시스템(12)의 하드웨어 리소스들을 공유할 수 있게 하여, 각각의 VM이 독립적으로 작동하고 클라이언트 시스템(12)에서 동시에 실행되는 다른 VM들 실행을 알지 못하도록 할 수 있다. 유명한 하이퍼바이저의 예로는, 특히 VMware Inc.의 VMware vSphere™ 및 오픈 소스 Xen 하이퍼바이저가 있다.
도 3a 및 도 3b에 도시된 예시적인 구성에서, 게스트 VM(32)은 게스트 운영 시스템(34) 및 어플리케이션들(36a-b)의 세트를 실행한다. 게스트 OS(34)는 특히, VM(32) 내에서 실행되는 어플리케이션들과 VM(32)의 가상화된 하드웨어 장치들 사이에 인터페이스를 제공하는 Microsoft Windows®, MacOS®, Linux®, iOS®, 또는 Android™와 같이, 널리 이용가능한 임의의 운영 시스템을 포함할 수 있다. 어플리케이션들(36a-b)은 특히, 워드 프로세서, 스프레드시트 어플리케이션, 그래픽 어플리케이션, 브라우저, 소셜 미디어, 및 전자 통신 어플리케이션들과 같은 임의의 사용자 어플리케이션을 일반적으로 나타낸다.
도 3a에 도시된 실시예에서, VM 감사 엔진(40a)은 게스트 VM(32)의 밖에서, 하이퍼바이저(30)의 프로세서 권한 레벨(processor privilege level)(예를 들어, 루트 레벨 또는 링 -1)에서 실행된다. VM 감사 엔진(40a)은 게스트 VM(32)의 감사를 수행하도록 구성된다. 일부 실시예들에서, 그러한 감사는 이하에서 상술하는 바와 같이 감사 에이전트(42)를 감사되는 VM에 드롭(drop)하는 것과, 감사가 완료되면 상기 감사되는 VM으로부터 에이전트(42)를 제거하는 것을 포함한다.
도 3b에 도시된 선택적 실시예에서, 하이퍼바이저(30)는 모든 감사되는 게스트 VM들과는 별개로 감사 VM(33)을 노출시키도록 구성되고, 감사 VM(33)은 게스트 VM(32)(들)과 동시에 실행될 수 있다. 감사 VM(33)의 일부 실시예들은 경량의 최소 운영 시스템(예를 들면, Linux® OS의 커스터마이징된 버전)을 포함하고, 게스트 VM(32)의 감사를 수행하도록 구성된 VM 감사 엔진(40b)를 실행하도록 구성된다. 게스트 VM(32) 및 감사 VM(33)의 가상 환경은 게스트 VM(32) 내에서 실행되는 악성 소프트웨어가 감사 VM(33) 내에서 실행되는 소프트웨어를 감염시키거나 또는 그렇지 않으면 간섭할 수 없도록 하기 위해 가상화 기술분야에 알려져 있는 임의의 방법을 사용하여 서로 분리될 수 있다. 도 3b의 실시예에서, 인트로스펙션 엔진(44)은 게스트 VM(32) 및 감사 VM(33) 밖에서, 하이퍼바이저(30)의 프로세서 권한 레벨에서 실행된다. 도 3a의 예시적인 실시예에서, 인트로스펙션 엔진(44)의 활동 중 일부는 VM 감사 엔진(40a)에 의해 적어도 어느 정도는 수행될 수 있다.
도 3a 및 도 3b는 클라이언트 시스템(12) 상에서 실행되는 단 하나의 게스트 VM(32)만을 보여주는 것으로 도시되어 있으나, 일부 실시예들은 다수의 VM을 작동시키는 클라이언트 시스템에서 감사를 수행하도록 구성될 수 있다. 이러한 가상화 플랫폼의 일반적인 어플리케이션들은 서버 팜(server farm)이며, 단일 컴퓨터 시스템이 수백 개의 별개의 웹서버 VM들을 동시에 작동시키도록 호스팅할 수 있다. 또 다른 일반적인 어플리케이션은 가상 데스크탑 인프라스트럭쳐(virtual desktop infrastructure, VDI) 카테고리에 속하며, 사용자의 어플리케이션은 제1 컴퓨터 시스템 상에서 실행되는 한편, 상기 사용자는 제2 컴퓨터 시스템(단말기)을 통해 개별 어플리케이션과 상호작용한다. 일반적인 VDI 구성에서, 요청된 어플리케이션을 작동시키는 가상 머신은 상기 제1 컴퓨터 시스템 상에서 요청에 의해(on-demand) 인스턴스화되고, 이는 결과적으로 다수의 원격 사용자들을 위해 수백의 그러한 VM들을 실행시킬 수 있다. 이러한 실시예들에서, 단일 VM 감사 엔진(40a-b)은 개별 클라이언트 시스템 상에서 실행되는 모든 VM들 또는 다수의 VM들의 감사를 수행할 수 있다. 예를 들어서, 감사 엔진(40a-b)은 개별 게스트 VM들 각각 내에 감사 에이전트를 드롭할 수 있다. 그러한 일 예에서, VM 감사 엔진(40a-b)은 감사 에이전트의 유형을 선택할 수 있고, 각각의 VM의 하드웨어 및/또는 소프트웨어 사양에 따라, 예를 들면 개별 VM 내에서 실행되는 OS의 유형에 따라, 에이전트 드롭 과정을 조절할 수 있다. 일부 실시예들에서, VM 감사 엔진(40a-b)은 개별 클라이언트 시스템 상에서 실행되는 VM의 선택된 서브세트의 감사 또는 특정 타겟 VM의 감사를 선택적으로 수행하도록 서버(14)에 의해 지시받을 수 있다.
일부 실시예들에서, 인트로스펙션 엔진(44)(도 3b)은 감사되는 게스트 VM 내에서 소프트웨어의 실행 중에 발생하는 다양한 이벤트를 탐지하고, 그러한 정보를 다른 감사 소프트웨어(예를 들어, 에이전트(42) 및/또는 엔진(40a-b))와 교환하도록 구성된다. 인트로스펙션 엔진(44)에 의해 탐지되는 예시적인 이벤트는, 예를 들어, 프로세서 예외 및/또는 인터럽트, 게스트 OS(34)의 특정 기능을 실행하려는 시도, 프로세서 권한(예를 들어, 시스템 호출)의 변경, 특정 메모리 위치에 액세스(읽기, 쓰기, 및/또는 실행)하려는 시도 등을 포함한다. 인트로스펙션 엔진(44)은, 추가로 후술되는 바와 같이, 게스트 VM(32) 내에서 실행되는 다양한 소프트웨어 구성 요소들의 메모리 주소를 결정하도록 추가로 구성될 수 있다.
이러한 이벤트들을 탐지하는 여러가지 방법들이 본 기술분야에 알려져 있다. 그러한 일 예에서, 인트로스펙션 엔진(44)은 제2 레벨 주소 변환(second-level address translation) 메커니즘(예를 들어, Intel® 플랫폼에서 확장된 페이지 테이블(extended page tables) - EPT, AMD® 플랫폼에서 빠른 가상화 인덱싱(rapid virtualization indexing) - RVI)을 이용하여 메모리 접근 허가를 설정하기 위해 하이퍼바이저(30)와 협력할 수 있다. 특정 메모리 페이지에 접근하려는 시도가 개별 메모리 페이지에 대해 설정된 접근 허가(access permission, 액세스 권한)를 위반할 때, 각각의 상기 시도는 예외 또는 가상 머신 종료 이벤트(Intel® 플랫폼의 VMExit)와 같은 프로세서 이벤트를 촉발(trigger, 트리거)할 수 있다. 프로세서 이벤트의 결과로서, 프로세서(16)는 인트로스펙션 엔진(44) 내에서 이벤트 핸들러 루틴을 실행하는 것으로 전환할 수 있고, 이는 엔진(44)으로 하여금 개별 이벤트의 발생을 탐지하게 할 수 있다. 이러한 메커니즘은, 예를 들어 특정 기능에 대한 호출을, 개별 기능의 일부를 포함하는 메모리 페이지를 실행불가로 표시함으로써 탐지할 수 있다.
단순하면서도 일반성을 잃지 않도록 하기 위해, 하기의 설명은 도 3a에 도시된 바와 같이 구성된 예시적인 실시예에 초점을 맞출 것이다. 통상의 기술자는 설명된 시스템 및 방법들이 다른 구성, 특히 도 3b의 예시적인 구성에 적용될 수 있음을 이해할 것이다. 이하의 설명에서, VM 감사 엔진(들)은 일반적으로 (40)으로 표시될 것이며, 이는 선택된 구성에 따라서 감사 엔진(40a) 또는 감사 엔진(40b)를 나타낼 수 있다.
도 4는 본 발명의 일부 실시예에 따른, 클라이언트 시스템의 감사를 설정(set up)하기 위해 수행되는 예시적 단계들의 시퀀스를 보여준다. 기업 네트워크를 감사(auditing)하는 전형적인 시나리오에서, 네트워크 관리자는 각각의 클라이언트 시스템들(12a-d) 상에 감사 어플리케이션을 설치할 수 있다. 상기 감사 어플리케이션은 VM 감사 엔진(40), 인트로스펙션 엔진(40) 등과 같은 다양한 구성 요소를 포함할 수 있다. 도시된 단계들의 시퀀스는, 예를 들면 개별 감사 어플리케이션의 설치자 유틸리티에 의해 수행될 수 있다. 현재 하드웨어 가상화 구성에서 작동하고 있지 않은 클라이언트 시스템 상에 설치되는 경우, 감사 소프트웨어는 먼저 가장 높은 권한 레벨(예를 들어, 가상화를 지원하는 Intel® 플랫폼의 VMXRoot, 그렇지 않으면 일반적으로 알려진 것, 및 루트 모드 또는 링 -1)에서 프로세서(16)를 인수하고, 하이퍼바이저(30)를 설치할 수 있다. 하이퍼바이저(30)는 그러고 나서 게스트 VM(32)을 노출시키고, 개별 클라이언트 시스템 상에서 이전에 실행 중인 모든 소프트웨어를 게스트 VM(32) 내에서 실행하도록 이동시킬 수 있다. 하이퍼바이저(30)는 추가로 VM 감사 엔진(40) 및/또는 인트로스펙션 엔진(44)을 설정할 수 있다. 이미 다수의 가상 머신들을 작동중인 하드웨어 가상화 플랫폼 상에 설치되는 경우에는, 단계들(200-202)이 생략될 수 있다.
일부 실시예들에서, 단계(206)는 감사 서버(14)로부터 VM 감사 엔진(40)으로의 원격 접근을 설정할 수 있다. 이러한 접근은 감사 서버가 자동으로 또는 인간 작업자의 도음으로, 감사되는 클라이언트 시스템(12)에 직접적으로 명령을 전송하도록 할 수 있다. 이러한 명령은 예를 들어, VM 감사 엔진(40)이 특정 종류의 감사를 수행하고, 특정 소프트웨어 구성 요소의 존재 및/또는 특성에 대해 게스트 VM을 검사하고, 프로세서(16)(예를 들어, 프로세서 레지스터들의 세트의 콘텐트)의 현재 상태를 결정하고, 게스트 OS(34) 또는 다른 소프트웨어의 파라미터 설정의 세트를 판독하도록 지시할 수 있다. 예시적인 일 실시예에서, 단계(206)는 서버(14)와 하이퍼바이저(30) 사이 및/또는 서버(14)와 감사 VM(33) 사이에 터널(즉, 점대점 통신 링크)을 구성할 수 있다. 예시적인 터널은 가상 사설 네트워크(virtual private networking, VPN) 및/또는 보안 쉘(secure shell, SSH) 프로토콜 및 방법에 따라 설정될 수 있다. 일단 그러한 터널이 설정되면, 이는 서버(14)가 감사 요청 및/또는 다른 명령들을 VM 감사 엔진(40)에 전송하는데 사용될 수 있다.
추가의 단계(208)에서, 감사 설치기(audit installer)는 하이퍼바이저(30)의 레벨로부터 인트로스펙션 및/또는 이벤트 인터셉트(중간차단)를 구성할 수 있다. 단계(208)는, 예를 들어, 감사되는 게스트 VM에 의해 사용된 일부 메모리 페이지에 대한 접근 허가를 설정하는 것을 포함할 수 있어서, 개별 페이지에 접근하려는 시도가 VM 감사 엔진(40) 또는 인트로스펙션 엔진(44)으로 하여금 감사되는 게스트 VM(32) 내에서 이벤트의 발생(예를 들어, 시스템 호출)을 탐지할 수 있도록 하는 프로세서 이벤트(예를 들면, VM 종료 이벤트)를 트리거할 수 있게 된다. 일부 실시예들에서, 단계(208)는 상기 감사되는 VM 내에서 실행되는 구성 요소들(예를 들어, 감사 에이전트(42))과 개별 VM 밖에서 실행되는 구성 요소들(예를 들어, 감사 엔진(40), 인트로스펙션 엔진(40)) 사이의 시그널링 및/또는 통신 메커니즘을 추가로 설정할 수 있다. 이러한 통신 또는 시그널링은 하드웨어 가상화 기술분야에 알려져 있는 임의의 방법을 사용할 수 있다. 일 예에서, 2개의 소프트웨어 구성 요소는 상기 2개의 소프트웨어 구성 요소에 의해 공유되는 물리적 메모리의 섹션을 통해 서로 간에 데이터를 전송할 수 있다. VM 안에서 실행되는 제1 구성 요소로부터 개별 VM 밖에서 실행되는 제2 구성 요소로 데이터를 전송하기 위해서는, 상기 제1 소프트웨어 구성 요소가 공유된 메모리 섹션에 상기 데이터를 기록하고, 그러고 나서 특권 프로세서 명령(privileged processor instruction)을 발행하면(예를 들면, Intel® 플랫폼의 VMCALL), 이로 인해 VM 종료 이벤트가 유발될 수 있다. Intel® 플랫폼의 VMExit와 같은 VM 종료 이벤트는, 상기 제1 소프트웨어 구성 요소를 실행하는 것에서, 상기 제2 소프트웨어 구성 요소의 일부일 수 있는 핸들러 루틴을 실행하는 것으로 프로세서(16)를 전환한다. 따라서, 상기 개별 VM 밖에서 실행되는 상기 제2 구성 요소는 상기 제1 구성 요소가 데이터를 전송하려고 시도한다는 것을 통지받을 수 있다. 반대로, 상기 제2 구성 요소로부터 상기 제1 구성 요소로 데이터를 전송하기 위해서는, 상기 제2 구성 요소가 공유된 메모리 섹션에 상기 데이터를 기록하고, 그러고 나서 개별 VM에 인터럽트를 삽입할 수 있다. 상기 인터럽트(interrupt)는 상기 개별 VM 내에서 실행되는 인터럽트 핸들러에 의해 취급될 수 있다(예를 들면, 상기 제1 소프트웨어 구성 요소에 의해). 따라서, 상기 제1 구성 요소는 상기 제2 구성 요소가 데이터를 전송하려고 시도한다는 것을 탐지할 수 있다. 일부 실시예들에서, 단계(208)는 전술한 통신 메커니즘이 가능하도록 다양한 프로세서 이벤트를 위한 핸들러로서 적절한 소프트웨어 구성 요소를 등록하는 것을 포함할 수 있다.
도 5는 본 발명의 일부 실시예에 따른, 감사 서버(14)와 감사되는 클라이언트 시스템 사이의 예시적인 데이터 교환을 보여준다. 서버(14)는 감사 요청(50)을 클라이언트 시스템(12)에 전송할 수 있고, 요청(50)은 VM 감사 엔진(40)이 클라이언트 시스템(12)의 감사를 수행하도록 지시할 수 있다. 일부 실시예들에서, 감사 요청(50)은 감사 유형의 표시자, 예를 들어 클라이언트 시스템(12) 상에서 수행될 감사 동작(audit operation)의 유형: 모든 합법적인 어플리케이션을 나열하는 것, 현재 OS 설정을 결정하는 것 등을 포함한다. 다른 예시적인 감사 요청(50)은 클라이언트 시스템(12) 상에서 현재 실행중인 타겟 가상 머신의 표시자를 포함한다; 그러한 감사 요청은 상기 타겟 VM의 감사를 선택적으로 수행하도록 감사 엔진(40)에 지시할 수 있다. 또 다른 예시적인 감사 요청(50)은 구체적인 소프트웨어 구성 요소의 표시자를 포함할 수 있다(예를 들면, Microsoft Word®, 특정 드라이버 등). 이러한 요청은 엔진(40)으로 하여금, 특히, 개별 소프트웨어 구성 요소가 상기 개별 클라이언트 시스템 상에 합법적으로 설치되었는지, 개별 소프트웨어 구성 요소의 어떤 버전이 설치되었는지, 개별 소프트에어 구성 요소가 현재 메모리에 로딩되었는지/실행중인지, 개별 소프트웨어 구성 요소가 가장 최근 언제 사용되었는지 등을 결정하도록 지시할 수 있다. 다른 예시적인 감사 요청(50)은, 엔진(40)으로 하여금 타겟 VM에 의해 또는 타겟 VM 내에서 실행되는 특정 소프트웨어 구성 요소에 의해 사용되는 하드웨어 리소스(예를 들면, 프로세서, 저장, 메모리)의 현재 수준/크기/백분율을 결정하도록 지시할 수 있다.
감사 요청(50)은 감사되는 클라이언트 시스템 상에서 실행되는 타겟 게스트 VM의 식별자(identifier)를 포함할 수 있다. 이러한 요청은 감사 엔진(40)으로 하여금 개별 게스트 VM의 선택적인 감사를 수행하도록 지시할 수 있다. 다른 요청(50)들은 감사 엔진으로 하여금, 감사되는 클라이언트 시스템 상에 현재 실행중인 모든 게스트 VM들의 감사를 수행하도록 지시할 수 있다.
감사 요청(50)은 스케줄에 따라서, 또는 네트워크 관리자의 활동에 응답하여 발송될 수 있다. 감사 요청(50)은 모든 클라이언트 시스템들(12a-d)에 균일하게 발송되거나, 또는 감사되는 클라이언트 시스템 각각에 특별히 맞춰질 수 있다. 일부 실시예들에서, 감사 요청은 개별 클라이언트 시스템 상에서 발생한 이벤트에 의해서, 또는 통신 네트워크(10) 상의 다른 곳에서 발생한 이벤트에 응답하여 트리거될 수 있다. 요청된 감사를 수행하는 것에 응답으로, VM 감사 엔진(들)(40a-b)은 감사 리포트(52)를 서버(14)에 전송할 수 있다. 리포트(52)는, 예를 들면, 개별 클라이언트 시스템의 현재 구성 설정의 세트, 설치된 소프트웨어 구성 요소의 리스트와 같은 개별 감사 활동의 결과를 포함한다.
도 6은 본 발명의 일부 실시예에 따른, VM 감사 엔진(40)에 의해 수행되는 예시적 단계들의 시퀀스를 보여준다. 엔진(40)은 서버(14)로부터의 감사 요청(50)에 주목할 수 있다. 요청(50)을 수신한 경우, 엔진(40)은 감사 요청(50)에 따라서 감사를 위한 타겟 VM을 선택할 수 있고, 감사 에이전트를 타겟 게스트 VM(예컨대, 도 3a 및 도 3b의 게스트 VM(32))에 드롭할 수 있다.
상기 에이전트는 감사되는 게스트 VM의 유형에 따라서, 예를 들면 감사되는 VM 내에서 현재 실행중인 게스트 OS(34)의 유형에 따라서, 만들어질 수 있다. OS 유형은 특히 이름 표시자(예컨대, Windows®), 및 버전 표시자(예컨대, 7, 가정용, 또는 엔터프라이즈용)를 포함할 수 있다. 일부 실시예들에서, 감사 엔진(40)은 개별 게스트 VM의 모델 특정 레지스터(model-specific register, MSR)의 콘텐트에 따라서, 또는 상기 개별 MSR에 의해 지시된 메모리 섹션의 콘텐트에 따라서 OS의 유형을 식별한다. 일부 실시예들에서, 엔진(40)은 감사되는 VM 내에서 실행되는 소프트웨어에 의해 그러한 MSR에 기록되는 데이터에 따라서 OS의 이름을 결정할 수 있다. 예를 들어서, 엔진(40)은 SYSENTER 또는 SYSCALL MSR에 대한 쓰기 명령을 인터셉트(중간차단)하여, 이러한 쓰기 명령의 파라미터에 따라 현재 실행 중이거나 또는 현재 초기화(initializing) 중인 OS의 유형을 결정할 수 있다. OS 이름에 관한 정보를 제공할 수 있는 다른 예시적인 레지스터들은, 특히, 컨트롤 레지스터, 인터럽트 디스크립터 테이블(interrupt descriptor table, IDT) 및 글로벌 디스크립터 테이블(global descriptor table, GDT)을 포함한다. MSR 기록에 따라 OS 유형을 식별하기 위해, 인트로스펙션 엔진(40)은 각각의 OS에 대해 특이적인 고속 시스템 호출 핸들러들(fast system-call handler)(예컨대, SYSCALL 또는 SYSENTER MSR의 콘텐트에 따라 취급되는 시스템 호출)의 소정의 라이브러리에 대한 패턴 매칭(pattern matching)을 더 사용할 수 있다. 이러한 고속 시스템 호출 라이브러리에는 감사 엔진(40) 및/또는 인트로스펙션 엔진(44)이 제공될 수 있으며, 주기적인 또는 온디맨드식(on-demand, 요청에 따른) 소프트웨어 업데이트를 통해 최신으로 유지될 수 있다.
일부 실시예들에서, 버전 표시자(릴리즈 명칭, 빌드 넘버 등과 같은)는 OS의 개별 유형에 대해 특이적인 특정 커널 데이터 구조를 파싱(parsing)함으로써 얻어질 수 있다. OS 버전의 식별을 허용하는 예시적인 데이터 구조는 특히 NtBuildNumber와 같은 Windows® 커널의 특정 내보내기(export) 심볼 또는 Linux® 커널의 특정 내보내기 심볼이다.
감사 엔진(42)을 타겟 게스트 VM에 드롭하면, 감사가 완료될 때까지 단계들(228-230-232)의 시퀀스가 루프(loop)로 반복될 수 있다. 감사가 진행되는 동안, VM 감사 엔진(40)은 감사 에이전트(42)와 데이터(예를 들어, 다양한 소프트웨어 구성 요소의 메모리 주소, 감사의 다양한 결과)를 교환할 수 있다. 가상 머신 내에서 및 가상 머신 밖에서 실행되는 구성 요소들 간의 이러한 메시징은 가상화 기술분야에 알려져 있는 임의의 방법(예를 들면, 전술한 바와 같은, 감사 엔진(40)과 감사 에이전트(42) 사이에서 공유되는 메모리 섹션을 통해)을 사용하여 수행될 수 있다. 감사가 완료되면, 단계(234)는 예를 들어서 드라이버 로더(driver loader)를 포함하는 메모리 섹션을 지움으로써, 감사되는 VM으로부터 감사 에이전트를 지운다(이하에서 상술됨). 추가의 단계(236)에서, 감사 엔진(40)은 감사 리포트(52)를 만들어내고(formulate) 감사 서버(14)로 전송한다.
도 7은 프로세서 권한 레벨(예를 들어, 특권 링(privilege rings))의 관점에서 감사 에이전트(42)의 예시적인 구성 요소를 보여준다. 일부 실시예들에서, 감사 에이전트(42)는 드라이버 로더(46) 및 감사 드라이버(48)를 포함한다. 드라이버 로더(46)는 VM 감사 엔진(40)에 의해, 도 3a 및 도 3b의 어플리케이션들(36a-b)과 같은, 작동 중인 어플리케이션(36)으로 삽입될 수 있다. 따라서 드라이버 로더(46)는 일반적으로 링 3(사용자 모드 또는 사용자 레벨의 프로세서 권한)에서, 어플리케이션(36)의 권한 레벨(privilege level)에서 실행될 수 있다. 일부 실시예들에서, 드라이버 로더(46)는 게스트 VM(32)으로 감사 드라이버(48)를 로딩하고 개시하며, 드라이버(48)는 일반적으로 게스트 OS(34)의 프로세서 권한 레벨(예를 들면, 링 0, 커널 모드, 또는 커널 레벨)에서 실행된다. 감사 드라이버(48)는 그러고 나서 게스트 VM(32) 내에서 감사 동작을 수행할 수 있다. 감사가 완료되면, 로더(46) 또는 VM 감사 엔진(40)은, 예를 들어서 드라이버(48)를 포함하는 메모리 섹션을 지움으로써, 게스트 VM(32)로부터 드라이버(48)를 제거할 수 있다. 선택적인 실시예는 드라이버 로더(46)를 사용하지 않고 대신에 코드(예컨대, 감사 에이전트(42))를 게스트 OS(34)의 커널에 직접 삽입한다. 그러한 실시예에서, 에이전트(42)는 링 0(커널 모드)에서 전적으로 실행될 수 있다.
소프트웨어 구성 요소를 가상 머신에 드롭하는 것은 본 기술 분야에 알려져 있는 다양한 방법을 사용하여 달성될 수 있다. 도 8은 본 발명의 바람직한 실시예에 따라, VM 감사 엔진(40)에 의해 수행되는, 에이전트(42)가 게스트 VM(32) 내에 드롭되는(도 6의 단계 226) 예시적 단계들의 시퀀스를 보여준다. 단계(250)에서, VM 감사 엔진(40)은 드라이버 로더(46)를 삽입하기에 적합한 메모리 섹션을 식별한다. 일부 실시예들에서, 드라이버 로더(46)는 가능한 한 작게, 예를 들면 메모리 페이지보다 작게 만들어져서 OS의 메모리 할당 기능(이를 사용하면 게스트 VM(32) 내에서 실행되는 멀웨어를 포함한 다른 소프트웨어에 의해 로더(46) 및/또는 드라이버(48)가 발견 가능해질 수 있음)을 사용하지 않고도 기존 데이터 구조 사이에서 안전하게 위장(dissimulated) 할 수 있다.
일 예에서, VM 감사 엔진(40)은 일반적으로 드라이버 섹션들 사이에서 게스트 OS(34)에 의해 예약된 패딩 공간(padding space) 내에 드라이버 로더(46)를 수신하기에 적합한 메모리 섹션을 검색할 수 있다. 이러한 패딩 공간은 Windows®와 같은 일부 운영 시스템이 객체(object)의 각 특징적 섹션이 페이지 경계와 정렬되도록 메모리를 할당하기 때문에 존재한다. 섹션이 전체 메모리 페이지를 차지하지 않는 경우, 개별 페이지 내의 나머지 메모리 공간은 더미(dummy, 무의미) 데이터(예를 들어, 0)로 패딩된다. 이러한 실시예들에서, 드라이버 로더(46)를 수용하기에 적절한 메모리 공간을 검색하는 것은, 이러한 더미 데이터를 위해 게스트 OS(34)의 드라이버에 할당된 메모리 페이지를 스캐닝하는 것을 포함할 수 있다.
다른 예에서, 엔진(40)은 작은 객체(예를 들어, 드라이버)를 위해 메모리를 할당하려는 OS에 의한 시도를 인터셉트할 수 있고, 상기 개별 객체는 메모리 페이지보다 작다. 필요한 메모리량을 할당하는 대신에, 엔진(40)은 게스트 OS(34)가 전체 메모리 페이지(예를 들어, 4kB)를 개별 객체에 할당하도록 강제할 수 있고, 개별 메모리 페이지 내의 나머지 공간을 사용하여 드라이버 로더(46)를 호스팅할 수 있다. 이러한 메모리 할당 시도를 인터셉트하기 위하여, 감사 엔진(40) 및/또는 인트로스펙션 엔진(44)의 일부 실시예는 Windows®에서 KeAllocatePoolWithTag와 같은 네이티브 OS 메모리 관리 기능을 실행하려는 시도를 탐지할 수 있다. 이러한 기능들이 개별 게스트 가상 머신(32)의 메모리에 속해 있는 메모리 주소를 결정하도록 하기 위해, 감사 엔진(40)은 커널 바이너리 이미지(예컨대, Windows®의 Portable Executable, Linux®의 Executable and Linkable Format)의 내보내진 함수 테이블과 같은 특정 데이터 구조를 엑세스할 수 있다. 객체를 통해서 현재 할당되고 있는 유형은 인터셉트된 호출의 할당 태그에 따라서 결정될 수 있다. 예를 들어, Windows®에서 'Driv' 태그는 드라이버 객체를 나타낸다.
또 다른 예에서, 단계(250)는 도 7의 어플리케이션(36)과 같은 실행 프로세스의 메모리 공간에 사용되지 않은 메모리 페이지를 매핑하는 것을 포함한다. 드라이버 로더(46)를 호스팅하기 위해 적절한 메모리 섹션을 식별하면, 단계(252)에서, VM 감사 엔진(40)은 로더(46)를 개별 메모리 섹션에 삽입할 수 있다.
다음으로, 감사 엔진(40)의 일부 실시예들은, 현재 실행중인 (어플리케이션(36)과 같은) 프로세스가 예를 들어, AMD® 플랫폼의 SYSCALL 또는 Intel® 플랫폼의 SYSENTER와 같은 시스템 호출을 발행함으로써 프로세서 권한의 변경을 시도하는 것을 기다릴 수 있다. 개별 VM 밖에서 시스템 호출을 인터셉트하는 것은 여러 가지 방법으로 수행될 수 있다. 일 예에서, 엔진(40)은 시스템 호출을 시도하는 쓰레드(thread)를 현재 실행중인 가상 프로세서의 프로세서 레지스터의 값을 리셋할 수 있다. 이러한 프로세서 레지스터의 예에는, Intel® 플랫폼의 IA32_LSTAR 및 IA32_SYSENTER_EIP 레지스터가 포함된다. 이러한 레지스터 조작은 시스템 호출이 시도되었을 때 이어서 오류를 발생시킨다; 각각의 오류는 VM 감사 엔진(40) 또는 인트로스펙션 엔진(44)에 의해 탐지될 수 있다. 또 다른 예에서, 엔진(40)은 게스트 OS(34)의 시스템 호출 핸들러를 포함하는 코드 페이지 상에 우회 훅(redirection hook)을 배치할 수 있다.
일부 실시예들에서, 시스템 호출이 인터셉트 될 때, 단계(256)는 개별 시스템 호출의 콘텍스트가 드라이버 로버(46)의 안전한 삽입을 허용하는지 여부를 결정하기 위해, 적격성 검사의 세트를 수행한다. 시스템 호출 핸들러의 후킹을 통해 시스템 호출의 인터셉트가 이뤄진 일 예에서, 적격성 검사는 현재 스택이 사용자 스택인지 아닌지 여부를 결정하는 것을 포함할 수 있다. 상기 스택이 사용자 스택인 경우에 코드 삽입을 시도하면, 사용자 모드에 속해 있는 모든 것이 커널에 대해 신뢰를 할 수 없기 때문에 시스템이 손상될 수 있다. 또한, 다른 쓰레드들은 사용자 스택으로부터 데이터를 스니핑(sniff)할 수 있고, 심지어는 드라이버 로더(46)를 공격할 수도 있다. 일부 실시예들에서, 상기 스택이 사용자 스택인지를 결정하는 것은 스택 세그먼트 디스크립터(stack segment descriptor)의 권한 레벨(privilege level)을 결정하는 것을 포함한다. 다른 적격성 검사는 인터럽트가 현재 작동(enable)하고 있는 여부를 결정할 수 있다. 드라이버 로더(46)는 인터럽트가 작동될 것을 요구하는 일부 프로세서 명령을 실행해야 할 수도 있다. 또 다른 적격성 검사는 현재 인터럽트 요청 수준(interrupt request level, IRQL)을 결정할 수 있다. 일부 실시예들은 예를 들어서 드라이버 로더(46)의 동작을 수행할 수 있도록 현재 IRQL이 0과 같을 것을 요구할 수 있다.
시스템 호출이 적격성 요구사항을 충족시키는 경우, 단계(260)에서, 감사 엔진(40)은 개별 시스템 호출을 발행한 쓰레드의 실행을 중지시키고, 프로세서(16)가 드라이버 로더(46)를 실행하도록 전환할 수 있다. 로더(46)가 실행을 종료한 경우, 감사 엔진(40)은 프로세서(16)(예를 들어, 어플리케이션(36))가 다시 원래 쓰레드를 실행하도록 전환할 수 있다.
도 9는 본 발명의 일부 실시예에 따른, 드라이버 로더(46)에 의해 수행되는 예시적 단계들의 시퀀스를 보여준다. 감사 드라이버(48)를 위해 메모리를 할당하고 그리고/또는 드라이버(48)를 위해 쓰레드를 생성하기 위해, 일부 실시예들은 예를 들어, Windows®의 ExAllocatePoolWithTag 및 PsCreateSystemThread(유사한 기능은 다른 OS들, 예컨대 Linux®에도 존재함)와 같은 게스트 OS(34)의 전용 기능을 호출할 수 있다. 드라이버 로더(46)가 작은 메모리 풋프린트(footprint)를 가질 것이 요구되는 실시예에서, 이러한 OS 기능의 주소는, 예를 들어 전술한 바와 같은 메시징 메커니즘을 통해, VM 감사 엔진(40)에 의해 로더(46)에 제공될 수 있다. 그러한 실시예들에서, 드라이버 로더(46)는 할당된 메모리에 드라이버(48)를 실제로 기록하지 않을 수 있다. 대신, 로더(46)는 할당된 메모리 섹션의 주소를 VM 감사 엔진(40)과 통신하는 한편, 실제 기록은 감사 엔진(40)에 의해 수행될 수 있다.
일단 감사 드라이버(48)가 개시되면(단계 274), 로더(46)는 종료될 수 있다. 일부 실시예들에서, 드라이버 로더(46)는, 감사 드라이버(48)가 실행을 종료하였을 때, 예를 들면, 현재 감사 작업이 완료되었을 때, 감사 드라이버(48)를 게스트 VM(32)으로부터 제거할 수 있다. 선택적인 실시예에서, VM 감사 엔진(40)은 클린업(cleanup)(예컨대, 메모리로부터 드라이버(48)를 제거)을 수행할 수 있다.
도 10은 본 발명의 일부 실시예에 따른, 감사 드라이버(48)에 의해 수행되는 예시적 단계들을 보여준다. 드라이버(48)는 자신의 메모리 공간과 실행 쓰레드를 가지는 게스트 VM(32) 내에서 실행되기 때문에, 드라이버(48)는 게스트 OS(34)가 이용할 수 있는 모든 리소스를 사용하여 게스트 VM(32)의 감사를, 예를 들면 설치된 어플리케이션의 리스트를 열거하고, OS의 다양한 파라미터 값을 결정하고, 다양한 소프트웨어 구성 요소와 관련된 타임스탬프를 결정하고, 리소스 사용을 결정하는 것 등을 수행할 수 있다. 이러한 작업은 본 기술분야에 알려져 있는 다양한 방법을 사용하여 수행될 수 있다. 예를 들어서, 감사 드라이버(48)는 게스트 OS(34)의 특정 레지스트리 키를 나열할 수 있으며, 개별 키는 설치된 어플리케이션/소프트웨어 패키지 등의 신원을 드러내는 것이다. 다른 감사 방법은, 게스트 OS(34)에 의해 노출된 어플리케이션 프로그래밍 인터페이스(application programming interface, API)를 호출하여 설치된 프로그램에 관한 다양한 데이터를 얻는 것이다(예컨대, Windows®의 윈도우 관리 도구(Windows Management Instrumentation, WMI)). 또 다른 예에서, 드라이버(48)는, 설치된 프로그램 및 업데이트 리스트를 얻기 위해 특정 파일 및 폴더(예를 들어, Windows®의 프로그램 파일)를 검색할 수 있다. 이러한 예시적인 방법들은 독립적으로 또는 함께 사용될 수 있다. 감사 중에 수집된 데이터는, 예를 들면 드라이버(48)와 VM 감사 엔진(40) 사이에서 공유되는 소정의 메모리 섹션에 그러한 데이터를 기록함으로써, VM 감사 엔진(40)으로 전송될 수 있다.
일부 실시예들에서, 감사를 수행하고 종료하기 전에 응답으로, 감사 드라이버(48)는 안티-멀웨어 드라이버와 같은 보안 모듈을 로딩 및/또는 개시할 수 있다. 상기 보안 모듈은, 예를 들어, 감사되는 게스트 VM이 멀웨어를 포함하는지 여부를 결정할 수 있고, 그리고/또는 기존의 멀웨어를 삭제하거나 그렇지 않으면 불능화시킬 수 있다. 이러한 보안 모듈의 잠행적이고 역동적인 전개로 인해, 이들의 존재와 활동은 개별 게스트 VM 내에서 실행되는 멀웨어에 의해 탐지되거나 방해받는 것이 상대적으로 어려울 수 있다.
본원에 설명된 예시적인 시스템 및 방법들은 비교적 많은 수의 클라이언트 시스템들(예를 들어, 기업 네트워크) 상에서, 원격으로 소프트웨어 감사를 수행하는 것이 가능하게 한다. 본 명세서에서 소프트웨어 감사란, 적법한 소프트웨어, 즉 개별 클라이언트 시스템의 적법한 사용자(예를 들어, 시스템 관리자)에 의해 개별 클라이언트 시스템 상에서의 실행을 위해 설치 및/또는 구성된 소프트웨어인지를 평가하는 것을 나타낸다. 예시적인 감사는, 예를 들어, 어떤 소프트웨어 어플리케이션이 현재 회사의 컴퓨터에 설치되었는지를 결정할 수 있다. 이러한 정보는, 예를 들어 소프트웨어 라이센싱, 업그레이드 전개를 용이하게 하고, 직원이 직장에서 특정 소프트웨어(예를 들어, 메시징 어플리케이션, 게임)를 설치하거나 또는 사용하는 것을 방지하고, 직원이 특정 브랜드 또는 메이크(make)의 소프트웨어(예를 들어, Google® Chrome®)를 사용하도록 결정하는 것 등에 사용될 수 있다.
감사 결과는 감사된 클라이언트 시스템에 통신 가능하게 연결된 서버 컴퓨터에 편리하게 집중될 수 있다. 상기 감사는 인간 관리자의 요청에 의해, 스케줄에 따라 그리고/또는 요청에 의해 자동으로 수행될 수 있다. 본 발명의 일부 실시예들에서, 감사는 선택된 클라이언트 시스템의 타겟이 된 멀웨어 스캔/치료(disinfection)와 같은 컴퓨터 보안 활동과 추가로 연결될 수 있다.
일부 실시예들은 하드웨어 가상화 기술을 사용하여 소프트웨어 감사의 안전성과 신뢰성을 증가시킨다. 감사 소프트웨어가 악의적인 인간 개입 및/또는 감사되는 클라이언트를 감염시키는 멀웨어에 노출되는 것을 피하기 위해, 일부 실시예들은 운영 시스템을 포함하는 클라이언트 소프트웨어를 가상 머신(virtual machine, VM)으로 이동시키고, 개별(respected) 가상 머신 외부로부터 감사의 일부를 수행한다. 따라서 감사 소프트웨어의 일부는 하이퍼바이저의 레벨에서 실행될 수 있거나 또는 개별 클라이언트에서 실행되는 별도의, 전용 감사 VM 내에서 실행될 수 있다.
가상화의 이점을 최대한 활용함으로써, 본 발명의 일부 실시예들은, 서버 팜 및 가상 데스크탑 인프라스트럭쳐(VDI) 시스템과 같이 다수의 VM을 동시에(in parallel) 실행하는 클라이언트 시스템을 감사하는데 또한 매우 적합하다. 일부 실시예에 따라 구성된 단일 감사 엔진은 개별 클라이언트에서 실행되는 모든 VM들 또는 복수의 VM들을 감사할 수 있다. 가상화된 환경에서 감사 작업을 수행하도록 구성된 일부 종래의 시스템은, 감사되는 VM의 메모리 스냅샷을 분석함으로써 감사를 수행한다. 이러한 종래의 시스템은 개별 메모리 스냅샷을 취하기 위해 감사되는 VM이 중지될 것을 요구할 수도 있다. 대조적으로, 본 발명의 일부 실시예들은 감사 에이전트가 현재 실행중인 VM에 드롭될 수 있기 때문에 감사되는 VM이 중지될 것을 요구하지 않는다. 메모리 스냅샷으로부터 추출될 수 있는 정보에 제한되지 않음으로써, 일부 실시예들은 실행중인 VM 내부로부터 상당히 풍부한 감사 데이터에 엑세스할 수 있다.
감사 클라이언트 내에 영구적으로 설치된 감사 소프트웨어를 가지는 것은, 이러한 소프트웨어를 멀웨어에 노출시킬 수 있고, 이는 소프트웨어를 중지시키거나 그렇지 않으면 불능화시킬 수 있다. 이러한 종래의 솔루션과는 대조적으로 본 발명의 일부 실시예들은, 감사 중에 감사되는 머신으로 감사 에이전트를 동적으로 드롭하므로 컴퓨터 보안 위험을 최소화한다. 감사되는 VM 내에 영구적인 감사 에이전트를 가지지 않는 것의 또 다른 이점은, 그러한 구성이 가상 머신과 감사 소프트웨어 모두의 관리, 전개, 및 업그레이드를 상당히 용이하게 할 수 있다는 것이다. 감사 솔루션이 독립적이며, 감사되는 가상 머신과 영구적으로 연결되어 있지 않은 경우, 감사 소프트웨어는 VM 소프트웨어와는 독립적으로 업데이트 될 수 있다. 예를 들어, VM 감사 엔진(40)에 대한 업데이트는 개별 클라이언트에서 실행 중인 게스트 VM의 동작에 영향을 미치지 않고 설치될 수 있다. VDI와 같은 하드웨어 가상화의 많은 현대적 어플리케이션에서, 일반적으로 가상 머신은 대개 VDI 서버 컴퓨터로부터 수신한 또는 클라이언트에 로컬로 저장된 VM 이미지를 기반으로, 클라이언트 시스템 상에서 동적으로 인스턴스화되고 제거된다. 감사되는 VM이 영구적인 감사 에이전트를 가지고 있지 않은 경우, 상기 VM 이미지는 상기 감사 소프트웨어에 영향을 주지 않고 언제든지 업데이트 되거나 그렇지 않으면 변경될 수 있다.
그러나 감사되는 VM 외부로부터 감사 작업을 수행하는 것은 본 기술분야에서 "bridging the semantic gap(시맨틱 갭 브리징)"으로 일반적으로 알려져 있는 어려운 기술적 문제를 야기한다. 감사되는 VM 내에서 실행되는 소프트웨어는 감사와 관련된 풍부한 정보에 엑세스할 수 있지만, 상기 개별 VM 외부에서 실행되는 소프트웨어는 일반적으로 상기 감사되는 VM의 가상 프로세서의 현재 상태에 그리고 물리적 메모리의 콘텐트에만 엑세스할 수 있다. 그러므로, 상기 개별 VM 외부로부터 VM 소프트웨어 내(in-VM software)의 시맨틱을 풀어내는 것은 불가능하거나 또는 기껏해도 상당한 양의 연산(computation)을 필요로 할 수 있다. 그러므로 bridging the semantic gap(시맨틱 갭 브리징)에 도움이 되기 위해서는, 일부 실시예들은 감사되는 VM 내에 감사 에이전트를 드롭한다. 상기 감사 에이전트는 감사되는 VM 안으로부터 정보를 수집할 수 있고, 이러한 정보를 상기 감사되는 VM 밖에서 실행되는 구성 요소와 통신할 수 있다.
상기의 실시예들이 본 발명의 범위를 벗어나지 않는다면 다양한 방법으로 변경될 수 있음은 통상의 기술자에게 당연한 것이다. 따라서 본 발명의 범위는 이하의 청구항과 그들의 법적 균등물에 의해서 결정되어야 한다.

Claims (22)

  1. 게스트 가상 머신(virtual machine, VM)들의 세트를 실행하고 VM 감사 엔진(audit engine)을 추가로 실행하도록 구성된 적어도 하나의 하드웨어 프로세서를 포함하는 컴퓨터 시스템으로서,
    상기 VM 감사 엔진은 게스트 VM들의 세트 밖에서 실행되고, 원격 감사 서버로부터 감사 요청을 수신하는 것에 응답으로:
    감사 에이전트(audit agent)를 상기 게스트 VM들의 세트의 타겟 VM에 삽입하도록 구성되되, 상기 감사 에이전트는 상기 타겟 VM의 감사를 수행하도록 구성되고, 상기 감사(audit)는 상기 타겟 VM 상에서의 실행을 위해 설치된 적법한(legitimate) 컴퓨터 프로그램들의 리스트를 생성하는 것과 하드웨어 리소스의 용량으로서 상기 타겟 VM에 의해 현재 사용되고 있는 용량을 결정하는 것으로 이루어진 그룹으로부터 선택된 항목을 포함하고;
    상기 감사 에이전트를 삽입하는 것에 응답으로, 상기 타겟 VM으로 하여금 상기 감사 에이전트를 실행하도록 유발하도록 구성되고; 그리고
    상기 타겟 VM이 상기 감사 에이전트를 실행하는 것에 응답으로, 상기 타겟 VM으로부터 상기 감사 에이전트를 제거하도록 구성되는 것을 특징으로 하는 컴퓨터 시스템.
  2. 제1항에 있어서,
    상기 감사 에이전트를 삽입하는 것은:
    상기 컴퓨터 시스템의 메모리에 드라이버 로더(driver loader)를 기록하는 것과(상기 드라이버 로더는 상기 타겟 VM에 감사 드라이버(audit driver)를 로딩하도록 구성되고, 상기 감사 드라이버는 상기 감사를 수행하도록 구성됨); 그리고
    상기 타겟 VM 내에서 실행되는 컴퓨터 프로그램이 시스템 호출을 발행할 때, 상기 컴퓨터 프로그램을 실행하는 것으로부터 상기 드라이버 로더를 실행하는 것으로 상기 타겟 VM을 전환하도록 구성하는 것,
    을 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  3. 제2항에 있어서,
    상기 감사 에이전트를 삽입하는 것은 상기 타겟 VM의 드라이버에 할당된 메모리 섹션에 상기 드라이버 로더를 기록하는 것을 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  4. 제2항에 있어서,
    상기 드라이버 로더를 기록하는 것은:
    소프트웨어 객체를 위한 메모리를 할당하려는 상기 타겟 VM의 운영 시스템(operating system)에 의한 시도를 인터셉트하는 것과; 그리고
    상기 시도를 인터셉트하는 것에 응답으로, 상기 시도에 의해 의도된 메모리 할당을 변경하여 상기 할당된 메모리가 상기 소프트웨어 객체와 상기 드라이버 로더 모두를 수용하도록 하는 것,
    을 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  5. 제1항에 있어서,
    상기 감사는, 적법한 컴퓨터 프로그램들의 상기 리스트 중 적어도 하나의 컴퓨터 프로그램이 설치되었을 때의 시점을 결정하는 것을 추가로 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  6. 제1항에 있어서,
    상기 감사는, 적법한 컴퓨터 프로그램들의 제2 리스트를 생성하는 것을 추가로 포함하며, 상기 제2 리스트의 모든 멤버들은 상기 타겟 VM의 휘발성 메모리에 현재 로딩된 것을 특징으로 하는 컴퓨터 시스템.
  7. 제1항에 있어서,
    상기 하드웨어 리소스는 상기 적어도 하나의 하드웨어 프로세서의 처리 용량(processing capacity)을 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  8. 제1항에 있어서,
    상기 하드웨어 리소스는 상기 컴퓨터 시스템의 비휘발성 저장 장치를 포함하는 것을 특징으로 하는 컴퓨터 시스템.
  9. 제1항에 있어서,
    상기 VM 감사 엔진은:
    상기 타겟 VM 상에서 현재 실행중인 운영 시스템의 유형을 탐지하고; 그리고
    응답으로, 상기 운영 시스템의 상기 유형에 따라 상기 감사 에이전트를 구성하도록, 추가로 구성되는 것을 특징으로 하는 컴퓨터 시스템.
  10. 제1항에 있어서,
    상기 감사 요청은 상기 타겟 VM의 표시자를 포함하고; 그리고
    상기 VM 감사 엔진은 상기 감사 요청에 따라서 상기 게스트 VM들의 세트로부터 상기 타겟 VM을 선택하도록 구성되는 것을 특징으로 하는 컴퓨터 시스템.
  11. 제1항에 있어서,
    상기 VM 감사 엔진은 상기 타겟 VM과는 구별되는 감사 VM 내에서 실행되는 것을 특징으로 하는 컴퓨터 시스템.
  12. 컴퓨터 시스템 상에서 실행되는 게스트 VM들의 세트 밖에서 가상 머신(virtual machine, VM) 감사 엔진을 실행하기 위하여 상기 컴퓨터 시스템의 적어도 하나의 하드웨어 프로세서를 채용하는 것을 포함하는 방법으로서, 상기 VM 감사 엔진을 실행하는 것은:
    원격 서버로부터 감사 요청을 수신하는 것에 응답으로, 감사 에이전트를 상기 게스트 VM들의 세트의 타겟 VM에 삽입하는 것(상기 감사 에이전트는 상기 타겟 VM의 감사(audit)를 수행하도록 구성되고, 상기 감사는 상기 타겟 VM 상에서의 실행을 위해 설치된 적법한 컴퓨터 프로그램들의 리스트를 생성하는 것과 하드웨어 리소스의 용량으로서 상기 타겟 VM에 의해 현재 사용되고 있는 용량을 결정하는 것으로 이루어진 그룹으로부터 선택된 항목을 포함함);
    상기 감사 에이전트를 삽입하는 것에 응답으로, 상기 타겟 VM으로 하여금 상기 감사 에이전트를 실행하도록 유발하는 것; 그리고
    상기 타겟 VM이 상기 감사 에이전트를 실행하는 것에 응답으로, 상기 타겟 VM으로부터 상기 감사 에이전트를 제거하는 것을 포함하는 것을 특징으로 하는 방법.
  13. 제12항에 있어서,
    상기 감사 에이전트를 삽입하는 것은:
    상기 컴퓨터 시스템의 메모리에 드라이버 로더(driver loader)를 기록하는 것과(상기 드라이버 로더는 상기 타겟 VM에 감사 드라이버(audit driver)를 로딩하도록 구성되고, 상기 감사 드라이버는 상기 감사를 수행하도록 구성됨); 그리고
    상기 타겟 VM 내에서 실행되는 컴퓨터 프로그램이 시스템 호출을 발행할 때, 상기 컴퓨터 프로그램을 실행하는 것으로부터 상기 드라이버 로더를 실행하는 것으로 상기 타겟 VM을 전환하도록 구성하는 것,
    을 포함하는 것을 특징으로 하는 방법.
  14. 제13항에 있어서,
    상기 감사 에이전트를 삽입하는 것은 상기 타겟 VM의 드라이버에 할당된 메모리 섹션에 상기 드라이버 로더를 기록하는 것을 포함하는 것을 특징으로 하는 방법.
  15. 제13항에 있어서,
    상기 드라이버 로더를 기록하는 것은:
    소프트웨어 객체를 위한 메모리를 할당하려는 상기 타겟 VM의 운영 시스템(operating system)에 의한 시도를 인터셉트하는 것과; 그리고
    상기 시도를 인터셉트하는 것에 응답으로, 상기 시도에 의해 의도된 메모리 할당을 변경하여 상기 할당된 메모리가 상기 소프트웨어 객체와 상기 드라이버 로더 모두를 수용하도록 하는 것,
    을 포함하는 것을 특징으로 하는 방법.
  16. 제12항에 있어서,
    상기 감사는, 적법한 컴퓨터 프로그램들의 제2 리스트를 생성하는 것을 추가로 포함하며, 상기 제2 리스트의 모든 멤버들은 상기 타겟 VM의 휘발성 메모리에 현재 로딩된 것을 특징으로 하는 방법.
  17. 제12항에 있어서,
    상기 하드웨어 리소스는 상기 적어도 하나의 하드웨어 프로세서의 처리 용량(processing capacity)을 포함하는 것을 특징으로 하는 방법.
  18. 제12항에 있어서,
    상기 하드웨어 리소스는 상기 컴퓨터 시스템의 비휘발성 저장 장치를 포함하는 것을 특징으로 하는 방법.
  19. 제12항에 있어서,
    상기 타겟 VM과는 구별되는 감사 VM 내에서 상기 VM 감사 엔진을 실행하는 것을 포함하는 것을 특징으로 하는 방법.
  20. 복수의 클라이언트 시스템들과 감사 트랜잭션(audit transaction)을 수행하도록 구성된 적어도 하나의 하드웨어 프로세서를 포함하는 서버 컴퓨터 시스템으로서, 상기 감사 트랜잭션은:
    상기 복수의 클라이언트 시스템들의 클라이언트 시스템으로 감사 요청을 전송하는 것과; 그리고
    응답으로, 상기 클라이언트 시스템으로부터 감사 리포트를 수신하는 것;
    을 포함하고,
    상기 감사 리포트는 상기 클라이언트 시스템 상에서 실행되는 게스트 VM들의 세트 밖에서 상기 클라이언트 시스템 상에서 실행되는 가상 머신(virtual machine, VM) 감사 엔진에 의해 결정되고, 상기 감사 리포트를 결정하는 것은:
    상기 서버 컴퓨터 시스템으로부터 감사 요청을 수신하는 것에 응답으로, 감사 에이전트를 상기 게스트 VM들의 세트의 타겟 VM에 삽입하고, 상기 감사 에이전트는 상기 타겟 VM의 감사(audit)를 수행하도록 구성되고, 상기 감사는 상기 타겟 VM 상에서의 실행을 위해 설치된 적법한 컴퓨터 프로그램들의 리스트를 생성하는 것과 하드웨어 리소스의 용량으로서 상기 타겟 VM에 의해 현재 사용되고 있는 용량을 결정하는 것으로 이루어진 그룹으로부터 선택된 항목을 포함하고;
    상기 감사 에이전트를 삽입하는 것에 응답으로, 상기 타겟 VM으로 하여금 상기 감사 에이전트를 실행하도록 유발하고; 그리고
    상기 타겟 VM이 상기 감사 에이전트를 실행하는 것에 응답으로, 상기 타겟 VM으로부터 상기 감사 에이전트를 제거하는 것을 포함하는 것을 특징으로 하는 서버 컴퓨터 시스템.
  21. 컴퓨터 시스템의 적어도 하나의 하드웨어 프로세서에 의해 실행될 때, 상기 컴퓨터 시스템으로 하여금 가상 머신(VM) 감사 엔진을 형성하도록 유발하는 명령들을 저장하는 비-일시적 컴퓨터 판독가능 매체(non-transitory computer-readable medium)로서, 상기 VM 감사 엔진은 상기 컴퓨터 시스템 상에 노출된 게스트 VM들의 세트 밖에서 실행되고, 상기 VM 감사 엔진은, 원격 감사 서버로부터 감사 요청을 수신하는 것에 응답으로:
    감사 에이전트를 상기 게스트 VM들의 세트의 타겟 VM에 삽입하고, 상기 감사 에이전트는 상기 타겟 VM의 감사(audit)를 수행하도록 구성되고, 상기 감사는 상기 타겟 VM 상에서의 실행을 위해 설치된 적법한 컴퓨터 프로그램들의 리스트를 생성하는 것과 하드웨어 리소스의 용량으로서 상기 타겟 VM에 의해 현재 사용되고 있는 용량을 결정하는 것으로 이루어진 그룹으로부터 선택된 항목을 포함하고;
    상기 감사 에이전트를 삽입하는 것에 응답으로, 상기 타겟 VM으로 하여금 상기 감사 에이전트를 실행하도록 유발하고; 그리고
    상기 타겟 VM이 상기 감사 에이전트를 실행하는 것에 응답으로, 상기 타겟 VM으로부터 상기 감사 에이전트를 제거하도록 구성되는 것을 특징으로 하는 비-일시적 컴퓨터 판독가능 매체.
  22. 제21항에 있어서,
    상기 명령들은 추가로 상기 컴퓨터 시스템의 적어도 하나의 하드웨어 프로세서로 하여금 상기 컴퓨터 시스템 상에서 상기 타겟 VM을 노출시키도록 구성된 하이퍼바이저를 형성하도록 유발하는 것을 특징으로 하는 비-일시적 컴퓨터 판독가능 매체.


KR1020187017896A 2016-01-05 2017-01-04 가상 머신 감사를 위한 시스템 및 방법들 KR102255767B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201662274902P 2016-01-05 2016-01-05
US62/274,902 2016-01-05
US15/045,979 2016-02-17
US15/045,979 US9965313B2 (en) 2016-01-05 2016-02-17 Systems and methods for auditing a virtual machine
PCT/EP2017/050112 WO2017118648A1 (en) 2016-01-05 2017-01-04 System and methods for auditing a virtual machine

Publications (2)

Publication Number Publication Date
KR20180099682A true KR20180099682A (ko) 2018-09-05
KR102255767B1 KR102255767B1 (ko) 2021-05-27

Family

ID=59235780

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187017896A KR102255767B1 (ko) 2016-01-05 2017-01-04 가상 머신 감사를 위한 시스템 및 방법들

Country Status (12)

Country Link
US (3) US9965313B2 (ko)
EP (1) EP3400527A1 (ko)
JP (1) JP6761476B2 (ko)
KR (1) KR102255767B1 (ko)
CN (1) CN108475217B (ko)
AU (1) AU2017205257B2 (ko)
CA (1) CA3008201C (ko)
HK (1) HK1254084A1 (ko)
IL (1) IL260012B (ko)
RU (1) RU2691187C1 (ko)
SG (1) SG11201805390WA (ko)
WO (1) WO2017118648A1 (ko)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10181034B2 (en) * 2016-02-12 2019-01-15 Sophos Limited Virtual machine security
US20210026950A1 (en) * 2016-03-07 2021-01-28 Crowdstrike, Inc. Hypervisor-based redirection of system calls and interrupt-based task offloading
US10417065B2 (en) * 2016-06-13 2019-09-17 Dynatrace Llc Method and system for automated agent injection in container environments
US10515213B2 (en) * 2016-08-27 2019-12-24 Microsoft Technology Licensing, Llc Detecting malware by monitoring execution of a configured process
KR102179847B1 (ko) * 2016-11-11 2020-11-17 삼성에스디에스 주식회사 인프라 진단 시스템 및 그 방법
US10635479B2 (en) 2016-12-19 2020-04-28 Bitdefender IPR Management Ltd. Event filtering for virtual machine security applications
US11157300B2 (en) 2018-02-13 2021-10-26 Sophos Limited Managing virtual machine security resources
US11151603B2 (en) * 2018-12-31 2021-10-19 Microsoft Technology Licensing, Llc Optimizing content item delivery for installations of a mobile application
CN110278127B (zh) * 2019-07-02 2020-12-01 成都安恒信息技术有限公司 一种基于安全传输协议的Agent部署方法及系统
CN110719334B (zh) * 2019-10-18 2021-10-26 上海华讯网络系统有限公司 适用于云桌面行为的审计系统及方法
US11892939B2 (en) 2020-03-21 2024-02-06 Dynatrace Llc Automatic injection of agents into processes executing statically linked binaries
CN111290837B (zh) * 2020-05-07 2020-08-14 翱捷科技(上海)有限公司 一种构建轻量级虚拟化系统的方法
US11755374B2 (en) * 2020-05-26 2023-09-12 Dell Products L.P. Cloud resource audit system
RU2770136C1 (ru) * 2021-04-22 2022-04-14 Общество С Ограниченной Ответственностью "Кировский Региональный Центр Деловой Информации" Способ защиты компьютерной системы от несанкционированного доступа к информации, реализуемый на уровне аппаратной платформы посредством механизмов виртуализации, и устройство для его осуществления
US20230061511A1 (en) * 2021-08-30 2023-03-02 International Business Machines Corporation Inaccessible prefix pages during virtual machine execution
CN114615013B (zh) * 2022-01-29 2022-12-02 北京永信至诚科技股份有限公司 一种网络靶场的综合审计方法及系统
CN114218599B (zh) * 2022-02-22 2022-05-27 飞狐信息技术(天津)有限公司 一种业务数据处理方法及装置、存储介质及电子设备
CN114625443A (zh) * 2022-03-23 2022-06-14 珠海雷酷互动科技有限公司 一种安卓系统虚拟环境运行方法、装置、设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090241109A1 (en) * 2008-03-24 2009-09-24 International Business Machines Corporation Context Agent Injection Using Virtual Machine Introspection
US20110125894A1 (en) * 2009-11-25 2011-05-26 Novell, Inc. System and method for intelligent workload management
US20120304170A1 (en) * 2011-05-27 2012-11-29 Morgan Christopher Edwin Systems and methods for introspective application reporting to facilitate virtual machine movement between cloud hosts
US20140245444A1 (en) * 2013-02-22 2014-08-28 Bitdefender IPR Management Ltd. Memory Introspection Engine for Integrity Protection of Virtual Machines
US20150101049A1 (en) * 2013-10-04 2015-04-09 Bitdefender IPR Management Ltd. Complex Scoring for Malware Detection

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7617534B1 (en) 2005-08-26 2009-11-10 Symantec Corporation Detection of SYSENTER/SYSCALL hijacking
US8234640B1 (en) 2006-10-17 2012-07-31 Manageiq, Inc. Compliance-based adaptations in managed virtual systems
US7698305B2 (en) * 2006-12-01 2010-04-13 Microsoft Corporation Program modification and loading times in computing devices
WO2010009909A1 (en) 2008-07-21 2010-01-28 International Business Machines Corporation A method and system for improvements in or relating to off-line virtual environments
US8225317B1 (en) 2009-04-17 2012-07-17 Symantec Corporation Insertion and invocation of virtual appliance agents through exception handling regions of virtual machines
US11132237B2 (en) 2009-09-24 2021-09-28 Oracle International Corporation System and method for usage-based application licensing in a hypervisor virtual execution environment
US20110154023A1 (en) * 2009-12-21 2011-06-23 Smith Ned M Protected device management
US8140735B2 (en) * 2010-02-17 2012-03-20 Novell, Inc. Techniques for dynamic disk personalization
US8938782B2 (en) 2010-03-15 2015-01-20 Symantec Corporation Systems and methods for providing network access control in virtual environments
WO2011152816A1 (en) 2010-05-30 2011-12-08 Hewlett-Packard Development Company, L.P. Virtual machine code injection
US20120066681A1 (en) * 2010-09-12 2012-03-15 Levy Tomer System and method for management of a virtual machine environment
US20120254993A1 (en) 2011-03-28 2012-10-04 Mcafee, Inc. System and method for virtual machine monitor based anti-malware security
US10606626B2 (en) * 2014-12-29 2020-03-31 Nicira, Inc. Introspection method and apparatus for network access filtering
US9438618B1 (en) * 2015-03-30 2016-09-06 Amazon Technologies, Inc. Threat detection and mitigation through run-time introspection and instrumentation

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090241109A1 (en) * 2008-03-24 2009-09-24 International Business Machines Corporation Context Agent Injection Using Virtual Machine Introspection
US20110125894A1 (en) * 2009-11-25 2011-05-26 Novell, Inc. System and method for intelligent workload management
US20120304170A1 (en) * 2011-05-27 2012-11-29 Morgan Christopher Edwin Systems and methods for introspective application reporting to facilitate virtual machine movement between cloud hosts
US20140245444A1 (en) * 2013-02-22 2014-08-28 Bitdefender IPR Management Ltd. Memory Introspection Engine for Integrity Protection of Virtual Machines
US20150101049A1 (en) * 2013-10-04 2015-04-09 Bitdefender IPR Management Ltd. Complex Scoring for Malware Detection

Also Published As

Publication number Publication date
US20170192810A1 (en) 2017-07-06
AU2017205257A1 (en) 2018-06-28
IL260012B (en) 2020-04-30
SG11201805390WA (en) 2018-07-30
CN108475217A (zh) 2018-08-31
JP6761476B2 (ja) 2020-09-23
AU2017205257B2 (en) 2021-08-26
WO2017118648A1 (en) 2017-07-13
IL260012A (en) 2018-07-31
CA3008201C (en) 2023-01-17
HK1254084A1 (zh) 2019-07-12
CN108475217B (zh) 2022-05-17
US20200065131A1 (en) 2020-02-27
US10949247B2 (en) 2021-03-16
EP3400527A1 (en) 2018-11-14
KR102255767B1 (ko) 2021-05-27
JP2019503539A (ja) 2019-02-07
RU2691187C1 (ru) 2019-06-11
CA3008201A1 (en) 2017-07-13
US10489187B2 (en) 2019-11-26
US9965313B2 (en) 2018-05-08
US20180253329A1 (en) 2018-09-06

Similar Documents

Publication Publication Date Title
US10949247B2 (en) Systems and methods for auditing a virtual machine
US10445498B2 (en) Systems and methods of application control in virtualized environments
US9202046B2 (en) Systems and methods for executing arbitrary applications in secure environments
US7827550B2 (en) Method and system for measuring a program using a measurement agent
RU2679175C1 (ru) Способ поведенческого обнаружения вредоносных программ с использованием виртуальной машины-интерпретатора
US8458791B2 (en) Hardware-implemented hypervisor for root-of-trust monitoring and control of computer system
EP1939754B1 (en) Providing protected access to critical memory regions
JP7036821B2 (ja) 仮想マシンセキュリティ適用例のためのイベントフィルタ処理
JP2016526730A (ja) 仮想マシンにおけるマルウェア検出のためのプロセス評価
US10360386B2 (en) Hardware enforcement of providing separate operating system environments for mobile devices
Milenkoski et al. Experience report: an analysis of hypercall handler vulnerabilities
US20150379265A1 (en) Systems And Methods For Preventing Code Injection In Virtualized Environments
Xing et al. OB‐IMA: out‐of‐the‐box integrity measurement approach for guest virtual machines
Srivastava et al. Secure observation of kernel behavior
Vasudevan Practical Security Properties on Commodity Computing Platforms: The Uber EXtensible Micro-Hypervisor Framework
Zhang et al. T-MAC: Protecting Mandatory Access Control System Integrity from Malicious Execution Environment on ARM-Based Mobile Devices
Wang et al. NestedSGX: Bootstrapping Trust to Enclaves within Confidential VMs
Chen et al. DScope: To Reliably and Securely Acquire Live Data from Kernel-Compromised ARM Devices
Xu et al. virtCCA: Virtualized Arm Confidential Compute Architecture with TrustZone
Wu Virtualization-Based Approaches for Mitigation of Malware Threats
Ibrahim et al. Virtual Machines Security in IaaS Platform
Nimgaonkar et al. VIRTUALIZATION BASED SECURE EXECUTION AND TESTING FRAMEWORK Srujan Das Kotikela Computer Science and Engineering University of North Texas

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant