KR20180081726A - 가상 머신들 또는 에뮬레이터들의 프로그램 회피 검출 - Google Patents

가상 머신들 또는 에뮬레이터들의 프로그램 회피 검출 Download PDF

Info

Publication number
KR20180081726A
KR20180081726A KR1020187012862A KR20187012862A KR20180081726A KR 20180081726 A KR20180081726 A KR 20180081726A KR 1020187012862 A KR1020187012862 A KR 1020187012862A KR 20187012862 A KR20187012862 A KR 20187012862A KR 20180081726 A KR20180081726 A KR 20180081726A
Authority
KR
South Korea
Prior art keywords
program
virtual environment
running
computing device
attempting
Prior art date
Application number
KR1020187012862A
Other languages
English (en)
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 KR20180081726A publication Critical patent/KR20180081726A/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/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/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
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2105Dual mode as a secondary aspect

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Debugging And Monitoring (AREA)

Abstract

다양한 실시형태들은 컴퓨팅 디바이스 상의 가상 환경 내에서 실행하는 프로그램을 분석하기 위해 컴퓨팅 디바이스 상에서 구현되는 방법들을 포함한다. 방법들은 프로그램이 가상 환경 내에서 실행 중인지 여부를 프로그램이 검출하려고 시도하고 있는지 여부를 결정하는 단계, 및 프로그램이 가상 환경 내에서 실행 중인지 여부를 프로그램이 검출하려고 시도하고 있다고 결정하는 것에 응답하여 컴퓨팅 디바이스의 보호 모드 내에서 프로그램을 분석하는 단계를 포함한다.

Description

