KR102206115B1 - 인터프리터 가상 머신을 이용한 행동 멀웨어 탐지 - Google Patents
인터프리터 가상 머신을 이용한 행동 멀웨어 탐지 Download PDFInfo
- Publication number
- KR102206115B1 KR102206115B1 KR1020177035307A KR20177035307A KR102206115B1 KR 102206115 B1 KR102206115 B1 KR 102206115B1 KR 1020177035307 A KR1020177035307 A KR 1020177035307A KR 20177035307 A KR20177035307 A KR 20177035307A KR 102206115 B1 KR102206115 B1 KR 102206115B1
- Authority
- KR
- South Korea
- Prior art keywords
- bytecode
- malware
- routine
- trigger event
- sequence
- Prior art date
Links
- 230000003542 behavioural effect Effects 0.000 title claims description 11
- 238000001514 detection method Methods 0.000 title abstract description 33
- 238000000034 method Methods 0.000 claims abstract description 117
- 230000008569 process Effects 0.000 claims abstract description 82
- 238000006243 chemical reaction Methods 0.000 claims abstract description 33
- 230000001960 triggered effect Effects 0.000 claims abstract description 21
- 230000004044 response Effects 0.000 claims description 40
- 238000011156 evaluation Methods 0.000 claims description 35
- 238000012545 processing Methods 0.000 claims description 12
- 230000000694 effects Effects 0.000 claims description 9
- 238000004590 computer program Methods 0.000 claims description 7
- 238000013519 translation Methods 0.000 claims description 5
- 230000009471 action Effects 0.000 claims description 4
- 230000006870 function Effects 0.000 description 26
- 230000001360 synchronised effect Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 7
- 230000006399 behavior Effects 0.000 description 6
- 230000014509 gene expression Effects 0.000 description 5
- 239000000243 solution Substances 0.000 description 5
- 230000003068 static effect Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 239000003795 chemical substances by application Substances 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 241000700605 Viruses Species 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 238000002347 injection Methods 0.000 description 2
- 239000007924 injection Substances 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 230000002427 irreversible effect Effects 0.000 description 1
- 230000003211 malignant effect Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45591—Monitoring or debugging support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/034—Test or assess a computer or a system
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Virology (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Debugging And Monitoring (AREA)
- Storage Device Security (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
멀웨어와 스파이웨어와 같은 컴퓨터 보안 위협들로부터 컴퓨터 시스템을 보호할 수 있도록 하는 시스템들과 방법들이 설명된다. 일부 실시예들에서, 보안 어플리케이션은 상기 컴퓨터 시스템에서 실행되는 일련의 모니터링되는 객체들(프로세스들, 쓰레드들 등)이 악성 소프트웨어를 포함하는지 여부를 결정하기 위하여 일련의 탐지 루틴들을 실행한다. 상기 탐지 루틴들은 바이트코드로 표현(formulation)되고 바이트코드 변환 가상 머신 내에서 실행된다. 탐지 루틴의 실행은, 예를 들어서, 인터프리테이션 또는 JIT 컴파일(just in time compilation)을 통해서 상기 개별 루틴의 바이트코드 명령들을 원시 프로세서 명령들(native processor instruction)로 변환하는 것을 포함한다. 상기 개별 루틴의 실행은 피보호 클라이언트 시스템 내에서 특정 이벤트들의 발생으로 인하여 선택적으로 트리거링된다. 탐지 루틴들은 모니터링되는 객체가 악성인지를 결정하기 위하여 보안 어플리케이션에 의하여 추가적으로 사용될 수 있는 일련의 스코어들을 출력할 수 있다.
Description
본 발명은 멀웨어로부터 컴퓨터 시스템들을 보호하기 위한 시스템들과 방법들에 대한 것이다.
멀웨어로도 알려진 악성 소프트웨어는 세계적으로 많은 수의 컴퓨터 시스템에 영향을 주고 있다. 멀웨어는 컴퓨터 바이러스, 웜, 루트킷(rootkit), 원하지 않은 애드웨어, 랜섬웨어, 및 스파이웨어와 같은 많은 형태로, 수백만의 컴퓨터 사용자에게 심각한 위협이 되고 있으며, 무엇보다도 데이터와 민감한 정보의 손실, 신원 도용, 및 생산성 손실에 있어 이들을 취약하게 하고 있다. 멀웨어는 일부 사용자에게는 외설적이거나, 지나치게 폭력적이거나, 귀찮거나, 또는 그렇지 않아도 불쾌할 수 있는 내용을 또한 표시할 수 있다.
보안 소프트웨어는 사용자의 컴퓨터 시스템을 감염시키는 멀웨어를 탐지하는데, 추가적으로 그러한 멀웨어를 제거하거나 또는 아니면 불능화하는데 사용될 수 있다. 여러 멀웨어 탐지 기술들이 본 기술분야에서 알려져 있다. 일부는 상기 멀웨어 에이전트의 코드의 프래그먼트(fragment)를 멀웨어를 나타내는 시그니쳐들의 라이브러리에 매칭하는 것에 의존한다. 다른 종래의 방법들은 상기 멀웨어 에이전트의 멀웨어를 나타내는 일련의 행동들을 탐지한다.
멀웨어는 빠르게 진화해서 탐지 알고리즘을 항상 앞선다. 그와 같이 빠르게 변화하는 위협들에 대응하기 위하여 보안 소프트웨어의 제공자들은, 예를 들어서 새로운 멀웨어 버전들을 탐지하기 위하여 분류자들을 재훈련시킴으로써 수분 내지 수시간 단위로 탐지 방법들 및/또는 파라미터들을 통상적으로 조정한다. 통상적으로, 그러한 재훈련은 많은 컴퓨팅 비용이 소요된다. 더욱이, 새로운 행동 탐지 알고리즘의 도입, 또는 심지어 기존 것을 변경하는 것은, 통상적으로 개별 보안 소프트웨어의 소스 코드의 재컴파일(re-compilation) 뿐만 아니라 광범위한 테스팅을 필요로 한다. 그리고 나서야 상기 새로운 소프트웨어 버전이 예를 들어서 소프트웨어 업데이트로서 클라이언트들에게 전달될 수 있다. 반대로, 시그니쳐 기반 탐지 시스템들에서는 새로운 멀웨어 시그니쳐는 일련의 기존 시그니쳐들에 쉽게 추가될 수 있다.
따라서, 지속적으로 변화하는 멀웨어의 특성에 보조를 맞추기 위하여 알고리즘들 및/또는 파라미터들을 빠르게 업데이트할 수 있는 안티-멀웨어 솔루션들을 개발할 강한 필요가 있다.
본 발명의 일 태양에 따르면, 클라이언트 시스템은 루틴 배정기(routine dispatcher), 바이트코드 변환 가상 머신, 및 행동 평가 엔진을 형성하도록 구성된 적어도 하나의 하드웨어 프로세서를 포함한다. 상기 루틴 배정기는, 트리거 이벤트(trigger event)의 발생을 탐지하는 것의 응답으로, 복수의 안티-멀웨어 바이트코드 루틴들로부터 실행을 위한 안티-멀웨어 바이트코드 루틴을 선택하도록 구성되고, 상기 안티 멀웨어 바이트코드 루틴은 상기 트리거 이벤트에 따라서 선택된다. 상기 트리거 이벤트의 발생은 상기 클라이언트 시스템 내에서 실행되는 모니터링되는 프로세스에 의하여 유발된다. 상기 바이트코드 변환 가상 머신은 상기 트리거 이벤트의 발생이 멀웨어를 나타내는지를 결정하기 위하여 상기 안티 멀웨어 바이트코드 루틴을 실행하도록 구성되고, 상기 안티 멀웨어 바이트코드 루틴을 실행하는 것은 상기 안티 멀웨어 바이트코드 루틴의 일련의 바이트코드 명령들을 원시 프로세서 명령들(native processor instructions)의 시퀀스로 변환하는 것, 상기 원시 프로세서 명령들의 시퀀스를 실행하는 것을 포함한다. 상기 행동 평가 엔진은 상기 안티 멀웨어 바이트코드 루틴을 실행하는 상기 바이트코드 변환 가상 머신의 결과에 따라서 상기 클라이언트 시스템이 멀웨어를 포함하는지 여부를 결정하도록 구성된다.
본 발명의 다른 태양에 따르면, 컴퓨터에서 실행가능한 방법(computer-implemented method)은, 트리거 이벤트(trigger event)의 발생을 탐지하는 것의 응답으로, 상기 트리거 이벤트에 따라서 복수의 바이트코드 루틴들로부터 안티-멀웨어 바이트코드 루틴을 선택하기 위하여 클라이언트 시스템의 적어도 하나의 하드웨어 프로세서를 채용하는 것을 포함하고, 상기 안티 멀웨어 바이트코드 루틴은 상기 트리거 이벤트의 발생이 멀웨어를 나타내는지를 결정하도록 구성된다. 상기 트리거 이벤트는 상기 클라이언트 시스템 내에서 실행되는 모니터링되는 프로세스에 의하여 유발된다. 상기 방법은 상기 안티 멀웨어 바이트코드 루틴을 선택하는 것의 응답으로, 상기 안티 멀웨어 바이트코드 루틴의 일련의 바이트코드 명령들을 원시 프로세서 명령들의 시퀀스로 변환하기 위하여, 그리고 원시 프로세서 명령들의 상기 시퀀스를 실행하기 위하여 상기 클라이언트 시스템의 적어도 하나의 하드웨어 프로세서를 채용하는 것을 추가적으로 포함한다. 상기 방법은 원시 프로세서 명령들의 상기 시퀀스를 실행하는 결과에 따라서 상기 클라이언트 시스템이 멀웨어를 포함하는지 여부를 결정하기 위하여 상기 클라이언트 시스템의 적어도 하나의 하드웨어 프로세서를 채용하는 것을 추가적으로 포함한다.
본 발명의 다른 태양에 따르면, 비-일시적 컴퓨터 판독가능 매체(non-transitory computer-readable medium)는, 클라이언트 시스템의 적어도 하나의 하드웨어 프로세서에 의하여 실행될 때, 상기 클라이언트 시스템으로 하여금 루틴 배정기, 바이트코드 변환 가상 머신, 및 행동 평가 엔진을 형성하도록 하는 컴퓨터 프로그램을 저장한다. 상기 루틴 배정기는, 트리거 이벤트(trigger event)의 발생을 탐지하는 것의 응답으로, 상기 트리거 이벤트에 따라서 복수의 안티-멀웨어 바이트코드 루틴들로부터 실행을 위한 안티-멀웨어 바이트코드 루틴을 선택하도록 구성되고, 상기 안티 멀웨어 바이트코드 루틴은 상기 트리거 이벤트의 발생이 멀웨어를 나타내는지를 결정하도록 구성된다. 상기 트리거 이벤트는 상기 클라이언트 시스템 내에서 실행되는 모니터링되는 프로세스에 의하여 유발된다. 상기 바이트코드 변환 가상 머신은 상기 안티 멀웨어 바이트코드 루틴을 실행하도록 구성되고, 상기 안티 멀웨어 바이트코드 루틴을 실행하는 것은 상기 안티 멀웨어 바이트코드 루틴의 일련의 바이트코드 명령들을 원시 프로세서 명령들(native processor instructions)의 시퀀스로 변환하는 것, 상기 원시 프로세서 명령들의 시퀀스를 실행하는 것을 포함한다. 상기 행동 평가 엔진은 상기 안티 멀웨어 바이트코드 루틴을 실행하는 상기 바이트코드 변환 가상 머신의 결과에 따라서 상기 클라이언트 시스템이 멀웨어를 포함하는지 여부를 결정하도록 구성된다.
본 발명의 다른 태양에 따르면, 비-일시적 컴퓨터 판독가능 매체는 안티 멀웨어 바이트코드 루틴을 저장하고, 상기 안티 멀웨어 바이트코드 루틴은 적어도 하나의 하드웨어 프로세서를 포함하는 클라이언트 시스템에서 형성되는 바이트코드 변환 가상 머신에 의해서 실행가능하고, 상기 안티 멀웨어 바이트코드 루틴을 실행하는 것은 상기 적어도 하나의 하드웨어 프로세서로 하여금 상기 클라이언트 시스템 내의 트리거 이벤트의 발생이 멀웨어를 나타내는지를 결정하도록 유발한다. 상기 안티 멀웨어 바이트코드 루틴을 실행하는 것은 상기 안티 멀웨어 바이트코드 루틴의 일련의 바이트코드 명령들을 원시 프로세서 명령들(native processor instructions)의 시퀀스로 변환하는 것, 상기 원시 프로세서 명령들의 시퀀스를 실행하는 것을 포함한다. 상기 클라이언트 시스템은 추가적으로 루틴 배정기와 행동 평가 엔진을 포함한다. 상기 루틴 배정기는, 상기 트리거 이벤트(trigger event)의 발생을 탐지하는 것의 응답으로, 상기 트리거 이벤트에 따라서 복수의 바이트코드 루틴들로부터 안티-멀웨어 바이트코드 루틴을 선택하도록 구성된다. 상기 행동 평가 엔진은 상기 안티 멀웨어 바이트코드 루틴을 실행하는 상기 바이트코드 변환 가상 머신의 결과에 따라서 상기 클라이언트 시스템이 멀웨어를 포함하는지 여부를 결정하도록 구성된다.
본 발명의 전술한 태양들 및 장점은 후술하는 상세한 설명 및 도면을 참조로 이해하면 더욱 잘 이해될 것이다.
도 1은 본 발명의 일부 실시예들에 따라서 컴퓨터 보안 위협들(예를 들어서, 멀웨어)에 대해서 보호되는 예시적 클라이언트 시스템을 보여주는 도면.
도 2는 본 발명의 일부 실시예들에 따른 클라이언트 컴퓨터 시스템의 예시적 하드웨어 구성을 보여주는 도면.
도 3은 본 발명의 일부 실시예들에 따른 보안 어플리케이션의 예시적 구조를 보여주는 도면.
도 4는 Windows® 환경에서 일련의 프로세스들의 예시적 실행 플로우를 보여주는 도면. 실선 화살표들은 이벤트 인터셉터(event interceptor)들이 없는 경우의 플로우를 나타낸다. 파선 화살표들은 상기 실행 플로우의 변형을 나타내는데, 상기 변형들은 본 발명의 일부 실시예들에 따라서 작동되는 복수의 이벤트 인터셉터들에 의하여 도입된다.
도 5는 본 발명의 일부 실시예들에 따라서 멀웨어 탐지를 구성하기 위하여 상기 보안 어플리케이션에 의해서 수행되는 단계들의 예시적인 시퀀스를 보여주는 도면.
도 6은 본 발명의 일부 실시예들에 따른 예시적 바이트코드 루틴을 보여주는 도면.
도 7은 본 발명의 일부 실시예들에 따른 상기 루틴 배정기(도 3)에 의해서 수행되는 단계들의 예시적인 시퀀스를 보여주는 도면.
도 8은 본 발명의 일부 실시예들에 따라서 이벤트 대기열(event queue)을 처리하기 위하여 상기 루틴 배정기에 의해서 수행되는 단계들의 예시적인 시퀀스를 보여주는 도면.
도 9는 본 발명의 일부 실시예들에 따른 상기 바이트코드 변환 VM(도 3)에 의해서 수행되는 단계들의 예시적인 시퀀스를 보여주는 도면.
도 10은 본 발명의 일부 실시예들에 따른 예시적 소프트웨어 업데이트 프로세스를 보여주는 도면.
도 1은 본 발명의 일부 실시예들에 따라서 컴퓨터 보안 위협들(예를 들어서, 멀웨어)에 대해서 보호되는 예시적 클라이언트 시스템을 보여주는 도면.
도 2는 본 발명의 일부 실시예들에 따른 클라이언트 컴퓨터 시스템의 예시적 하드웨어 구성을 보여주는 도면.
도 3은 본 발명의 일부 실시예들에 따른 보안 어플리케이션의 예시적 구조를 보여주는 도면.
도 4는 Windows® 환경에서 일련의 프로세스들의 예시적 실행 플로우를 보여주는 도면. 실선 화살표들은 이벤트 인터셉터(event interceptor)들이 없는 경우의 플로우를 나타낸다. 파선 화살표들은 상기 실행 플로우의 변형을 나타내는데, 상기 변형들은 본 발명의 일부 실시예들에 따라서 작동되는 복수의 이벤트 인터셉터들에 의하여 도입된다.
도 5는 본 발명의 일부 실시예들에 따라서 멀웨어 탐지를 구성하기 위하여 상기 보안 어플리케이션에 의해서 수행되는 단계들의 예시적인 시퀀스를 보여주는 도면.
도 6은 본 발명의 일부 실시예들에 따른 예시적 바이트코드 루틴을 보여주는 도면.
도 7은 본 발명의 일부 실시예들에 따른 상기 루틴 배정기(도 3)에 의해서 수행되는 단계들의 예시적인 시퀀스를 보여주는 도면.
도 8은 본 발명의 일부 실시예들에 따라서 이벤트 대기열(event queue)을 처리하기 위하여 상기 루틴 배정기에 의해서 수행되는 단계들의 예시적인 시퀀스를 보여주는 도면.
도 9는 본 발명의 일부 실시예들에 따른 상기 바이트코드 변환 VM(도 3)에 의해서 수행되는 단계들의 예시적인 시퀀스를 보여주는 도면.
도 10은 본 발명의 일부 실시예들에 따른 예시적 소프트웨어 업데이트 프로세스를 보여주는 도면.
이하의 설명에서, 구조들 사이에서 언급된 모든 연결들은 직접적인 동작 연결들 또는 매개 구조들을 통한 간접적인 동작 연결들일 수 있는 것으로 이해된다. 구성 요소들의 세트는 하나 이상의 구성 요소를 포함한다. 구성 요소의 임의의 열거는 적어도 하나의 구성 요소를 언급하는 것으로 이해된다. 복수의 구성 요소는 적어도 2개의 구성 요소를 포함한다. 달리 요구되지 않는다면, 기술된 어떠한 방법 단계들도 설명된 특정 순서로 반드시 실행될 필요는 없다. 제2 구성 요소로부터 유도되는 제1 구성 요소(예컨대, 데이터)는 제2 구성 요소와 동일한 제1 구성 요소는 물론, 제2 구성 요소 그리고 선택적으로는 다른 데이터를 처리하는 것에 의해 생성된 제1 구성 요소를 포함한다. 파라미터에 따라 결정 또는 판정하는 것은 파라미터에 따라 그리고 선택적으로는 다른 데이터에 따라 결정 또는 판정하는 것을 포함한다. 달리 구체화되지 않는다면, 일부 수량/데이터의 표시자는 수량/데이터 그 자체, 또는 수량/데이터 그 자체와 상이한 표시자일 수 있다. 컴퓨터 보안은 데이터 및/또는 하드웨어로의 의도되지 않았거나 인가 받지 않은 접근에 대해서, 데이터 및/또는 하드웨어의 의도되지 않았거나 인가 받지 않은 수정에 대해서, 그리고 데이터 및/또는 하드웨어의 파괴에 대해서 사용자와 장치를 보호하는 것을 포함한다. 컴퓨터 프로그램은 과업을 수행하는 프로세서 명령들의 시퀀스이다. 본 발명의 일부 실시예들에서 설명되는 컴퓨터 프로그램들은 독립형 소프트웨어 개체들 또는 다른 컴퓨터 프로그램들의 서브-개체들(예를 들어, 서브루틴들, 라이브러리들)일 수 있다. 달리 특정되지 않는다면, 프로세스는 어플리케이션이나 또는 운영 시스템의 일부와 같은 컴퓨터 프로그램의 인스턴스(instance)이고, 적어도 실행 쓰레드(execution thread)와 이것에 할당된 가상 메모리 공간을 가지는 특징을 가지며, 개별 가상 메모리 공간의 콘텐트는 실행가능 코드(executable code)를 포함한다. “플랫폼”의 용어는 특정의 물리적 또는 가상화된 하드웨어 구성(예를 들어서, 프로세서들의 특정 모델 또는 군을 포함)을 표시하는 데 사용된다. 가상 플랫폼은 가상화된 하드웨어, 예를 들어서 가상화된 프로세서를 포함한다. 본 명세서에서 용어 “바이트코드”는 바이트코드 명령들이 서로 다른 플랫폼들에게로 동일한 형태로 전달될 수 있다는 점에서 컴퓨터 프로그램의 복수 플랫폼 엔코딩(encoding)을 나타낸다. 바이트코드 명령들과 반대로, 원시 프로세서 명령들은, 개별 원시 프로세서 명령들을 실행하는 물리적 또는 가상 플랫폼에 특정적인 명령 세트 구조(instruction set architecture, ISA)의 명령들을 포함한다. 컴퓨터 판독 가능 매체는 자성, 광, 및 반도체 저장 매체와 같은 비-일시적 매체(non-transitory medium)(예컨대, 하드 드라이브, 광 디스크, 플래시 메모리, DRAM)는 물론, 전도성 케이블 및 파이버 옵틱 링크와 같은 통신 링크들을 포함한다. 일부 실시예들에 따르면, 본 발명은, 그 중에서도, 본원에 설명된 방법들을 수행하기 위해 프로그래밍된 하드웨어(예를 들어서, 하나 이상의 마이크로프로세서들)는 물론, 본원에서 설명된 방법들을 수행하기 위한 명령들을 엔코딩하는 컴퓨터-판독 가능 매체를 포함하는 컴퓨터 시스템을 제공한다.
후술하는 설명은 본 발명의 실시예들을 예시적으로 설명하는 것이며, 반드시 제한적인 것은 아니다.
도 1은 본 발명의 일부 실시예들에 따른 컴퓨터 보안 위협들로부터 보호되는 클라이언트 시스템(10)에서 실행되는 소프트웨어 객체들의 예시적 세트를 보여준다. 클라이언트 시스템(10)은 컴퓨터 시스템(예를 들어서, 엔드 유저 컴퓨터, 기업 서버 등)을 나타낼 수 있다. 다른 예시적 클라이언트 시스템들(10)은 모바일 컴퓨팅 장치들(예를 들어서, 랩탑, 태블릿 PC들), 전기통신 장치들(예를 들어서, 스마트폰), 디지털 오락 기구들(TV, 게임 컨솔 등), 웨어러블 컴퓨팅 장치들(예를 들어서, 스마트워치들) 또는 프로세서와 메모리를 가지고 있고 컴퓨터 보안 보호가 요구되는 다른 어떠한 전자 장치를 포함한다.
일부 실시예들에서, 운영 시스템(OS, 30)은, 클라이언트 시스템(10)의 하드웨어에 인터페이스를 제공하고, 소프트웨어 어플리케이션들(32a-c, 및 40)의 세트를 위한 호스트로서 역할하는 소프트웨어를 포함한다. OS(30)는 특히 Windows®, MacOS®, Linux®, iOS®, 또는 Android®와 같은 임의의 널리 이용가능한 운영 시스템을 포함할 수 있다. 어플리케이션들(32a-c)은, 예를 들어서, 특히 워드 프로세싱, 이미지 프로세싱, 데이터베이스, 브라우저, 및 전자 통신 어플리케이션들을 포함할 수 있는 사용자 소프트웨어를 일반적으로 나타낸다. 일부 실시예들에서, 보안 어플리케이션(40)은 어플리케이션들(32a-c)과 동시에 실행되고 (어플리케이션들(32a-c) 및 OS(30)를 포함하여) 클라이언트 시스템(10)에서 실행되는 임의의 소프트웨어가 컴퓨터 보안 위협을 나타내는지를 결정하도록 구성된다. 예를 들어서, 어플리케이션(40)은 클라이언트 시스템(10)에서 작동하는 멀웨어(예를 들어서, 바이러스들, 스파이웨어, 애드웨어 등)를 탐지할 수 있다. 어플리케이션(40)은 그러한 악성 소프트웨어를 삭제하거나, 또는 그렇지 않으면 불능화하도록, 그리고 클라이언트 시스템(10)의 사용자 또는 시스템 관리자에게 경고하도록 추가적으로 구성될 수 있다. 보안 어플리케이션(40)은 독립적 프로그램(standalone program)일 수 있고, 또는 특히 안티 멀웨어, 안티 스팸, 및 사기 방지 요소들을 포함하는 소프트웨어 스위트(suite)의 일부를 형성할 수 있다. 보안 어플리케이션(40)의 작동은 이하에서 상세히 설명된다.
도 2는 클라이언트 시스템(10)이 컴퓨터 시스템인 클라이언트 시스템(10)의 예시적 하드웨어 구성을 보여준다. 통상의 기술자라면 태블릿 PC, 모바일 전화기, 스마트워치 등과 같은 다른 장치들의 하드웨어 구성이 도시된 구성과 다를 수 있으나 본 발명은 그러한 장치들에도 적용될 수 있다는 점을 이해할 것이다. 클라이언트 시스템(10)은 하드웨어 프로세서(12), 메모리 유닛(14), 입력 장치(16)들 세트, 출력 장치(18)들 세트, 저장 장치(20)들 세트, 및 네트워크 어댑터(22)들 세트를 포함하는 물리적 장치들(이들은 모두 컨트롤러 허브(24)에 의하여 상호 연결됨)의 세트를 포함한다.
일부 실시예들에서, 프로세서(12)는 신호 및/또는 데이터의 세트로 산술 및/또는 논리 연산을 실행하도록 구성된 물리적 장치(예컨대, 마이크로 프로세서, 반도체 기판에 형성된 멀티-코어 집적 회로)를 포함한다. 일부 실시예들에서, 이러한 논리 연산들은 프로세서 명령들(예를 들어, 머신 코드 또는 다른 유형의 소프트웨어)의 시퀀스 형태로 메모리 유닛(14)으로부터 프로세서(12)에 전달된다. 메모리 유닛(14)은 명령들을 수행하는 도중에 프로세서(12)에 의해 액세스되거나 생성되는 데이터/신호들을 저장하는 휘발성 컴퓨터-판독 가능 매체(예컨대, RAM)를 포함할 수 있다. 입력 장치(16)는 사용자가 클라이언트 시스템(10)으로 데이터 및/또는 명령들을 도입할 수 있게 하는 개별 하드웨어 인터페이스 및/또는 어댑터를 포함하는, 특히 컴퓨터 키보드, 마우스, 및 마이크를 포함할 수 있다. 출력 장치(18)는 특히 모니터와 같은 디스플레이 장치 및 스피커는 물론, 클라이언트 시스템(10)이 사용자에게 데이터를 통신하게 할 수 있는 그래픽 카드와 같은 하드웨어 인터페이스/어댑터를 포함할 수 있다. 일부 실시예들에서, 입력 장치(16)와 출력 장치(18)는 터치-스크린 장치들의 경우와 같이, 하드웨어의 공통적인 부품을 공유할 수 있다. 저장 장치(20)는 프로세서 명령들 및/또는 데이터의 비휘발성 저장, 판독, 및 기록을 가능하게 하는 컴퓨터-판독 가능 매체를 포함한다. 예시적인 저장 장치(20)는 자기 디스크 및 광 디스크 및 플래시 메모리 장치들은 물론, CD 및/또는 DVD 디스크들 및 드라이브들과 같은 소거 가능 매체를 포함한다. 네트워크 어댑터(22)들 세트는 클라이언트 시스템(10)이 네트워크(예를 들어서, LAN(local area network), 무선 네트워크 등) 및/또는 다른 장치들/컴퓨터 시스템들에 연결될 수 있게 한다. 컨트롤러 허브(24)는 프로세서(12)와 장치(14, 16, 18, 20 및 22)들 사이의 통신을 가능하게 하는 복수의 시스템, 주변, 및/또는 칩셋 버스들, 및/또는 다른 모든 회로망을 일반적으로 나타낸다. 예를 들어, 컨트롤러 허브(24)는 프로세서(12)를 메모리(14)에 연결시키는 노스브리지, 및/또는 프로세서(12)를 장치들(16, 18, 20 및 22)에 연결시키는 사우스브리지를 포함할 수 있다.
일부 실시예들에서, 클라이언트 시스템(10)은 가상 플랫폼(예를 들어서, 가상 머신)을 작동하도록 구성된다. 그러한 구성들은 하드웨어 가상화 기술, 예를 들어서, 하이퍼바이저를 사용하여 설정될 수 있다. 상기 가상 플랫폼은 가상화된 하드웨어 요소들을 포함할 수 있고, 그러한 가상화된 요소 각각은 클라이언트 시스템(10)의 대응하는 하드웨어 요소의 기능(functionality)을 적어도 일부 모방(emulating)한다. 예를 들어서, 가상 플랫폼은 가상화된 프로세서, 가상화된 메모리 유닛, 및 가상 입력/출력 장치들을 포함할 수 있다. 어플리케이션들(32a-c) 및 보안 어플리케이션(40)뿐만 아니라 운영 시스템(30)은 개별 가상 플랫폼에서 실행될 수 있고 상기 가상화된 하드웨어와 상호작용한다. 소프트웨어는 이것이 실행을 위한 개별 플랫폼의 가상화된 프로세서를 채용할 때 가상 플랫폼에서 실행된다고 지칭한다.
도 3은 본 발명의 일부 실시예에 따른 보안 어플리케이션(40)의 예시적 요소들을 보여준다. 보안 어플리케이션(40)은 루틴 배정기(32), 행동 평가 엔진(38), 및 배정기(32)와 평가 엔진(38)과 연결된 바이트코드 변환 가상 머신(bytecode translation virtual machine, BTVM)(34)을 포함한다. 일부 실시예들에서, 어플리케이션(40)은 BTVM(34) 및/또는 평가 엔진(38)에 연결된 도우미 모듈(helper module)(36)을 추가적으로 포함한다. 루틴 배정기(32)는 이하에서 상술되는 바와 같이 이벤트 대기열(31)을 추가적으로 관리할 수 있다.
일부 실시예들에서, 루틴 배정기(32)는 클라이언트 시스템(10)에서 실행되는 여러 소프트웨어 객체들 내에 설치된 이벤트 인터셉터들(28a-c)의 세트로부터 이벤트 통지들(42)의 세트를 수신한다. 이벤트 통지들(42)은 따라서 배정기(32)에게 소프트웨어 실행 중에 여러 이벤트들의 발생에 관하여 알려줄 수 있다. 예시적인 통지된 이벤트들은, 특히 프로세스 또는 쓰레드(thread)의 생성, 코드 삽입(code injection), 시스템 호출, 새로운 디스크 파일을 생성하려는 시도, 기존 디스크 파일에 쓰기 시도, 시스템 레지스터 키 편집 시도, 및 특정 메모리 섹션에 쓰려는 시도를 포함할 수 있다. 상기 통지된 이벤트들의 일부는 멀웨어를 나타낼 수 있다. 다른 이벤트들은 그 자체로는 보안 위협을 나타내지 않을 수 있으나, 다른 이벤트들과 함께 발생할 때 잠재적 위협의 신호일 수 있다. 통지(들)(42)을 받는 것에 응답으로, 배정기(32)의 일부 실시예들은 통지(42)의 상세에 따라서 바이트코드 루틴을 선택할 수 있고, 상기 통지된 이벤트의 이벤트 파라미터들(47)의 세트와 함께 실행을 위한 바이트코드 변환 VM(34)으로 개별 바이트코드 루틴을 보낼 수 있다. 상기 개별 바이트코드 루틴의 실행은 행동 평가 엔진(38)에 평가 표시자(50)를 공급할 수 있다. 엔진(38)은 복수의 그러한 평가 표시자들(예를 들어서, 스코어들)을 유지(maintenance)할 수 있고, 적어도 하나의 그러한 표시자가 컴퓨터 보안 위협을 가리킬 때 경보를 제기할 수 있다. 요소들(32, 34, 및 38)의 작동은 이하에서 상술된다.
이벤트 인터셉터들(28a-c)의 작동을 설명하기 위하여, 도 4는 본 발명의 일부 실시예들에 따른 소프트웨어 객체들(60a-b)의 세트의 예시적 실행 플로우를 보여준다. 단순성을 위하여, 상기 선택된 객체들(60a-b)은 Windows® OS의 경우에 실행되는 프로세스들이다. 유사한 다이어그램들이 예를 들어서 Linux와 같은 다른 운영 시스템들에 대해서 제공될 수 있다. 실선 화살표들은 이벤트 인터셉터들이 없을 때의 실행 플로우를 나타낸다. 파선 화살표들은 본 발명의 일부 실시예들에 따라서 실행되는 이벤트 인터셉터들(28a-c)이 존재함에 따른 상기 플로우의 변화를 나타낸다.
예시적 프로세스(60a)는 복수의 DLL(dynamic-linked library)들(62a-c)을 로딩한다. 도 4의 예에서, DLL(62c)은 (악성일 수도 있는) 프로세스(60b)에 의해서 프로세스(60a)로 삽입된다. 프로세스(60a)(또는 프로세스의 로딩된 DLL 중의 하나)가 예를 들어서, 디스크 파일에 뭔가를 쓰기 위한 것, 또는 레지스트리 키를 편집하는 것과 같은 일부 시스템 기능을 요청하는 명령을 실행할 때, 상기 각각의 명령은 KERNEL32.DLL 또는 NTDLL.DLL과 같은 사용자 모드 API를 호출한다. 도 4의 예에서, 각 사용자 모드 API 호출은 사용자 레벨 이벤트 인터셉터(user level event interceptor, 28a)에 의해서 중간차단된다. 그와 같은 중간차단(interception)은 특히 DLL 삽입 또는 후킹(hooking)과 같은 방법에 의해서 행해질 수 있다. 후킹은 소프트웨어 요소들간에 전달되는 기능 호출, 메시지 또는 이벤트를 가로채는 방법을 위하여 본 기술분야에서 통용되는 용어이다. 후킹 방법의 일예는 명령(본 케이스에서는 이벤트 인터셉터, 28a) 우회 실행(instruction redirecting execution)을 제2 함수(second function)에 삽입하여 타겟 함수(target function)의 엔트리 포인트를 변경하는 것을 포함한다. 그러한 후킹 다음에, 상기 제2 함수가 타겟 함수 대신에, 또는 그 이전에 실행될 수 있다. 도 4의 예에서, 보안 어플리케이션(40)은 KERNEL32.DLL 및/또는 NTDLL.DLL 라이브러리들의 특정 함수들로 연결(hook)되서 각 함수들이 어플리케이션(40)의 요소로 실행을 우회하도록 명령할 수 있다. 따라서, 어플리케이션(40)은 프로세스(60a)가 후킹된 함수에 따라서 식별된 특정의 행동을 수행하는 것을 시도할 때마다 통지를 받을 수 있다.
통상적인 실행 플로우에서는, 객체(60a)에 의해서 호출되는 사용자 모드 API 함수는 운영 시스템의 커널로부터 서비스를 요청할 수 있다. 일부 실시예에서, 그러한 작업들은 x86 플랫폼에서 SYSCALL 및 SYSENTER와 같은 시스템 호출을 발급함으로써 수행된다. 도 4의 예에서, 그러한 시스템 호출들은 이벤트 인터셉터(28b)에 의해서 중간차단된다. 일부 실시예에서, 그러한 중간차단은 예를 들어서 프로세서(12)의 모델 특정 레지스터(model-specific register, MSR)에 저장된 값을 변경시킴으로써 시스템 호출 핸들러 루틴(system call handler routine)을 수정하는 것을 포함하고, 이것은 인터셉터(28b)로의, 또는 직접적으로 어플리케이션(40)의 요소로의 개별 핸들러 루틴의 실행을 효과적으로 우회시킨다. 이와 같은 기술들은 MSR 후킹으로서 본 기술분야에서 알려져 있고, 보안 어플리케이션(40)으로 하여금 소프트웨어 객체가 특정 시스템 호출을 수행하고자 시도할 때마다 통지를 받을 수 있게 할 수 있다.
상기 시스템 호출에 이어서, 프로세서의 제어가 일반적으로 OS(30)의 커널에게 넘어간다. 일부 실시예에서, 커널 레벨 이벤트 인터셉터(28c)는 OS 커널의 특정 작업을 중간차단하고, 이에 따라서 피평가 프로세스가 멀웨어를 나타낼 수도 있는 특정 작업을 수행시도하는지를 결정하도록 구성된다. 그러한 작동을 중간차단하기 위하여, 일부 실시예에서는 OS(30) 내에 구축되고 OS(30)에 의해서 노출되는 필터링 메커니즘 세트를 채용할 수 있다. 예를 들어서, Windows® OS에서는, FltRegisterFilter가 파일 생성/열기/쓰기/삭제와 같은 작업을 중간차단하기 위하여 사용될 수 있다. 다른 예에서, 이벤트 인터셉터(28c)가 ObRegisterCallback을 이용해서 객체-핸들 작업(object-handle operation)을 생성 또는 복사(duplicate)하는 것을 중간차단할 수 있고, 또는 PsSetCreateProcessNotifyRoutine을 사용해서 새로운 프로세스의 생성을 차단할 수 있다. 또 다른 예에서, 레지스트리 키/값을 생성하고 설정하는 것과 같은 윈도우스 레지스트리 작업들은 CmRegisterCallbackEx을 사용하여 중간차단될 수 있다. Linux®과 같은 다른 운영 시스템들을 위한 유사한 이벤트 필터링 메커니즘들이 본 기술분야에서 알려져 있다. 특정 이벤트/활동의 발생을 탐지하는 것에 응답으로, 이벤트 인터셉터(28)는 보안 어플리케이션(40)에 통지(들)(42)를 전송할 수 있다.
도 5는 본 발명의 일부 실시예들에 따라서 컴퓨터 보안 위협들의 탐지를 설정하기 위하여 보안 어플리케이션(40)에 의해서 수행되는 단계들의 예시적인 시퀀스를 보여준다. 도시된 단계들의 시퀀스는 예를 들어서 보안 어플리케이션(40)이 시작될 때 실행될 수 있다. 단계(102)에서, 어플리케이션(40)은, 예를 들어서 OS(30)의 여러 함수들을 후킹하거나, 배정 테이블(dispatch table)의 엔트리를 수정 등을 함으로써 이벤트 인터셉터들(28a-c)을 설치한다. 그러한 인터셉터들을 설치하기 위한 다양한 방법들이 본 기술분야에서 알려져 있다(예를 들어서, 패칭(patching), MSR 후킹, 코드 삽입 등). 단계(104)는 그러한 이벤트들이 발생하는 순서와 통지된 이벤트들에 대한 정보를 저장하기 위하여 루틴 배정기의 일부 실시예들에서 사용되는 이벤트 대기열(31)을 설정한다. 일부 실시예들에서, 이벤트 대기열(31)은 선입선출(first-in-first-out, FIFO) 대기열로서 조직된다. 예시적인 대기열(31)은 단순 연결된, 잠기지 않는, 복수-생성자, 복수-소비자 대기열(simple-linked, lockless, multi-producer, multi-consumer queue)일 수 있다.
단계들(106-108)의 시퀀스는 루틴 데이터베이스(26)에 접근해서(예를 들어서 도 3 참조) 데이터베이스(26)로부터 메모리 섹션으로 바이트코드 루틴들의 세트를 로딩한다. 데이터베이스(26)는 클라이언트 시스템(10)의 저장 장치들(20)에, 또는 클라이언트 시스템(10)에 통신가능하게 연결된 컴퓨터 판독가능한 매체에 위치될 수 있다.
일부 실시예들에서, 데이터베이스(26)에 저장된 각각의 바이트코드 루틴은, BTVM(34)에 의해서 실행될 때, BTVM(34)으로 하여금 컴퓨터 보안과 관련된 특정 과업을 수행하도록 하는 바이트코드 명령들의 세트를 포함한다. 하나의 예시적 바이트코드 루틴은 특정 소프트웨어 객체(또는 객체들의 그룹)가 악성인지를 결정하기 위하여 발견적 시험(heuristic test)의 세트를 적용한다. 바이트코드 루틴의 다른 예는 클라이언트 시스템(10) 상의 이벤트들(행동적 시그니쳐)의 특정 시퀀스의 발생을 체크한다. 상기 시퀀스의 모든 이벤트들이 동일한 객체에 의하여 유발될 필요는 없다. 그러나, 이벤트들의 그러한 시퀀스의 발생은 멀웨어를 나타낼 수 있다. 그러한 일예에서, 악성 활동들은 객체들의 그룹으로 분할되고, 상기 그룹의 각 멤버는 악성 활동의 작은 일부를 수행한다. 따라서 그러한 분포된 활동들에 대응하는 이벤트들을 상호 연결하도록 구성된 바이트코드 루틴은 악성 객체들의 전체 그룹을 탐지할 수 있다.
다른 예시적 바이트코드 루틴들은 부기(bookkeeping) 및/또는 통계적 과업들(예를 들면, 이벤트 카운팅, 이벤트 파라미터들을 연관 짓기)을 수행한다. 다른 바이트코드 루틴들은 클라이언트 시스템(10)의 사용자 및/또는 소프트웨어가 OS(30) 및/또는 하드웨어 장치들과 상호작동하는 방식을 변경할 수 있다(예를 들어서 루틴은 소프트웨어 객체가 디스크에 쓰는 것 또는 네트워크 어댑터(22)들에 접근하는 것을 방지할 수 있다). 각각의 바이트코드 루틴은 특유한 탐지 방법 및/또는 발견법(heuristic)을 구현할 수 있다. 일부 실시예들에서, 각각의 바이트코드 루틴은 악성 에이전트의 특정 카테고리, 군, 유형 또는 변형예의 존재를 탐지하도록 구성될 수 있다. 여러 특유한 루틴들이 악성 에이전트의 단일 카테고리, 군, 유형 또는 변형예를 탐지하는데 협동할 수 있다. 일부 실시예들에서, 단일 루틴이 멀웨어의 여러 카테고리들, 유형들, 군들 또는 변형예들을 탐지하는 데 참여할 수 있다.
도 6은 본 발명의 일부 실시예들에 따른 예시적 바이트코드 루틴(70)을 보여준다. 루틴(70)은 트리거 표시자(72)와 바이트코드 섹션(74)을 포함한다. 일부 실시예들에서, 트리거 표시자(72)는 개별 바이트코드 루틴을 실행하기 위한 하나 이상의 조건들을 엔코딩한다. 개별 조건(들)은 개별 바이트코드 루틴이 특정 유형의 이벤트의 발생을 탐지하는 것에 응답으로 실행되어야만 하는지를 결정하기 위하여 BTVM(34) 및/또는 루틴 배정기(32)에 의하여 평가될 수 있다. 예시적 조건은 특정 트리거 표현이 TRUE 또는 FALSE로 평가되는지를 결정하는 것과, 상기 표현이 TRUE일 때 상기 조건이 만족되는 지를 결정하는 것을 필요로 한다. 일부 실시예들에서, 개별 트리거 표현은 이벤트 유형의 표시자를 포함한다(예를 들어서, 프로세스 생성, 특정 시스템 호출 등). 상기 트리거 표현은 경로, 파일 이름, 프로세스 ID 등과 같은 이벤트 파라미터들을 추가적으로 포함할 수 있다. 일부 실시예들에서, 트리거 표현들은 BTVM(34) 및/또는 루틴 배정기(32)에 의하여 사용되는 변수들을 포함할 수 있다(이하 예 참조).
트리거 표시자(72)는 개별 루틴/바이트코드 섹션이 동기 또는 비동기 방식으로 실행되어야 하는지를 나타내는 플래그를 추가적으로 포함할 수 있다. “동기”(synchronous)라는 용어는 본 명세서에서 각 루틴의 실행을 트리거링하는 이벤트를 생성하는 프로세스(여기서는 단순히 트리거링 프로세스로 간주)의 실행이 각 루틴이 실행되는 중에 중단되는 바이트코드 루틴의 실행 방식을 나타내기 위하여 사용된다. 일부 실시예들은 각 바이트코드 루틴을 실행하기 위하여 상기 트리거링 프로세스의 쓰레드 실행 콘텍스트(thread execution context)를 사용하는데, 이것은 상기 루틴의 실행의 기간 중에, 상기 트리거링 프로세스의 실행, 또는 적어도 각 프로세스의 쓰레드의 실행을 중단하는 것을 내포한다. 상기 트리거링 프로세스의 실행의 중단 및/또는 재개는 각 이벤트의 인터셉터에 의하여 실행될 수 있다. 예를 들어서, 인터셉터(28a-c)는, 상기 트리거링 프로세스의 쓰레드를 하이재킹하거나, 그리고/또는 루틴 배정기(32)로부터의 신호에 응답으로만 상기 트리거링 프로세스의 실행을 재개할 수 있다. 동기 실행에 반대로, 비동기 실행은, 상기 트리거링 프로세스는 계속 실행되도록 허용되고 반면에 통지를 트리거링하는 이벤트가 뒤이은 프로세싱을 위한 이벤트 대기열로 삽입되는 바이트코드 루틴을 실행하는 방식을 나타낸다. 각 루틴 또는 바이트코드 섹션과 연계된 동기 플래그(synchrony flag)를 가지는 것은 루틴 배정기(32)로 하여금 이벤트 통지들을 취급하는 법을 결정하게 도와줄 수 있다(추가 상세는 이하에서 주어진다).
일부 실시예들에서, 바이트코드 섹션(74)은 BTVM(34)으로 하여금 루틴(70)과 연계된 컴퓨터 보안 과업을 수행하도록 명령하는 연속적인 바이트코드 명령들(74a-c)을 포함한다. 일부 실시예들에서, 각 바이트코드 명령은 BTVM(34)의 가상 프로세서의 원시 명령이다. 예시적 실시예에서, BTVM(34)은 Java® 가상 머신이고, 바이트코드 명령들(74a-c)은 Java® 언어의 명령들이다. 바이트코드 명령이 하드웨어 프로세서(12)에 의해서 실행되기 위하여 각 바이트코드 명령은 일단 원시 프로세서 명령들의 시퀀스로, 예를 들어서 프로세서(12)의 명령 세트 구조(instruction set architecture, ISA)의 명령들로 변환(해석 또는 컴파일링)되어야 한다. 그러한 변환은 최소한 일부가 BTVM(34)에 의하여 수행된다. 보안 어플리케이션(40)이 가상 플랫폼에서 실행될 때, BTVM(34)은 각 가상 플랫폼의 가상 프로세서에 원시적인 프로세서 명령들의 시퀀스로 각 바이트코드 명령을 변환할 수 있다.
예시적 바이트코드 명령 세트는 특히 (도 3의 도우미 모듈(36)의 함수들과 같은) 외부 함수들을 호출하기 위한 명령들, 루프 명령들(loop instructions) 및, 점프(jump)들을 수행, 값들을 비교, 값들을 설정하기 위한 바이트코드 명령들을 포함할 수 있다. 일부 실시예들에서, 각 바이트코드 명령은 연산을 나타내는 연산 부호 필드(opcode field)(76), 및 적어도 하나의 피연산자를 나타내는 피연산자 필드(78)를 포함한다.
일부 바이트코드 루틴들은 복수의 섹션들을 가질 수 있고, 각 섹션은 특유 트리거 표시자를 가질 수 있다. 그러한 구성들에서, 상기 루틴의 각 섹션은 특유 조건에 의하여 트리거링될 수 있다. 그러한 일예에서, 바이트코드 루틴(70)은 랜섬웨어, 즉, 사용자의 파일들을 암호화하고 사용자가 랜섬에게 개별 파일들의 암호 해제 전에 비용지불을 할 것을 요구하는 악성 소프트웨어를 탐지하는 것에 타게팅될 수 있다. 랜섬웨어의 예들은 특히 CryptoWall, CryptoLocker, 및 CTB-Locker 멀웨어를 포함한다. 그러한 멀웨어는 통상적으로 암호화 API를 호출하고, 사용자의 파일들을 열거하고, 랜섬 메시지를 표시한다. 그러한 멀웨어를 탐지하는 예시적인 바이트코드 루틴은 4개 섹션들을 포함할 수 있다:
섹션 1: 트리거: EventType = cryptographic 함수로 호출(call to a cryptographic function)
출력: 정적 변수 CryptoAPICall= TRUE 설정(set static variable CryptoAPICall = TRUE)
섹션 2: 트리거: [EventType = FindFirstFile API 및 CryptoAPICall = TRUE를 사용하여 파일들을 열거(enumerate files using FindFirstFile API and CryptoAPICall = TRUE)]
실행(Do): 열거된 파일들의 파일 확장자 체크(Check file extension of enumerated files)
출력: 열거된 파일들이 PDF, DOCX, JPG 등의 확장자를 가지고 있다면 정적 변수 RansomDocSearch = TRUE 설정 (set static variable RansomDocSearch = TRUE if enumerated files have extensions PDF, DOCX, JPG, …)
섹션 3: 트리거: [EventType = 디스크 파일에 쓰려고 시도 및 RansomDocSearch = TRUE (attempt to write to a disk file and RansomDocSearch = TRUE)]
실행(Do): 파일이 열거된 파일 중에 있는지 결정(determine whether file is among enumerated files)
출력: RansomActivity = TRUE을 설정하고 평가 스코어를 30 포인트 만큼 증가(set RansomActivity = TRUE and increase evaluation score by 30 points)
섹션 4: 트리거: [EventType = 스크린 배경을 변경하고 RansomActivity = TRUE (change of screen background and RansomActivity = TRUE)]
출력: 평가 스코어를 20 포인트 만큼 증가(increase evaluation score by 20 points)
위 예에서, 섹션 2는 섹션 1이 적어도 한번 실행될 때만 실행될 수 있고, 섹션 3은 섹션 2가 실행 등이 될 때만 실행될 수 있다.
일부 실시예들에서, 각 바이트코드 루틴은 초기화 섹션, 청소 섹션(cleanup section) 및 에러 섹션을 추가로 포함한다. 상기 초기화 섹션은 다양한 초기화(variable initialization)들을 포함할 수 있고, 각 바이트코드 루틴이 메모리로 로딩될 때 (예를 들어서, 도 5의 단계(108)에서), 한번 실행될 수 있다. 상기 청소 섹션은 각 루틴의 종료시에 실행될 수 있다. 상기 에러 섹션은 각 바이트코드 루틴의 임의의 다른 섹션의 실행 중에 에러가 발생하는 경우 실행되는 명령들을 포함할 수 있다.
일부 실시예들에서, 단계(110)(도 5)에서, 보안 어플리케이션(40)은 로딩된 바이트코드 루틴들을 분석(parse)하고, 이벤트 유형들과 각 이벤트 유형들에 의해서 트리거링된 바이트코드 루틴들과의 사이의 관련(association)을 나타내는 연계 표시자(association indicator)(예를 들어서, 테이블 또는 해쉬 인덱스)를 생성할 수 있다. 그러한 관련은 루틴 배정기(32)로 하여금 특정 이벤트들의 발생을 탐지하는 것에 응답으로 실행을 위한 루틴들을 선택할 수 있게 할 수 있다.
도 7은 본 발명의 일부 실시예들에 따른 루틴 배정기(32)에 의해서 수행되는 단계들의 예시적 시퀀스를 보여준다. 단계들(112-114)의 시퀀스는 인터셉터(28a-c)들로부터의 이벤트 통지들에 주목한다(listen for). 이벤트 통지(42)를 받는 것에 응답으로, 단계(116)는 각 통지된 이벤트의 이벤트 파라미터(47)의 세트를 결정한다. 그러한 파라미터들은 이벤트 특정적일 수 있다. 일부 예시적 이벤트 파라미터들은 특히 상기 통지된 활동을 수행하는 프로세스 또는 쓰레드의 식별자(예를 들어, 프로세스 ID), 파일 이름, 경로, 메모리 주소, 및 프로세서 명령의 피연산자를 포함한다. 이벤트 파라미터들은 인터셉터들(28a-c)에 의해서 결정될 수 있고 이벤트 통지(42)에 포함될 수 있고, 또는 통지(42)를 받는 것의 응답으로 루틴 배정기(32)에 의해서 결정될 수 있다. 상기 통지된 이벤트가 새로운 디스크 파일을 생성하려는 시도인 일예에서 이벤트 파라미터들은 생성되는 파일의 이름을 포함할 수 있다. 각 파일 이름은 이벤트 인터셉터에 의하여 결정되고 통지(42)의 일부로서 루틴 배정기(32)에 전송될 수 있다. 다른 예에서, 특정 활동을 수행하는 프로세스의 아이덴티티는 예를 들어서 현재 실행 중인 프로세스를 관리하기 위하여 OS(30)에 의하여 사용되는 데이터 구조를 분석(parsing)함으로써 루틴 배정기(32)에 의하여 직접적으로 결정될 수 있다. Windows® OS에서, 각 프로세스는 executive process block (EPROCESS)로 나타내지고, 이는 특히 각 프로세스의 쓰레드들 각각에 대한 핸들(handle)들과, OS(30)로 하여금 복수의 실행 프로세스들로부터 각 프로세스를 식별할 수 있게 하는 고유 프로세스 ID를 포함한다. 유사한 프로세스/쓰레드 표현(representation)은 Linux와 같은 다른 OS들을 위하여 이용가능하다.
특정 이벤트들의 발생은 연관된 바이트코드 루틴의 동기적 실행을 필요로 할 수 있다. 그러한 이벤트들의 예들은 특히 프로세스의 종료, 파일의 삭제, 및 레지스트리 키의 삭제와 같은 각 클라이언트 시스템에 있어서 실질적이고 그리고/또는 되돌릴 수 없는 결과들을 가지고 있는 이벤트들을 포함한다. 동기적 실행을 관리하기 위하여, 루틴 배정기(32)의 일부 실시예들은 <이벤트, 루틴> 투플들의 리스트를 유지할 수 있고, 각 투플은 각 루틴이 각 이벤트의 발생에 응답으로 동기적으로 실행되어야 하는 것을 나타낸다. 그러한 투플들은 정적일 수 있고, 예를 들어서, 일부 루틴들(또는 루틴의 섹션들)은 각 트리거가 발생될 때마다 동기적 방식으로 필요적으로 실행된다. 정적 투플들은 예를 들어서 각 루틴/섹션과 연계된 동기 플래그의 값에 따라서 식별될 수 있다(위 참조). 다른 <이벤트, 루틴> 투플들은 상황적일 수 있는데, 즉 특정 상황에서만 유효할 수 있다. 그러한 투플들은 예를 들어서, 다른 이벤트들의 발생에 응답하는 등으로 상기 리스트로부터 극적으로 추가되거나 그리고/또는 제거될 수 있다. 일부 실시예들에서, 동기적 프로세싱을 위하여 등록된 <이벤트, 루틴> 투플들의 상기 리스트는 각 클라이언트 시스템의 사용자(예를 들어서, 관리자)에 의하여 표시된 옵션들의 세트에 따라서 변화될 수 있다. 일반적으로, 바이트코드 루틴들의 동기적 프로세싱/실행은 더 높은 보안을 제안할 수 있으나, 일부 과업들을 지연시킴으로써 사용자 경험에 부정적 영향을 미칠 수 있다. 서로 다른 사용자들은 서로 다른 보안 설정들을 선호할 수 있다. 일부 실시예들에서, 각 설정(예를 들어서, 희망하는 보안 레벨)은 상기 <이벤트, 루틴> 리스트의 특유 조합(composition)에 대응할 수 있다.
단계(120)에서, 루틴 배정기(32)는, 예를 들어서, 각 이벤트를 포함하는 적어도 하나의 <이벤트, 루틴> 투플이 존재하는 지를 결정함으로써 현재 이벤트 통지에 의하여 표시된 트리거링 이벤트의 발생이 동기적 프로세싱을 보장하는지를 결정한다. 단계(120)에서의 결정은 각 이벤트의 유형에 따라서, 통지(42)의 동기 플래그에 따라서, 또는 바이트코드 루틴의 트리거 표시자에 따라서 추가적으로 진행될 수 있다.
각 이벤트의 발생이 동기적 프로세싱을 필요로 하지 않는 경우, 단계(122)에서, 루틴 배정기(32)는 이벤트 대기열(31)로 각 이벤트를 삽입한다. 추가적인 단계(124)는 각 이벤트 통지를 유발하는 프로세스/쓰레드의 실행을 재개하기 위하여 인터셉터(들)(28a-c)로 신호를 보낸다.
현재 통지된 이벤트의 발생이 동기적 프로세싱을 필요로 하는 경우, 단계(126)에서, 루틴 배정기(32)는 각 이벤트에 따라서 바이트코드 루틴을 선택한다. 단계(126)는 현재 이벤트의 유형에 연관된 바이트코드 루틴들의 서브세트를 식별하는 것과, 각각의 그러한 루틴의 트리거 조건들을 평가하는 것을 포함할 수 있다. 단계(130)는 각 바이트코드 루틴으로 예시되는 BTVM(34)의 인스턴스를 개시(launching)하는 것을 포함한다. 일부 실시예들은 BTVM(34)의 각 인스턴스를 실행하기 위하여 트리거링 프로세스의 실행 쓰레드를 사용한다. 단계(126)가 현재 이벤트 통지에 의해서 트리거링된 하나 이상의 바이트코드 루틴을 식별할 때, 단계들(128-130)의 시퀀스는 각각의 그러한 루틴을 위하여 재실행될 수 있다.
일부 실시예들에서, 단계(132)에서, 루틴 배정기(32)는 통지(42)를 유발하는 프로세스의 보안 평가의 결과를 나타내는 BTVM(34) 및/또는 행동 평가 엔진(38)으로부터의 응답을 기다린다. 상기 평가는, 예를 들어서, 각 프로세스가 악성인지를 나타낼 수 있다. 선택적 실시예에서, 단계(132)에서, 배정기(32)는 BTVM(34)이 현재 바이트코드 루틴을 실행하는 것을 마칠 때까지 기다릴 수 있다. 각 루틴이 실행을 끝낼 때 그리고/또는 보안 평가가 완료될 때, 배정기(32)는 이벤트 통지(42)를 유발하는 프로세스의 실행을 재개하기 위하여 이벤트 인터셉터(들)(28a-c)에게 신호를 보낼 수 있다.
도 8은 본 발명의 일부 실시예들에 따라서 이벤트 대기열(31)을 처리하기 위하여 루틴 배정기(32)에 의해서 수행되는 단계들의 예시적인 시퀀스를 보여준다. 단계들(142-144)의 시퀀스는 대기열(31)이 적어도 하나의 항목을 포함할 때까지 기다린다. 단계(146)는 상기 대기열로부터 이벤트를 제거한다. 대기열(31)이 FIFO 유형일 때, 이벤트들은 이들이 삽입되었던 순서로 제거된다. 단계(148)에서는, 루틴 배정기(32)는 각 이벤트에 의하여 트리거링되는 바이트코드 루틴들의 서브세트를 식별하기 위하여, 상기 이벤트의 유형 및/또는 파라미터들에 따라서 트리거 조건들을 평가한다. 단계들(150-152-154)의 시퀀스에서, 배정기(32)는 각각의 그러한 루틴을 선택하고 이것을 실행을 위하여 BTVM(34)으로 보낸다.
도 9는 바이트코드 루틴을 실행할 때 바이트코드 변환 가상 머신(34)에 의해서 수행되는 단계들의 예시적 시퀀스를 보여준다. 일부 실시예들에서, BTVM(34)은 가상 프로세서, 가상 메모리 및 일련의 가상 레지스터들을 포함하는 컴퓨터 시스템의 소프트웨어 모방을 포함한다. BTVM(34)의 가상 프로세서는 바이트코드 명령들을 그 원시 명령 세트로 본다. 그러나, 바이트코드 명령들이 보안 어플리케이션(40)이 실행되는 플랫폼의 원시 명령들이 아니므로, 바이트코드 명령들을 실행하는 것은 각 바이트코드 명령을 각 플랫폼의 프로세서에 원시적인 프로세서 명령들의 시퀀스로 변환하는 것을 포함한다. 일부 실시예들에서, BTVM(34)은 하나씩 바이트코드 명령들을 해석하고 실행하도록 구성된 코드 해석기(code interpreter)를 포함한다. 선택적 실시예에서, BTVM(34)은 바이트코드 루틴의 모든 명령들을 함께 원시 코드 루틴으로 컴파일링하도록 구성된 JIT 컴파일러를 포함할 수 있다. 그리고 컴파일링된 원시 코드 루틴은 전체적으로 실행된다. 일부 실시예들에서, BTVM(34)은 프로세서(12)의 원시 명령 세트로 코딩된 함수들(예를 들어서, 클래스들)의 라이브러리를 포함하고, 바이트코드 명령의 각 유형은 상기 라이브러리의 특유 함수에 대응한다. 그러한 케이스들에서, 바이트코드 명령을 해석하는 것은 상기 바이트코드 명령에 따라서 적절한 함수를 식별하는 것과, 각 함수를 실행하는 것을 포함할 수 있다. 예시적 바이트코드 변환 가상 머신들은 특히 Java® 및 Lua® 가상 머신들을 포함한다.
일부 실시예들에서, BTVM(34)의 가상 메모리 공간은 여러 영역들로 분할되고, 각 영역은 특유한 유형의 변수들을 저장한다. 일부 변수들은 LOCAL 유형일 수 있다. 그러한 변수들의 값들은 각 루틴 또는 바이트코드 섹션의 현재 인스턴스에 고유할 수 있다. 다른 변수들은 STATIC 유형일 수 있다(특정 루틴 유형에만 할당되고, 그 특정 유형의 루틴의 모든 코드 섹션들에 걸쳐서 공유되고, 이들 값을 동일한 루틴/바이트코드 섹션의 복수의 인스턴스들에 걸쳐서 유지함). 다른 변수들은 GLOBAL 유형일 수 있다(모든 바이트코드 루틴들 및 인스턴스들에 걸쳐서 공유됨). BTVM(34)의 일부 실시예들은 또한 PROCESS 유형의 변수들과 함께 작동될 수 있다. 이들 변수들은 루틴-프로세스 투플에 고유하게 첨부될 수 있고, 그러한 특정 유형의 루틴의 모든 코드 섹션들에 걸쳐서 공유되고, 이들 값을 동일한 루틴/바이트코드 섹션의 복수의 인스턴스들에 걸쳐서 유지하고, 단 프로세스별로 다르다. BTVM(34)의 가상 메모리가 PROCESS 유형의 변수들을 저장하도록 구성될 때, 그러한 변수들은 모든 프로세스가 이벤트 인터셉터들(28a-c)에 의하여 모니터링되도록 한 번 초기화되고 각 프로세스의 종료시에 삭제될 수 있다.
일부 실시예들에서, 보안 어플리케이션(40)은 BTVM(34)에 의하여 사용하기 위한 쓰레드 풀(thread pool)을 유지한다. 일 예에서, 상기 쓰레드 풀은 프로세서(12)의 논리적 CPU(logical CPU)들의 카운트와 동일한 쓰레드 숫자를 포함한다. 상기 쓰레드 풀의 모든 쓰레드들은 동일한 우선 레벨로 설정될 수 있다. 바이트코드 루틴들을 배정(dispatching)할 때, 배정기(32)는 다음 이용가능한 쓰레드를 기다릴 수 있다. BTVM(34)의 특유 인스턴스들은 따라서 임의의 메모리 콘텍스트들로 독립적이고 그리고 동시적으로 작동될 수 있다. 일부 실시예들에서, BTVM(34)의 인스턴스들은 순서에 무관하게(out-of-order), 즉 이들을 트리거링한 이벤트들이 이벤트 대기열(31)로 삽입되었던 것과 동일한 순서대로가 아니게, 실행될 수 있다.
루틴 배정기(32)로부터 루틴 표시자(46)(예를 들어서, 바이트코드 루틴의 메모리 주소)를 수신하는 것에 응답으로, BTVM(34)은 바이트코드 섹션(74)에 접근할 수 있다. 일반성을 잃지 않고서, 이하에서 설명하는 단계들은 BTVM(34)이 각 바이트코드 명령을 차례로 해석하고 실행하는 실시예를 보여준다. 통상의 기술자라면 본 기재가 JIT 컴파일을 사용하는 실시예의 작동을 설명하는데 적용될 수 있음을 이해할 것이다. 단계들(166-168)의 시퀀스에서, BTVM(34)은 바이트코드 명령을 해석하고 각 명령에 의하여 표시된 작업들의 세트를 실행할 수 있다.
일부 바이트코드 명령들은 복잡한 기능, 예를 들어서, OS(30)의 함수에 의해서 제공되는 기능을 호출한다. BTVM(34)의 복잡성을 최소로 유지하기 위하여 그리고 BTVM(34) 공격 면을 줄이기 위하여, 일부 실시예들은 도우미 모듈(36)(도 3)로 구현된 어플리케이션 프로그램 인터페이스(API)를 통하여 BTVM(34)에 그러한 기능을 제공한다. 모듈(36)은 BTVM(34)을 보조하도록 구성된 도우미 함수들의 세트를 포함할 수 있고, 특히 파일의 존재를 검증하는 것과 같은 과업들을 수행하고, 메모리 섹션의 콘텐트를 멀웨어를 나타내는 시그니쳐에 매칭시도하고, 파일들을 열거하고, 그리고 평가 스코어들을 설정한다. 현재 바이트코드 명령이 도우미 함수를 호출할 때, 단계(170)에서, 바이트코드 변환 VM(34)은 API 호출(48)을 도우미 모듈(36)에 보낸다. 도우미 모듈(36)은 추가적으로 OS(30)와 인터페이스할 수 있다.
일부 실시예들에서, 도우미 모듈(36)은 바이트코드 변환 VM(34)(예를 들어서, 도 3 참조)으로부터의 API 호출에 응답으로, 새로운 이벤트들을 이벤트 대기열(31)에 추가하는 기능을 가질 수 있다. 그러한 일 예에서, 바이트코드 루틴의 첫 번째 부분은 동기적으로 처리된다. BTVM(34)은 그리고 나서, 새로운 이벤트를 대기열(31)에 추가하기 위하여 도우미 모듈(36)에 호출함으로써 각 루틴의 두 번째 부분이 이후에(비동기적 방식으로) 실행되도록 할 수 있고, 상기 새로운 이벤트는 상기 루틴의 두 번째 부분의 실행을 트리거링하도록 선택된다. 다른 예에서, 상기 설명된 메커니즘은 바이트코드 루틴들의 캐스케이드를 실행하는 데 사용될 수 있고, 각 루틴은 도우미 모듈(36)로 하여금 새로운 이벤트를 이벤트 대기열(31)에 삽입하도록 명령함으로써 상기 캐스케이드의 다음 멤버의 실행을 결정한다.
일부 바이트코드 루틴들은 평가 표시자(50)를 행동 평가 엔진(38)에, 예를 들어서, API 호출을 통해서 엔진(38) 또는 도우미 모듈(36)에 출력한다. 평가 표시자(50)는 모니터링되는 특정 객체(예를 들어서, 프로세스)가 악성일 가능성을 나타내는 평가 스코어들을 포함할 수 있다. 다른 예시적 평가 표시자(50)는 평가 엔진(38)에 의하여 각 객체를 위하여 유지되는 평가 스코어에 추가되는 스코어 증분(score increment)을 포함한다. 또 다른 예시적 표시자(50)는 결정(예를 들어서, 깨끗함/악성임)을 포함한다. 일부 실시예들에서, 단계들(174-176)의 시퀀스는 평가 조건이 만족되는지 여부(예를 들어서, 스코어 증분이 계산되었는지 여부)를 결정하고, 맞다면, 평가 엔진(38)에 표시자(50)를 전송한다.
단계(178)는 종료 조건이 만족되는지 여부를 검증할 수 있고, 아니라면, BTVM(34)은 현재 루틴의 다음 바이트코드 명령으로 나아갈 수 있다(상술한 단계 166 참조). 일부 실시예들에서, 단계(178)는 현재 루틴/바이트코드 섹션의 마지막 바이트코드 명령이 실행되었는지를 결정하는 것을 포함할 수 있다. 일부 바이트코드 루틴들은 최대로 긴 시간 동안 실행되도록 구성될 수 있다. 그러한 경우들에서, 단계(178)는 현재 바이트코드 루틴/섹션이 실행 개시된 이후에 허용된 최대 시간의 기간이 경과되었는지를 결정할 수 있다. 다른 예시적 종료 조건은 각 루틴/바이트코드 섹션의 실행 중에 에러가 발생할 때마다 만족될 수 있다. 종료 조건이 만족될 때, 단계(180)는 BTVM(34)의 현재 인스턴스를 종료하고 개별 쓰레드를 쓰레드 풀로 릴리즈할 수 있다.
일부 실시예들에서, 행동 평가 엔진(38)은 클라이언트 시스템(10)에서 실행되는 쓰레드들 및 프로세스들과 같은 모니터링되는 소프트웨어 객체들의 중앙 지식 베이스(centralized knowledgebase)를 유지한다. 그러한 각 객체를 위하여, 엔진(38)은 (예를 들어서, 부모-자식 관계, 코드를 주입하는 프로세스들과 그러한 코드 주입들의 수신자들 사이의 관계 등을 표시하기 위하여) 계통 표시자(filiation indicator)를 저장할 수 있다. 평가 엔진(38)의 일부 실시예들은 모니터링되는 각 객체에 연관된 평가 스코어들의 세트를 추가적으로 저장한다. 그러한 각 스코어는 특유 기준에 따라서 결정될 수 있다(예를 들어서, 각 스코어는 특정 바이트코드 루틴에 의하여 업데이트된다). 일부 실시예들에서, 스코어링 엔진(38)은 그러한 스코어들에 따라서 각각의 모니터링되는 객체가 컴퓨터 보안 위협을 나타내는지를 결정하도록 구성된다. 그러한 위협이 식별될 때, 엔진(38)은 예를 들어서, 각 소프트웨어 객체의 실행을 중단하기 위하여, 아니면 각 소프트웨어 객체를 불능화하기 위하여, 각 악성 객체에 대하여 안티 멀웨어 조치를 취할 수 있다. 엔진(38)은 추가적으로 클라이언트 시스템(10)의 사용자 및/또는 시스템 관리자에게 경고할 수 있다.
상술한 예시적인 시스템들과 방법들은 멀웨어와 스파이웨어와 같은 컴퓨터 보안 위협들에 대하여 클라이언트 시스템을 보호할 수 있게 한다. 클라이언트 시스템에서 현재 실행되는 프로세스들과 쓰레드들과 같은 복수의 실행가능한 객체들의 각각을 위하여, 보안 어플리케이션은, 각 객체가 위협을 나타낼 수 있는 가능성을 표시할 수 있는 평가 스코어들의 세트를 유지한다(maintain). 일부 실시예들에서, 그러한 스코어들은 복수의 탐지 루틴들을 실행하는 것에 응답으로 생성되고, 각 루틴은 각 탐지 루틴에 특정적인 기준에 따라서 모니터링되는 객체를 평가하도록 구성된다. 탐지 루틴들은 여러 컴퓨터 보안 발견법(heuristics)을 수행할 수 있다. 개별 루틴들은 특유한 발견법에 대응할 수 있다. 예를 들어서, 한 루틴은 모니터링되는 객체가, 행동 시그니쳐(behavioral signature)로 본 기술분야에서 알려진 멀웨어를 나타내는 활동들의 시퀀스를 수행하는지를 결정할 수 있다. 탐지 루틴들의 실행은 특정 트리거 이벤트들의 발생을 탐지하는 것에 응답으로 선택적으로 트리거링될 수 있다.
본 발명의 일부 실시예들에서는, 탐지 루틴들은 바이트코드로, 예를 들어서, 각 클라이언트 시스템의 프로세서에 의하여 손쉽게 실행되지 않는 명령들의 커스텀 세트(custom set)를 사용하여 표현된다. 대신에, 탐지 루틴들은, 각 명령들을 실행하기 전에, 각 플랫폼의 프로세서에 원시적인 프로세서 명령들의 세트로 각 바이트코드 루틴을 변환하기 위하여 해석 또는 JIT 컴파일 기술들을 사용하는 바이트코드 변환 가상 머신 내에서 실행된다.
종래의 컴퓨터 보안 시스템들에서, 탐지 루틴들은 타겟 플랫폼의 원시적 코드로 통상적으로 사전 컴파일링되고 보안 어플리케이션의 요소들의 나머지와 함께 패키징된다. 그러한 구성들이 각 탐지 루틴들의 최적화되고 신속한 실행을 가능하게 하지만, 그러한 구성들은 개발, 최신 상태 유지, 및 클라이언트 컴퓨터 시스템들에 전개하기 어려울 수 있다. 예를 들어서, 탐지 루틴에서의 임의의 작은 변화, 또는 새로운 탐지 루틴/발견법의 도입은 보안 어플리케이션의 코드의 대량 청크(chunk)의 재컴파일과 상대적으로 큰 소프트웨어 업데이트(예를 들어서, 수 메가바이트)의 전개를 필요로 할 수 있다. 더욱이, 상기 업데이트에서의 소프트웨어 버그는 잠재적으로 전체 보안 어플리케이션을 다운(bring down)시킬 수 있고, 그래서 업데이트는 통상적으로 클라이언트들에게 전달되기 전에 많은 시험이 필요하게 된다.
반대로, 바이트코드 탐지 루틴들의 사용은 본 발명의 일부 실시예들로 하여금 보안 솔루션의 출시 시기(time-to-market)를 실질적으로 단축시키고 또한 소프트웨어 업데이트 프로세스를 단순화할 수 있게 한다. 바이트코드 탐지 루틴들은 온더 플라이식(on the fly)으로 해석되거나 컴파일링되므로, 바이트코드 탐지 루틴들은 보안 솔루션의 주요 요소들과는 별개로 개발되고 클라이언트에게 전달될 수 있다. 새로운 탐지 발견법은 기존 루틴들과 완전히 독자적으로 개발되고 수행될 수 있다. 도 10에 도시된 바와 같이, 소프트웨어 업데이트는 수백 바이트 정도로 작은 양을 차지하는 바이트코드 루틴들(70)의 세트만을 포함할 수 있다. 새로운 탐지 능력들을 활성화하기 위하여, 각 바이트코드 루틴(들)은 루틴 데이터베이스(26)로 도입되고 그리고 이어서 루틴 배정기(32)로 등록될 수 있다. 또한, 각 탐지 루틴이 바이트코드 변환 가상 머신의 인스턴스 내에서 보안 어플리케이션의 다른 요소들과는 별개로 실행되기 때문에, 바이트코드 루틴 내에 존재하는 소프트웨어 버그나 에러가 포함되고 다른 소프트웨어의 작동에 영향을 미칠 가능성이 작다.
본 발명의 일부 실시예들은, 탐지 루틴들의 해석 및/또는 JIT 컴파일을 달성하기 위하여 Java® 또는 Lua® 가상 머신들과 같은 널리 이용가능한 바이트코드 변환 가상 머신을 사용할 수 있다. 그러나, 구조적 복잡성을 최소화하고 바이트코드 변환 가상 머신 공격 표면을 줄이기 위하여, 일부 실시예들은 최소 기능이 부여된 커스터마이징된 변환 가상 머신을 채용한다. 보다 복잡한 기능이 탐지 루틴 내에서 호출될 때, 일부 실시예들은 별도의 도우미 API를 통해서 필요한 기능을 제공한다.
바이트코드 변환 가상 머신의 각 인스턴스가 별도의 독립적인 메모리 콘텍스트 내에서 실행될 수 있기 때문에, 본 발명의 일부 실시예들은 예를 들어서 컨테이너화(containerization)에 의해 제공되는 바와 동일한 보안 이점들을 제공할 수 있다. 본 발명의 다른 이점들은 이동성(portability)을 포함한다. 제안된 보안 솔루션의 일부 요소들이 클라이언트 디바이스(예를 들어서, 컴퓨터 시스템, 스마트폰 등)의 각 유형을 위하여 별개로 컴파일링되는 것이 필요할 수 있는 반면에, 바이트코드 루틴들은 업데이트를 포함한 동일한 탐지 루틴들이 모든 플랫폼들과 클라이언트 디바이스들에 전달될 수 있다는 점에서 플랫폼 독립적이다.
본 발명의 그러한 장점들은 처리 속도와 메모리 오버헤드의 비용으로 달성될 수 있다. 사전 컴파일링된 솔루션들이 특정 플랫폼의 최고 성능을 위하여 최적화될 수 있는 반면에, 탐지 루틴들의 해석 및/또는 JIT 컴파일은 본 발명의 일부 실시예들을 사전 컴파일링된 보안 어플리케이션들보다 느리게 할 수 있다.
본 발명의 범위를 벗어나지 않으면서 다양한 방법으로 상기 실시예들이 변경될 수 있음은 통상의 기술자에게 자명할 것이다. 따라서, 본 발명의 범위는 이하의 청구항들과 이들의 법적 균등물에 의하여 결정되어야 한다.
Claims (20)
- 루틴 배정기, 바이트코드 변환 가상 머신, 및 행동 평가 엔진을 형성하도록 구성된 적어도 하나의 하드웨어 프로세서를 포함하는 클라이언트 시스템으로서,
상기 루틴 배정기는, 트리거 이벤트(trigger event)의 발생을 탐지하는 것의 응답으로, 복수의 안티-멀웨어 바이트코드 루틴들로부터 실행을 위한 안티-멀웨어 바이트코드 루틴을 선택하도록 구성되고, 상기 안티 멀웨어 바이트코드 루틴은 상기 트리거 이벤트에 따라서 선택되고, 상기 트리거 이벤트의 발생은 상기 클라이언트 시스템 내에서 실행되는 모니터링되는 프로세스에 의하여 유발되고,
상기 바이트코드 변환 가상 머신은 상기 트리거 이벤트의 발생이 멀웨어를 나타내는지를 결정하기 위하여 상기 안티 멀웨어 바이트코드 루틴을 실행하도록 구성되고, 상기 안티 멀웨어 바이트코드 루틴을 실행하는 것은 상기 안티 멀웨어 바이트코드 루틴의 바이트코드 명령들의 세트를 원시 프로세서 명령들(native processor instructions)의 시퀀스로 변환하는 것과, 상기 원시 프로세서 명령들의 시퀀스를 실행하는 것을 포함하고,
상기 행동 평가 엔진은 상기 안티 멀웨어 바이트코드 루틴을 실행하는 상기 바이트코드 변환 가상 머신의 결과에 따라서 상기 클라이언트 시스템이 멀웨어를 포함하는지 여부를 결정하도록 구성되고,
상기 트리거 이벤트의 발생을 탐지하는 것의 응답으로, 상기 루틴 배정기는,
동기 조건(synchrony condition)이 상기 트리거 이벤트의 유형에 따라서 만족되는지를 결정하고;
상기 동기 조건이 만족되는 지를 결정하는 것의 응답으로, 상기 동기 조건이 만족될 때, 상기 바이트코드 변환 가상 머신이 상기 안티 멀웨어 바이트코드 루틴을 실행하는 것을 끝낼 때까지 상기 모니터링되는 프로세스에 속하는 코드의 실행을 중단하도록 상기 하드웨어 프로세서를 설정하며;
상기 동기 조건이 만족되는 지를 결정하는 것의 응답으로, 상기 동기 조건이 만족되지 않을 때, 상기 하드웨어 프로세서로 하여금 상기 모니터링되는 프로세스에 속하는 코드의 실행을 계속하도록 명령하도록 추가적으로 구성되는 것을 특징으로 하는 클라이언트 시스템. - 삭제
- 제1항에 있어서,
상기 루틴 배정기는, 상기 동기 조건이 만족되는 지를 결정하는 것의 응답으로, 상기 동기 조건이 만족되지 않을 때, 후속 프로세싱을 위하여 이벤트 대기열(event queue)로 상기 트리거 이벤트를 삽입하도록 추가적으로 구성되는 것을 특징으로 하는 클라이언트 시스템. - 제3항에 있어서,
상기 루틴 배정기는,
상기 이벤트 대기열로부터 제2 트리거 이벤트를 제거하고;
상기 이벤트 대기열로부터 상기 제2 트리거 이벤트를 제거하는 것의 응답으로, 실행을 위한 제2 안티 멀웨어 바이트코드 루틴을 선택하며(상기 제2 안티 멀웨어 바이트코드 루틴은 상기 제2 트리거 이벤트에 따라서 상기 복수의 바이트코드 루틴들로부터 선택됨);
상기 제2 안티 멀웨어 바이트코드 루틴을 선택하는 것의 응답으로, 상기 제2 안티 멀웨어 바이트코드 루틴의 표시자를 상기 바이트코드 변환 가상 머신으로 전송하도록 추가적으로 구성되는 것을 특징으로 하는 클라이언트 시스템. - 제1항에 있어서,
상기 안티 멀웨어 바이트코드 루틴을 실행하는 것은 상기 하드웨어 프로세서로 하여금 상기 모니터링되는 프로세스가 일련의 활동들을 수행했는지를 결정하도록 유발하는 것을 특징으로 하는 클라이언트 시스템. - 제1항에 있어서,
상기 안티 멀웨어 바이트코드 루틴을 실행하는 것은 상기 하드웨어 프로세서로 하여금 상기 트리거 이벤트가 멀웨어를 나타내는 이벤트들의 시퀀스의 일부를 형성하는지를 결정하도록 유발하는 것을 특징으로 하는 클라이언트 시스템. - 루틴 배정기, 바이트코드 변환 가상 머신, 및 행동 평가 엔진을 형성하도록 구성된 적어도 하나의 하드웨어 프로세서를 포함하는 클라이언트 시스템으로서,
상기 루틴 배정기는, 트리거 이벤트(trigger event)의 발생을 탐지하는 것의 응답으로, 복수의 안티-멀웨어 바이트코드 루틴들로부터 실행을 위한 안티-멀웨어 바이트코드 루틴을 선택하도록 구성되고, 상기 안티 멀웨어 바이트코드 루틴은 상기 트리거 이벤트에 따라서 선택되고, 상기 트리거 이벤트의 발생은 상기 클라이언트 시스템 내에서 실행되는 모니터링되는 프로세스에 의하여 유발되고,
상기 바이트코드 변환 가상 머신은 상기 트리거 이벤트의 발생이 멀웨어를 나타내는지를 결정하기 위하여 상기 안티 멀웨어 바이트코드 루틴을 실행하도록 구성되고, 상기 안티 멀웨어 바이트코드 루틴을 실행하는 것은 상기 안티 멀웨어 바이트코드 루틴의 바이트코드 명령들의 세트를 원시 프로세서 명령들(native processor instructions)의 시퀀스로 변환하는 것과, 상기 원시 프로세서 명령들의 시퀀스를 실행하는 것을 포함하고,
상기 행동 평가 엔진은 상기 안티 멀웨어 바이트코드 루틴을 실행하는 상기 바이트코드 변환 가상 머신의 결과에 따라서 상기 클라이언트 시스템이 멀웨어를 포함하는지 여부를 결정하도록 구성되고,
상기 안티 멀웨어 바이트코드 루틴을 실행하는 것은 상기 하드웨어 프로세서로 하여금 상기 트리거 이벤트가 멀웨어를 나타내는 이벤트들의 시퀀스의 일부를 형성하는지를 결정하도록 유발하게 구성되며,
상기 이벤트들의 시퀀스의 선택된 이벤트는 상기 클라이언트 시스템 내에서 실행되는 다른 모니터링되는 프로세스에 의하여 유발되고, 상기 다른 모니터링되는 프로세스는 상기 모니터링되는 프로세스와는 구별되는 것을 특징으로 하는 클라이언트 시스템. - 제1항에 있어서,
상기 안티 멀웨어 바이트코드 루틴은, 트리거 조건의 엔코딩(encoding)을 포함하고, 실행을 위한 상기 안티 멀웨어 바이트코드 루틴을 선택하는 것은 상기 트리거 조건이 만족되는지를 결정하는 것을 포함하는 것을 특징으로 하는 클라이언트 시스템. - 제1항에 있어서,
상기 안티 멀웨어 바이트코드 루틴은, 트리거 조건의 엔코딩을 포함하고, 상기 바이트코드 변환 가상 머신은 상기 트리거 조건이 만족되는 지를 결정하는 것의 결과에 따라서 변환을 위하여 바이트코드 명령들의 상기 세트를 선택하도록 추가적으로 구성되는 것을 특징으로 하는 클라이언트 시스템. - 트리거 이벤트(trigger event)의 발생을 탐지하는 것의 응답으로, 상기 트리거 이벤트에 따라서 복수의 바이트코드 루틴들로부터 안티-멀웨어 바이트코드 루틴을 선택하는 것(상기 안티 멀웨어 바이트코드 루틴은 상기 트리거 이벤트의 발생이 멀웨어를 나타내는지를 결정하도록 구성되고, 상기 트리거 이벤트는 클라이언트 시스템 내에서 실행되는 모니터링되는 프로세스에 의하여 유발됨);
상기 안티 멀웨어 바이트코드 루틴을 선택하는 것의 응답으로, 상기 안티 멀웨어 바이트코드 루틴의 바이트코드 명령들의 세트를 원시 프로세서 명령들의 시퀀스로 변환하는 것;
원시 프로세서 명령들의 상기 시퀀스를 실행하는 것; 및
원시 프로세서 명령들의 상기 시퀀스를 실행하는 결과에 따라서 상기 클라이언트 시스템이 멀웨어를 포함하는지 여부를 결정하는 것;의 단계들의 각각을 수행하기 위하여 상기 클라이언트 시스템의 적어도 하나의 하드웨어 프로세서를 채용하는 것을 포함하는 컴퓨터에서 실행가능한 방법으로서,
상기 트리거 이벤트의 발생을 탐지하는 것의 응답으로,
동기 조건(synchrony condition)이 상기 트리거 이벤트의 유형에 따라서 만족되는지를 결정하기 위하여 상기 적어도 하나의 하드웨어 프로세서를 채용하는 것;
상기 동기 조건이 만족되는 지를 결정하는 것의 응답으로, 상기 동기 조건이 만족될 때, 원시 프로세서 명령들의 상기 시퀀스가 실행하는 것을 끝낼 때까지 상기 적어도 하나의 하드웨어 프로세서로 하여금 상기 모니터링되는 프로세스에 속하는 코드의 실행을 중단하도록 설정하는 것; 및
상기 동기 조건이 만족되는 지를 결정하는 것의 응답으로, 상기 동기 조건이 만족되지 않을 때, 상기 모니터링되는 프로세스에 속하는 코드의 실행을 계속하도록 상기 적어도 하나의 하드웨어 프로세서를 채용하는 것을 추가적으로 포함하는 것을 특징으로 하는 컴퓨터에서 실행가능한 방법. - 삭제
- 제10항에 있어서,
상기 동기 조건이 만족되는 지를 결정하는 것의 응답으로, 상기 동기 조건이 만족되지 않을 때, 후속 프로세싱을 위하여 이벤트 대기열(event queue)로 상기 트리거 이벤트를 삽입하기 위하여 상기 적어도 하나의 하드웨어 프로세서를 채용하는 것을 추가적으로 포함하는 것을 특징으로 하는 컴퓨터에서 실행가능한 방법. - 제12항에 있어서,
상기 이벤트 대기열로부터 제2 트리거 이벤트를 제거하기 위하여 상기 적어도 하나의 하드웨어 프로세서를 채용하는 것;
상기 이벤트 대기열로부터 상기 제2 트리거 이벤트를 제거하는 것의 응답으로, 실행을 위한 제2 안티 멀웨어 바이트코드 루틴을 선택하기 위하여 상기 적어도 하나의 하드웨어 프로세서를 채용하는 것(상기 제2 안티 멀웨어 바이트코드 루틴은 상기 제2 트리거 이벤트에 따라서 상기 복수의 바이트코드 루틴들로부터 선택됨);
상기 제2 안티 멀웨어 바이트코드 루틴을 선택하는 것의 응답으로, 상기 제2 안티 멀웨어 바이트코드 루틴의 바이트코드 명령들의 세트를 원시 프로세서 명령들의 제2 시퀀스로 변환하기 위하여 상기 적어도 하나의 하드웨어 프로세서를 채용하는 것; 및
원시 프로세서 명령들의 상기 제2 시퀀스를 실행하기 위하여 상기 적어도 하나의 하드웨어 프로세서를 채용하는 것을 추가적으로 포함하는 것을 특징으로 하는 컴퓨터에서 실행가능한 방법. - 제10항에 있어서,
원시 프로세서 명령들의 상기 시퀀스를 실행하는 것은, 상기 적어도 하나의 하드웨어 프로세서로 하여금 상기 모니터링되는 프로세스가 일련의 활동들을 수행했는지를 결정하도록 하는 것을 특징으로 하는 컴퓨터에서 실행가능한 방법. - 제10항에 있어서,
원시 프로세서 명령들의 상기 시퀀스를 실행하는 것은, 상기 적어도 하나의 하드웨어 프로세서로 하여금 상기 트리거 이벤트가 멀웨어를 나타내는 이벤트들의 시퀀스의 일부를 형성하는지를 결정하도록 하는 것을 특징으로 하는 컴퓨터에서 실행가능한 방법. - 트리거 이벤트(trigger event)의 발생을 탐지하는 것의 응답으로, 상기 트리거 이벤트에 따라서 복수의 바이트코드 루틴들로부터 안티-멀웨어 바이트코드 루틴을 선택하는 것(상기 안티 멀웨어 바이트코드 루틴은 상기 트리거 이벤트의 발생이 멀웨어를 나타내는지를 결정하도록 구성되고, 상기 트리거 이벤트는 클라이언트 시스템 내에서 실행되는 모니터링되는 프로세스에 의하여 유발됨);
상기 안티 멀웨어 바이트코드 루틴을 선택하는 것의 응답으로, 상기 안티 멀웨어 바이트코드 루틴의 바이트코드 명령들의 세트를 원시 프로세서 명령들의 시퀀스로 변환하는 것;
원시 프로세서 명령들의 상기 시퀀스를 실행하는 것; 및
원시 프로세서 명령들의 상기 시퀀스를 실행하는 결과에 따라서 상기 클라이언트 시스템이 멀웨어를 포함하는지 여부를 결정하는 것;의 단계들의 각각을 수행하기 위하여 상기 클라이언트 시스템의 적어도 하나의 하드웨어 프로세서를 채용하는 것을 포함하는 컴퓨터에서 실행가능한 방법으로서,
원시 프로세서 명령들의 상기 시퀀스를 실행하는 것은, 상기 적어도 하나의 하드웨어 프로세서로 하여금 상기 트리거 이벤트가 멀웨어를 나타내는 이벤트들의 시퀀스의 일부를 형성하는지를 결정하도록 구성되고,
상기 이벤트들의 시퀀스의 선택된 이벤트는 상기 클라이언트 시스템 내에서 실행되는 다른 모니터링되는 프로세스에 의하여 유발되고, 상기 다른 모니터링되는 프로세스는 상기 모니터링되는 프로세스와는 구별되는 것을 특징으로 하는 컴퓨터에서 실행가능한 방법. - 제10항에 있어서,
상기 안티 멀웨어 바이트코드 루틴은, 트리거 조건의 엔코딩(encoding)을 포함하고, 실행을 위한 상기 안티 멀웨어 바이트코드 루틴을 선택하는 것은 상기 트리거 조건이 만족되는지를 결정하는 것을 포함하는 것을 특징으로 하는 컴퓨터에서 실행가능한 방법. - 제10항에 있어서,
상기 안티 멀웨어 바이트코드 루틴은, 트리거 조건의 엔코딩을 포함하고,
상기 방법은,
상기 트리거 조건이 만족되는 지를 결정하는 것; 및
응답으로, 상기 트리거 조건이 만족되는 지를 결정하는 것의 결과에 따라서 변환을 위하여 바이트코드 명령들의 상기 세트를 선택하는 것을 추가적으로 포함하는 것을 특징으로 하는 컴퓨터에서 실행가능한 방법. - 클라이언트 시스템의 적어도 하나의 하드웨어 프로세서에 의하여 실행될 때, 상기 클라이언트 시스템으로 하여금 루틴 배정기, 바이트코드 변환 가상 머신, 및 행동 평가 엔진을 형성하도록 하는 컴퓨터 프로그램을 저장하는 비-일시적 컴퓨터 판독가능 매체(non-transitory computer-readable medium)로서,
상기 루틴 배정기는, 트리거 이벤트(trigger event)의 발생을 탐지하는 것의 응답으로, 상기 트리거 이벤트에 따라서 복수의 안티-멀웨어 바이트코드 루틴들로부터 실행을 위한 안티-멀웨어 바이트코드 루틴을 선택하도록 구성되고(상기 안티 멀웨어 바이트코드 루틴은 상기 트리거 이벤트의 발생이 멀웨어를 나타내는지를 결정하도록 구성되고, 상기 트리거 이벤트의 발생은 상기 클라이언트 시스템 내에서 실행되는 모니터링되는 프로세스에 의하여 유발됨),
상기 바이트코드 변환 가상 머신은 상기 안티 멀웨어 바이트코드 루틴을 실행하도록 구성되고, 상기 안티 멀웨어 바이트코드 루틴을 실행하는 것은, 상기 안티 멀웨어 바이트코드 루틴의 바이트코드 명령들의 세트를 원시 프로세서 명령들(native processor instructions)의 시퀀스로 변환하는 것과, 상기 원시 프로세서 명령들의 시퀀스를 실행하는 것을 포함하고,
상기 행동 평가 엔진은 상기 안티 멀웨어 바이트코드 루틴을 실행하는 상기 바이트코드 변환 가상 머신의 결과에 따라서 상기 클라이언트 시스템이 멀웨어를 포함하는지 여부를 결정하도록 구성되고,
상기 안티 멀웨어 바이트코드 루틴을 실행하는 것은 상기 하드웨어 프로세서로 하여금 상기 트리거 이벤트가 멀웨어를 나타내는 이벤트들의 시퀀스의 일부를 형성하는지를 결정하도록 유발하게 구성되며,
상기 이벤트들의 시퀀스의 선택된 이벤트는 상기 클라이언트 시스템 내에서 실행되는 다른 모니터링되는 프로세스에 의하여 유발되고, 상기 다른 모니터링되는 프로세스는 상기 모니터링되는 프로세스와는 구별되는 것을 특징으로 하는 비-일시적 컴퓨터 판독가능 매체. - 안티 멀웨어 바이트코드 루틴을 저장하는 비-일시적 컴퓨터 판독가능 매체로서,
상기 안티 멀웨어 바이트코드 루틴은 적어도 하나의 하드웨어 프로세서를 포함하는 클라이언트 시스템에서 형성되는 바이트코드 변환 가상 머신에 의해서 실행가능하고, 상기 안티 멀웨어 바이트코드 루틴을 실행하는 것은 상기 적어도 하나의 하드웨어 프로세서로 하여금 상기 클라이언트 시스템 내의 트리거 이벤트의 발생이 멀웨어를 나타내는지를 결정하도록 유발하고, 상기 안티 멀웨어 바이트코드 루틴을 실행하는 것은,
상기 안티 멀웨어 바이트코드 루틴의 바이트코드 명령들의 세트를 원시 프로세서 명령들(native processor instructions)의 시퀀스로 변환하는 것, 및
원시 프로세서 명령들의 상기 시퀀스를 실행하는 것을 포함하고,
상기 클라이언트 시스템은 추가적으로 루틴 배정기와 행동 평가 엔진을 포함하고,
상기 루틴 배정기는, 상기 트리거 이벤트(trigger event)의 발생을 탐지하는 것의 응답으로, 상기 트리거 이벤트에 따라서 복수의 바이트코드 루틴들로부터 안티-멀웨어 바이트코드 루틴을 선택하도록 구성되고,
상기 행동 평가 엔진은 상기 안티 멀웨어 바이트코드 루틴을 실행하는 상기 바이트코드 변환 가상 머신의 결과에 따라서 상기 클라이언트 시스템이 멀웨어를 포함하는지 여부를 결정하도록 구성되고,
상기 안티 멀웨어 바이트코드 루틴을 실행하는 것은 상기 하드웨어 프로세서로 하여금 상기 트리거 이벤트가 멀웨어를 나타내는 이벤트들의 시퀀스의 일부를 형성하는지를 결정하도록 유발하게 구성되고,
상기 트리거 이벤트의 발생은 상기 클라이언트 시스템 내에서 실행되는 모니터링되는 프로세스에 의하여 유발되도록 구성되며,
상기 이벤트들의 시퀀스의 선택된 이벤트는 상기 클라이언트 시스템 내에서 실행되는 다른 모니터링되는 프로세스에 의하여 유발되고, 상기 다른 모니터링되는 프로세스는 상기 모니터링되는 프로세스와는 구별되는 것을 특징으로 하는 비-일시적 컴퓨터 판독가능 매체.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/738,548 | 2015-06-12 | ||
US14/738,548 US9460284B1 (en) | 2015-06-12 | 2015-06-12 | Behavioral malware detection using an interpreter virtual machine |
PCT/EP2016/062882 WO2016198392A1 (en) | 2015-06-12 | 2016-06-07 | Behavioral malware detection using an interpreter virtual machine |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20180018531A KR20180018531A (ko) | 2018-02-21 |
KR102206115B1 true KR102206115B1 (ko) | 2021-01-22 |
Family
ID=56137286
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020177035307A KR102206115B1 (ko) | 2015-06-12 | 2016-06-07 | 인터프리터 가상 머신을 이용한 행동 멀웨어 탐지 |
Country Status (12)
Country | Link |
---|---|
US (1) | US9460284B1 (ko) |
EP (1) | EP3308315B1 (ko) |
JP (1) | JP6706273B2 (ko) |
KR (1) | KR102206115B1 (ko) |
CN (1) | CN107690645B (ko) |
AU (1) | AU2016274532B2 (ko) |
CA (1) | CA2986321C (ko) |
ES (1) | ES2857102T3 (ko) |
HK (1) | HK1246905A1 (ko) |
IL (1) | IL255802B (ko) |
RU (1) | RU2679175C1 (ko) |
WO (1) | WO2016198392A1 (ko) |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2953788C (en) | 2014-06-24 | 2021-05-18 | Virsec Systems, Inc. | Automated code lockdown to reduce attack surface for software |
US10614210B2 (en) * | 2015-07-31 | 2020-04-07 | Digital Guardian, Inc. | Systems and methods of protecting data from injected malware |
US10929537B2 (en) * | 2015-07-31 | 2021-02-23 | Digital Guardian, Inc. | Systems and methods of protecting data from malware processes |
US11170104B1 (en) * | 2015-08-21 | 2021-11-09 | Amazon Technologies, Inc. | Identifying attacks on file systems |
US10033747B1 (en) * | 2015-09-29 | 2018-07-24 | Fireeye, Inc. | System and method for detecting interpreter-based exploit attacks |
US20210026950A1 (en) * | 2016-03-07 | 2021-01-28 | Crowdstrike, Inc. | Hypervisor-based redirection of system calls and interrupt-based task offloading |
US9734337B1 (en) * | 2017-01-24 | 2017-08-15 | Malwarebytes Inc. | Behavior-based ransomware detection |
US11223649B2 (en) | 2018-05-06 | 2022-01-11 | Nec Corporation | User-added-value-based ransomware detection and prevention |
WO2020016834A1 (en) * | 2018-07-18 | 2020-01-23 | Bitdefender Ipr Management Ltd | Systems and methods for reporting computer security incidents |
US10846088B2 (en) * | 2018-08-21 | 2020-11-24 | Arm Limited | Control of instruction execution in a data processor |
US10452868B1 (en) | 2019-02-04 | 2019-10-22 | S2 Systems Corporation | Web browser remoting using network vector rendering |
US11880422B2 (en) | 2019-02-04 | 2024-01-23 | Cloudflare, Inc. | Theft prevention for sensitive information |
US11080391B2 (en) | 2019-03-27 | 2021-08-03 | Webroot Inc. | Behavioral threat detection definition and compilation |
US11481486B2 (en) * | 2019-03-27 | 2022-10-25 | Webroot Inc. | Behavioral threat detection engine |
US11314863B2 (en) | 2019-03-27 | 2022-04-26 | Webroot, Inc. | Behavioral threat detection definition and compilation |
US11080394B2 (en) * | 2019-03-27 | 2021-08-03 | Webroot Inc. | Behavioral threat detection virtual machine |
RU2711041C1 (ru) * | 2019-05-14 | 2020-01-14 | федеральное государственное казенное военное образовательное учреждение высшего образования "Краснодарское высшее военное училище имени генерала армии С.М. Штеменко" Министерства обороны Российской Федерации | Способ анализа программного обеспечения на отсутствие недекларированных функциональных возможностей |
CN111061538A (zh) * | 2019-11-14 | 2020-04-24 | 珠海金山网络游戏科技有限公司 | 一种多Lua虚拟机内存优化方法及其系统 |
WO2024034841A1 (ko) * | 2022-08-12 | 2024-02-15 | 삼성전자주식회사 | 지정된 이벤트에 기반하여 파일을 컴파일하기 위한 전자 장치 및 그 방법 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004075060A1 (ja) * | 2003-02-21 | 2004-09-02 | Tabei, Hikaru | コンピュータウィルス検出装置 |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6026485A (en) * | 1996-01-24 | 2000-02-15 | Sun Microsystems, Inc. | Instruction folding for a stack-based machine |
US6295643B1 (en) * | 1998-12-10 | 2001-09-25 | International Business Machines Corporation | Method and apparatus for improving java virtual machine performance using persistent execution information |
KR100483700B1 (ko) * | 2003-12-03 | 2005-04-19 | 주식회사 잉카인터넷 | 온라인 게임 클라이언트 보안을 위한 실시간 프로세스 불법 접근 및 조작 차단 방법 |
GB0525902D0 (en) * | 2005-12-20 | 2006-02-01 | Nokia Corp | Signal message decompressor |
US7949848B2 (en) * | 2007-03-08 | 2011-05-24 | Arm Limited | Data processing apparatus, method and computer program product for reducing memory usage of an object oriented program |
CN101373502B (zh) * | 2008-05-12 | 2012-06-20 | 公安部第三研究所 | 基于Win32平台下病毒行为的自动化分析系统 |
US8566943B2 (en) * | 2009-10-01 | 2013-10-22 | Kaspersky Lab, Zao | Asynchronous processing of events for malware detection |
US8572740B2 (en) * | 2009-10-01 | 2013-10-29 | Kaspersky Lab, Zao | Method and system for detection of previously unknown malware |
IN2012DN02458A (ko) * | 2009-11-13 | 2015-08-21 | Irdeto Canada Corp | |
RU2430411C1 (ru) * | 2010-03-02 | 2011-09-27 | Закрытое акционерное общество "Лаборатория Касперского" | Система и способ обнаружения вредоносного программного обеспечения |
US9032526B2 (en) * | 2011-05-12 | 2015-05-12 | Microsoft Technology Licensing, Llc | Emulating mixed-code programs using a virtual machine instance |
US9298910B2 (en) * | 2011-06-08 | 2016-03-29 | Mcafee, Inc. | System and method for virtual partition monitoring |
US20130152200A1 (en) * | 2011-12-09 | 2013-06-13 | Christoph Alme | Predictive Heap Overflow Protection |
US8918881B2 (en) * | 2012-02-24 | 2014-12-23 | Appthority, Inc. | Off-device anti-malware protection for mobile devices |
US8881291B2 (en) * | 2012-09-25 | 2014-11-04 | Oracle International Corporation | System and method for inhibiting the processing of new code modules by an outdated runtime environment |
RU2536664C2 (ru) * | 2012-12-25 | 2014-12-27 | Закрытое акционерное общество "Лаборатория Касперского" | Система и способ автоматической модификации антивирусной базы данных |
WO2014143005A1 (en) | 2013-03-15 | 2014-09-18 | Mcafee, Inc. | Hypervisor-based buffer overflow detection and prevention |
RU2531861C1 (ru) * | 2013-04-26 | 2014-10-27 | Закрытое акционерное общество "Лаборатория Касперского" | Система и способ оценки вредоносности кода, исполняемого в адресном пространстве доверенного процесса |
RU2653985C2 (ru) | 2013-06-28 | 2018-05-15 | Закрытое акционерное общество "Лаборатория Касперского" | Способ и система обнаружения вредоносного программного обеспечения путем контроля исполнения программного обеспечения запущенного по сценарию |
-
2015
- 2015-06-12 US US14/738,548 patent/US9460284B1/en active Active
-
2016
- 2016-06-07 CN CN201680033260.6A patent/CN107690645B/zh active Active
- 2016-06-07 EP EP16730294.2A patent/EP3308315B1/en active Active
- 2016-06-07 CA CA2986321A patent/CA2986321C/en active Active
- 2016-06-07 WO PCT/EP2016/062882 patent/WO2016198392A1/en active Application Filing
- 2016-06-07 KR KR1020177035307A patent/KR102206115B1/ko active IP Right Grant
- 2016-06-07 RU RU2017146233A patent/RU2679175C1/ru active
- 2016-06-07 ES ES16730294T patent/ES2857102T3/es active Active
- 2016-06-07 JP JP2017564564A patent/JP6706273B2/ja active Active
- 2016-06-07 AU AU2016274532A patent/AU2016274532B2/en active Active
-
2017
- 2017-11-21 IL IL255802A patent/IL255802B/en active IP Right Grant
-
2018
- 2018-05-18 HK HK18106493.9A patent/HK1246905A1/zh unknown
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2004075060A1 (ja) * | 2003-02-21 | 2004-09-02 | Tabei, Hikaru | コンピュータウィルス検出装置 |
Also Published As
Publication number | Publication date |
---|---|
US9460284B1 (en) | 2016-10-04 |
ES2857102T3 (es) | 2021-09-28 |
RU2679175C1 (ru) | 2019-02-06 |
IL255802B (en) | 2021-01-31 |
HK1246905A1 (zh) | 2018-09-14 |
JP6706273B2 (ja) | 2020-06-03 |
CA2986321A1 (en) | 2016-12-15 |
KR20180018531A (ko) | 2018-02-21 |
IL255802A (en) | 2018-01-31 |
AU2016274532B2 (en) | 2020-08-20 |
WO2016198392A1 (en) | 2016-12-15 |
EP3308315A1 (en) | 2018-04-18 |
CN107690645B (zh) | 2021-07-16 |
CN107690645A (zh) | 2018-02-13 |
JP2018517985A (ja) | 2018-07-05 |
CA2986321C (en) | 2021-09-28 |
EP3308315B1 (en) | 2020-12-09 |
AU2016274532A1 (en) | 2017-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102206115B1 (ko) | 인터프리터 가상 머신을 이용한 행동 멀웨어 탐지 | |
US10949247B2 (en) | Systems and methods for auditing a virtual machine | |
KR102297133B1 (ko) | 비동기적 인트로스펙션 예외를 이용한 컴퓨터 보안 시스템들 및 방법들 | |
US9202046B2 (en) | Systems and methods for executing arbitrary applications in secure environments | |
JP6378758B2 (ja) | 仮想マシンにおけるマルウェア検出のためのプロセス評価 | |
KR101948711B1 (ko) | 멀웨어 탐지를 위한 복합 스코어링 | |
RU2665911C2 (ru) | Система и способ анализа файла на вредоносность в виртуальной машине | |
US10140448B2 (en) | Systems and methods of asynchronous analysis of event notifications for computer security applications | |
JP2018524756A (ja) | 複数のソフトウェアエンティティにわたって悪意あるビヘイビアを追跡するためのシステムおよび方法 | |
US10860716B2 (en) | Detecting malware concealed by delay loops of software programs | |
RU2724790C1 (ru) | Система и способ формирования журнала при исполнении файла с уязвимостями в виртуальной машине | |
JP2019061636A (ja) | ファイルのウイルス対策スキャン実行のため仮想マシン上にログを生成するシステム及び方法 | |
US11914711B2 (en) | Systems and methods for automatically generating malware countermeasures | |
US11556645B2 (en) | Monitoring control-flow integrity | |
WO2022044021A1 (en) | Exploit prevention based on generation of random chaotic execution context |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
A302 | Request for accelerated examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right |