KR102297133B1 - 비동기적 인트로스펙션 예외를 이용한 컴퓨터 보안 시스템들 및 방법들 - Google Patents

비동기적 인트로스펙션 예외를 이용한 컴퓨터 보안 시스템들 및 방법들 Download PDF

Info

Publication number
KR102297133B1
KR102297133B1 KR1020187001763A KR20187001763A KR102297133B1 KR 102297133 B1 KR102297133 B1 KR 102297133B1 KR 1020187001763 A KR1020187001763 A KR 1020187001763A KR 20187001763 A KR20187001763 A KR 20187001763A KR 102297133 B1 KR102297133 B1 KR 102297133B1
Authority
KR
South Korea
Prior art keywords
condition
satisfied
target entity
response
exception
Prior art date
Application number
KR1020187001763A
Other languages
English (en)
Other versions
KR20180029047A (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 KR20180029047A publication Critical patent/KR20180029047A/ko
Application granted granted Critical
Publication of KR102297133B1 publication Critical patent/KR102297133B1/ko

Links

Images

Classifications

    • 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
    • G06F21/562Static detection
    • G06F21/564Static detection by virus signature recognition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • 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
    • 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
    • G06F21/562Static detection
    • 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
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device

Abstract

보안 관련 이벤트들(특히 하드웨어 가상화 플랫폼에서)의 효율적인 분석을 가능하게 하는 시스템과 방법을 설명한다. 일부 실시예들에서, 통지 핸들러는 가상 머신 내 이벤트의 발생을 탐지하고, 각각의 이벤트를 보안 소프트웨어로 통신한다. 보안 소프트웨어는 그러고 나서 상기 각각의 이벤트를 행동 및 예외 시그니쳐들의 집합과 매칭을 시도한다. 예외는 <이벤트, 엔터티> 튜플에 의해 만족될 때, 상기 각각의 엔터티가 악성이 아님을 나타내는 조건들의 세트를 포함한다. 일부 실시예들에서, 예외 매칭의 일부는 동기적으로(즉, 상기 각각의 이벤트를 트리거하는 엔터티의 실행이 중단되는 동안) 수행되고, 반면에 예외 매칭의 다른 일부는 비동기적으로(즉, 트리거링 엔터티로 하여금 실행을 재개하도록 한 이후에) 수행된다.

Description

비동기적 인트로스펙션 예외를 이용한 컴퓨터 보안 시스템들 및 방법들
본 출원은 2015년 7월 14일에 출원된 미합중국 가특허출원 번호 제62/192,384호(발명의 명칭 "비동기적 인트로스펙션 예외를 이용한 컴퓨터 보안 시스템들 및 방법들(Computer Security Systems and Methods Using Asynchronous Introspection Exceptions)")의 출원일에 대한 우선권을 주장하며 그 전체 내용은 본 명세서에서 참조로서 포함된다.
본 발명은 컴퓨터 보안 시스템 및 방법에 관한 것이고, 특히 컴퓨터 보안 위협들로부터 하드웨어 가상화 환경을 보호하는 시스템 및 방법에 관한 것이다.
멀웨어로도 알려진 악성 소프트웨어는 세계적으로 많은 수의 컴퓨터 시스템에 영향을 주고 있다. 멀웨어는 컴퓨터 바이러스, 웜, 루트킷(rootkit), 스파이웨어, 및 원하지 않은 애드웨어와 같은 많은 형태로, 수백만의 컴퓨터 사용자에게 심각한 위협이 되고 있으며, 무엇보다도 데이터와 민감한 정보의 손실, 신원 도용, 및 생산성 손실에 있어 이들을 취약하게 하고 있다.
컴퓨터 보안 소프트웨어는 악성 소프트웨어로부터 컴퓨터 시스템들을 보호하기 위해 사용될 수 있다. 멀웨어를 탐지하고 방지하기 위해 일반적으로 사용되는 방법에는 시그니쳐 매칭 및 행동적 방법들이 포함된다. 시그니쳐 기반 방법들은 타깃 소프트웨어 엔터티의 코드의 섹션을 악성으로 알려진 소프트웨어로부터 추출된 코드 스니핏(code snippet)의 집합과 매칭하도록 시도한다. 행동적 방법들은 일반적으로 타깃 소프트웨어 엔터티의 실행에 의해 유발되거나 또는 실행 중에 발생하는 이벤트의 발생을 탐지하는 것과, 이들이 잠재적인 보안 위협을 나타내는지 여부를 결정하기 위해 각각의 이벤트를 분석하는 것을 포함한다.
종래의 이벤트 탐지는 보통 후킹(hooking)으로서 본 기술분야에 알려져 있는 방법의 종류에 의존한다. 이러한 방법들은 종종 취약하며, 악성 소프트웨어에 의해 방해 받을 수 있다. 또한, 종래의 행동적 방법들은 보통 탐지된 이벤트를 유발한 엔터티의 실행을 중단시키고, 반면에 각각의 이벤트를 악성의 지표(indicator)에 대해 분석한다. 이러한 중단은 특히 보안 소프트웨어가 보호되는 가상 머신 밖에서 실행되는 하드웨어 가상화 구성에서 사용자 경험(user experience)에 부정적인 영향을 미칠 수 있다.
컴퓨터 보안 시스템들 및 방법들의 효율을 향상시키고, 특히 이벤트 탐지 및 분석과 관련된 상기 결점들에 대응하기 위한 시스템들 및 방법들을 개발하는데 지속적인 관심이 있다.
본 발명의 일 태양에 따르면, 호스트 시스템은 하드웨어 프로세서 및 메모리를 포함하고, 상기 하드웨어 프로세서는 타깃 엔터티(entity), 동기적 예외 분석기(synchronous exception analyzer), 및 비동기적 예외 분석기(asynchronous exception analyzer)를 실행하도록 구성된다. 상기 하드웨어 프로세서는, 상기 타깃 엔터티의 실행에 의해 유발되는 이벤트의 발생을 탐지하는 것의 응답으로, 상기 타깃 엔터티의 실행을 중단하고, 그리고 상기 타깃 엔터티의 실행을 중단하는 것의 응답으로, 상기 동기적 예외 분석기를 실행하는 것으로 전환하도록 추가적으로 구성된다. 상기 동기적 예외 분석기는, 상기 이벤트에 따라서 상기 타깃 엔터티가 악성인 것으로 의심되는지 여부를 결정하도록 구성된다. 상기 동기적 예외 분석기는, 응답으로, 상기 타깃 엔터티가 악성인 것으로 의심될 때, 복수의 룰 예외 시그니쳐(rule exception signature)들로부터 룰 예외 시그니쳐를 선택적으로 검색하되, 상기 룰 예외 시그니쳐는 상기 이벤트에 따라서 검색되도록 추가적으로 구성되고, 상기 룰 예외 시그니쳐는 제1 조건의 인코딩 및 제2 조건의 인코딩을 포함한다. 상기 동기적 예외 분석기는, 상기 예외 시그니쳐를 검색하는 것의 응답으로, 상기 제1 조건이 상기 이벤트에 따라서 그리고 상기 타깃 엔터티에 따라서 만족되는지 여부를 결정하도록 추가적으로 구성된다. 상기 제1 조건이 만족되는지 여부를 결정하는 것의 응답으로, 상기 제1 조건이 만족될 때, 상기 동기적 예외 분석기는, 상기 하드웨어 프로세서로 하여금 상기 타깃 엔터티의 실행을 재개하도록 유발하도록 추가적으로 구성된다. 상기 동기적 예외 분석기는, 상기 제1 조건이 만족되는지 여부를 결정하는 것의 응답으로, 상기 제1 조건이 만족되지 않을 때, 상기 타깃 엔터티는 악성인 것으로 결정하도록 추가적으로 구성된다. 상기 비동기적 예외 분석기는, 상기 하드웨어 프로세서가 상기 타깃 엔터티의 실행을 재개하는 것의 응답으로, 상기 제2 조건이 상기 이벤트에 따라서 그리고 상기 타깃 엔터티에 따라서 만족되는지 여부를 결정하도록 구성된다. 상기 비동기적 예외 분석기는, 상기 제2 조건이 만족되는지 여부를 결정하는 것의 응답으로, 상기 제2 조건이 만족될 때, 상기 타깃 엔터티는 악성이 아닌 것으로 결정하도록 추가적으로 구성된다. 상기 비동기적 예외 분석기는, 상기 제2 조건이 만족되는지 여부를 결정하는 것의 응답으로, 상기 제2 조건이 만족되지 않을 때, 상기 타깃 엔터티는 악성인 것으로 결정하도록 추가적으로 구성된다.
본 발명의 다른 태양에 따르면, 비-일시적 컴퓨터 판독가능 매체(non-transitory computer-readable medium)는, 호스트 시스템의 하드웨어 프로세서에 의하여 실행될 때, 상기 호스트 시스템으로 하여금 동기적 예외 분석기 및 비동기적 예외 분석기를 형성하도록 하는 프로세서 명령들을 저장한다. 상기 하드웨어 프로세서는, 상기 타깃 엔터티의 실행에 의해 유발되는 이벤트의 발생을 탐지하는 것의 응답으로, 상기 타깃 엔터티의 실행을 중단하고, 그리고 상기 타깃 엔터티의 실행을 중단하는 것의 응답으로, 상기 동기적 예외 분석기를 실행하는 것으로 전환하도록 추가적으로 구성된다. 상기 동기적 예외 분석기는, 상기 타깃 엔터티가 상기 이벤트에 따라서 악성인 것으로 의심되는지 여부를 결정하도록 구성된다. 상기 동기적 예외 분석기는, 응답으로, 상기 타깃 엔터티가 악성인 것으로 의심될 때, 복수의 룰 예외 시그니쳐들로부터 룰 예외 시그니쳐를 선택적으로 검색하되, 상기 룰 예외 시그니쳐는 상기 이벤트에 따라서 검색되도록 추가적으로 구성되고, 상기 룰 예외 시그니쳐는 제1 조건의 인코딩 및 제2 조건의 인코딩을 포함한다. 상기 동기적 예외 분석기는, 상기 예외 시그니쳐를 검색하는 것의 응답으로, 상기 제1 조건이 상기 이벤트에 따라서 그리고 상기 타깃 엔터티에 따라서 만족되는지 여부를 결정하도록 추가적으로 구성된다. 상기 제1 조건이 만족되는지 여부를 결정하는 것의 응답으로, 상기 제1 조건이 만족될 때, 상기 동기적 예외 분석기는, 상기 하드웨어 프로세서로 하여금 상기 타깃 엔터티의 실행을 재개하도록 유발하도록 추가적으로 구성된다. 상기 동기적 예외 분석기는, 상기 제1 조건이 만족되는지 여부를 결정하는 것의 응답으로, 상기 제1 조건이 만족되지 않을 때, 상기 타깃 엔터티는 악성인 것으로 결정하도록 추가적으로 구성된다. 상기 비동기적 예외 분석기는, 상기 하드웨어 프로세서가 상기 타깃 엔터티의 실행을 재개하는 것의 응답으로, 상기 제2 조건이 상기 이벤트에 따라서 그리고 상기 타깃 엔터티에 따라서 만족되는지 여부를 결정하도록 구성된다. 상기 비동기적 예외 분석기는, 상기 제2 조건이 만족되는지 여부를 결정하는 것의 응답으로, 상기 제2 조건이 만족될 때, 상기 타깃 엔터티는 악성이 아닌 것으로 결정하도록 추가적으로 구성된다. 상기 비동기적 예외 분석기는, 상기 제2 조건이 만족되는지 여부를 결정하는 것의 응답으로, 상기 제2 조건이 만족되지 않을 때, 상기 타깃 엔터티는 악성인 것으로 결정하도록 추가적으로 구성된다.
본 발명의 다른 태양에 따르면, 컴퓨터 보안 위협에 대해서 호스트 시스템을 보호하는 방법으로서, 상기 호스트 시스템은 하드웨어 프로세서 및 메모리를 포함한다. 상기 방법은, 타깃 엔터티의 실행에 의해 유발되는 이벤트의 발생을 탐지하기 위하여 상기 하드웨어 프로세서를 채용하는 것을 포함한다. 상기 방법은, 상기 이벤트의 발생을 탐지하는 것의 응답으로, 상기 타깃 엔터티의 실행을 중단하기 위하여 그리고 동기적 예외 분석기를 실행하는 것으로 전환하기 위하여 상기 하드웨어 프로세서를 채용하는 것을 추가적으로 포함한다. 동기적 예외 분석기는 상기 타깃 엔터티가 상기 이벤트에 따라서 악성인 것으로 의심되는지 여부를 결정하도록 구성된다. 응답으로, 상기 타깃 엔터티가 악성인 것으로 의심될 때, 상기 동기적 예외 분석기는, 복수의 룰 예외 시그니쳐들로부터 룰 예외 시그니쳐를 선택적으로 검색하되, 상기 룰 예외 시그니쳐는 상기 이벤트에 따라서 검색되도록 구성되고, 상기 룰 예외 시그니쳐는 제1 조건의 인코딩 및 제2 조건의 인코딩을 포함한다. 상기 동기적 예외 분석기는, 상기 룰 예외 시그니쳐를 검색하는 것의 응답으로, 상기 제1 조건이 상기 이벤트에 따라서 그리고 상기 타깃 엔터티에 따라서 만족되는지 여부를 결정하도록 추가적으로 구성된다. 상기 동기적 예외 분석기는, 상기 제1 조건이 만족되는지 여부를 결정하는 것의 응답으로, 상기 제1 조건이 만족될 때, 상기 하드웨어 프로세서로 하여금 상기 타깃 엔터티의 실행을 재개하도록 유발하고, 상기 제1 조건이 만족되지 않을 때, 상기 타깃 엔터티는 악성인 것으로 결정하도록 추가적으로 구성된다. 상기 방법은, 상기 하드웨어 프로세서가 상기 타깃 엔터티의 실행을 재개하는 것의 응답으로, 상기 제2 조건이 상기 이벤트에 따라서 그리고 상기 타깃 엔터티에 따라서 만족되는지 여부를 결정하기 위해 상기 하드웨어 프로세서를 채용하는 것을 추가적으로 포함한다. 상기 방법은, 상기 제2 조건이 만족되는지 여부를 결정하는 것의 응답으로, 상기 제2 조건이 만족될 때, 상기 타깃 엔터티는 악성이 아닌 것으로 결정하는 것과, 상기 제2 조건이 만족되지 않을 때, 상기 타깃 엔터티는 악성인 것으로 결정하는 것을 추가적으로 포함한다.
본 발명의 전술한 태양들 및 장점은 후술하는 상세한 설명 및 도면을 참조로 이해하면 더욱 잘 이해될 것이다.
도 1은 본 발명의 일부 실시예들에 따라서 컴퓨터 보안 위협에 대해서 보호되는 호스트 시스템의 예시적인 하드웨어 구성을 보여주는 도면.
도 2a는 하드웨어 가상화를 수반하지 않는 구성에서, 본 발명의 일부 실시예들에 따라서 상기 호스트 시스템을 보호하는 예시적인 컴퓨터 보안 어플리케이션(computer security application, CSA)을 보여주는 도면.
도 2b는 보호되는 가상 머신들의 예시적인 세트는 상기 호스트 시스템 상에서 실행되는 하이퍼바이저에 의해 노출되고, 상기 CSA는 상기 보호되는 가상 머신(들) 밖에서 실행되는, 본 발명의 일부 실시예들에 따른 선택적 구성을 보여주는 도면.
도 3은 본 발명의 일부 실시예들에 따른 컴퓨터 보안 어플리케이션의 예시적인 구성 요소들을 보여주는 도면.
도 4a는 통지 핸들러(notification handler)는 상기 보호되는 가상 머신 내에서 실행되고, 상기 동기적 및 비동기적 예외 분석기들은 상기 보호되는 가상 머신 밖에서 실행되는, 예시적인 구성을 보여주는 도면.
도 4b는 상기 통지 핸들러는 상기 보호되는 가상 머신 밖에서 실행되고, 상기 동기적 및 비동기적 예외 분석기들은 상기 보호되는 가상 머신 내에서 실행되는, 본 발명의 일부 실시예들에 따른 선택적 구성을 보여주는 도면.
도 4c는 상기 비동기적 예외 분석기는 상기 보호되는 가상 머신과 구별되는 보안 가상 머신 내에서 실행되는, 본 발명의 일부 실시예들에 따른 또 다른 예시적 구성을 보여주는 도면.
도 5는 본 발명의 일부 실시예들에 따른 상기 컴퓨터 보안 어플리케이션의 상기 구성 요소들의 예시적인 상호작용을 보여주는 도면.
도 6은 본 발명의 일부 실시예들에 따른 룰 예외의 예시적인 포맷(format)을 보여주는 도면.
도 7은 본 발명의 일부 실시예들에 따른 예외 분석 요청(exception analysis request, EAR)의 예시적인 포맷을 보여주는 도면.
도 8은 본 발명의 일부 실시예들에 따라서 상기 통지 핸들러에 의해 수행되는 단계들의 예시적인 시퀀스를 보여주는 도면.
도 9는 본 발명의 일부 실시예들에 따라서 상기 동기적 예외 분석기에 의해 수행되는 단계들의 예시적인 시퀀스를 보여주는 도면.
도 10은 본 발명의 일부 실시예들에 따라서 상기 비동기적 예외 분석기에 의해 수행되는 단계들의 예시적인 시퀀스를 보여주는 도면.
도 11은 본 발명의 일부 실시예들에 따라서 상기 종료 감시자에 의해 수행되는 단계들의 예시적인 시퀀스를 보여주는 도면.
이하의 설명에서, 구조들 사이에서 언급된 모든 연결들은 직접적인 동작 연결들 또는 매개 구조들을 통한 간접적인 동작 연결들일 수 있는 것으로 이해된다. 구성 요소들의 세트는 하나 이상의 구성 요소를 포함한다. 구성 요소의 임의의 열거는 적어도 하나의 구성 요소를 언급하는 것으로 이해된다. 복수의 구성 요소는 적어도 2개의 구성 요소를 포함한다. 달리 요구되지 않는다면, 기술된 어떠한 방법 단계들도 설명된 특정 순서로 반드시 실행될 필요는 없다. 제2 구성 요소로부터 유도되는 제1 구성 요소(예컨대, 데이터)는 제2 구성 요소와 동일한 제1 구성 요소는 물론, 제2 구성 요소 그리고 선택적으로는 다른 데이터를 처리하는 것에 의해 생성된 제1 구성 요소를 포함한다. 파라미터에 따라 결정 또는 판정하는 것은 파라미터에 따라 그리고 선택적으로는 다른 데이터에 따라 결정 또는 판정하는 것을 포함한다. 달리 구체화되지 않는다면, 일부 수량/데이터의 표시자는 수량/데이터 그 자체, 또는 수량/데이터 그 자체와 상이한 표시자일 수 있다. 컴퓨터 보안은 데이터 및/또는 하드웨어로의 의도되지 않았거나 인가 받지 않은 접근에 대해서, 데이터 및/또는 하드웨어의 의도되지 않았거나 인가 받지 않은 수정에 대해서, 그리고 데이터 및/또는 하드웨어의 파괴에 대해서 사용자와 장치를 보호하는 것을 포함한다. 컴퓨터 프로그램은 과업을 수행하는 프로세서 명령들의 시퀀스이다. 본 발명의 일부 실시예들에서 설명되는 컴퓨터 프로그램들은 독립형 소프트웨어 개체들 또는 다른 컴퓨터 프로그램들의 서브-개체들(예를 들어, 서브루틴들, 라이브러리들)일 수 있다. 달리 특정되지 않는다면, 프로세스는 어플리케이션이나 또는 운영 시스템의 일부와 같은 컴퓨터 프로그램의 인스턴스(instance)이고, 적어도 실행 쓰레드(execution thread)와 이것에 할당된 가상 메모리 공간을 가지는 특징을 가지며, 개별 가상 메모리 공간의 콘텐트는 실행가능 코드(executable code)를 포함한다. 달리 특정되지 않는다면, 게스트 프로세스는 가상 머신 내에서 실행되는 프로세스이다. 프로세스는, 이들이 각각의 가상 머신의 가상 프로세서 상에서 실행될 때, 가상 머신 내에서 실행되는 것으로 생각된다. 달리 특정되지 않는다면, 페이지는 호스트 시스템의 물리적 메모리에 개별적으로 매핑될 수 있는 가상 메모리의 최소 유닛을 나타낸다. 컴퓨터 판독 가능 매체는 자성, 광, 및 반도체 저장 매체와 같은 비-일시적 매체(non-transitory medium)(예컨대, 하드 드라이브, 광 디스크, 플래시 메모리, DRAM)는 물론, 전도성 케이블 및 파이버 옵틱 링크와 같은 통신 링크들을 포함한다. 일부 실시예들에 따르면, 본 발명은, 그 중에서도, 본원에 설명된 방법들을 수행하기 위해 프로그래밍된 하드웨어(예를 들어서, 하나 이상의 마이크로프로세서들)는 물론, 본원에서 설명된 방법들을 수행하기 위한 명령들을 인코딩하는 컴퓨터-판독 가능 매체를 포함하는 컴퓨터 시스템을 제공한다.
후술하는 설명은 본 발명의 실시예들을 예시적으로 설명하는 것이며, 반드시 제한적인 것은 아니다.
도 1은 본 발명의 일부 실시예들에 따라서 컴퓨터 보안 위협에 대해서 보호되는 호스트 시스템(10)의 예시적인 하드웨어 구성을 보여준다. 호스트 시스템(10)은 프로세서 및 메모리를 가지는 임의의 전자 장치를 나타낼 수 있다. 예시적인 호스트 시스템(10)들은 특히 개인용 컴퓨터, 서버, 랩탑, 태블릿 컴퓨터, 모바일 전기통신 장치(예를 들어서, 스마트폰), 미디어 플레이어, TV, 게임 콘솔, 홈 어플라이언스(예를 들어서, 냉장고, 온도조절장치, 지능형 열 및/또는 조명 시스템), 및 웨어러블 장치(예를 들어서, 스마트워치, 스포츠 및 피트니스 장비)를 포함한다.
도 1은 컴퓨터 시스템을 도시한다. 스마트폰과 스마트워치와 같은 다른 호스트 시스템들의 하드웨어 구성은 도시된 구성과는 다를 수 있다. 호스트 시스템(10)은 프로세서(12) 및 메모리 유닛(14)을 포함하는 물리적 장치들의 세트를 포함한다. 일부 실시예들에서, 프로세서(12)는 신호 및/또는 데이터의 세트로 산술 및/또는 논리 연산을 실행하도록 구성된 물리적 장치(예컨대, 반도체 기판에 형성된 멀티-코어 집적 회로, 마이크로프로세서 등)를 포함한다. 일부 실시예들에서, 이러한 연산들은 프로세서 명령들(예를 들어, 머신 코드 또는 다른 유형의 인코딩)의 시퀀스 형태로 프로세서(12)에 전달된다. 메모리 유닛(14)은 프로세서(12)에 의해 액세스되거나 생성되는 명령들 및/또는 데이터를 저장하는 휘발성 컴퓨터-판독 가능 매체(예컨대, DRAM, SRAM)를 포함할 수 있다.
장치의 유형 및 성능에 따라, 호스트 시스템(10)은 사용자가 호스트 시스템(10)에 데이터 및/또는 명령들을 입력할 수 있게 하는 키보드, 마우스, 터치스크린 등과 같은 입력 장치(16)들 세트를 추가적으로 포함할 수 있다. 모니터 또는 액정 디스플레이와 같은 출력 장치(18)들 세트는, 예를 들면 그래픽 사용자 인터페이스(graphical user interface)를 통해 사용자에게 정보를 전달할 수 있다. 저장 장치(20)는 프로세서 명령들 및/또는 데이터의 비휘발성 저장, 판독, 및 기록을 가능하게 하는 컴퓨터-판독 가능 매체를 포함한다. 예시적인 저장 장치(20)는 자기 디스크 및 광 디스크 및 플래시 메모리 장치들은 물론, CD 및/또는 DVD 디스크들 및 드라이브들과 같은 소거 가능 매체를 포함한다. 네트워크 어댑터(22)들 세트는 호스트 시스템(10)이 컴퓨터 네트워크 및/또는 다른 장치들/컴퓨터 시스템들에 연결될 수 있게 한다. 컨트롤러 허브(24)는 프로세서(12)와 장치(14, 16, 18, 20 및 22)들 사이의 통신을 가능하게 하는 복수의 시스템, 주변, 및/또는 칩셋 버스들, 및/또는 다른 모든 회로망을 일반적으로 나타낸다. 예를 들어, 컨트롤러 허브(24)는 특히 메모리 관리 유닛(memory management unit, MMU), 입력/출력(I/O) 컨트롤러, 및 인터럽트 컨트롤러(interrupt controller)를 포함할 수 있다. 다른 예에서, 컨트롤러 허브(24)는 프로세서(12)를 메모리(14)에 연결시키는 노스브리지, 및/또는 프로세서(12)를 장치들(16, 18, 20 및 22)에 연결시키는 사우스브리지를 포함할 수 있다. 일부 실시예들에서, 컨트롤러 허브(24)는 부분적으로 또는 전체적으로 프로세서(12)와 일체화될 수 있고, 예를 들어 MMU는 프로세서(12)와 공통의 반도체 기판을 공유할 수 있다.
컴퓨터 보안 어플리케이션(computer security application, CSA)(40)은 멀웨어, 스파이웨어, 원하지 않은 애드웨어 등과 같은 컴퓨터 보안 위협에 대하여 호스트 시스템(10)을 보호한다. 일부 실시예들에서, CSA(40)는 복수의 실행가능한 엔터티들(예를 들어, 프로세스들, 쓰레드들, 어플리케이션들, 운영 시스템의 구성 요소들)의 행동을 모니터링 하고, 이러한 임의의 모니터링된 엔터티가 악성인지를 이들의 행동에 따라서 결정하도록 구성된다. 모니터링되는 엔터티들은 특히 운영 시스템 및 사용자 어플리케이션의 구성요소들을 포함할 수 있다. 엔터티가 악성이라는 결정에 대한 응답으로, CSA(40)는 예를 들어서 각각의 악성 엔터티를 중지시키거나, 격리시키거나 또는 그렇지 않으면 불능화하도록, 각각의 엔터티에 대해서 보호적 조치를 취할 수 있다.
도 2a 및 도 2b는 본 발명의 일부 실시예들에 따른 예시적인 소프트웨어 구성을 보여준다. 도 2a의 예에서, 호스트 시스템(10)은 운영 시스템(OS)(34), 예시적인 어플리케이션들(36a-b) 세트, 및 CSA(40)을 실행한다. 어플리케이션들(36a-b)은 특히, 워드 프로세싱, 이미지 프로세싱, 미디어 플레이어, 데이터베이스, 캘린더, 개인 연락처 관리, 브라우저, 게임, 보이스 커뮤니케이션, 및 데이터 통신 어플리케이션들과 같은 임의의 컴퓨터 프로그램을 일반적으로 나타낸다. 운영 시스템(34)은 특히, Microsoft Windows®, MacOS®, Linux®, iOS®, 또는 Android®와 같은 임의의 널리 이용가능한 운영 시스템을 포함할 수 있다. OS(34)는 어플리케이션들(36a-b)과 호스트 시스템(10)의 하드웨어 사이의 인터페이스를 제공한다. 도시된 CSA(40)의 위치는 CSA(40)가 다양한 프로세서 권한 레벨(processor privilege level)에서 실행될 수 있음을 나타낸다. 예를 들어서, CSA(40)의 일부는 OS 커널의 프로세서 권한(예를 들어, 링 0, 커널 모드)에서 실행될 수 있고, 반면에 다른 부분들은 어플리케이션들(36a-b)의 프로세서 권한(예를 들어, 링 3, 사용자 모드)에서 실행될 수 있다.
도 2b는 본 발명의 선택적 실시예를 보여주며, 여기서 호스트 시스템(10)은 게스트 가상 머신들의 세트를 작동하기 위하여 하드웨어 가상화 기술을 사용한다. 하드웨어 가상화는 다른 용도 중에서 특히 클라우드 컴퓨팅과 서버 통합과 같은 어플리케이션에서 종종 사용된다. 가상 머신(Virtual machine, VM)은 실제 물리적 머신/컴퓨터 시스템을 모방(emulate, 에뮬레이트)하고, 운영 시스템 및 다른 어플리케이션들을 구동할 수 있다. 일부 실시예들에서, 하이퍼바이저(30)는 호스트 시스템(10) 상에서 실행되고, 하이퍼바이저(30)는 가상 프로세서와 가상 메모리 관리 유닛과 같은 복수의 가상화된 장치들을 생성하거나 가능하게 하고, 그리고 그러한 가상화된 장치들을 호스트 시스템(10)의 실제의 물리적인 장치들 대신에 다른 소프트웨어에 제공하도록 구성된다. 그러한 작동들은 통상적으로 본 기술분야에서 가상 머신 노출로 알려져 있다. 하이퍼바이저(30)는 또한 복수의 가상 머신들이 호스트 시스템(10)의 하드웨어 자원들을 공유할 수 있게 하여, 각각의 VM이 독립적으로 작동하고 호스트 시스템(10)에서 동시에 실행되는 다른 VM들 실행을 알지 못하도록 할 수 있다. 유명한 하이퍼바이저의 예로는, 특히 VMware Inc.의 VMware vSphere™ 및 오픈 소스 Xen 하이퍼바이저가 있다.
도 2b는 호스트 시스템(10) 상에 노출된 게스트 VM들(32a-b)의 세트를 보여준다. 각각의 VM(32a-b)은 가상화된 프로세서를 포함하고, 특히 가상화된 컨트롤러뿐만 아니라 가상화된 입력, 출력, 저장, 및 네트워크 장치와 같은 다른 가상화된 장치들을 추가적으로 포함할 수 있다. 각각의 가상화된 프로세서는 하드웨어 프로세서(12)의 기능의 적어도 일부의 모방(emulation)을 포함하고, 실행을 위하여 프로세서 명령들을 수신하도록 구성된다. 실행을 위하여 각각의 가상 프로세서를 이용하는 소프트웨어는 각각의 가상 머신 내에서 실행되는 것으로 생각된다. 예를 들어, 도 2b의 예에서, 게스트 OS(34a) 및 어플리케이션(36c)은 게스트 VM(32a) 내에서 실행되는 것으로 생각된다. 대조적으로, 하이퍼바이저(30)는 게스트 VM들(32a-b)의 밖에서 또는 아래에서 실행되는 것으로 생각된다. 각각의 가상화된 프로세서는 마치 상응하는 물리적 장치들과 하는 것과 같이 그러한 가상화된 장치들과 상호작용할 수 있다. 예를 들어서, VM(32a) 내에서 실행되는 소프트웨어는 VM(32a)의 가상화된 네트워크 어댑터(들)를 통하여 네트워크 트래픽을 발신 및/또는 수신할 수 있다. 일부 실시예들에서, 하이퍼바이저(30)는 가상화된 장치들의 서브세트만을 각각의 게스트 VM에 노출시킬 수 있고, 선택된 게스트 VM에게 호스트 시스템(10)의 일부 하드웨어 장치들의 직접적이고 독점적인 사용권을 줄 수 있다. 그러한 일 예에서, VM(32a)은 입력 장치(16)들과 출력 장치(18)들의 독점적 사용권을 가질 수 있고, 가상화된 네트워크 어댑터는 없을 수 있다. 반면, VM(32b)은 네트워크 어댑터(들)(22)의 직접적이고 독점적인 사용권을 가질 수 있다. 그러한 구성들은 예를 들어서, Intel®의 VT-d® 기술을 이용하여 실행될 수 있다.
각각의 VM(32a-b)은 게스트 운영 시스템(OS)(34a-b)을 각각 실행한다. 각각의 OS(34a-b)는 각각의 VM 내에서 실행되는 어플리케이션들(36c-d)과 각각의 VM의 가상화된 하드웨어 장치 사이의 인터페이스를 제공한다. 도 2b의 예시적인 실시예에서, CSA(40)는 게스트 VM들 밖에서 실행되고, 컴퓨터 보안 위협들로부터 각각의 게스트 VM들을 보호하도록 구성된다. 단일 컴퓨터 보안 어플리케이션은 복수의 가상 머신들을 보호할 수 있다. CSA(40)는, 예를 들어 라이브러리로서 하이퍼바이저(30)에 통합되거나 또는 하이퍼바이저(30)와 구별되고 독립적인 컴퓨터 프로그램으로서 전달될 수 있지만 하이퍼바이저(30)의 프로세서 권한 레벨(예를 들어, 루트 모드, 링 -1)에서 실행될 수 있다. CSA(40)는 별도의 스케줄된 실행 쓰레드를 가지는 프로세스일 수 있고 또는 이하에서 추가적으로 설명되는 바와 같이 특정 통지 이벤트들에 의해 트리거 될 때 실행되는 스케줄되지 않은 코드 객체들의 집합으로서 작동할 수 있다.
하드웨어 가상화 플랫폼들을 포함하는 호스트 시스템들을 멀웨어로부터 보호하는 여러 방법들이 본 기술분야에 알려져 있다. 특정 카테고리의 방법들은 행동 분석(behavior analysis)으로 알려져 있다. 통상적인 행동 분석 방법은 통지 메커니즘을 사용하는데, 보안 소프트웨어가 모니터링되는 VM 내에서의 이벤트의 발생을 통지받는 것으로, 상기 이벤트는 운영 시스템의 구성 요소 또는 어플리케이션과 같은 소프트웨어 엔터티의 실행에 의해 트리거링되거나 그리고/또는 실행 중에 발생한다. 이후 상기 보안 소프트웨어는 각각의 이벤트를 분석하여 이들이 잠재적인 보안 위협을 나타내는지를 결정할 수 있다.
도 3은 본 발명의 일부 실시예들에 따른 컴퓨터 보안 어플리케이션(40)의 예시적인 구성 요소들을 보여준다. 엔진(40)은 통지 핸들러(42), 핸들러(42)에 연결된 동기적 예외 분석기(44), 비동기적 예외 분석기(46), 및 분석기(46)와 통신 가능하게 연결된 종료 감시자(48)를 포함한다.
일부 실시예들에서, 통지 핸들러(42)는 컴퓨터 보안과 관련된 특정 이벤트들의 발생을 탐지하도록 구성된다. 예시적인 탐지되는 이벤트들은 특히 특정 OS 기능 호출 및 시스템 호출들을 포함한다. 탐지되는 이벤트의 다른 유형들로는 파일 열기, 파일 생성, 파일에 쓰기, 파일 삭제, 파일 복사, 프로세스 생성, 프로세스 종료, 실행을 위한 쓰레드 스케줄링, 동기적 이벤트로 인한 쓰레드의 중단(예를 들어서, 상호 배제(mutual exclusion)), 히프(heap) 생성, 히프로부터 메모리 할당, 실행 스택의 크기 확장, 메모리 접근 허가 변경, 스왑-인 작업(예를 들어서, 디스크에서 메모리로) 수행, 스왑-아웃 작업(예를 들어서, 메모리에서 디스크로) 수행, 실행가능 모듈 로딩(예를 들어서, 공유 라이브러리 - DLL), 레지스트리 키 열기, 레지스트리 키 이름변경, 새 하드웨어 장치의 연결 탐지, 새 네트워크 연결 설정, 네트워크 패킷 수신, 쓰레드의 실행 권한 상승, 파일과 관련된 임의 접근 제어(discretionary access control, DAC) 허가 변경을 포함할 수 있다. 이러한 이벤트들을 탐지하는 여러가지 방법들이 본 기술분야에 알려져 있다. 이들은 특정 OS 기능을 후킹하는 것, 배정 테이블(dispatch table)을 수정하는 것 등을 포함한다. 이러한 방법들은 프로세서(12)가 각각의 이벤트의 발생에 응답하여 트리거링 엔터티(예를 들어, 프로세스)를 실행하는 것에서 핸들러 루틴을 실행하는 것으로 전환하도록 구성한다. 통지 핸들러(42)를 핸들러 루틴으로 등록함으로써 핸들러(42)로 하여금 다양한 이벤트들을 탐지하고, 그리고 이들의 발생을 CSA(40)로 통신하도록 한다.
하드웨어 가상화 플랫폼에서, 컴퓨터 보안과 관련될 수 있는 탐지된 이벤트들의 특별 카테고리는 메모리 접근 허가의 위반을 탐지하는 것을 포함한다. 그러한 위반을 탐지하는 것은 종래의 후킹에 대한 대안을 제공할 수 있다. 대부분의 현대의 컴퓨터 시스템들은 가상 메모리와 함께 작동하고, 전용 데이터 구조들, 예를 들어 페이지 테이블을 이용하여 메모리 주소 변환(translation)을 관리하도록 구성된다. 하드웨어 가상화를 지원하도록 구성된 시스템들은 각각의 노출된 VM에 의해 보여지는 게스트-물리적 메모리로부터 호스트 시스템의 실질적 물리적 메모리(14)로의 주소 변환의 제2 계층(second layer)을 일반적으로 사용한다. 제2 주소 변환은 통상적으로, 제2 레벨 주소 변환(second level address translation, SLAT)으로 알려진, 프로세서(12)에 의하여 제어되고, 하드웨어 가속되는, 전용 데이터 구조 및 메커니즘(hardware-accelerated, dedicated data structures and mechanisms)을 사용하여 달성된다. 유명한 SLAT 구현은 Intel® 플랫폼에서 확장된 페이지 테이블(extended page table, EPT)과 AMD® 플랫폼에서 빠른 가상화 인덱싱(rapid virtualization indexing, RVI)/내포된 페이지 테이블(nested page table, NPT)을 포함한다. SLAT은 일반적으로 읽기/쓰기/실행과 같은 각각의 메모리 페이지에 대한 메모리 접근 허가를 설정하는 것을 가능하게 한다. 프로세서(12)는 현재 접근 허가를 위반하는 방식으로 소프트웨어가 각각의 페이지에 접근하려고 시도할 때, 프로세서 이벤트(예를 들어, VM 종료 이벤트 또는 가상화 예외)를 촉발(trigger, 트리거)하도록 구성될 수 있다. VM 종료 이벤트(VM exit event), 예를 들어 Intel® 플랫폼들 상의 VMExit는 각각의 VM 내의 코드의 실행을 중단하고 프로세서(12)가 하이퍼바이저(30)의 레벨에서 코드를 실행하도록 전환한다. 반대로, Intel® 플랫폼들 상의 #VE와 같은 가상화 예외(virtualization exception)는, 프로세서(12)가 동일한 VM 내에서 코드를 실행하도록 전환할 수 있다. 일부 실시예들에서, CSA(40)는 VM 종료(예를 들면, 도 4b와 같은 구성에서) 또는 가상화 예외(예를 들면, 도 4a 및 4c와 같은 구성에서)를 위한 핸들러로서 통지 핸들러(42)를 등록한다. 이는 핸들러(42)가 보호되는 가상 머신 내에서 메모리 접근 허가를 위반하려는 시도들을 탐지하고, 그러한 시도들을 CSA(40)로 통신할 수 있게 한다.
종래의 보안 시스템들은 종종 악성 엔터티들을 탐지하기 위해 멀웨어 행동 시그니쳐에 의존한다. 멀웨어 행동 시그니쳐는, 이벤트(또는 이벤트들의 시퀀스)에 의해 만족될 때 각각의 이벤트(들)를 트리거링하는 엔터티가 악성임을 나타내는 조건들의 세트를 포함한다. 예를 들어, 코드 삽입에 이은 디스크에 쓰기의 시퀀스는 악성 표시자(indicator)로 간주될 수 있다. 멀웨어 행동 시그니쳐들은 높은 탐지 비율이 가능하도록 할 수 있지만, 일반적으로는 상대적으로 높은 비율의 긍정 오류(악성으로 잘못 라벨링된 양성 엔터티들) 또한 생성한다. 상기 긍정 오류의 비율을 감소시키는 것은 멀웨어 행동 시그니쳐의 복잡성을 증가시키는 것을 필요로 할 수 있으며, 이는 실질적으로 컴퓨팅 오버헤드(computational overhead)를 증가시킬 수 있다.
이러한 시그니쳐 기반 방법들과는 대조적으로, 본 발명은 멀웨어 행동 시그니쳐를 대체하거나 보완하기 위해 룰 예외 세트를 도입한다. 일부 실시예들에서, 룰 예외(rule exception)는, <이벤트, 트리거링 엔터티> 튜플에 의해 만족될 때 각각의 트리거링 엔터티가 양성임(악성 아님)을 인정하는 조건들의 세트를 포함한다. 룰 예외 조건을 만족시키는 <이벤트, 트리거링 엔터티> 튜플은 본 명세서에서 각각의 룰 예외와 매칭(match, 매치, 일치)된다고 말할 수 있다. 이러한 룰 예외에 대한 일반적인 사용 시나리오는 우선 탐지된 이벤트에 멀웨어 행동 시그니쳐를 적용하는 것을 포함한다. 상기 이벤트가 악성을 나타내는 시그니쳐와 매칭되는 경우, CSA(40)는 추가로 상기 이벤트를 룰 예외 세트와 매칭하려고 시도할 수 있다. 상기 탐지된 이벤트가 룰 예외와 매칭되지 않는 경우, CSA(40)는 상기 트리거링 엔터티가 실제 악성이라고 결론을 내릴 수 있다. 대신에, 상기 이벤트가 적어도 하나의 룰 예외와 매칭되는 경우, CSA(40)는 상기 트리거링 엔터티가 양성이라고 결론을 내릴 수 있다. 이 분석 전략은 컴퓨팅 오버헤드도 억제하면서 긍정 오류의 비율을 실질적으로 감소시킬 수 있다. 컴퓨팅 비용(computational cost)의 감소는, 예를 들면 종래의 컴퓨터 보안 시스템들에서 보다는 단순한 멀웨어 행동 시그니쳐의 사용으로부터 비롯될 수 있다.
종래의 행동 보안 방법들은 탐지한 이벤트가 분석되는 동안 트리거링 엔터티의 실행을 중단하는 것을 포함한다. 이러한 종류의 이벤트 분석은 일반적으로 "동기적(synchronous)"이라고 알려져 있다. 대조적으로, 본 발명의 일부 실시예들에서는 이벤트 분석의 일부만이 동기적으로 수행되고, 반면에 상기 분석의 다른 부분은 비동기적으로 수행된다. 본 명세서에서 "비동기적(asynchronous)"이라는 용어는, 트리거링 엔터티는 계속 실행되도록 허용되고 반면에 각각의 이벤트/예외에 대한 데이터는 추후 분석을 위해 저장되는, 이벤트 및/또는 룰 예외를 분석하는 방식을 나타낸다.
특히, 본 발명의 일부 실시예들에서, 일부 룰 예외 매칭은 동기적으로 실행되고 반면에 다른 룰 예외 매칭은 비동기적으로 실행된다. 동기적 예외 분석기(44)는 보호되는 호스트 시스템 또는 게스트 VM 내에서 발생하는 이벤트의 동기적 분석을 수행하여, 소정의 룰 예외 세트 중 임의의 것을 만족시키는지(매칭되는지) 여부를 결정하도록 구성될 수 있다. 동기적 예외 분석기(44)에 의해 검사되는 룰 예외 세트는 본 명세서에서 동기적 예외로 간주된다(상세는 이하 참조). 동기적 예외는 일반적으로 이벤트와 매칭되어지기 위해 상대적으로 낮은 컴퓨팅 비용을 요구하는 룰 예외를 포함한다. 일부 실시예들에서, 동기적 예외는 모니터링된 엔터티에 의해 야기되는 보안 위험을 평가하는데 중요한 룰 예외의 서브세트를 포함할 수 있다. 다른 예에서, 동기적 예외는 그 검사를 호스트 시스템(10)에 국부적인 리소스들(예를 들면 저장 장치(20)들 상에 국부적으로 저장된 서명 데이터베이스들)에만 전적으로 의존하는 룰 예외를 포함한다.
차례로, 비동기적 예외 분석기(46)는 보호되는 호스트 시스템 또는 게스트 VM 내에서 발생하는 이벤트의 비동기적 분석을 수행하여, 또 다른 소정의 룰 예외 세트 중 임의의 것과 매칭되는지 여부를 결정하도록 구성될 수 있다. 비동기적 예외 분석기(46)에 의해 검사되는 룰 예외 세트는 본 명세서에서 비동기적 예외로 호칭된다. 동기적 분석과는 대조적으로, 비동기적 분석 모듈(46)의 작동은 트리거링 엔터티가 실행을 계속하도록 허용된다는 점에서 트리거링 엔터티의 실행과는 연관되지 않지만, 트리거된 이벤트를 예외와 매칭시키는 작업(operation)은 이후에 수행될 수 있다. 비동기적 예외는 일반적으로 이벤트와 매칭되어지기 위해 상대적으로 높은 컴퓨팅 비용을 요구하는 룰 예외, 또는 호스트 시스템(10)의 보안에 중요하다고 간주되지 않는 룰 예외를 포함한다. 비동기적 예외 매칭의 일부를 형성하는 예시적인 작동은 특히 트리거링 엔터티의 무결성을 결정하는 것(예를 들면, 해쉬 매칭을 사용하여), 상기 트리거링 엔터티의 원격 스캔을 수행하는 것(예를 들면, 각각의 서버로부터 악성 결정을 수신받는 원격 클라우드 서버에 각각의 엔터티에 관한 정보를 전송함으로써), 그리고 상기 트리거링 엔터티가 다른 엔터티에 의해 삽입된 코드의 수신자인지 여부를 결정하는 것을 포함한다.
도 4a, 도 4b, 및 도 4c는 본 발명의 일부 실시예들에 따른 통지 핸들러(42), 동기적 예외 분석기(44) 및 비동기적 예외 분석기(46)의 예시적인 다양한 위치들을 보여준다. 통상의 기술자라면 요소들(42-44-46)이 보호되는 VM 밖에서(예를 들어, 하이퍼바이저(30)의 프로세서 권한 레벨에서), 보호되는 VM 내에서(예를 들어, 커널 모드에서), 또는 별도의 보안 VM 내에서 실행될 수 있다는 점을 이해할 것이다. 보호되는 VM 내에 요소를 배치하는 것은, 각각의 요소에게 각각의 VM 내에서 실행되는 엔터티들에 관한 상당한 양의 정보에 대한 접근(access)을 제공하지만, 상기 각각의 요소는 동일한 프로세서 권한 레벨에서 실행되는 악성 소프트웨어에 의한 공격에 취약해질 수 있다. #VE(Virtualization Exception, 가상화 예외) 기반의 복수의 EPT 보기와 Intel® 플랫폼들 상의 VMFUNC를 번갈아 하는 것과 같은 일련의 기술들은, 보호되는 VM 내에 배치된 보안 요소들의 보안을 향상시키기 위해 사용될 수 있다. 각각의 요소가 보호되는 VM 밖에서 실행될 때, 이는 상대적으로 안전하지만, 엔터티 및 이벤트의 시맨틱들을 풀어낼 필요가 있는 특정 연산들은 상당한 계산(computation)을 필요로 할 수 있다.
도 4a는 동기적 예외 분석기(44)가 보호되는 게스트 VM 밖에서 실행되는 예시적인 구성을 보여주고, 반면에 도 4b 및 4c에서는 분석기(44)가 각각의 게스트 VM 내에서 커널 모드에서 실행된다. 동기적 처리(synchronous processing)는 트리거링 엔터티의 실행을 중단시키며, 따라서 사용자 경험에 영향을 미치지 않도록 가능한 한 빨라야 한다는 것을 고려하면, 동기적 예외 분석기(44)의 작동이 모니터링되는 VM에서 나갈 때 많은 비용을 필요로 하지 않는 구성이 바람직할 수 있다. 바람직한 실시예에서, 동기적 예외 분석기(44)는 통지 핸들러(42)의 콘텍스트(context)에서 실행될 수 있다(예를 들면, 도 4c).
비동기적 예외 분석기(46)는 보호되는 게스트 VM 밖에서 또는 안에서 실행될 수 있다. 일부 실시예들에서(예를 들면 도 4c 참조), 분석기(46)는 호스트 시스템 상에 노출된 전용 보안 VM(33)에서 실행될 수 있고, 보안 VM(33)은 상기 보호되는 게스트 VM들과 구별된다.
요소들(42-44-46)의 실행 콘텍스트에 따라, 이들의 작동은 종종 가상 머신 경계를 가로지르는 복합 시그널링/메시징을 필요로 할 수 있다. 그러한 시그널링(signaling)은 하드웨어 가상화 기술 분야에 알려져 있는 임의의 기술을 사용하여 수행될 수 있다. 예를 들어, 데이터는 2개의 요소들 사이에서 공유되는 메모리의 섹션을 통해 전송될 수 있고, 시그널링은 VM 종료 및 이벤트 삽입의 조합을 포함할 수 있다.
도 5는 본 발명의 일부 실시예들에 따른 요소들(42, 44, 46, 및 48) 사이의 예시적인 교환을 보여준다. 트리거링 엔터티가 게스트 VM 내에서 이벤트의 발생을 유발할 때, 상기 이벤트는 이벤트 통지(52)(예를 들면 VM 종료 또는 가상화 예외와 같은 프로세서 이벤트)로 하여금 핸들러(42)에 전달되도록 유발한다. 핸들러(42)는 그러고 나서 현재 통지된 이벤트의 유형 및 파라미터 세트를 결정할 수 있다. 예시적인 이벤트 유형들은 특히 코드 삽입(code injection), 특정 시스템 호출, 디스크 파일의 생성, 및 HTTP 요청을 포함한다. 이벤트 파라미터들은 통지된 이벤트의 유형 각각에 따라서 특정적일 수 있다. 일부 예시적인 이벤트 파라미터들은 특히 상기 통지된 이벤트를 유발하는 프로세스 또는 쓰레드의 식별자(예를 들어, 프로세스 ID), 파일 이름, 경로, 메모리 주소, 및 프로세서 명령의 피연산자를 포함한다.
일부 실시예들에서, 핸들러(42)는 그러고 나서 동기적 예외 분석기(44)에 이벤트 표시자(54)를 전달한다. 이벤트 표시자(54)는 특히 각각의 이벤트의 고유 식별자(이벤트 ID), 이벤트의 유형의 표시자, 및 이벤트 파라미터들의 세트를 포함할 수 있다. 동기적 예외 분석기(44)는 그러고 나서, 예를 들어서 예외 지식 베이스(exception knowledgebase)(50)를 쿼리함으로써, 상기 각각의 이벤트를 동기적 룰 예외의 세트와 매칭시키려고 시도할 수 있다.
일부 실시예들에서, 예외 지식 베이스(50)는 예를 들어 호스트 시스템(10)의 일부를 형성하거나, 또는 호스트 시스템(10)과 통신 가능하게 연결된 컴퓨터 판독가능 매체 상에 룰 예외 엔트리의 세트를 저장한다. 도 6은 본 발명의 일부 실시예들에 따른 룰 예외 엔트리(60)의 예시적인 포맷(format)을 보여준다. 예외 엔트리(60)는 각각의 엔트리가 비동기적 부분을 가지는지 여부를 나타낼 수 있는 동기 플래그(synchrony flag)(62)를 포함한다. 엔트리(60)는 이벤트 유형을 나타내는 이벤트 유형 표시자(64)(예를 들면, 각각의 이벤트 유형과 고유하게 연관된 숫자로 된 ID)를 더 포함할 수 있다. 이벤트 유형 표시자(64)는 지식 베이스(50)로 하여금 탐지된 이벤트의 유형에 따라 룰 예외 엔트리를 선택적으로 검색할 수 있게 할 수 있다. 선택적으로, 지식 베이스(50)는 각각의 룰 예외 엔트리를 상기 각각의 룰 예외와 관련있는 이벤트의 유형과 연관시키는 내부 맵핑(mapping)(예를 들어서, 해쉬 인덱스)을 유지할 수 있다.
룰 예외 엔트리(60)는 동기적 예외 시그니쳐(66) 및 비동기적 예외 시그니쳐(68)를 더 포함할 수 있다. 시그니쳐(66)는 동기적 룰 예외의 인코딩, 즉, 분석기(46)에 의해 동기적으로 검증되는 조건들 세트의 인코딩을 포함한다. 대조적으로, 비동기적 시그니쳐(68)는 비동기적 룰 예외의 인코딩, 즉, 비동기적 예외 분석기(46)에 의해 비동기적으로 검증되는 조건들 세트의 인코딩을 포함한다.
통지된 이벤트의 현재 유형과 관련 있는 룰 예외 엔트리가 비동기적 부분을 가질 때, 동기적 예외 분석기(44)는 후속 프로세싱을 위해 예외 분석 요청(exception analysis request, EAR)(56)을 EAR 리스트(58)에 삽입할 수 있다(상세는 이하 참조). 일부 실시예들에서, EAR 리스트(58)는 복수의 엔트리를 가지는 데이터 구조를 포함하며, 각각의 엔트리는 비동기적 룰 예외 매칭에 대한 요청을 인코딩한다. EAR 리스트(58)는 복수-생성자, 복수-소비자 대기열(multi-producer, multi-consumer queue)(예를 들면, 선입선출(first-in-first-out) 대기열)로서 조직될 수 있다. 도 7은 본 발명의 일부 실시예들에 따른 예외 분석 요청의 예시적인 포맷을 제공한다. 도시된 EAR은 각각의 분석을 트리거링하는 이벤트에 고유하게 연관된 이벤트 ID를 포함한다. EAR(56)은 예외 지식 베이스(50)의 특정 엔트리(60)를 고유하게 식별하는 예외 ID를 더 포함할 수 있다. EAR(56)은 트리거링 엔터티의 표시자를 더 포함할 수 있다. 이러한 엔터티 ID를 EAR(56)에 포함하는 것은 종료 감시자(48)가 특정 실행 엔터티와 연관된 임의의 보류 중인 예외 분석 요청이 있는지 여부를 결정하는 것을 도울 수 있다(상세는 이하 참조). 일부 실시예들에서, EAR(56)은 통지 핸들러(42) 및/또는 동기적 예외 분석기(44)에 의해 결정되는 다양한 콘텍스트 데이터를 더 포함하며, 상기 콘텍스트 데이터는 상기 각각의 이벤트에 관한 그리고/또는 상기 트리거링 엔터티에 관한 정보를 포함한다. 콘텍스트 데이터는 특히 메모리 주소, 프로세스 ID, 트리거링된 이벤트가 발생되는 순간에 대응하는 명령 포인터(RIP)의 값 등을 포함할 수 있다. 이러한 콘텍스트 데이터는 비동기적 룰 예외 매칭을 수행할 때 비동기적 예외 분석기(46)에 의해 사용될 수 있다.
도 8은 본 발명의 일부 실시예들에 따라서 통지 핸들러(42)에 의해 수행되는 단계들의 예시적인 시퀀스를 보여준다. 앞서 보인 바와 같이, 핸들러(42)는, 핸들러(42)로 하여금 상기 트리거링 엔터티의 실행을 효과적으로 중단시킬 수 있게 하는 위치에서 실행된다. 예를 들면, 핸들러(42)는 VM 종료 및/또는 가상화 예외를 위한 이벤트 핸들러로서 등록될 수 있고, 이러한 프로세서 이벤트들은 소프트웨어에 의해 유발된 특정 모니터링되는 이벤트(예를 들면, 특정 메모리 페이지에 접근하려는 시도)의 발생에 대한 응답으로 트리거링된다. 그러한 이벤트들에 응답으로, 프로세서(12)는 상기 트리거링 엔터티의 실행을 중단하고, 통지 핸들러(42)를 실행하도록 전환한다. 그러므로 통지 핸들러(42)는 상기 모니터링되는 이벤트의 발생을 통지받고, 반면 상기 트리거링 엔터티의 실행은 중단된다. 상기 프로세서 이벤트가 VM 종료일 때, 핸들러(42)는 하이퍼바이저(30)의 레벨에서 실행될 수 있다.
핸들러(42)가 이벤트 통지를 수신할 때, 단계들(106-108)의 시퀀스는 상기 보호되는 게스트 VM 내에서 발생하는 이벤트의 유형 및 상기 각각의 이벤트의 파라미터 세트를 결정한다. 핸들러(42)는 그러고 나서 이벤트 표시자(54)를 동기적 예외 분석기(44)로 전송할 수 있다(단계 110). 단계(112)에서, 핸들러(42)는 분석기(44)로부터 릴리즈 신호(release signal)를 기다릴 수 있다. 일부 실시예들에서, 이러한 릴리즈 신호는 현재 이벤트가 동기적 룰 예외와 매칭되었는지, 또는 현재 이벤트와 연관된 EAR이 EAR 리스트(58)에 추가되었는지를 나타낸다(도 9와 관련하여 상세는 이하 참조). 상기 릴리즈 신호를 수신하는 것의 응답으로, 핸들러(42)는 프로세서(12)로 하여금 상기 트리거링 엔터티의 실행을 재개하도록 명령할 수 있다.
도 9는 본 발명의 일부 실시예들에 따라서 동기적 예외 분석기(44)에 의해 수행되는 단계들의 예시적인 시퀀스를 보여준다. 통지 핸들러(42)로부터 이벤트 표시자(54)를 수신하는 것의 응답으로, 단계(124)는 상기 트리거링 엔터티의 예비 보안 평가를 수행한다. 예를 들면, 분석기(44)는 상기 각각의 이벤트가 멀웨어를 나타내는지 여부를 결정할 수 있다. 일부 실시예들에서, 단계(124)는 현재 <이벤트, 엔터티> 튜플을 멀웨어 행동 시그니쳐의 세트와 매칭시키려고 시도할 수 있다. 그러한 멀웨어를 나타내는(malware-indicative) 시그니쳐의 일예는 이벤트 시퀀스: 제1 엔터티가 유효한 디지털 시그니쳐(digital signature, 전자 서명)가 없는 실행가능한 파일을 다운로드하고, 상기 제1 엔터티가 상기 실행가능한 파일로부터 제2 엔터티를 개시(launch)하고, 그리고 상기 제2 엔터티가 시스템 시작시의 자동 시작을 위해 스스로를 등록하려고 시도하는 것을 포함한다. 멀웨어 행동 시그니쳐의 다른 예는 시스템 서비스 디스크립터 테이블(System Service Descriptor Table, SSDT) 엔트리를 덮어쓰기(overwrite)하려고 시도하는 드라이버를 포함한다. 상기 예비 평가가 상기 트리거링 엔터티가 악성이 아닐 것이라고 표시할 때에는, 분석기(44)가 상기 트리거링 엔터티의 실행을 재개하기 위하여 통지 핸들러(42)에 신호를 보낼 수 있다(위 참조).
상기 예비 평가가 상기 트리거링 엔터티가 악성인 것으로 의심된다고 표시할 때에는, 단계(126)는 현재 이벤트의 이벤트 유형에 따라서 예외 지식 베이스(50)로부터 룰 예외 엔트리들의 세트를 선택적으로 검색한다. 지식 베이스(50)가 상기 현재 이벤트의 유형과 연관된 임의의 룰 예외 엔트리를 포함하고 있지 않을 때, 단계(130)에서 CSA(40)는 상기 트리거링 엔터티에 대하여 안티-멀웨어 조치를 취할 수 있다. 이러한 보호 조치는 특히 상기 트리거링 엔터티를 종료, 격리 또는 그렇지 않으면 불능화(incapacitating)시키는 것과, 상기 트리거링 엔터티의 실행의 결과로서 호스트 시스템(10)에 야기된 일련의 변화를 롤백하는 것을 포함할 수 있다. 일부 실시예들에서, CSA(40)는 각각의 모니터링된 엔터티와 연관된 멀웨어 표시 스코어의 세트를 유지한다. 단계(130)는 이벤트 특정적일 수 있는 양만큼 각각의 스코어(들)을 증가시키는 것을 포함할 수 있다. CSA(40)는 추가로 상기 스코어(들)을 임계치(threshold)와 비교할 수 있고, 예를 들면 스코어가 소정의 임계치를 초과하는 경우에만 안티-멀웨어 조치를 취할 수 있다.
지식 베이스(50)가 상기 현재 이벤트의 이벤트 유형과 연관된 적어도 하나의 룰 예외 엔트리(60)를 포함할 때, 단계(131)는 상기 현재 이벤트가 상기 각각의 룰 예외 엔트리의 동기적 룰 예외와 매칭되는지를 결정한다. 단계(131)는 상기 각각의 룰 예외의 동기적 시그니쳐(66)에 의해 인코딩된 조건들 세트가 <현재 이벤트, 트리거링 엔터티> 튜플에 의해 만족되는지를 테스트하는 것을 포함할 수 있다. 이와 같이, 단계(131)는 컴퓨팅(computations) 세트를 수행하는 것, 예를 들어서, 이벤트 표시자(54)에 따라 상기 트리거링 엔터티의 엔터티 유형을 결정하는 것을 포함할 수 있다. 예시적인 엔터티 유형들은 OS(34)의 특정 요소들, 특정 어플리케이션의 인스턴스(instance)(예를 들면, Adobe® Acrobat Reader®, Microsoft® Word®), 엔터티들의 특정 카테고리(예를 들면, 파일 관리자, 브라우저), 등을 포함한다. 엔터티 유형의 다른 예들은 드라이버, 공유 라이브러리(예를 들면, dynamic link library - DLL), 및 코드의 삽입 섹션을 포함한다.
동기적 시그니쳐 매칭이 발견되지 않은 경우, 분석기(44)는 상기 트리거링 엔터티가 실제로 악성이라고 결론을 내리고, 상술한 바와 같이 단계(130)로 나아간다. 상기 현재 이벤트가 적어도 하나의 룰 예외의 동기적 시그니쳐와 매칭된 경우에는, 단계(134)에서, 분석기(44)는 상기 각각의 룰 예외 엔트리가 비동기적 시그니쳐 또한 포함하고 있는지를 결정한다. 일부 실시예들에서, 단계(134)는 동기 플래그(62)의 값을 체크하는 것을 포함한다(도 6 참조). "아니오"인 경우, 분석기(44)는 상기 트리거링 엔터티의 실행을 재개하기 위해 핸들러(42)로 신호를 보낸다. "예"인 경우, 단계(136)는 상기 현재 이벤트에 대한 그리고/또는 상기 트리거링 엔터티에 대한 콘텍스트 데이터를 결정한다. 추가 단계(138)은 EAR(56)을 형성하고, EAR(56)을 EAR 리스트(58)에 추가한다. 동기적 예외 분석기(44)는 그러고 나서 상기 트리거링 엔터티의 실행을 재개하기 위해 핸들러(42)로 신호를 보낼 수 있다.
도 10은 비동기적 예외 분석기(46)의 이러한 인스턴스에 의해 수행되는 단계들의 예시적인 시퀀스를 보여준다. 일부 실시예들에서, 컴퓨터 보안 어플리케이션(40)은 비동기적 룰 예외 매칭을 위한 쓰레드 풀(thread pool)을 관리한다. 상기 풀의 쓰레드들은 보호되는 VM 내에서 또는 밖에서, 또는 별도의 보안 VM 내에서 실행될 수 있다(예를 들어서, 도 4c 참조). 이러한 쓰레드들이 각각의 보호되는 VM 내에서 실행될 때, 이들은 커널 모드 (링 0)에서 실행될 수 있다. 상기 풀의 쓰레드가 이용가능해질 때마다, CSA(40)는 비동기적 예외 분석기(46)의 인스턴스를 개시할 수 있다.
단계들(142-144)의 시퀀스에서, 비동기적 예외 분석기(46)는 현재 처리되지 않은 임의의 예외 분석 요청들이 존재하는지 여부를 결정한다. EAR 리스트(58)가 비어있지 않은 경우, 분석기(46)는 리스트(58)로부터 EAR을 지울 수 있고, 상기 각각의 EAR에 의해 표시된 상기 이벤트를 상기 각각의 EAR에 의해 표시된 비동기적 룰 예외와 매칭시키려고 시도할 수 있다. 단계(148)는 상기 각각의 이벤트를 트리거링하는 엔터티에 관한 정보 및/또는 이벤트 파라미터들의 결정을 추가로 포함할 수 있다. 그러한 컴퓨팅들은 예를 들어, 해쉬의 계산, 메모리 색인(lookup), 다양한 소프트웨어 엔터티들 사이의 계통(filiation) 관계 수립(예를 들면, 어떤 프로세스들이 다른 프로세스들을 생성(spawn)했는지), 모방(emulation) 등을 포함할 수 있다. 일부 실시예들에서, 단계(148)는 원격 보안 서버(클라우드 스캐닝)과 데이터를 교환하는 것을 포함한다.
일부 실시예들에서, 상기 각각의 이벤트가 상기 비동기적 룰 예외와 매칭될 때, 분석기(46)는 종료된다. 분석기(46)의 현재 인스턴스를 종료하는 것은 상기 각각의 이벤트가 컴퓨터 보안 위협을 나타내지 않으며, 따라서 상기 각각의 이벤트에 대한 더 이상의 분석이 필요하지 않다는 것을 나타낸다. 분석기(46)가 상기 이벤트가 상기 각각의 비동기적 룰 예외와 매칭되지 않는다고 결정할 때, 단계(152)는 안티-멀웨어 보호 조치를 취하기 위해 CSA(40)에 신호를 보낼 수 있다(위의 도 9의 단계(130) 참조).
선택적 실시예에서, 상기 비동기적 룰 예외는 매칭이 상기 각각의 엔터티가 악성임을 나타내도록 표현(formulate)된다. 그러한 실시예들에서, 분석기(46)는 상기 이벤트가 각각의 룰 예외와 매칭되지 않을 때 종료될 수 있고, CSA(40)는 상기 이벤트가 각각의 룰 예외와 매칭될 때 안티-멀웨어 조치를 취할 수 있다.
도 11은 본 발명의 일부 실시예들에 따라서 종료 감시자(48)에 의해 수행되는 단계들의 예시적인 시퀀스를 보여준다. 종료 감시자(48)는 보호되는 가상 머신 내에서 또는 밖에서 실행될 수 있고, 적어도 비동기적 예외 분석기(46)와 통신 가능하게 연결된다.
비동기적 룰 예외 분석은 상기 트리거링 엔터티의 실행과 연관되지 않기 때문에, 비동기적 예외 분석(46)이 상기 각각의 엔터티와 연관된 예외 분석 요청을 처리하기 전에 상기 트리거링 엔터티가 실행을 종료하는 상황이 발생할 수 있다. 이러한 상황에서, 악성 엔터티는 탐지되지 않고 빠져나갈 수 있고, 롤백할 수 없는 일부 손상을 입힐 수도 있다. 그러한 상황을 방지하기 위해, 본 발명의 일부 실시예들에서 종료 감시자(48)는 OS가 엔터티를 종료하려고 하는 시도를 탐지한다(단계들(162-164)). 종료 시도를 탐지하는 것은 종료 엔터티(terminating entity)의 실행을 효과적으로 중단시킬 수 있다. 단계(162)는 통지 핸들러(42)와 협동하는 것을 포함할 수 있고, 예를 들어서, 핸들러(42)가 실제로 상기 종료 시도를 탐지하고 종료 감시자(48)에 신호를 보낼 수 있다.
종료 시도를 탐지하는 것의 응답으로, 단계들(166-168)의 시퀀스에서 종료 감시자(48)는 상기 종료 엔터티에 대하여 처리되지 않은 임의의 예외 분석 요청이 아직까지 존재하는지 여부를 결정할 수 있다. "아니오"인 경우, 단계(170)는 사실상 상기 각각의 엔터티로 하여금 종료할 수 있게, 프로세서(12)로 하여금 상기 종료 엔터티의 실행을 재개하도록 명령할 수 있다. 일부 실시예들에서, 단계(170)는 핸들러(42)로 하여금 상기 종료 엔터티를 릴리즈하도록 명령하는 릴리즈 신호를 통지 핸들러(42)에 전송하는 것을 포함한다.
EAR 리스트(58)가 상기 종료 엔터티와 연관된 적어도 하나의 EAR을 포함할 때, 종료 감시자(48)는 그러한 모든 보류 중인 요청들이 처리될 때까지 상기 각각의 엔터티를 중단상태로 유지할 수 있다. 단계들(172-174)의 시퀀스는 상기 각각의 종료 엔터티와 연관된 요청의 처리가 일어나도록 한다(상기 시퀀스는 그러한 모든 요청들이 처리될 때까지 반복될 수 있음). 단계(174)는 상기 종료 엔터티와 연관된 보류 중인 각각의 EAR을 처리하기 위하여 비동기적 예외 분석기(46)를 호출하는 것을 포함할 수 있다. 분석기(46)가 상기 각각의 EAR에 의해 표시된 상기 이벤트가 상기 각각의 EAR에 의해 표시된 비동기적 룰 예외와 매칭되지 않는다고 결정할 때, 단계(178)는 상기 종료 엔터티에 대하여 보호 조치를 취하도록 CSA(40)에 신호를 보낼 수 있다(도 9 및 도 10과 관련하여 상술 내용 참조).
상술한 예시적인 시스템들 및 방법들은 소프트웨어 엔터티들의 효율적인 행동 모니터링을 가능하게 한다. 일부 실시예들에서, 통지 메커니즘은 보호되는 호스트 시스템 또는 가상 머신 내의 보안 관련 이벤트들의 발생을 탐지하고, 보안 소프트웨어로 각각의 이벤트들을 보고하도록 전개된다. 상기 보안 소프트웨어는 그러고 나서 각각의 이벤트들을 분석하여 이들이 멀웨어, 스파이웨어, 인가받지 않은 침입 등과 같은 컴퓨터 보안 위협을 나타내는지 여부를 결정한다.
일부 종래의 행동 시스템들 및 방법들은 엔터티가 악성인지를 결정하기 위해 멀웨어 행동 시그니쳐들에 의존한다. 멀웨어 행동 시그니쳐는 일반적으로, <이벤트, 엔터티> 튜플에 의해 만족될 때 상기 각각의 이벤트가 악성을 나타내는 것임을 인정하고 따라서 상기 각각의 이벤트를 트리거링하는 상기 소프트웨어 엔터티가 악성일 가능성이 있는 것으로 인정하는 조건들의 세트를 포함한다. 상기 트리거링 엔터티가 이들의 악성 활동을 수행하는 것을 방지하기 위하여, 종래의 시스템들 및 방법들은 상기 트리거링된 이벤트가 악성의 지표에 대하여 분석되는 동안 상기 트리거링 엔터티의 실행을 중단시킨다.
본 발명의 일부 실시예들은 2가지 관찰정보(observations)에 의존한다. 첫째, 특정 유형의 이벤트의 발생 모두가 동일하게 멀웨어를 나타내는 것은 아니다. 동일 유형의 이벤트(예를 들어, URL 액세스, 디스크 파일 열기 등)는 일부 시나리오에서는 악성을 나타낼 수 있는 반면 다른 시나리오에서는 완전히 양성(benign)일 수 있다. 그러한 일예에서, 이벤트가 별개로 취해질 때는 악성을 나타내지 않을 수 있지만, 이벤트들의 특정 시퀀스의 일부로서 발생할 때에는 멀웨어를 나타내는 것일 수 있다. 예를 들어서, 디스크 파일에 쓰기는 별개로 취해질 때는 양성 작업(operation)일 수 있다(즉, 많은 프로세스들 및 어플리케이션들이 합법적으로 디스크에 접근함). 그러나, 쓰기를 수행하는 엔터티가 다른 엔터티로부터 삽입된 코드의 수신자인 경우에는, 상기 쓰기 이벤트는 의심스러울 수 있다. 이러한 관찰정보는 성공적인 멀웨어 탐지가, 상술한 바와 같이 다양한 시나리오들 사이에서 식별할 수 있는 상당히 복잡한 멀웨어 행동 시그니쳐들을 필요로 할 수 있다는 것을 제안한다. 일반적으로 이러한 복잡한 행동 시그니쳐들의 사용은 상대적으로 높은 컴퓨팅 비용을 수반한다. 또한, 높은 탐지 비율(detection rate)을 위해 멀웨어 행동 시그니쳐들을 최적화하는 것은 일반적으로 긍정 오류 탐지(양성 이벤트들이 멀웨어를 나타내는 것으로 잘못 분류되고, 합법적인 엔터티들이 악성으로 잘못 분류됨)를 증가시킨다. 긍정 오류 분류는 사용자의 생산성의 손실 및 데이터의 손실로 이어질 수 있으므로 컴퓨터 보안 분야에서 특히 바람직하지 않다.
두 번째 관찰정보는 멀웨어 행동 시그니쳐 매칭의 전체 기간 동안 트리거링 엔터티의 실행을 중단하는 것은 사용자 경험에 부정적인 영향을 미친다는 것이다. 이것은 복잡한 행동 시그니쳐들의 경우와 이벤트 분석이 상기 이벤트가 발생한 VM 바깥 위치에서부터(예를 들면, 하이퍼바이저(30)의 레벨에서부터) 수행되는 하드웨어 가상화 구성들에서 특히 그러하다.
이러한 종래의 컴퓨터 보안 시스템들 및 방법들과는 대조적으로, 일부 실시예들은 멀웨어 행동 시그니쳐들을 보완하기 위하여 룰 예외 시그니쳐들의 세트를 사용한다. 룰 예외 시그니쳐는 <이벤트, 엔터티> 튜플에 의해 만족될 때 상기 각각의 이벤트가 양성임을 인정하고 따라서 상기 트리거링 엔터티가 악성이 아님을 인정하는 조건들의 세트를 포함한다. 그러므로 룰 예외는 일반적으로 악성 행동을 나타내는 룰(rule, 규칙)에 대한 예외 인코딩을 제공한다. 예시적인 사용 케이스 시나리오에서, 보안 소프트웨어는 우선 탐지된 이벤트를 상대적으로 단순한, 컴퓨팅 비용이 싼 멀웨어 행동 시그니쳐들의 세트와 매칭시키려고 시도하여, 상기 트리거링 엔터티가 악성일 가능성이 있는지를 결정할 수 있다. "예"인 경우, 보안 소프트웨어는 추가적으로 상기 각각의 이벤트를 룰 예외 시그니쳐들의 세트와 매칭하려고 시도할 수 있다. 룰 예외 시그니쳐 매칭은 상기 트리거링 엔터티가 실제로 양성임을 나타낼 수 있다.
룰 예외 시그니쳐들의 추가는 멀웨어 행동 시그니쳐 매칭이 단독으로 사용될 때 필요한 상당히 복잡한 시그니쳐들 대신 상대적으로 단순한 시그니쳐들을 사용할 수 있는 기회를 창출한다. 그러므로 일부 실시예들은 보안 소프트웨어에 의해 생성된 컴퓨팅 오버헤드를 감소시키는 동시에 긍정 오류 탐지의 비율 또한 감소시킨다.
또한, 본 발명의 일부 실시예들에서, 룰 예외 시그니쳐들의 매칭은 적어도 일부에서 비동기적 방식으로, 즉 각각의 이벤트를 트리거하는 엔터티는 계속 실행되도록 허용하면서 수행된다. 상기 보안 분석의 전체 기간 동안 상기 트리거링 엔터티의 실행을 중단하지 않도록 선택함으로써, 사용자 경험에 끼치는 영향을 현저하게 감소시킨다. 일부 실시예들에서, 룰 예외 시그니쳐들은 낮은 오버헤드(overhead)를 위해 최적화된다. 상대적으로 낮은 컴퓨팅 비용을 수반하는 시그니쳐들이 동기적 매칭에 사용되고, 반면에 상대적으로 비싼 시그니쳐들이 비동기적 매칭에 사용된다.
종래의 멀웨어 행동 시그니쳐들과 룰 예외 시그니쳐들 간에는 다소 유사성이 있기는 하지만, 이들의 사용과 시맨틱은 약간 다르다. 예를 들어서, 룰 예외 시그니쳐들이 단순히 멀웨어 행동 시그니쳐들의 반대이거나 또는 보충적(complement)이라는 표현은 사실이 아니다. 멀웨어 행동 시그니쳐들과 룰 예외 시그니쳐들은 상호 배타적이지 않다. 예를 들어서, 이벤트가 멀웨어 행동 시그니쳐와 매칭되는 경우, 이것이 또한 룰 예외 시그니쳐와는 매칭될 수 없음을 의미하는 것은 아니다. 그보다는, 이벤트가 멀웨어 행동 시그니쳐들 및 룰 예외 시그니쳐들 양쪽 모두와 매칭되는 상황에서 룰 예외 시그니쳐들이 가장 가치있는 것으로 여겨지는데, 이는 룰 예외 시그니쳐들이 멀웨어 탐지의 효과적인 결정 프로세스(decision process)를 허용하기 때문이라는 것이 정확하다.
동기적 대 비동기적 룰 예외 및 멀웨어 행동 시그니쳐와 이들의 관계의 예는, 모니터링되는 소프트웨어 엔터티가 공유된 실행가능 모듈(예를 들면, 라이브러리)의 코드를 패치하려고 하는 시도를 탐지하는 것을 포함한다. 코드 패칭은 일반적으로 악성을 나타내므로 멀웨어 행동 시그니쳐에서와 같이 인코딩될 수 있다. 각각의 시그니쳐를 사용하면 코드 패칭이 탐지될 때마다 멀웨어 경고를 트리거할 수 있다. 그러나, 다양한 소프트웨어 엔터티들(예컨대, OS)은 예를 들면 새 프로세스를 개시할 때와 같이 합법적인 코드 패칭을 수행한다. 마찬가지로, 주어진 소프트웨어 어플리케이션 스위트(예를 들면, Microsoft® Office®)로부터의 하나의 프로세스는 동일한 스위트로부터 다른 프로세스를 합법적으로 패치할 수 있다. 본 발명의 일부 실시예들에서, 그러한 상황들은 룰 예외들을 사용하여 다룰 수 있다. 예시적인 동기적 룰 예외는 패칭 프로세스가 신뢰할 수 있는 OS 프로세스 중 하나인지, 그리고 타깃 프로세스(패치되는 것)가 시작시(startup)에 있는 것인지를 체크할 수 있다. 두 조건이 모두 만족되는 경우, 그때 상기 패칭 엔터티는 양성(합법적)인 것으로 간주된다. 이러한 방식으로, OS가 프로세스를 시작하고 패칭을 수행할 때, CSA(40)에 의해 차단되지 않고 진행될 수 있다. 반대로, 상기 룰 예외에 따라서, 알 수 없는 프로세스(unknown process)가 상기 동일한 패칭 작업을 수행하려고 시도하면, 이것은 차단될 것이다. 일부 알 수 없는 프로세스가 패칭을 수행하는 것을 허용하기 위해, 일부 실시예들은 2 부분 룰 예외 시그니쳐를 사용할 수 있다. 동기적 부분은 코드 패칭에 참여하는 엔터티들의 신원을 검증할 수 있고, 반면에 비동기적 부분은 삽입된 버퍼/코드 자체를 검증할 수 있다(예를 들어, 특정 코드 패턴에 대해서 그 안에서 검색하거나 그리고/또는 이를 분해함으로써). 삽입된 코드가 악성이 아닌 경우, 상기 알 수 없는 프로세스는 양성으로 간주될 수 있다.
다른 예에서, 멀웨어 행동 시그니쳐는 코드 삽입이 멀웨어를 나타낸다고 표시할 수 있다. 동기적 룰 예외 시그니쳐는 삽입을 수행하는 프로세스가 잘 알려져 있고 신뢰할 수 있을 때 코드 삽입을 허용할 수 있다. 그러나, 동일한 룰 예외 시그니쳐는 상기 삽입된 코드의 콘텐트(content) 분석을 수행하는 비동기적 부분을 가질 수 있다. 특정 프로세스에 대한 콘텐트가 이상하게 보일 경우, 상기 각각의 프로세스는 악성으로 간주될 수 있다. 이러한 예에서, 컴퓨팅 오버헤드의 측면에서 상대적으로 비용이 높은 상기 콘텐트 분석은 비동기적으로, 즉 상기 각각의 프로세스가 실행되는 동안에 사용자 경험에 최소한의 영향을 미치도록 수행된다.
또 다른 예에서, 멀웨어 행동 시그니쳐는 브라우저가 플러그인을 로드하려는 시도가 악성을 나타내는 것이라고 표시할 수 있다. 그러나, 일부 플러그인들은 양성이며 작동하도록 허용되어야만 한다. 예시적인 실시예에서, 동기적 룰 예외는 상기 각각의 플러그인이 특정 권한에 의해 디지털 서명되었는지를 테스트할 수 있고, "예"인 경우, 상기 브라우저가 양성이라고 결정할 수 있다. 동기적 시그니쳐 매칭의 경우, 상기 브라우저는 상기 플러그인을 로드하고 실행하도록 허용될 수 있다. 추가 룰 예외는 그러고 나서 상기 플러그인 서명에 사용된 인증서가 현재 유효한지 또는 해지되었는지 여부를 비동기적으로 결정할 수 있다. 각각의 인증서가 해지되었다면, CSA(40)는 상기 브라우저를 종료시키고 그리고/또는 경고를 디스플레이할 수 있다. 일반적으로 인증서 유효성을 테스트하는 것은 원격 서버로 요청을 보내는 것을 필요로 하고, 이에 따라서 만일 동기적으로 행해지면 실질적으로 사용자 경험에 영향을 미칠 수 있다.
상기의 실시예들이 본 발명의 범위를 벗어나지 않는다면 다양한 방법으로 변경될 수 있음은 통상의 기술자에게 당연한 것이다. 따라서 본 발명의 범위는 이하의 청구항과 그들의 법적 균등물에 의해서 결정되어야 한다.

Claims (19)

  1. 하드웨어 프로세서 및 메모리를 포함하는 호스트 시스템으로서, 상기 하드웨어 프로세서는 타깃 엔터티, 동기적 예외 분석기, 및 비동기적 예외 분석기를 실행하도록 구성되고,
    상기 하드웨어 프로세서는:
    상기 타깃 엔터티의 실행에 의해 유발되는 이벤트의 발생을 탐지하는 것의 응답으로, 상기 타깃 엔터티의 실행을 중단하고, 그리고
    상기 타깃 엔터티의 실행을 중단하는 것의 응답으로, 상기 동기적 예외 분석기를 실행하는 것으로 전환하도록 추가적으로 구성되고;
    상기 동기적 예외 분석기는:
    상기 이벤트에 따라서 상기 타깃 엔터티가 악성인 것으로 의심되는지 여부를 결정하고,
    응답으로, 상기 타깃 엔터티가 악성인 것으로 의심될 때, 복수의 룰 예외 시그니쳐들로부터 룰 예외 시그니쳐를 선택적으로 검색하되, 상기 룰 예외 시그니쳐는 상기 이벤트에 따라서 검색되고(상기 룰 예외 시그니쳐는 제1 조건의 인코딩 및 제2 조건의 인코딩을 포함함),
    상기 룰 예외 시그니쳐를 검색하는 것의 응답으로, 상기 제1 조건이 상기 이벤트에 따라서 그리고 상기 타깃 엔터티에 따라서 만족되는지 여부를 결정하고,
    상기 제1 조건이 만족되는지 여부를 결정하는 것의 응답으로, 상기 제1 조건이 만족될 때, 상기 하드웨어 프로세서로 하여금 상기 타깃 엔터티의 실행을 재개하도록 유발하고, 그리고
    상기 제1 조건이 만족되는지 여부를 결정하는 것의 응답으로, 상기 제1 조건이 만족되지 않을 때, 상기 타깃 엔터티는 악성인 것으로 결정하도록 구성되며; 그리고
    상기 비동기적 예외 분석기는:
    상기 하드웨어 프로세서가 상기 타깃 엔터티의 실행을 재개하는 것의 응답으로, 상기 제2 조건이 상기 이벤트에 따라서 그리고 상기 타깃 엔터티에 따라서 만족되는지 여부를 결정하고,
    상기 제2 조건이 만족되는지 여부를 결정하는 것의 응답으로, 상기 제2 조건이 만족될 때, 상기 타깃 엔터티는 악성이 아닌 것으로 결정하고, 그리고
    상기 제2 조건이 만족되는지 여부를 결정하는 것의 응답으로, 상기 제2 조건이 만족되지 않을 때, 상기 타깃 엔터티는 악성인 것으로 결정하도록 구성되는 것을 특징으로 하는 호스트 시스템.
  2. 제1항에 있어서,
    상기 동기적 예외 분석기는 상기 제1 조건이 만족되는지 여부를 결정하는 것의 응답으로, 상기 제1 조건이 만족될 때, 분석 요청을 요청 대기열에 삽입하도록 추가적으로 구성되고(상기 분석 요청은 상기 제2 조건에 따라서, 상기 이벤트에 따라서, 그리고 추가적으로 상기 타깃 엔터티에 따라서 표현됨);
    상기 비동기적 예외 분석기는 상기 제2 조건이 만족되는지 여부를 결정하기 위한 준비로서, 상기 요청 대기열로부터 상기 분석 요청을 제거하도록 추가적으로 구성되는 것을 특징으로 하는 호스트 시스템.
  3. 제2항에 있어서,
    상기 하드웨어 프로세서는:
    상기 타깃 엔터티를 종료하려는 시도를 탐지하는 것의 응답으로, 상기 시도를 중단하고;
    상기 시도를 중단하는 것의 응답으로, 상기 비동기적 예외 분석기에 연결된 종료 감시자를 실행하는 것으로 전환하도록 추가적으로 구성되되,
    상기 종료 감시자는:
    상기 타깃 엔터티에 따라 표현되는 제2 분석 요청을 위해 상기 요청 대기열을 검색하고(상기 제2 분석 요청은 제3 조건을 나타냄),
    상기 제2 분석 요청을 처리하기 위하여 상기 비동기적 예외 분석기를 호출하고, 그리고
    상기 비동기적 예외 분석기를 호출하는 것의 응답으로, 상기 비동기적 예외 분석기가 상기 제3 조건이 만족된다고 결정할 때, 상기 하드웨어 프로세서로 하여금 상기 타깃 엔터티를 종료하려는 시도를 재개하도록 구성되는 것을 특징으로 하는 호스트 시스템.
  4. 제1항에 있어서,
    상기 타깃 엔터티는 상기 호스트 시스템에 의하여 노출된 게스트 가상 머신 내에서 실행되고, 상기 비동기적 예외 분석기는 상기 게스트 가상 머신 밖에서 실행되는 것을 특징으로 하는 호스트 시스템.
  5. 제4항에 있어서,
    상기 비동기적 예외 분석기는 상기 호스트 시스템에 의하여 노출된 보안 가상 머신 내에서 실행되고, 상기 보안 가상 머신은 상기 게스트 가상 머신과 동시에 실행되는 것을 특징으로 하는 호스트 시스템.
  6. 제1항에 있어서,
    상기 룰 예외 시그니쳐는 상기 제1 조건이 만족되는지 여부를 결정하는 것이 상기 제2 조건이 만족되는지 여부를 결정하는 것보다 실질적으로 낮은 컴퓨팅 비용을 수반하도록 구성되는 것을 특징으로 하는 호스트 시스템.
  7. 제1항에 있어서,
    상기 이벤트는 메모리 접근 허가를 위반하는 방식으로 상기 메모리에 접근하려는 시도를 포함하는 것을 특징으로 하는 호스트 시스템.
  8. 제1항에 있어서,
    상기 제1 조건이 만족되는지 여부를 결정하는 것은 상기 타깃 엔터티가 제2 엔터티에 코드를 삽입하였는지 여부를 결정하는 것을 포함하고;
    상기 제2 조건이 만족되는지 여부를 결정하는 것은 상기 코드가 악성인지 여부를 결정하는 것을 포함하는 것을 특징으로 하는 호스트 시스템.
  9. 호스트 시스템의 하드웨어 프로세서에 의하여 실행될 때, 상기 호스트 시스템으로 하여금 동기적 예외 분석기 및 비동기적 예외 분석기를 형성하도록 하는 프로세서 명령들을 저장하는 비-일시적 컴퓨터 판독가능 매체(non-transitory computer-readable medium)로서,
    상기 하드웨어 프로세서는:
    타깃 엔터티의 실행에 의해 유발되는 이벤트의 발생을 탐지하는 것의 응답으로, 상기 타깃 엔터티의 실행을 중단하고, 그리고
    상기 타깃 엔터티의 실행을 중단하는 것의 응답으로, 상기 동기적 예외 분석기를 실행하는 것으로 전환하도록 구성되고;
    상기 동기적 예외 분석기는:
    상기 타깃 엔터티가 상기 이벤트에 따라서 악성인 것으로 의심되는지 여부를 결정하고,
    응답으로, 상기 타깃 엔터티가 악성인 것으로 의심될 때, 복수의 룰 예외 시그니쳐들로부터 룰 예외 시그니쳐를 선택적으로 검색하되, 상기 룰 예외 시그니쳐는 상기 이벤트에 따라서 검색되고(상기 룰 예외 시그니쳐는 제1 조건의 인코딩 및 제2 조건의 인코딩을 포함함),
    상기 룰 예외 시그니쳐를 검색하는 것의 응답으로, 상기 제1 조건이 상기 이벤트에 따라서 그리고 상기 타깃 엔터티에 따라서 만족되는지 여부를 결정하고,
    상기 제1 조건이 만족되는지 여부를 결정하는 것의 응답으로, 상기 제1 조건이 만족될 때, 상기 하드웨어 프로세서로 하여금 상기 타깃 엔터티의 실행을 재개하도록 유발하고, 그리고
    상기 제1 조건이 만족되는지 여부를 결정하는 것의 응답으로, 상기 제1 조건이 만족되지 않을 때, 상기 타깃 엔터티는 악성인 것으로 결정하도록 구성되며; 그리고
    상기 비동기적 예외 분석기는:
    상기 하드웨어 프로세서가 상기 타깃 엔터티의 실행을 재개하는 것의 응답으로, 상기 제2 조건이 상기 이벤트에 따라서 그리고 상기 타깃 엔터티에 따라서 만족되는지 여부를 결정하고,
    상기 제2 조건이 만족되는지 여부를 결정하는 것의 응답으로, 상기 제2 조건이 만족될 때, 상기 타깃 엔터티는 악성이 아닌 것으로 결정하고, 그리고
    상기 제2 조건이 만족되는지 여부를 결정하는 것의 응답으로, 상기 제2 조건이 만족되지 않을 때, 상기 타깃 엔터티는 악성인 것으로 결정하도록 구성되는 것을 특징으로 하는 비-일시적 컴퓨터 판독가능 매체.
  10. 제9항에 있어서,
    상기 동기적 예외 분석기는 상기 제1 조건이 만족되는지 여부를 결정하는 것의 응답으로, 상기 제1 조건이 만족될 때, 분석 요청을 요청 대기열에 삽입하도록 추가적으로 구성되고(상기 분석 요청은 상기 제2 조건에 따라서, 상기 이벤트에 따라서, 그리고 추가적으로 상기 타깃 엔터티에 따라서 표현됨);
    상기 비동기적 예외 분석기는 상기 제2 조건이 만족되는지 여부를 결정하기 위한 준비로서, 상기 요청 대기열로부터 상기 분석 요청을 제거하도록 추가적으로 구성되는 것을 특징으로 하는 비-일시적 컴퓨터 판독가능 매체.
  11. 제10항에 있어서,
    상기 하드웨어 프로세서는:
    상기 타깃 엔터티를 종료하려는 시도를 탐지하는 것의 응답으로, 상기 시도를 중단하고;
    상기 시도를 중단하는 것의 응답으로, 상기 비동기적 예외 분석기에 연결된 종료 감시자를 실행하는 것으로 전환하도록 추가적으로 구성되되,
    상기 종료 감시자는:
    상기 타깃 엔터티에 따라 표현되는 제2 분석 요청을 위해 상기 요청 대기열을 검색하고(상기 제2 분석 요청은 제3 조건을 나타냄),
    상기 제2 분석 요청을 처리하기 위하여 상기 비동기적 예외 분석기를 호출하고, 그리고
    상기 비동기적 예외 분석기를 호출하는 것의 응답으로, 상기 비동기적 예외 분석기가 상기 제3 조건이 만족된다고 결정할 때, 상기 하드웨어 프로세서로 하여금 상기 타깃 엔터티를 종료하려는 시도를 재개하도록 구성되는 것을 특징으로 하는 비-일시적 컴퓨터 판독가능 매체.
  12. 제9항에 있어서,
    상기 타깃 엔터티는 상기 호스트 시스템에 의하여 노출된 게스트 가상 머신 내에서 실행되고, 상기 비동기적 예외 분석기는 상기 게스트 가상 머신 밖에서 실행되는 것을 특징으로 하는 비-일시적 컴퓨터 판독가능 매체.
  13. 제12항에 있어서,
    상기 비동기적 예외 분석기는 상기 호스트 시스템에 의하여 노출된 보안 가상 머신 내에서 실행되고, 상기 보안 가상 머신은 상기 게스트 가상 머신과 동시에 실행되는 것을 특징으로 하는 비-일시적 컴퓨터 판독가능 매체.
  14. 제9항에 있어서,
    상기 룰 예외 시그니쳐는 상기 제1 조건이 만족되는지 여부를 결정하는 것이 상기 제2 조건이 만족되는지 여부를 결정하는 것보다 실질적으로 낮은 컴퓨팅 비용을 수반하도록 구성되는 것을 특징으로 하는 비-일시적 컴퓨터 판독가능 매체.
  15. 제9항에 있어서,
    상기 이벤트는 메모리 접근 허가를 위반하는 방식으로 상기 호스트 시스템의 메모리에 접근하려는 시도를 포함하는 것을 특징으로 하는 비-일시적 컴퓨터 판독가능 매체.
  16. 제9항에 있어서,
    상기 제1 조건이 만족되는지 여부를 결정하는 것은 상기 타깃 엔터티가 제2 엔터티에 코드를 삽입하였는지 여부를 결정하는 것을 포함하고;
    상기 제2 조건이 만족되는지 여부를 결정하는 것은 상기 코드가 악성인지 여부를 결정하는 것을 포함하는 것을 특징으로 하는 비-일시적 컴퓨터 판독가능 매체.
  17. 컴퓨터 보안 위협에 대해서 호스트 시스템을 보호하는 방법으로서,
    상기 호스트 시스템은 하드웨어 프로세서 및 메모리를 포함하고,
    상기 방법은:
    타깃 엔터티의 실행에 의해 유발되는 이벤트의 발생을 탐지하기 위하여 상기 하드웨어 프로세서를 채용하는 것;
    상기 이벤트의 발생을 탐지하는 것의 응답으로, 상기 타깃 엔터티의 실행을 중단하기 위하여 상기 하드웨어 프로세서를 채용하는 것;
    상기 타깃 엔터티의 실행을 중단하는 것의 응답으로,
    상기 타깃 엔터티가 상기 이벤트에 따라서 악성인 것으로 의심되는지 여부를 결정하고,
    응답으로, 상기 타깃 엔터티가 악성인 것으로 의심될 때, 복수의 룰 예외 시그니쳐들로부터 룰 예외 시그니쳐를 선택적으로 검색하되, 상기 룰 예외 시그니쳐는 상기 이벤트에 따라서 검색되고(상기 룰 예외 시그니쳐는 제1 조건의 인코딩 및 제2 조건의 인코딩을 포함함),
    상기 룰 예외 시그니쳐를 검색하는 것의 응답으로, 상기 제1 조건이 상기 이벤트에 따라서 그리고 상기 타깃 엔터티에 따라서 만족되는지 여부를 결정하고,
    상기 제1 조건이 만족되는지 여부를 결정하는 것의 응답으로, 상기 제1 조건이 만족될 때, 상기 하드웨어 프로세서로 하여금 상기 타깃 엔터티의 실행을 재개하도록 유발하고, 그리고
    상기 제1 조건이 만족되는지 여부를 결정하는 것의 응답으로, 상기 제1 조건이 만족되지 않을 때, 상기 타깃 엔터티는 악성인 것으로 결정하도록 구성된 동기적 예외 분석기를 실행하는 것으로 전환하기 위하여 상기 하드웨어 프로세서를 채용하는 것;
    상기 하드웨어 프로세서가 상기 타깃 엔터티의 실행을 재개하는 것의 응답으로, 상기 제2 조건이 상기 이벤트에 따라서 그리고 상기 타깃 엔터티에 따라서 만족되는지 여부를 결정하기 위해 상기 하드웨어 프로세서를 채용하는 것;
    상기 제2 조건이 만족되는지 여부를 결정하는 것의 응답으로, 상기 제2 조건이 만족될 때, 상기 타깃 엔터티는 악성이 아닌 것으로 결정하는 것; 및
    상기 제2 조건이 만족되는지 여부를 결정하는 것의 응답으로, 상기 제2 조건이 만족되지 않을 때, 상기 타깃 엔터티는 악성인 것으로 결정하는 것을 포함하는 것을 특징으로 하는 호스트 시스템을 보호하는 방법.
  18. 제17항에 있어서,
    상기 제1 조건이 만족되는지 여부를 결정하는 것의 응답으로, 상기 제1 조건이 만족될 때, 분석 요청을 요청 대기열에 삽입하기 위하여 상기 하드웨어 프로세서를 채용하는 것(상기 분석 요청은 상기 제2 조건에 따라서, 상기 이벤트에 따라서, 그리고 추가적으로 상기 타깃 엔터티에 따라서 표현됨); 및
    상기 제2 조건이 만족되는지 여부를 결정하기 위한 준비로서, 상기 대기열로부터 상기 분석 요청을 제거하기 위하여 상기 하드웨어 프로세서를 채용하는 것을 추가적으로 포함하는 것을 특징으로 하는 호스트 시스템을 보호하는 방법.
  19. 제18항에 있어서,
    상기 타깃 엔터티를 종료하려는 시도를 탐지하는 것의 응답으로, 상기 시도를 중단하기 위해 상기 하드웨어 프로세서를 채용하는 것;
    상기 시도를 중단하는 것의 응답으로, 상기 타깃 엔터티에 따라 표현되는 제2 분석 요청을 위해 상기 요청 대기열을 검색하기 위하여 상기 하드웨어 프로세서를 채용하는 것(상기 제2 분석 요청은 제3 조건을 나타냄);
    상기 제2 분석 요청을 검색하는 것의 응답으로, 상기 제3 조건이 상기 타깃 엔터티에 따라서 만족되는지 여부를 결정하는 것;
    응답으로, 상기 제3 조건이 만족될 때, 상기 타깃 엔터티를 종료하기 위하여 상기 하드웨어 프로세서를 채용하는 것을 추가적으로 포함하는 것을 특징으로 하는 호스트 시스템을 보호하는 방법.
KR1020187001763A 2015-07-14 2016-07-14 비동기적 인트로스펙션 예외를 이용한 컴퓨터 보안 시스템들 및 방법들 KR102297133B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201562192384P 2015-07-14 2015-07-14
US62/192,384 2015-07-14
US15/209,317 2016-07-13
US15/209,317 US9852295B2 (en) 2015-07-14 2016-07-13 Computer security systems and methods using asynchronous introspection exceptions
PCT/EP2016/066745 WO2017009415A1 (en) 2015-07-14 2016-07-14 Computer security systems and methods using asynchronous introspection exceptions

Publications (2)

Publication Number Publication Date
KR20180029047A KR20180029047A (ko) 2018-03-19
KR102297133B1 true KR102297133B1 (ko) 2021-09-06

Family

ID=56511556

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187001763A KR102297133B1 (ko) 2015-07-14 2016-07-14 비동기적 인트로스펙션 예외를 이용한 컴퓨터 보안 시스템들 및 방법들

Country Status (12)

Country Link
US (1) US9852295B2 (ko)
EP (1) EP3323074B1 (ko)
JP (1) JP6842455B2 (ko)
KR (1) KR102297133B1 (ko)
CN (1) CN107851153B (ko)
AU (1) AU2016293058B2 (ko)
CA (1) CA2990343C (ko)
ES (1) ES2792912T3 (ko)
HK (1) HK1247295A1 (ko)
IL (1) IL256563B (ko)
RU (1) RU2703156C2 (ko)
WO (1) WO2017009415A1 (ko)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10397277B2 (en) 2015-06-14 2019-08-27 Avocado Systems Inc. Dynamic data socket descriptor mirroring mechanism and use for security analytics
US10270810B2 (en) 2015-06-14 2019-04-23 Avocado Systems Inc. Data socket descriptor based policies for application and data behavior and security
US10193930B2 (en) 2015-06-29 2019-01-29 Avocado Systems Inc. Application security capability exchange via the application and data protection layer
US10356068B2 (en) 2015-07-14 2019-07-16 Avocado Systems Inc. Security key generator module for security sensitive applications
US10354070B2 (en) * 2015-08-22 2019-07-16 Avocado Systems Inc. Thread level access control to socket descriptors and end-to-end thread level policies for thread protection
US10599551B2 (en) * 2016-08-12 2020-03-24 The University Of Chicago Automatically detecting distributed concurrency errors in cloud systems
US10394641B2 (en) * 2017-04-10 2019-08-27 Arm Limited Apparatus and method for handling memory access operations
US10706180B2 (en) 2017-07-07 2020-07-07 Endgame, Inc. System and method for enabling a malware prevention module in response to a context switch within a certain process being executed by a processor
US11062021B2 (en) 2017-08-29 2021-07-13 NortonLifeLock Inc. Systems and methods for preventing malicious applications from exploiting application services
US10546120B2 (en) * 2017-09-25 2020-01-28 AO Kaspersky Lab System and method of forming a log in a virtual machine for conducting an antivirus scan of a file
US10691800B2 (en) * 2017-09-29 2020-06-23 AO Kaspersky Lab System and method for detection of malicious code in the address space of processes
US10860411B2 (en) 2018-03-28 2020-12-08 Futurewei Technologies, Inc. Automatically detecting time-of-fault bugs in cloud systems
US11544379B2 (en) * 2018-04-13 2023-01-03 Webroot Inc. Malicious software detection based on API trust
US10599552B2 (en) 2018-04-25 2020-03-24 Futurewei Technologies, Inc. Model checker for finding distributed concurrency bugs
EP3588350B1 (en) * 2018-06-29 2021-04-07 AO Kaspersky Lab Method and system for generating a request for information on a file to perform an antivirus scan
RU2701842C1 (ru) 2018-06-29 2019-10-01 Акционерное общество "Лаборатория Касперского" Способ формирования запроса информации о файле для осуществления антивирусной проверки и система для реализации способа (варианты)
US11295011B2 (en) * 2019-01-08 2022-04-05 Vmware, Inc. Event-triggered behavior analysis
US11277436B1 (en) * 2019-06-24 2022-03-15 Ca, Inc. Identifying and mitigating harm from malicious network connections by a container
US20220200996A1 (en) * 2020-12-23 2022-06-23 Acronis International Gmbh Systems and methods for protecting web conferences from intruders
US20230061511A1 (en) * 2021-08-30 2023-03-02 International Business Machines Corporation Inaccessible prefix pages during virtual machine execution
CN113779561B (zh) * 2021-09-09 2024-03-01 安天科技集团股份有限公司 内核漏洞处理方法、装置、存储介质及电子设备
US11934515B2 (en) 2021-12-02 2024-03-19 Bank Of America Corporation Malware deterrence using computer environment indicators
US11979416B2 (en) * 2022-03-30 2024-05-07 Sophos Limited Scored threat signature analysis
US20230315849A1 (en) * 2022-03-31 2023-10-05 Sophos Limited Threat signature scoring

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100930218B1 (ko) 2005-05-13 2009-12-09 인텔 코포레이션 소프트웨어 기반 보안 코프로세서를 제공하는 방법, 장치및 처리 시스템
US20150101049A1 (en) 2013-10-04 2015-04-09 Bitdefender IPR Management Ltd. Complex Scoring for Malware Detection
WO2015094189A1 (en) 2013-12-17 2015-06-25 Intel Corporation Detection of unauthorized memory modification and access using transactional memory

Family Cites Families (65)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6012081A (en) * 1996-07-03 2000-01-04 Siemens Aktiengesellschaft Service and event synchronous/asynchronous manager
US5826084A (en) 1997-03-25 1998-10-20 Texas Instruments Incorporated Microprocessor with circuits, systems, and methods for selectively bypassing external interrupts past the monitor program during virtual program operation
US7516453B1 (en) * 1998-10-26 2009-04-07 Vmware, Inc. Binary translator with precise exception synchronization mechanism
US7657419B2 (en) 2001-06-19 2010-02-02 International Business Machines Corporation Analytical virtual machine
US7748039B2 (en) 2002-08-30 2010-06-29 Symantec Corporation Method and apparatus for detecting malicious code in an information handling system
US20040117532A1 (en) 2002-12-11 2004-06-17 Bennett Steven M. Mechanism for controlling external interrupts in a virtual machine system
US20040168157A1 (en) 2003-02-18 2004-08-26 Robert Hundt System and method for creating a process invocation tree
US7421689B2 (en) 2003-10-28 2008-09-02 Hewlett-Packard Development Company, L.P. Processor-architecture for facilitating a virtual machine monitor
US7552434B2 (en) 2004-04-30 2009-06-23 Hewlett-Packard Development Company, L.P. Method of performing kernel task upon initial execution of process at user level
US7937700B1 (en) 2004-05-11 2011-05-03 Advanced Micro Devices, Inc. System, processor, and method for incremental state save/restore on world switch in a virtual machine environment
US20050289265A1 (en) * 2004-06-08 2005-12-29 Daniel Illowsky System method and model for social synchronization interoperability among intermittently connected interoperating devices
US7685635B2 (en) 2005-03-11 2010-03-23 Microsoft Corporation Systems and methods for multi-level intercept processing in a virtual machine environment
CA2675393A1 (en) * 2007-01-16 2008-07-24 Gizmox Ltd. Method and system for creating it-oriented server-based web applications
US8561060B2 (en) 2007-04-26 2013-10-15 Advanced Micro Devices, Inc. Processor and method configured to determine an exit mechanism using an intercept configuration for a virtual machine
US8065728B2 (en) 2007-09-10 2011-11-22 Wisconsin Alumni Research Foundation Malware prevention system monitoring kernel events
US9779235B2 (en) 2007-10-17 2017-10-03 Sukamo Mertoguno Cognizant engines: systems and methods for enabling program observability and controlability at instruction level granularity
KR101489244B1 (ko) * 2007-12-24 2015-02-04 삼성전자 주식회사 가상 머신 모니터 기반의 프로그램 실행 시스템 및 그 제어방법
US20100031353A1 (en) 2008-02-04 2010-02-04 Microsoft Corporation Malware Detection Using Code Analysis and Behavior Monitoring
US8341105B1 (en) * 2008-02-19 2012-12-25 Mcafee, Inc. System, method, and computer program product for applying a rule to associated events
US9015704B2 (en) 2008-03-24 2015-04-21 International Business Machines Corporation Context agent injection using virtual machine introspection
WO2009151888A2 (en) 2008-05-19 2009-12-17 Authentium, Inc. Secure virtualization system software
US9609015B2 (en) 2008-05-28 2017-03-28 Zscaler, Inc. Systems and methods for dynamic cloud-based malware behavior analysis
US8578483B2 (en) 2008-07-31 2013-11-05 Carnegie Mellon University Systems and methods for preventing unauthorized modification of an operating system
US20100106767A1 (en) * 2008-10-24 2010-04-29 Microsoft Corporation Automatically securing distributed applications
US8225317B1 (en) * 2009-04-17 2012-07-17 Symantec Corporation Insertion and invocation of virtual appliance agents through exception handling regions of virtual machines
US8566943B2 (en) 2009-10-01 2013-10-22 Kaspersky Lab, Zao Asynchronous processing of events for malware detection
CN101673332A (zh) * 2009-10-12 2010-03-17 湖南大学 一种基于哈佛体系结构的内核代码保护方法
KR101057432B1 (ko) 2010-02-23 2011-08-22 주식회사 이세정보 프로세스의 행위 분석을 통한 유해 프로그램을 실시간으로 탐지하고 차단하는 시스템, 방법, 프로그램 및 기록매체
CN102169484B (zh) 2010-02-26 2014-08-13 威睿公司 虚拟化环境中综合的、相关的和动态的数据搜索
US8578345B1 (en) 2010-04-15 2013-11-05 Symantec Corporation Malware detection efficacy by identifying installation and uninstallation scenarios
US8949797B2 (en) 2010-04-16 2015-02-03 International Business Machines Corporation Optimizing performance of integrity monitoring
US8914879B2 (en) 2010-06-11 2014-12-16 Trustwave Holdings, Inc. System and method for improving coverage for web code
US8549644B2 (en) * 2011-03-28 2013-10-01 Mcafee, Inc. Systems and method for regulating software access to security-sensitive processor resources
US20120255003A1 (en) * 2011-03-31 2012-10-04 Mcafee, Inc. System and method for securing access to the objects of an operating system
JP2014514651A (ja) * 2011-03-28 2014-06-19 マカフィー, インコーポレイテッド バーチャルマシーンモニタベースのアンチマルウェアセキュリティのためのシステム及び方法
US8959638B2 (en) * 2011-03-29 2015-02-17 Mcafee, Inc. System and method for below-operating system trapping and securing of interdriver communication
US20120254993A1 (en) 2011-03-28 2012-10-04 Mcafee, Inc. System and method for virtual machine monitor based anti-malware security
US9032525B2 (en) * 2011-03-29 2015-05-12 Mcafee, Inc. System and method for below-operating system trapping of driver filter attachment
US8813227B2 (en) 2011-03-29 2014-08-19 Mcafee, Inc. System and method for below-operating system regulation and control of self-modifying code
US8966629B2 (en) * 2011-03-31 2015-02-24 Mcafee, Inc. System and method for below-operating system trapping of driver loading and unloading
US8863283B2 (en) * 2011-03-31 2014-10-14 Mcafee, Inc. System and method for securing access to system calls
US20120255031A1 (en) * 2011-03-28 2012-10-04 Mcafee, Inc. System and method for securing memory using below-operating system trapping
RU2454705C1 (ru) * 2011-04-19 2012-06-27 Закрытое акционерное общество "Лаборатория Касперского" Система и способ защиты компьютерного устройства от вредоносных объектов, использующих сложные схемы заражения
US8099596B1 (en) 2011-06-30 2012-01-17 Kaspersky Lab Zao System and method for malware protection using virtualization
US8578080B2 (en) * 2011-07-01 2013-11-05 Intel Corporation Secure handling of interrupted events utilizing a virtual interrupt definition table
US9298918B2 (en) * 2011-11-30 2016-03-29 Elwha Llc Taint injection and tracking
CN102663312B (zh) * 2012-03-20 2014-10-01 中国科学院信息工程研究所 一种基于虚拟机的rop攻击检测方法及系统
US9146767B2 (en) 2012-06-19 2015-09-29 Raytheon Company Secure cloud hypervisor monitor
US20140053272A1 (en) 2012-08-20 2014-02-20 Sandor Lukacs Multilevel Introspection of Nested Virtual Machines
US8850581B2 (en) 2012-11-07 2014-09-30 Microsoft Corporation Identification of malware detection signature candidate code
CN103839003B (zh) * 2012-11-22 2018-01-30 腾讯科技(深圳)有限公司 恶意文件检测方法及装置
US8762948B1 (en) 2012-12-20 2014-06-24 Kaspersky Lab Zao System and method for establishing rules for filtering insignificant events for analysis of software program
RU2535506C2 (ru) * 2012-12-25 2014-12-10 Закрытое акционерное обшество "Лаборатория Касперского" Система и способ формирования сценариев модели поведения приложений
RU2523112C1 (ru) * 2012-12-25 2014-07-20 Закрытое акционерное общество "Лаборатория Касперского" Система и способ выбора оптимального типа антивирусной проверки при доступе к файлу
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
US9037873B2 (en) 2013-01-30 2015-05-19 Vmware, Inc. Method and system for preventing tampering with software agent in a virtual machine
CN104102878B (zh) * 2013-04-10 2017-02-08 中国科学院计算技术研究所 一种Linux平台下的恶意代码分析方法及系统
EP3044718A4 (en) 2013-09-10 2017-05-17 Symantec Corporation Systems and methods for using event-correlation graphs to detect attacks on computing systems
US9619346B2 (en) 2013-10-31 2017-04-11 Assured Information Security, Inc. Virtual machine introspection facilities
US9973534B2 (en) * 2013-11-04 2018-05-15 Lookout, Inc. Methods and systems for secure network connections
CN104750534B (zh) 2013-12-26 2018-10-30 华为技术有限公司 触发虚拟机自省的方法、装置及系统
US9323926B2 (en) * 2013-12-30 2016-04-26 Intuit Inc. Method and system for intrusion and extrusion detection
US20150215327A1 (en) * 2014-01-28 2015-07-30 Intuit Inc. Method and system for extrusion and intrusion detection in a cloud computing environment using network communications devices
US11087006B2 (en) 2014-06-30 2021-08-10 Nicira, Inc. Method and apparatus for encrypting messages based on encryption group association
CN104715201B (zh) * 2015-03-31 2018-02-27 北京奇虎科技有限公司 一种虚拟机恶意行为检测方法和系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100930218B1 (ko) 2005-05-13 2009-12-09 인텔 코포레이션 소프트웨어 기반 보안 코프로세서를 제공하는 방법, 장치및 처리 시스템
US20150101049A1 (en) 2013-10-04 2015-04-09 Bitdefender IPR Management Ltd. Complex Scoring for Malware Detection
WO2015094189A1 (en) 2013-12-17 2015-06-25 Intel Corporation Detection of unauthorized memory modification and access using transactional memory

Also Published As

Publication number Publication date
JP6842455B2 (ja) 2021-03-17
CA2990343A1 (en) 2017-01-19
WO2017009415A1 (en) 2017-01-19
EP3323074B1 (en) 2020-03-18
AU2016293058B2 (en) 2020-11-05
CN107851153A (zh) 2018-03-27
EP3323074A1 (en) 2018-05-23
RU2703156C2 (ru) 2019-10-15
KR20180029047A (ko) 2018-03-19
RU2018104335A (ru) 2019-08-14
JP2018520446A (ja) 2018-07-26
US20170039371A1 (en) 2017-02-09
HK1247295A1 (zh) 2018-09-21
CA2990343C (en) 2021-09-28
ES2792912T3 (es) 2020-11-12
IL256563B (en) 2021-02-28
AU2016293058A1 (en) 2018-01-18
RU2018104335A3 (ko) 2019-08-30
CN107851153B (zh) 2021-03-30
US9852295B2 (en) 2017-12-26
IL256563A (en) 2018-02-28

Similar Documents

Publication Publication Date Title
KR102297133B1 (ko) 비동기적 인트로스펙션 예외를 이용한 컴퓨터 보안 시스템들 및 방법들
JP6706273B2 (ja) インタープリタ仮想マシンを用いた挙動マルウェア検出
KR101946982B1 (ko) 가상 머신에서 멀웨어 탐지를 위한 프로세스 평가
AU2017384437B2 (en) Event filtering for virtual machine security applications
US10140448B2 (en) Systems and methods of asynchronous analysis of event notifications for computer security applications
US9424427B1 (en) Anti-rootkit systems and methods

Legal Events

Date Code Title Description
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right