가상 머신들 또는 에뮬레이터들의 프로그램 회피 검출
데스크톱 컴퓨터, 랩톱, 태블릿 및 스마트 폰과 같은 모바일 컴퓨팅 디바이스를 포함한 다양한 컴퓨팅 디바이스는 메모리에 저장된 소프트웨어 명령들에 따라 프로그램 및 프로세스를 실행한다. 멀웨어 (malware) 와 같은 일부 프로그램은 컴퓨팅 디바이스 상에서 작동할 때 악성 코드를 실행한다. 그러한 프로그램이 악성인지 여부를 결정하기 위해 프로그램을 검출하고 분석하는 다양한 방식들이 있다.
프로그램들을 분석하는 하나의 방법은 가상 머신 또는 에뮬레이터와 같은 컴퓨팅 디바이스 상의 가상 환경 내에서 프로그램을 실행하는 것이다. 가상 환경은 실행하는 프로그램에 대해 인공적인 자립식 환경을 제공한다. 안티 멀웨어 어플리케이션 또는 다른 프로그램 분석기는 가상 환경 내에서 프로그램의 거동을 관찰하고 분석하여 그것이 악성인지 여부를 결정할 수도 있다.
하지만, 일부 악성 프로그램은 프로그램이 가상 환경 내에서 실행 중인지 여부를 검출하려고 시도함으로써 가상 환경 테스팅을 회피하려 할 수도 있다. 예를 들어, 프로그램은 소정의 기능을 호출하거나 가상 동작 환경을 나타내는 소정의 데이터 구조에 액세스하려고 시도할 수도 있다. 프로그램이 가상 환경 내에서 실행 중인 것을 검출하는 경우, 프로그램은 양성 (benign) 방식으로 거동하여 검출을 피할 수도 있다. 프로그램이 해제 (release) 되고 컴퓨팅 디바이스의 정상 오퍼레이팅 시스템 내에서 실행될 때, 프로그램은 악성으로 작용할 수도 있다.
다양한 실시형태들은 컴퓨팅 디바이스 상의 가상 환경 내에서 실행하는 프로그램을 분석하기 위해 컴퓨팅 디바이스 상에서 구현되는 방법들을 포함한다. 다양한 실시형태들의 방법들은, 프로그램이 가상 환경 내에서 실행 중인지 여부를 프로그램이 검출하려고 시도하고 있는지 여부를 결정하는 단계를 포함한다. 프로그램이 가상 환경 내에서 실행 중인지 여부를 프로그램이 검출하려고 시도하고 있다고 결정하는 것에 응답하여, 컴퓨팅 디바이스의 보호 모드 내에서 프로그램이 분석될 수도 있다.
일부 실시형태들에서, 보호 모드는 시스템 관리 모드일 수도 있다. 일부 실시형태들은 프로그램이 가상 환경 내에서 실행 중인지 여부를 프로그램이 검출하려고 시도하고 있지 않다고 결정하는 것에 응답하여 가상 환경 내에서 프로그램의 분석을 계속하는 단계를 더 포함할 수도 있다.
일부 실시형태들에서, 프로그램이 가상 환경 내에서 실행 중인지 여부를 프로그램이 검출하려고 시도하고 있는지 여부를 결정하는 단계는, 가상 환경의 어플리케이션 프로그래밍 인터페이스 (API) 특성들에 대한 프로그램의 액세스를 모니터링하는 단계를 포함할 수도 있다. 일부 실시형태들에서, API 특성들은 모델 특정 레지스터, 명령의 길이, 저장 인터럽트 디스크립터 테이블 레지스터, 디버거 기능 (debugger function) 및 호스트-게스트 통신에 대한 명령으로 이루어진 그룹으로부터 선택된 적어도 하나의 멤버를 포함한다. 일부 실시형태들에서, 가상 환경은 가상 머신 또는 에뮬레이터일 수도 있다.
추가 실시형태들은, 본 명세서에 기재된 방법들의 동작들을 수행하기 위한 프로세서 실행가능 명령들로 구성된 프로세서 및 메모리를 포함하는 컴퓨팅 디바이스를 포함한다. 추가 실시형태들은, 프로세서로 하여금 본 명세서에 기재된 방법들의 동작들을 수행하게 하도록 구성된 프로세서 실행가능 소프트웨어 명령들이 저장된 비일시적 프로세서 판독가능 저장 매체를 포함한다. 추가 실시형태들은, 본 명세서에 기재된 방법들의 동작들의 기능들을 수행하기 위한 수단을 포함하는 컴퓨팅 디바이스를 포함한다.
본원에 포함되고 이 명세서의 부분을 구성하는 첨부 도면들은 예시적인 실시형태들을 도시하며, 위에 주어진 개략적인 설명 및 하기에 주어진 상세한 설명과 함께, 청구항들의 피처들의 설명을 제공한다.
도 1 은 다양한 실시형태들과 함께 사용하기 위한 컴퓨팅 디바이스의 블록 다이어그램이다.
도 2 는 다양한 실시형태들에 따른 컴퓨팅 디바이스 상의 가상 환경 내에서 프로그램 분석을 도시하는 블록 다이어그램이다.
도 3 은 다양한 실시형태들에 따른 컴퓨팅 디바이스 상의 보호 모드 내에서 프로그램 분석을 도시하는 블록 다이어그램이다.
도 4 는 다양한 실시형태들에 따른 컴퓨팅 디바이스 상의 프로그램을 분석하기 위한 방법을 도시하는 프로세스 플로우 다이어그램이다.
도 5 는 일부 실시형태 방법들을 구현하기에 적합한 모바일 컴퓨팅 디바이스의 컴포넌트 블록 다이어그램이다.
도 6 은 일부 실시형태 방법들을 구현하기에 적합한 컴퓨팅 디바이스의 컴포넌트 블록 다이어그램이다.
다양한 실시형태들이 첨부 도면들을 참조하여 상세하게 기재될 것이다. 가능한 어디에나, 동일한 참조 번호들은 동일하거나 같은 부분들을 지칭하기 위해 도면들 전체에 걸쳐 사용될 것이다. 특정 예들 및 구현들에 대해 이루어지는 참조들은 예시적인 목적을 위해서이고 기입된 기재 또는 청구항들의 범위를 제한하려는 것으로 의도되지 않는다.
본 명세서에서 사용된 바와 같이, 용어 "컴퓨팅 디바이스" 는 셀룰러 전화기, 스마트 폰, 개인용 또는 모바일 멀티미디어 플레이어, 개인용 데이터 보조기, 데스크탑 컴퓨터, 랩탑 컴퓨터, 태블릿 컴퓨터, 서버, 스마트 워치, 스마트 북, 팜탑 (palm-top) 컴퓨터, 무선 전자 메일 수신기, 멀티미디어 인터넷 가능형 셀룰러 전화기, 무선 게이밍 제어기, 및 프로그램 가능 프로세서 및 메모리를 포함하는 유사한 개인용 또는 기업용 전자 디바이스 중 하나 또는 모두를 지칭한다.
컴퓨팅 디바이스들은 사용자들에 대해 다수의 기능들 및 서비스들을 제공하는 프로그램들 및 어플리케이션들을 실행한다. 사용자들에게 제공된 서비스들 및 컴퓨팅 디바이스들에 대한 위협이 멀웨어이며, 이는 많은 경우들에서 악성인 인증되지 않은 동작들을 수행하도록 기입된 다양한 프로그램들을 지칭한다. 예를 들어, 컴퓨팅 디바이스 상에서 실행되는 멀웨어는 컴퓨팅 디바이스의 제어를 취하거나, 컴퓨팅 디바이스의 중요 파일들을 삭제 또는 오류가 생기게 하거나, 컴퓨팅 디바이스 상에서 사용자 액션들을 스파이 (spy) 또는 추적하거나, 사용자들에게 원치않는 광고들을 제공하거나, 또는 돈을 지불하거나 금융 정보 또는 개인 정보를 인도하도록 사용자들을 갈취 또는 속이도록 설계될 수도 있다. 따라서, 멜웨어를 검출하고 이에 대해 보호하는 방법들이 많은 관심을 받고 있다.
악성 프로그램들을 검출하기 위한 많은 방법들이 있다. 하나의 방법은 가상 컴퓨터 또는 에뮬레이터와 같은 컴퓨팅 디바이스의 가상 환경 내에서 잠재적으로 악성인 프로그램을 실행하는 것이다. 가상 환경은 컴퓨팅 디바이스의 정상 오퍼레이팅 시스템과 유사한 자립식 환경을 제공할 수도 있다. 프로그램 동작이 악성 거동인지 여부를 결정하기 위해 가상 환경 내에서 프로그램 동작들이 분석될 수도 있다. 하지만, 일부 멀웨어 프로그램들은 이들이 가상 환경 내에서 실행 중인지 여부에 의존하여 그 거동을 변화시키는 위험요소가 있다. 이러한 프로그램들은 가상 환경에서는 정상적으로 거동하지만 정상 오퍼레이팅 시스템 환경에서는 악성으로 거동할 수도 있다.
개요에서, 다양한 실시형태들은 컴퓨팅 디바이스 상의 가상 환경 내에서 실행하는 프로그램을 분석하기 위한 시스템들 및 방법들을 제공한다. 다양한 실시형태들은, 프로그램이 가상 환경 내에서 실행 중인지 여부를 프로그램이 검출하려고 시도하고 있음을 나타내는 동작들을 프로그램이 실행하는지 여부를 결정하는 것을 포함할 수도 있다. 프로그램이 가상 환경 내에서 실행 중인지 여부를 프로그램이 검출하려고 시도하고 있다고 결정하는 것에 응답하여, 프로그램은 컴퓨팅 디바이스의 보호 모드 내에서 분석될 수도 있다. 프로그램이 가상 환경 내에서 실행 중인지 여부를 프로그램이 검출하려고 시도하고 있지 않다고 결정하는 것에 응답하여, 프로그램의 분석이 가상 환경 내에서 계속될 수도 있다. 가상 환경은 가상 머신 또는 에뮬레이터일 수도 있다. 보호 모드는 컴퓨팅 디바이스 상의 시스템 관리 모드일 수도 있고 또는 다른 네트워크 컴포넌트들 및/또는 민감한 정보로부터 격리되는 다른 컴퓨팅 디바이스 상의 시스템 관리 모드일 수도 있다.
프로그램이 가상 환경 내에서 실행 중인지 여부를 검출하려고 시도하고 있을 때를 인식하는 방법은 가상 환경의 어플리케이션 프로그래밍 인터페이스 (API) 특성들에 대한 프로그램의 액세스를 모니터링하는 것을 포함할 수도 있다. 모니터링되는 API 특성들은 모델 특정 레지스터, 명령의 길이, 저장 인터럽트 디스크립터 테이블 레지스터, 디버거 기능 및 호스트-게스트 통신을 위한 명령들 (예를 들어, 가상 환경 내에서 불법 조작코드 (opcode) 의 사용, 및 입력/출력 포트로부터 데이터에 액세스하기 위한 IN/OUT 명령들) 중 적어도 하나를 포함할 수도 있다.
도 1 은 다양한 실시형태들을 구현하기에 적합한 컴퓨팅 디바이스 (100) 의 기능 블록 다이어그램이다. 컴퓨팅 디바이스 (100) 는 특히, 데스크탑 컴퓨터, 랩탑, 태블릿, 임의의 유형의 모바일 전자 디바이스, 서버 또는 임의의 유형의 소비자 또는 기업 전자 디바이스일 수도 있다. 컴퓨팅 디바이스 (100) 는 소프트웨어 명령들을 실행하기 위한 중앙 프로세싱 유닛 (CPU)(102) 및 코드 및 데이터를 저장하기 위한 메모리 (104) 를 포함한다. 메모리 (104) 는 프로세서 실행가능 명령들을 저장하는 비일시적 컴퓨터 판독가능 저장 매체일 수도 있다. 메모리 (104) 는 오퍼레이팅 시스템 (106) 을 저장할 수도 있다.
가상 환경 (108) 은 오퍼레이팅 시스템 (106) 내에서 생성되고 실행될 수도 있다. 가상 환경 (108) 은 가상 머신 또는 에뮬레이터일 수도 있으며 - 즉, 가상 환경 (108) 은 소프트웨어 및/또는 하드웨어 환경 및 다른 컴퓨팅 시스템의 기능성을 시뮬레이팅하는데 사용될 수도 있다. 가상 환경 (108) 은 가상 환경 (108) 이 시뮬레이팅하려고 하는 컴퓨팅 시스템의 컴퓨터 아키텍처, 하드웨어 및/또는 소프트웨어에 기초할 수도 있다. 가상 환경 (108) 은 다수의 상이한 목적을 위해 사용될 수도 있다. 가상 환경 (108) 의 하나의 사용은 잠재적으로 악성인 프로그램들의 거동을 분석하기 위한 테스팅 그라운드 또는 인공적인 환경일 수도 있다.
컴퓨팅 디바이스 (100) 는 또한 보호 모드 (110) 를 포함할 수도 있다. 보호 모드 (110) 는 활성화될 때 오퍼레이팅 시스템 (106) 의 동작을 중지시키거나 또는 그렇지 않으면 멀웨어에 의한 악성 액션들로부터 컴퓨팅 디바이스 (100) 를 격리시키는 컴퓨팅 디바이스 (100) 의 특수한 모드일 수도 있다. 보호 모드 (110) 는 컴퓨팅 디바이스 (100) 상의 하드웨어 및 소프트웨어 기능에 대한 특별한 권한들을 갖는 CPU (102) 의 특정 동작 모드일 수도 있다. 보호 모드 (110) 는 컴퓨팅 디바이스 (100) 상의 펌웨어 또는 하드웨어 보조 디버거 내에 구현될 수도 있다. 보호 모드 (110) 의 예는 소정의 CPU 칩셋들에 제공될 수도 있는 시스템 관리 모드 (SMM) 이다. SMM 은 CPU (102) 상의 시스템 관리 인터럽트 (SMI) 핀을 표명 (assert) 함으로써 트리거될 수도 있다. SMM 에 대한 핸들러는 SMM 에 의해서만 액세스가능한 특수 메모리에 저장될 수도 있다.
보호 모드 (110) 는 전력 관리 또는 에러 핸들링과 같은 특별한 태스크들을 수행하기 위해 사용될 수도 있다. 보호 모드 (110) 는 가상 환경 (108) 에서 처럼 시뮬레이팅된 하드웨어보다는 컴퓨팅 디바이스 (100) 상의 실제 하드웨어 내에서 작동한다는 점에서 "현실" 컴퓨팅 환경이다. 보호 모드 (110) 는 또한 하이 레벨 액세스 (예를 들어, 루트 액세스) 로부터의 프로그램들을 로크 아웃 (lock out) 하는 것과 같은, 악성 코드에 대한 소정의 안전장치를 제공할 수도 있다. 따라서, 다양한 실시형태들에서, 특히 프로그램들이 가상 환경 (108) 을 회피하도록 설계되는 경우, 보호 모드 (110) 는 잠재적으로 악성인 프로그램에 대한 대안의 테스트 환경으로서 작용할 수도 있다.
또한, 컴퓨팅 디바이스 (100) 는 도 1 에 도시되지 않은 다양한 다른 컴포넌트들을 포함할 수도 있다. 예를 들어, 컴퓨팅 디바이스 (100) 는 다수의 입력, 출력 및 프로세싱 컴포넌트들, 예컨대 스피커, 마이크로폰, 모뎀, 트랜시버, 가입자 식별 모듈 (SIM) 카드, 키패드, 마우스, 디스플레이 스크린 또는 터치 스크린, 다양한 접속 포트들, 오디오 또는 그래픽 프로세서, 추가 하드 드라이브, 및 당업계에 공지된 많은 다른 컴포넌트들을 포함할 수도 있다.
도 2 는 컴퓨팅 디바이스 상의 가상 환경을 사용하는 프로그램 분석을 도시하는 블록 다이어그램 (200) 을 포함한다. 컴퓨팅 디바이스는 오퍼레이팅 시스템 (202) 을 포함할 수도 있다. 가상 환경 (204) 은 오퍼레이팅 시스템 (202) 내에서 작동할 수도 있다. 가상 환경 (204) 은 오퍼레이팅 시스템 (202) 내에 자립식 컴퓨팅 환경을 제공할 수도 있다. 예를 들어, 가상 환경 (204) 은 다른 컴퓨팅 시스템의 소프트웨어 및/또는 하드웨어 기능성을 시뮬레이팅하는 가상 머신 또는 에뮬레이터일 수도 있다. 가상 환경 (204) 은 프로그램 (206) 을 분석하여 그것이 악성인지 여부를 결정하는데 사용될 수도 있다. 가상 환경 (204) 내에서 실행되는 프로그램 (206) 은 오퍼레이팅 시스템 (202) 또는 가상 환경 외부의 컴퓨팅 디바이스의 다른 리소스에 액세스할 수 없다. 따라서, 프로그램 (206) 이 악성인 경우, 프로그램 (206) 은 가상 환경 (204) 이 실행되는 컴퓨팅 디바이스 또는 오퍼레이팅 시스템 (202) 을 손상시키거나 코옵팅 (coopting) 할 수 없다.
가상 환경 (204) 은 가상 환경 (204) 과 상호 작용하고 이를 제어하기 위해 오퍼레이팅 시스템 (202) 에 의해 사용되는 어플리케이션 프로그래밍 인터페이스 (API)(208) 를 포함할 수도 있다. API (208) 는 다수의 기능, 루틴, 프로토콜 및 데이터 구조를 포함할 수도 있다.
일부 악성 프로그램들 (예를 들어, 프로그램 (206)) 은 가상 머신 내에서 또는 오퍼레이팅 시스템 내에서 프로그램들이 실행 중인지 여부를 발견하는 것을 시도하도록 설계될 수 있습니다. 그러한 프로그램들은 가상 환경 (204) 내에서 실행될 때 양성으로 거동할 수도 있고, 따라서 악성 검출을 회피할 수도 있다. 일단 프로그램이 오퍼레이팅 시스템 (202) 으로 해제되면, 프로그램은 악성으로 작용하기 시작할 수도 있다.
악성 프로그램 (206) 은 예컨대, API (208) 에서의 소정의 기능들을 호출하거나 소정의 데이터 구조들에 액세스하려고 시도함으로써, 가상 환경 (204) 내에서 그 프로그램이 실행 중인지 여부를 발견하려고 시도하고 있을 수도 있다. API (208) 의 호출된 기능 또는 데이터 구조로부터의 소정의 리턴 값들은 프로그램 (206) 이 가상 환경 (204) 내에서 실행 중인지를 확인할 수도 있다. 따라서, 다양한 실시형태들에서, 가상 환경 (204) 또는 오퍼레이팅 시스템 (202) 은 가상 환경 (204) 내에서 프로그램 (206) 의 동작들 및 거동들을 모니터링하여 프로그램 (206) 이 API (208) 에서의 소정의 기능들을 호출하고 있는지 또는 소정의 데이터 구조들에 액세스하고 있는지를 결정하도록 구성될 수도 있다. 악성 프로그램 (206) 이 가상 환경을 검출해보려는 노력으로 액세스를 시도하거나 실행할 수도 있고, 가상 환경 (204) 이 검출하도록 구성될 수도 있는 몇몇 유형의 기능들 및/또는 데이터 구조들이 있다.
악성 프로그램 (206) 이 수행할 수도 있고 가상 환경 (204) 이 검출하도록 구성될 수 있는 액션의 비제한적인 예는 빠른 에뮬레이터 (QEMU) 시뮬레이터 상에서 유효한 모델 특정 레지스터에 액세스하는 것을 포함하지만 실제 컴퓨팅 디바이스에서 호출될 때 예외를 리턴한다.
악성 프로그램 (206) 이 수행할 수도 있고 가상 환경 (204) 이 검출하도록 구성될 수도 있는 액션의 또 다른 비제한적인 예는 명령의 길이에 액세스하는 것을 포함한다. 이는 명령의 길이가 실제 컴퓨팅 디바이스에서는 유한하지만 가상 환경에서는 임의로 길어질 수 있기 때문이다.
악성 프로그램 (206) 이 수행할 수도 있고 가상 환경 (204) 이 검출하도록 구성될 수도 있는 액션의 또 다른 비제한적인 예는 저장 인터럽트 디스크립터 테이블 레지스터에 액세스하는 것을 포함한다. 이는 가상 환경에서의 베이스 어드레스가 실제 컴퓨팅 디바이스와 상이할 수도 있고, 소정의 기능을 초과할 수도 있기 때문이다.
악성 프로그램 (206) 이 수행할 수도 있고 가상 환경 (204) 이 검출하도록 구성될 수도 있는 액션의 또 다른 비제한적인 예는 디버거 기능을 호출하는 것을 포함한다. 예를 들어, 환경 (204) 은 프로그램이 IsDebuggerPresent() 또는 CheckRemoteDebuggerPresent() 을 호출할 때를 검출하도록 구성될 수도 있다.
악성 프로그램 (206) 이 수행할 수도 있고 가상 환경 (204) 이 검출하도록 구성될 수도 있는 액션의 또 다른 비제한적인 예는 호스트-게스트 통신 동안 사용된 입력/출력으로부터 데이터를 판독 또는 기입하는데 사용되는 IN 또는 OUT 명령을 실행하는 것을 포함한다. 그러한 IN 또는 OUT 명령은 가상 환경 내에서 존재하지만 하부에 놓인 컴퓨팅 디바이스에서 호출될 때 예외를 일으키게 되는 포트 어드레스들로부터 데이터를 판독/기입하는 것을 수반할 수도 있다.
악성 프로그램 (206) 이 수행할 수도 있고 가상 환경 (204) 이 검출하도록 구성될 수도 있는 액션의 또 다른 비제한적인 예는 호스트-게스트 통신 동안 불법 조작코드를 실행하려는 시도를 포함할 수도 있다. 이는 하부에 놓인 컴퓨팅 디바이스의 에러 핸들러가 불법 조작코드에 대한 호출을 핸들링할 수도 있지만 가상 환경이 에러 핸들러를 갖지 않을 수도 있기 때문이다. 예를 들어, 불법 조작코드는 기존 조작코드의 불법 코딩 또는 정의되지 않은 조작코드를 포함할 수도 있다. 어느 조작코드가 합법적인지는 특정 가상 환경 (204) 및/또는 컴퓨팅 디바이스의 하드웨어 또는 소프트웨어에 의존할 수도 있다.
프로그램이 가상 환경 내에서 실행 중인지 여부를 프로그램이 검출하려고 시도하고 있는 것을 가상 환경 (204) 이 검출하는 경우 (즉, 프로그램이 가상 환경에서의 테스팅을 회피하려 하는 경우), 가상 환경 (204) 은 회피 프로그램으로서 프로그램 (206) 을 마킹 또는 플래그하고 그 프로그램 (206) 을 종료할 수도 있다. 가상 환경 (204) 또는 오퍼레이팅 시스템 (202) 은 그 후 프로그램이 컴퓨팅 디바이스 상의 보호 모드 내에서 실행되고 분석되어야 하는 것을 컴퓨팅 디바이스에 시그널링할 수도 있다. 이것이 도 3 에 도시된다.
도 3 은 컴퓨팅 디바이스 상에서 보호 모드를 사용한 프로그램 분석을 도시하는 블록 다이어그램 (300) 이다. 컴퓨팅 디바이스는 오퍼레이팅 시스템 (302) 을 포함한다. 가상 환경 (304) 은 프로그램 (306) 과 같은, 잠재적으로 악성인 프로그램들을 분석하기 위해 오퍼레이팅 시스템 (302) 내에서 동작할 수도 있다. 가상 환경 (204) 은 도 2 를 참조하여 기재된 바와 같이 프로그램 (306) 이 가상 환경 (304) 내에서 실행 중인지 여부를 검출하려고 시도하고 있는 것을 검출할 수도 있다. 가상 환경 (304) 은 회피하는 것으로 프로그램 (306) 을 플래그하고 그 프로그램 (306) 을 종료할 수도 있다. 컴퓨팅 디바이스는 그 후 SMM 과 같은 보호 모드 (310) 를 개시할 수도 있다. 보호 모드 (310) 는 SMM 에 대해 SMI 와 같은 시스템 인터럽트에 의해 트리거될 수도 있다. 프로그램 (306) 은 보호 모드 (310) 내에서 재실행될 수도 있다.
보호 모드 (310) 는 또한 프로그램 (306) 을 분석하기 위한 자립식 환경을 제공할 수도 있지만, 또 다른 컴퓨팅 디바이스의 시뮬레이션 보다는 실제 컴퓨팅 디바이스에 기초하는 환경이다. 따라서, 가상 환경 (304) 을 회피하도록 설계될 수도 있는 프로그램 (306) 은, 그것이 가상 환경에서 실행 중인 것을 검출하지 않을 것이고, 따라서 보호 모드 (310) 를 회피하도록 설계된 방식으로 거동하지 않을 것이다 (즉, 프로그램 (306) 은 양성인 척하기 보다는 정상으로 거동한다). 보호 모드 (310) 는 프로그램 (306) 이 예를 들어 루트 액세스를 방지하는, 컴퓨팅 디바이스의 중요한 부분들에 액세스하는 것을 방지할 수도 있다. 안티-멀웨어 어플리케이션 또는 다른 프로그램 분석기는 프로그램이 악성인지 여부를 결정하기 위해 보호 모드 (310) 내에서 프로그램 (306) 을 분석할 수도 있다. 보호 모드 (310) 는 가상 환경 (304) 보다 많은 컴퓨팅 리소스들을 활용할 수도 있으므로, 일부 실시형태들에서, 가상 환경 (304) 을 회피하는 프로그램들만이 보호 모드 (310) 내에서 분석될 수도 있다.
도 4 는 다양한 실시형태들에 따른 컴퓨팅 디바이스 상의 가상 환경 내에서 실행하는 프로그램을 분석하기 위한 방법 (400) 을 도시한다. 도 1 내지 도 4 를 참조하면, 방법 (400) 은 보호 모드 (예를 들어, SMM) 및 가상 환경 (예를 들어, 가상 머신 또는 에뮬레이터) 를 작동할 수 있는 컴퓨팅 디바이스 (예컨대 컴퓨팅 디바이스 (100)) 의 프로세서 (예를 들어, CPU (102) 등등) 로 구현될 수도 있다.
블록 (402) 에서, 프로세서는 컴퓨팅 디바이스의 가상 환경 내에서 실행하는 프로그램을 분석할 수도 있다. 프로그램은 잠재적 멀웨어 또는 임의의 다른 아려지지 않은 프로그램일 수도 있으며, 프로세서는 프로그램이 악성인지 여부를 결정하기 위해 그 프로그램을 분석하고 있을 수도 있다. 가상 환경은 또 다른 컴퓨팅 디바이스의 소프트웨어 및/또는 하드웨어 환경을 시뮬레이팅하는 가상 머신 또는 에뮬레이터일 수도 있다. 가상 환경은 가상 환경을 제어하고 가상 환경과 상호작용하기 위해 컴퓨팅 디바이스에 의해 사용되는 API 를 포함할 수도 있다.
블록 (404) 에서, 프로세서는 가상 환경의 특성들을 드러낼 수 있는 데이터 구조들 및 소정의 API들에 대해 프로그램에 의해 시도된 액세스들을 모니터링할 수도 있다. 그러한 API 및/또는 데이터 구조 특성들에 대해 프로그램에 의한 시도들은, 프로그램이 가상 환경 내에서 실행 중인지 여부를 프로그램이 검출하려고 시도하고 있는 것을 나타낼 수도 있다. 블록 (404) 에서 모니터링될 수도 있는 API 특성의 비제한적인 예는 모델 특정 레지스터이다 (이는 빠른 에뮬레이터 (QEMU) 시뮬레이터 상에서 유효하지만 실제 컴퓨팅 디바이스에서 호출될 때 예외를 리턴한다). 블록 (404) 에서 모니터링될 수도 있는 API 특성의 또 다른 비제한적인 예는 (가상 환경에서 임의로 길어질 수도 있는) 명령의 길이이다. 블록 (404) 에서 모니터링될 수도 있는 API 특성의 또 다른 비제한적 예는 저장 인터럽트 디스크립터 테이블 레지스터이다 (가상 환경에서 베이스 어드레스가 다를 수도 있고 또한 소정의 기능을 초과할 수도 있다). 블록 (404) 에서 모니터링될 수도 있는 API 특성의 또 다른 비제한적인 예는 디버거 기능 (예를 들어, IsDebuggerPresent () 또는 CheckRemoteDebuggerPresent ()) 이다. 블록 (404)에서 모니터링될 수도 있는 API 특성의 또 다른 비제한적인 예는 호스트-게스트 통신을 위해 사용된 IN/OUT 명령이다. 블록 (404) 에서 모니터링될 수도 있는 API 특성의 또 다른 비제한적인 예는 호스트-게스트 통신을 위해 사용된 불법 조작코드 핸들링이다.
결정 블록 (406) 에서, 프로세서는 프로그램이 가상 환경 내에서 실행 중인지 여부를 프로그램이 발견하려고 시도하고 있는지 여부를 모니터링된 거동들로부터 결정할 수도 있다. 예를 들어, 프로세서는 프로그램이 가상 환경들에 고유 한 특성들을 드러낼 수 있는 모니터링된 API 에 액세스하려고 시도하고 있다고 결정할 수도 있다.
프로그램이 가상 환경 내에서 실행 중인지 여부를 프로그램이 검출하려고 시도하고 있지 않다고 결정하는 것에 응답하여 (즉, 결정 블록 (406) = "아니오"), 프로세서는 블록 (408) 에서 가상 환경 내의 프로그램의 분석을 계속할 수도 있다. 즉, 프로그램이 가상 환경 테스팅을 회피하려 하지 않는 경우, 프로세서는 가상 환경에서 프로그램을 분석하는 것을 계속할 수도 있다.
프로그램이 가상 환경 내에서 실행 중인지 여부를 프로그램이 검출하려고 시도하고 있다고 결정하는 것애 응답하여 (즉, 결정 블록 406 = "예"), 프로세서는 블록 (410) 에서, 프로그램을 종료하고 컴퓨팅 디바이스 상의 보호 모드 내에서 프로그램을 재실행하고 분석할 수도 있다. 예를 들어, 프로세서는 프로그램이 회피하고 보호 모드를 트리거하는 것을 플래그하거나 그렇지 않으면 식별할 수도 있다. 보호 모드는 컴퓨팅 디바이스 상의 SMM 일 수도 있으며, 이는 SMI 를 사용하여 트리거될 수도 있다. 보호 모드는 또 다른 컴퓨팅 시스템의 시뮬레이션보다는 실제 컴퓨팅 디바이스에 기초한 환경에서 프로그램의 계속적인 분석을 허용할 수도 있지만, 여전히 프로그램이 컴퓨팅 디바이스의 중요한 부분들에 액세스하고 이를 손상시키는 것을 방지한다. 이러한 방식으로, 방법 (400) 은 가상 환경 테스팅을 회피하는 잠재적으로 악성인 프로그램들을 분석하는 방법을 제공한다.
도 4 에 도시된 실시형태들을 포함하는 다양한 실시형태들은, 다양한 컴퓨팅 디바이스들 중 어느 것에서 구현될 수도 있으며, 그 일 예가 도 5 에 도시된다 (예를 들어, 컴퓨팅 디바이스 (500)). 다양한 실시형태들에 따르면, 컴퓨팅 디바이스 (500) 는 도 1 을 참조하여 기재된 바와 같은 컴퓨팅 디바이스 (100) 와 유사 할 수도 있다. 이로써, 컴퓨팅 디바이스 (500) 는 도 4 의 방법 (400) 을 구현할 수도 있다.
컴퓨팅 디바이스 (500) 는 터치스크린 제어기 (504) 및 내부 메모리 (506) 에 커플링된 프로세서 (502) 를 포함할 수도 있다. 프로세서 (502) 는 일반적인 또는 특정 프로세싱 작업들을 위해 지정된 하나 이상의 멀티 코어 집적 회로들일 수도 있다. 내부 메모리 (506) 는 휘발성 또는 비휘발성 메모리일 수도 있고, 또한 보안 및/또는 암호화된 메모리, 비보안 및/또는 비암호화된 메모리, 또는 이들의 임의의 조합일 수도 있다. 터치 스크린 제어기 (504) 및 프로세서 (502) 는 또한 저항성 감지 터치스크린, 용량성 감지 터치스크린, 적외선 감지 터치스크린 등과 같은 터치스크린 패널 (512) 에 커플링될 수도 있다. 또한, 컴퓨팅 디바이스 (500) 의 디스플레이는 터치스크린 능력을 가질 필요가 없다.
컴퓨팅 디바이스 (500) 는 프로세서 (502) 및 안테나 (510) 에 커플링되고 셀룰러 통신을 전송 및 수신하기 위해 구성된 셀룰러 네트워크 트랜시버 (508) 를 가질 수도 있다. 트랜시버 (508) 및 안테나 (510) 는 다양한 실시형태 방법들을 구현하기 위해 위에 언급된 회로와 함께 사용될 수도 있다. 컴퓨팅 디바이스 (500) 는 트랜시버 (508) 및/또는 프로세서 (502) 에 커플링된 하나 이상의 SIM 카드들 (516) 을 포함할 수도 있고, 본 명세서에 기재된 바와 같이 구성될 수도 있다. 컴퓨팅 디바이스 (500) 는 프로세서가 셀룰러 네트워크를 통해 통신하는 것을 가능하게 하는 셀룰러 네트워크 무선 모뎀 칩 (517) 을 포함할 수도 있다.
컴퓨팅 디바이스 (500) 는 또한 오디오 출력들을 제공하기 위한 스피커 (514) 를 포함할 수도 있다. 또한, 컴퓨팅 디바이스 (500) 는 본 명세서에서 논의된 컴포넌트 모두 또는 일부를 포함하기 위해, 플라스틱, 금속 또는 재료들의 조합으로 구축된 하우징 (520) 을 포함할 수도 있다. 컴퓨팅 디바이스 (500) 는 일회용 또는 재충전가능한 배터리와 같은 프로세서 (502) 에 커플링된 전원 (522) 을 포함할 수도 있다. 재충전가능한 배터리는 또한 컴퓨팅 디바이스 (500) 외부의 소스로부터 충전 전류를 수신하기 위해 주변 디바이스 접속 포트에 커플링될 수도 있다. 컴퓨팅 디바이스 (500) 는 또한 사용자 입력들을 수신하기 위한 물리적 버튼 (524) 을 포함할 수도 있다. 컴퓨팅 디바이스 (500) 는 또한 컴퓨팅 디바이스 (500) 를 턴온 및 턴오프하기 위한 파워 버튼 (526) 을 포함할 수도 있다.
도 4 에 도시된 실시형태들을 포함한 다양한 실시형태들은, 다양한 컴퓨팅 디바이스들 중 어느 것에서 구현될 수도 있고, 그 일 예가 도 6 에 도시된다 (예를 들어, 컴퓨팅 디바이스 (600)). 다양한 실시형태들에 따르면, 컴퓨팅 디바이스 (600) 는 도 1 을 참조하여 기재된 바와 같은 컴퓨팅 디바이스 (100) 와 유사할 수도 있다. 이와 같이, 컴퓨팅 디바이스 (600) 는 도 4 의 방법 (400) 을 구현할 수도 있다.
컴퓨팅 디바이스 (600) (예를 들어, 도 1 의 컴퓨팅 디바이스 (100) 에 대응할 수도 있음) 는 컴퓨팅 디바이스 (600) 의 포인팅 디바이스로서 작용하는 터치 패드 터치 표면 (617) 을 포함할 수도 있고, 따라서 하기에 기재되고 터치스크린 디스플레이가 장착된 무선 디바이스들 상에서 구현되는 것들과 유사한 드래그 (drag), 스크롤 (scroll) 및 플리크 제스처 (flick gesture) 을 수신할 수도 있다. 컴퓨팅 디바이스 (600) 는 통상적으로 플래시 메모리의 디스크 드라이브 (613) 와 같은 대용량 비휘발성 메모리 및 휘발성 메모리 (612) 에 커플링된 프로세서를 포함할 것이다. 컴퓨팅 디바이스 (600) 는 또한 프로세서 (611) 에 커플링된 플로피 디스크 드라이브 (614) 및 콤팩트 디스크 (CD) 드라이브 (615) 를 포함할 수도 있다. 또한, 컴퓨팅 디바이스 (600) 는 USB (universal serial bus) 또는 FireWire® 커넥터 소켓들과 같은, 외부 메모리 디바이스들을 수신하거나 데이터 접속들을 확립하기 위해 프로세서 (611) 에 커플링된 다수의 커넥터 포트들, 또는 네트워크에 프로세서 (611) 를 커플링하기 위한 다른 네트워크 접속 회로들을 포함할 수도 있다. 노트북 구성에 있어서, 디바이스 하우징은 프로세서 (611) 에 모두 커플링된 터치패드 (617), 키보드 (618) 및 디스플레이 (619) 를 포함한다. 컴퓨팅 디바이스 (600) 의 다른 구성들은 잘 알려진 바와 같이 (예를 들어, USB 입력을 통해) 프로세서에 커플링된 컴퓨터 마우스 또는 트랙볼을 포함할 수도 있으며, 이는 다양한 실시형태들과 협력하여 사용될 수도 있다.
상기 방법 기재들 및 프로세스 플로우 다이어그램들은 단지 예시적인 예들로서 제공되며 다양한 실시형태들의 동작들이 제시된 순서대로 수행되어야 함을 요구하거나 암시하려는 것으로 의도되지 않는다. 당업자가 알게 되는 바와 같이, 상기 실시형태들에서의 동작 순서는 임의의 순서로 수행될 수도 있다. "이후", "그 후", "다음" 등과 같은 단어들은 동작들의 순서를 제한하려는 것으로 의도되지 않는다; 이 단어들은 단순히 방법들의 기재를 통해 독자를 안내하기 위해 사용된다. 또한, 예를 들어, 관사들 "a", "an" 또는 "the" 를 사용하여 단수로 엘리먼트들을 청구하기 위한 임의의 언급은 그 엘리먼트를 단수로 한정하려는 것으로 해석되지 않아야 한다.
본 명세서에 개시된 실시형태들과 관련하여 기재된 다양한 예시적인 논리 블록, 모듈, 회로 및 알고리즘 동작은 전자 하드웨어, 컴퓨터 소프트웨어, 또는 이들의 조합으로서 구현될 수도 있다. 이러한 하드웨어 및 소프트웨어의 상호 교환 가능성을 명확히 설명하기 위해, 다양한 예시적인 컴포넌트, 블록, 모듈, 회로 및 동작이 일반적으로 그 기능성의 관점에서 기재되었다. 이러한 기능성이 하드웨어 또는 소프트웨어로 구현되는지 여부는 전체 시스템에 부과된 설계 제약들 및 특정 어플리케이션에 의존한다. 숙련된 기술자는 각각의 특정 어플리케이션에 대해 다양한 방식으로 기재된 기능성을 구현할 수도 있지만, 이러한 구현 결정들이 본 실시형태들의 범위를 벗어남을 야기하는 것으로 해석되지 않아야 한다.
다양한 실시형태들과 관련하여 기재된 다양한 예시적인 로직, 논리 블록, 모듈 및 회로를 구현하는데 사용되는 하드웨어는 범용 프로세서, 디지털 신호 프로세서 (DSP), 주문형 집적 회로 (ASIC), 필드 프로그램가능 게이트 어레이 (FPGA) 또는 다른 프로그램가능 로직 디바이스, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 컴포넌트, 또는 본 명세서에 기재된 기능들을 수행하도록 설계된 이들의 임의의 조합으로 구현되거나 수행될 수도 있다. 범용 프로세서는 마이크로프로세서일 수도 있지만, 대안으로 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기 또는 상태 머신일 수도 있다. 프로세서는 또한 컴퓨팅 디바이스들의 조합, 예를 들어 DSP 와 마이크로 프로세서의 조합, 복수의 마이크로프로세서들, DSP 코어와 관련된 하나 이상의 마이크로프로세서들, 또는 임의의 다른 그러한 구성으로서 구현될 수도 있다. 대안적으로, 소정의 동작들 또는 방법들은 주어진 기능에 특정인 회로에 의해 수행될 수도 있다.
하나 이상의 예시적인 실시형태들에서, 기재된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수도 있다. 소프트웨어로 구현되는 경우, 기능들은 하나 이상의 명령들 또는 코드로서 비일시적 컴퓨터 판독가능 저장 매체 또는 비일시적 프로세서 판독가능 저장 매체 상에 저장될 수도 있다. 본 명세서에 개시된 방법 또는 알고리즘의 동작들은 비일시적 컴퓨터 판독가능 또는 프로세서 판독가능 저장 매체 상에 상주할 수도 있는 프로세서 실행가능 소프트웨어 모듈로 구현될 수도 있다. 비일시적 컴퓨터 판독가능 또는 프로세서 판독가능 저장 매체는 컴퓨터 또는 프로세서에 의해 액세스될 수도 있는 임의의 저장 매체일 수도 있다. 제한이 아닌 예시로서, 이러한 비일시적 컴퓨터 판독가능 또는 프로세서 판독가능 저장 매체는 RAM, ROM, EEPROM, 플래시 메모리, CD-ROM 또는 다른 광학 디스크 스토리지, 자기 디스크 스토리지 또는 다른 자기 스토리지 디바이스들, 또는 명령들 또는 데이터 구조들의 형태로 원하는 프로그램 코드를 저장하는데 사용될 수도 있고 컴퓨터에 의해 액세스될 수도 있는 임의의 다른 매체를 포함할 수도 있다. 본 명세서에 사용된 디스크 (disk) 및 디스크 (disc) 는 컴팩트 디스크 (CD), 레이저 디스크, 광학 디스크, 디지털 다기능 디스크 (DVD), 플로피 디스크 및 블루레이 디스크를 포함하며, 여기서 디스크 (disk) 는 일반적으로 데이터를 자기적으로 재생하는 한편, 디스크 (disc) 는 레이저로 광학적으로 데이터를 재생한다. 위의 조합들은 또한 컴퓨터 판독가능 및 프로세서 판독가능 매체들의 범위 내에 포함된다. 또한, 방법들 또는 알고리즘의 동작들은 비일시적 프로세서 판독가능 저장 매체 및/또는 컴퓨터 판독가능 저장 매체 상의 코드들 및/또는 명령들 중 하나 또는 이들의 임의의 조합 또는 세트로서 상주할 수 있으며, 이들은 컴퓨터 프로그램 제품에 포함될 수도 있다.
다양한 실시형태들의 앞선 기재는 임의의 당업자가 청구항들을 제작하거나 사용하는 것을 가능하게 하기 위해 제공된다. 이들 실시형태들에 대한 다양한 수정들은 당업자에게 쉽게 명백할 것이고, 본 명세서에 정의된 일반적인 원리들은 청구항들의 범위로부터 벗어나지 않으면서 일부 실시형태들에 적용될 수도 있다. 따라서, 본 개시물은 본 명세서에 나타낸 실시형태들로 제한하려고 의도되는 것이 아니라 다음의 청구항들 및 본 명세서에 개시된 원리들 및 신규 피처들과 일치하는 최광의 범위에 부합하는 것으로 의도된다.

Claims (24)

  1. 컴퓨팅 디바이스 상의 가상 환경 내에서 실행하는 프로그램을 분석하기 위한 방법으로서,
    상기 프로그램이, 상기 가상 환경 내에서 실행 중인지 여부를 검출하려고 시도하고 있는지 여부를 결정하는 단계; 및
    상기 프로그램이 상기 가상 환경 내에서 실행 중인지 여부를 상기 프로그램이 검출하려고 시도하고 있다고 결정하는 것에 응답하여 상기 컴퓨팅 디바이스의 보호 모드 내에서 상기 프로그램을 분석하는 단계를 포함하는, 컴퓨팅 디바이스 상의 가상 환경 내에서 실행하는 프로그램을 분석하기 위한 방법.
  2. 제 1 항에 있어서,
    상기 보호 모드는 시스템 관리 모드인, 컴퓨팅 디바이스 상의 가상 환경 내에서 실행하는 프로그램을 분석하기 위한 방법.
  3. 제 1 항에 있어서,
    상기 프로그램이 상기 가상 환경 내에서 실행 중인지 여부를 상기 프로그램이 검출하려고 시도하고 있지 않다고 결정하는 것에 응답하여 상기 가상 환경 내에서 상기 프로그램의 분석을 계속하는 단계를 더 포함하는, 컴퓨팅 디바이스 상의 가상 환경 내에서 실행하는 프로그램을 분석하기 위한 방법.
  4. 제 1 항에 있어서,
    상기 프로그램이 상기 가상 환경 내에서 실행 중인지 여부를 상기 프로그램이 검출하려고 시도하고 있는지 여부를 결정하는 단계는,
    상기 가상 환경의 어플리케이션 프로그래밍 인터페이스 (API) 특성들에 대한 상기 프로그램의 액세스를 모니터링하는 단계를 포함하는, 컴퓨팅 디바이스 상의 가상 환경 내에서 실행하는 프로그램을 분석하기 위한 방법.
  5. 제 4 항에 있어서,
    상기 API 특성들은 모델 특정 레지스터, 명령의 길이, 저장 인터럽트 디스크립터 테이블 레지스터, 디버거 기능 및 호스트-게스트 통신에 대한 명령으로 이루어진 그룹으로부터 선택된 적어도 하나의 멤버를 포함하는, 컴퓨팅 디바이스 상의 가상 환경 내에서 실행하는 프로그램을 분석하기 위한 방법.
  6. 제 1 항에 있어서,
    상기 가상 환경은 가상 머신 또는 에뮬레이터를 포함하는, 컴퓨팅 디바이스 상의 가상 환경 내에서 실행하는 프로그램을 분석하기 위한 방법.
  7. 컴퓨팅 디바이스로서,
    프로세서를 포함하고,
    상기 프로세서는,
    프로그램이 가상 환경 내에서 실행 중인지 여부를 상기 프로그램이 검출하려고 시도하고 있는지 여부를 결정하는 것; 및
    상기 프로그램이, 상기 가상 환경 내에서 실행 중인지 여부를 검출하려고 시도하고 있다고 결정하는 것에 응답하여 상기 컴퓨팅 디바이스의 보호 모드 내에서 상기 프로그램을 분석하는 것
    을 포함하는 동작들을 수행하기 위한 프로세서 실행가능 명령들로 구성되는, 컴퓨팅 디바이스.
  8. 제 7 항에 있어서,
    상기 보호 모드는 시스템 관리 모드인, 컴퓨팅 디바이스.
  9. 제 7 항에 있어서,
    상기 프로세서는 또한, 상기 프로그램이 상기 가상 환경 내에서 실행 중인지 여부를 상기 프로그램이 검출하려고 시도하고 있지 않다고 결정하는 것에 응답하여 상기 가상 환경 내에서 상기 프로그램의 분석을 계속하는 것을 포함하는 동작들을 수행하기 위한 프로세서 실행가능 명령들로 구성되는, 컴퓨팅 디바이스.
  10. 제 7 항에 있어서,
    상기 프로세서는 또한, 상기 프로그램이 상기 가상 환경 내에서 실행 중인지 여부를 상기 프로그램이 검출하려고 시도하고 있는지 여부를 결정하는 것이,
    상기 가상 환경의 어플리케이션 프로그래밍 인터페이스 (API) 특성들에 대한 상기 프로그램의 액세스를 모니터링하는 것을 포함하도록, 프로세서 실행가능 명령들로 구성되는, 컴퓨팅 디바이스.
  11. 제 10 항에 있어서,
    상기 API 특성들은 모델 특정 레지스터, 명령의 길이, 저장 인터럽트 디스크립터 테이블 레지스터, 디버거 기능 및 호스트-게스트 통신에 대한 명령으로 이루어진 그룹으로부터 선택된 적어도 하나의 멤버를 포함하는, 컴퓨팅 디바이스.
  12. 제 7 항에 있어서,
    상기 가상 환경은 가상 머신 또는 에뮬레이터를 포함하는, 컴퓨팅 디바이스.
  13. 프로세서 실행가능 소프트웨어 명령들이 저장된 비일시적 컴퓨터 판독가능 저장 매체로서,
    저장된 상기 프로세서 실행가능 소프트웨어 명령들은, 컴퓨팅 디바이스의 프로세서로 하여금,
    프로그램이, 가상 환경 내에서 실행 중인지 여부를 검출하려고 시도하고 있는지 여부를 결정하는 것; 및
    상기 프로그램이 상기 가상 환경 내에서 실행 중인지 여부를 상기 프로그램이 검출하려고 시도하고 있다고 결정하는 것에 응답하여 상기 컴퓨팅 디바이스의 보호 모드 내에서 상기 프로그램을 분석하는 것
    을 포함하는 동작들을 수행하게 하도록 구성되는, 비일시적 컴퓨터 판독가능 저장 매체.
  14. 제 13 항에 있어서,
    상기 보호 모드는 시스템 관리 모드인, 비일시적 컴퓨터 판독가능 저장 매체.
  15. 제 13 항에 있어서,
    상기 저장된 프로세서 실행가능 소프트웨어 명령들은, 상기 프로세서로 하여금,
    상기 프로그램이 상기 가상 환경 내에서 실행 중인지 여부를 상기 프로그램이 검출하려고 시도하고 있지 않다고 결정하는 것에 응답하여 상기 가상 환경 내에서 상기 프로그램의 분석을 계속하는 것
    을 더 포함하는 동작들을 수행하게 하도록 구성되는, 비일시적 컴퓨터 판독가능 저장 매체.
  16. 제 13 항에 있어서,
    상기 저장된 프로세서 실행가능 소프트웨어 명령들은 또한, 상기 프로세서로 하여금,
    상기 프로그램이 상기 가상 환경 내에서 실행 중인지 여부를 상기 프로그램이 검출하려고 시도하고 있는지 여부를 결정하는 것이,
    상기 가상 환경의 어플리케이션 프로그래밍 인터페이스 (API) 특성들에 대한 상기 프로그램의 액세스를 모니터링하는 것
    을 포함하도록 동작들을 수행하게 하도록 구성되는, 비일시적 컴퓨터 판독가능 저장 매체.
  17. 제 16 항에 있어서,
    상기 API 특성들은 모델 특정 레지스터, 명령의 길이, 저장 인터럽트 디스크립터 테이블 레지스터, 디버거 기능 및 호스트-게스트 통신에 대한 명령으로 이루어진 그룹으로부터 선택된 적어도 하나의 멤버를 포함하는, 비일시적 컴퓨터 판독가능 저장 매체.
  18. 제 13 항에 있어서,
    상기 가상 환경은 가상 머신 또는 에뮬레이터를 포함하는, 비일시적 컴퓨터 판독가능 저장 매체.
  19. 컴퓨팅 디바이스로서,
    프로그램이, 가상 환경 내에서 실행 중인지 여부를 검출하려고 시도하고 있는지 여부를 결정하는 수단; 및
    상기 프로그램이 상기 가상 환경 내에서 실행 중인지 여부를 상기 프로그램이 검출하려고 시도하고 있다고 결정하는 것에 응답하여 상기 컴퓨팅 디바이스의 보호 모드 내에서 상기 프로그램을 분석하는 수단을 포함하는, 컴퓨팅 디바이스.
  20. 제 19 항에 있어서,
    상기 보호 모드는 시스템 관리 모드인, 컴퓨팅 디바이스.
  21. 제 19 항에 있어서,
    상기 프로그램이 상기 가상 환경 내에서 실행 중인지 여부를 상기 프로그램이 검출하려고 시도하고 있지 않다고 결정하는 것에 응답하여 상기 가상 환경 내에서 상기 프로그램의 분석을 계속하는 수단을 더 포함하는, 컴퓨팅 디바이스.
  22. 제 19 항에 있어서,
    상기 프로그램이 상기 가상 환경 내에서 실행 중인지 여부를 상기 프로그램이 검출하려고 시도하고 있는지 여부를 결정하는 수단은,
    상기 가상 환경의 어플리케이션 프로그래밍 인터페이스 (API) 특성들에 대한 상기 프로그램의 액세스를 모니터링하는 수단을 포함하는, 컴퓨팅 디바이스.
  23. 제 22 항에 있어서,
    상기 API 특성들은 모델 특정 레지스터, 명령의 길이, 저장 인터럽트 디스크립터 테이블 레지스터, 디버거 기능 및 호스트-게스트 통신에 대한 명령으로 이루어진 그룹으로부터 선택된 적어도 하나의 멤버를 포함하는, 컴퓨팅 디바이스.
  24. 제 19 항에 있어서,
    상기 가상 환경은 가상 머신 또는 에뮬레이터를 포함하는, 컴퓨팅 디바이스.
KR1020187012862A 2015-11-11 2016-10-11 가상 머신들 또는 에뮬레이터들의 프로그램 회피 검출 KR20180081726A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/937,949 US9984231B2 (en) 2015-11-11 2015-11-11 Detecting program evasion of virtual machines or emulators
US14/937,949 2015-11-11
PCT/US2016/056443 WO2017083044A1 (en) 2015-11-11 2016-10-11 Detecting program evasion of virtual machines or emulators

Publications (1)

Publication Number Publication Date
KR20180081726A true KR20180081726A (ko) 2018-07-17

Family

ID=57223762

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187012862A KR20180081726A (ko) 2015-11-11 2016-10-11 가상 머신들 또는 에뮬레이터들의 프로그램 회피 검출

Country Status (7)

Country Link
US (1) US9984231B2 (ko)
EP (1) EP3374920B1 (ko)
JP (1) JP2018534695A (ko)
KR (1) KR20180081726A (ko)
CN (1) CN108351936B (ko)
TW (1) TWI735475B (ko)
WO (1) WO2017083044A1 (ko)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108430230A (zh) * 2015-12-30 2018-08-21 希尔氏宠物营养品公司 宠物食品组合物
US10783239B2 (en) * 2017-08-01 2020-09-22 Pc Matic, Inc. System, method, and apparatus for computer security
US10621348B1 (en) * 2017-08-15 2020-04-14 Ca, Inc. Detecting a malicious application executing in an emulator based on a check made by the malicious application after making an API call
US10546128B2 (en) * 2017-10-06 2020-01-28 International Business Machines Corporation Deactivating evasive malware
TWI650671B (zh) * 2017-10-17 2019-02-11 中華電信股份有限公司 惡意程式分析方法及裝置
US11853425B2 (en) * 2020-10-09 2023-12-26 Sophos Limited Dynamic sandbox scarecrow for malware management
US11934515B2 (en) * 2021-12-02 2024-03-19 Bank Of America Corporation Malware deterrence using computer environment indicators

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6697971B1 (en) * 2000-10-24 2004-02-24 Hewlett-Packard Development Company, L.P. System and method for detecting attempts to access data residing outside of allocated memory
US7552426B2 (en) * 2003-10-14 2009-06-23 Microsoft Corporation Systems and methods for using synthetic instructions in a virtual machine
CN101946466B (zh) * 2007-12-21 2015-01-28 英特尔公司 多个应用的对等流传输和api服务
US8763125B1 (en) * 2008-09-26 2014-06-24 Trend Micro, Inc. Disabling execution of malware having a self-defense mechanism
CN101515320B (zh) * 2009-04-10 2011-08-17 中国科学院软件研究所 一种攻击时漏洞检测方法及其系统
TW201137660A (en) * 2009-12-23 2011-11-01 Ibm Method and system for protecting an operating system against unauthorized modification
US9501644B2 (en) * 2010-03-15 2016-11-22 F-Secure Oyj Malware protection
CN102034050A (zh) * 2011-01-25 2011-04-27 四川大学 基于虚拟机和敏感Native API调用感知的恶意软件动态检测方法
CN102682229B (zh) * 2011-03-11 2015-04-01 北京市国路安信息技术有限公司 一种基于虚拟化技术的恶意代码行为检测方法
US8904537B2 (en) 2011-05-09 2014-12-02 F—Secure Corporation Malware detection
US8826440B2 (en) * 2011-10-19 2014-09-02 Google Inc. Defensive techniques to increase computer security
US9519781B2 (en) 2011-11-03 2016-12-13 Cyphort Inc. Systems and methods for virtualization and emulation assisted malware detection
RU2514141C1 (ru) * 2012-09-28 2014-04-27 Закрытое акционерное общество "Лаборатория Касперского" Способ эмуляции вызовов системных функций для обхода средств противодействия эмуляции
US9104870B1 (en) * 2012-09-28 2015-08-11 Palo Alto Networks, Inc. Detecting malware
JP2014071796A (ja) * 2012-10-01 2014-04-21 Nec Corp マルウェア検知装置、マルウェア検知システム、マルウェア検知方法、及びプログラム
JP6176868B2 (ja) * 2013-02-10 2017-08-09 ペイパル・インク 予測的なセキュリティ製品を提供し、既存のセキュリティ製品を評価する方法と製品
US9342343B2 (en) * 2013-03-15 2016-05-17 Adventium Enterprises, Llc Wrapped nested virtualization
WO2015029037A2 (en) * 2013-08-27 2015-03-05 MINERVA LABS LTD. No:515155356 Method and system handling malware
US9185128B2 (en) * 2013-08-30 2015-11-10 Bank Of America Corporation Malware analysis methods and systems
US9355246B1 (en) * 2013-12-05 2016-05-31 Trend Micro Inc. Tuning sandbox behavior based on static characteristics of malware
US9223964B2 (en) 2013-12-05 2015-12-29 Mcafee, Inc. Detecting JAVA sandbox escaping attacks based on JAVA bytecode instrumentation and JAVA method hooking
US9294486B1 (en) * 2014-03-05 2016-03-22 Sandia Corporation Malware detection and analysis
US10084813B2 (en) * 2014-06-24 2018-09-25 Fireeye, Inc. Intrusion prevention and remedy system
US9992225B2 (en) * 2014-09-12 2018-06-05 Topspin Security Ltd. System and a method for identifying malware network activity using a decoy environment
US9411959B2 (en) * 2014-09-30 2016-08-09 Juniper Networks, Inc. Identifying an evasive malicious object based on a behavior delta
US9413774B1 (en) * 2014-10-27 2016-08-09 Palo Alto Networks, Inc. Dynamic malware analysis of a URL using a browser executed in an instrumented virtual machine environment
US10339300B2 (en) * 2015-03-23 2019-07-02 Binary Guard Corp. Advanced persistent threat and targeted malware defense
US20160357965A1 (en) * 2015-06-04 2016-12-08 Ut Battelle, Llc Automatic clustering of malware variants based on structured control flow
US9703956B1 (en) * 2015-06-08 2017-07-11 Symantec Corporation Systems and methods for categorizing virtual-machine-aware applications for further analysis
US9935972B2 (en) * 2015-06-29 2018-04-03 Fortinet, Inc. Emulator-based malware learning and detection

Also Published As

Publication number Publication date
TWI735475B (zh) 2021-08-11
US20170132411A1 (en) 2017-05-11
WO2017083044A1 (en) 2017-05-18
EP3374920B1 (en) 2020-04-22
JP2018534695A (ja) 2018-11-22
CN108351936B (zh) 2021-11-23
EP3374920A1 (en) 2018-09-19
TW201717087A (zh) 2017-05-16
CN108351936A (zh) 2018-07-31
US9984231B2 (en) 2018-05-29

Similar Documents

Publication Publication Date Title
US9984231B2 (en) Detecting program evasion of virtual machines or emulators
US9507939B1 (en) Systems and methods for batch processing of samples using a bare-metal computer security appliance
Bickford et al. Rootkits on smart phones: attacks, implications and opportunities
RU2627107C2 (ru) Профилирование выполнения кода
US10176329B2 (en) Systems and methods for detecting unknown vulnerabilities in computing processes
US10986103B2 (en) Signal tokens indicative of malware
US9852294B1 (en) Systems and methods for detecting suspicious applications based on how entry-point functions are triggered
US9516056B2 (en) Detecting a malware process
EP2713302A1 (en) System and method for countering detection of emulation by malware
US9798981B2 (en) Determining malware based on signal tokens
WO2018038990A2 (en) Detection and prevention of malicious shell exploits
US20080250165A1 (en) USB port access management
Memon et al. Colluding apps: Tomorrow's mobile malware threat
Mohsen et al. Android keylogging threat
Kang et al. USBWall: A novel security mechanism to protect against maliciously reprogrammed USB devices
US9552481B1 (en) Systems and methods for monitoring programs
CN106687978B (zh) 用于对栈破坏利用的抑制的计算设备和方法
Yang et al. Eavesdropping user credentials via GPU side channels on smartphones
Hei et al. Two vulnerabilities in Android OS kernel
Creutzburg The strange world of keyloggers-an overview, Part I
Osman et al. Securing applications against side-channel attacks through resource access veto
WO2020180298A1 (en) Deterministic trusted executed container through managed runtime language metadata
Bickford Rootkits on smart phones: Attacks, implications, and energy-aware defense techniques
Alzaylaee Enhanced Machine Learning Based Dynamic Detection of Evasive Android Malware
Doan et al. HAL‐Based Resource Manipulation Monitoring on AOSP