[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

KR102160659B1 - 하드웨어-기반 마이크로-아키텍처 데이터를 이용한 이상 프로그램 실행의 검출 - Google Patents

하드웨어-기반 마이크로-아키텍처 데이터를 이용한 이상 프로그램 실행의 검출 Download PDF

Info

Publication number
KR102160659B1
KR102160659B1 KR1020157027784A KR20157027784A KR102160659B1 KR 102160659 B1 KR102160659 B1 KR 102160659B1 KR 1020157027784 A KR1020157027784 A KR 1020157027784A KR 20157027784 A KR20157027784 A KR 20157027784A KR 102160659 B1 KR102160659 B1 KR 102160659B1
Authority
KR
South Korea
Prior art keywords
data
hardware
architecture
micro
processes
Prior art date
Application number
KR1020157027784A
Other languages
English (en)
Other versions
KR20150138229A (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 KR20150138229A publication Critical patent/KR20150138229A/ko
Application granted granted Critical
Publication of KR102160659B1 publication Critical patent/KR102160659B1/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
    • 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
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Virology (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)
  • Quality & Reliability (AREA)
  • Computer And Data Communications (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

하나 이상의 프로세스들을 실행하는 하드웨어 디바이스에 대해, 하드웨어-기반 마이크로-아키텍처 카운터 데이터를 포함하는 하드웨어-기반 마이크로-아키텍처 데이터를 획득하는 단계 및 하드웨어-기반 마이크로-아키텍처 데이터에 적어도 부분적으로 기초하여, 하드웨어 디바이스상에서 실행하는 하나 이상의 프로세스들 중 적어도 하나가 악성 프로세스에 해당하는지의 여부를 결정하는 단계를 포함하는 방법을 비롯하여, 디바이스들, 시스템들, 장치, 방법들, 매체들 및 다른 구현들이 개시된다. 일부 실시예들에서, 하드웨어-기반 마이크로-아키텍처 데이터에 기초하여 하나 이상의 프로세스들 중 적어도 하나가 악성 프로세스에 해당하는지의 여부를 결정하는 것은 하나 이상의 프로세스들 중 적어도 하나가 악성 프로세스에 해당하는지의 여부를 결정하기 위하여 하드웨어-기반 마이크로-아키텍처 데이터에 하나 이상의 기계-학습 프로시저들을 적용하는 것을 포함할 수 있다.

Description

하드웨어-기반 마이크로-아키텍처 데이터를 이용한 이상 프로그램 실행의 검출 {DETECTION OF ANOMALOUS PROGRAM EXECUTION USING HARDWARE-BASED MICRO-ARCHITECTURAL DATA}
[0001] 본 출원은, "DETECTION OF ANOMALOUS PROGRAM EXECUTION USING HARDWARE-BASED MICRO-ARCHITECTURAL DATA"란 명칭으로 2013년 11월 5일 출원된 국제 출원 번호 PCT/US2013/068451호의 이익 및 그에 대한 우선권을 청구하며, 이 국제 출원은, 2013년 3월 18일에 "SYSTEMS AND METHODS TO DETECT ANOMALOUS PROGRAM EXECUTION USING PROCESSOR MICROARCHITECTURAL EVENTS"란 명칭으로 미국 가출원된 제 61/803,029호의 이익 및 그에 대한 우선권을 청구하고, 이들 모두의 내용들은 그들 전체가 인용에 의해 본원에 통합된다.
정부 지원 리서치에 관한 설명
[0002] 본 발명은 DARPA(Defense Advanced Research Projects Agency)에 의해 제공되는 FA 8750-10-2-0253 하에서 정부 지원을 통해 이루어졌다. 정부는 본 발명에 있어 일부 권리들을 갖는다.
[0003] 특정 도메인에서 컴퓨터들의 급증에 따라서 일반적으로 그 도메인에서 악성 프로세스들(예를 들어, 멀웨어)의 급증이 후속된다. 예를 들어, 최신의 안드로이드 디바이스들을 포함하는 시스템들에는 바이러스들, 루트킷 스파이웨어, 애드웨어 및 다른 부류들의 악성 프로세스들이 가득하다. 항바이러스 소프트웨어의 존재에도 불구하고, 멀웨어 위협(및 다른 타입들의 악성 프로세스들로부터의 위협)은 지속적이면서 증가하고 있다. 불행하게도, 항바이러스를 간단히 디스에이블링시키는 것을 비롯해서, 상업적인 항바이러스 소프트웨어를 파괴하려는 무수한 방법들이 존재한다. 더욱이, 멀웨어는 새로운 변종들로 변형할 수 있고, 이는 멀웨어의 정적 검출을 어렵게 만든다.
[0004] 일부 일반적인 멀웨어 프로세스들의 예들이 아래에서 제공된다:
멀웨어 간단한 설명
웜(Worm) 운영 시스템의 표면(시스템 호출 인터페이스들) 상에서 이용가능한 익스플로잇들을 통해 하나의 감염된 호스트로부터 다른 호스트들로 스스로 전파는 멀웨어
바이러스(Virus) 실행 프로그램에 스스로 접촉하고, 다양한 시스템들과의 사용자의 상호작용들을 통해 스스로 확산하는 멀웨어
폴리모픽 바이러스(Polymorphic Virus) 새로운 타겟으로의 접촉을 위해 복제할 때, 검출을 기피하기 위해 자신의 페이로드를 변경하는, 즉, 상이한 형상을 취하지만 동일한 기능을 수행하는 바이러스
메타모픽 바이러스(Metamorphic Virus) 새로운 타겟으로의 접촉을 위해 복제할 때, 미래의 변화들을 생성하기 위한 프레임워크를 비롯해서, 페이로드 및 기능 둘 다를 변경하는 바이러스
트로이(Trojan) 비-멀웨어로서 가장하고 일단 설치되면 악성으로 동작(백도어들을 개방하고 시스템 작동을 방해하는 등)하는 멀웨어
애드웨어(AdWare) 사용자에게 원치않는 광고들을 처리하게 강요하는 멀웨어
스파이웨어(SpyWare) 컴퓨터 사용 및 컴퓨터에 액세스가능한 개인 정보를 비밀스럽게 관측하고 사용자들에게 보고하는 멀웨어
봇네트(Botnet) 중앙 악성 에이전시에 의해 제어되는 감염된 컴퓨터들의 네트워크의 멤버로서 사용자의 컴퓨터를 이용하는 멀웨어
루트킷(Rootkit) 슈퍼유저 액세스를 획득하기 위해 운영 시스템에서 보안 홀들을 활용하는 멀웨어 패키지. 일반적으로, 루트킷은 파일 시스템을 조작함으로써 악성 슈퍼유저 활동들을 수행하는 동안에는 자신의 존재를 숨기려 시도함
[0005] 멀웨어와 같은 악성 프로세스들은 악명을 얻기 위해서 또는 재미삼아 본래 생성되지만, 오늘날 멀웨어 전개는 대부분 경제적인 이득들이 동기가 된다. 개인 정보, 신용 카드들, 미국에서 센서티브 머신으로의 로그인들 등에 대한 활성 언더그라운드 마켓들의 보고들이 존재한다. 또한, 멀웨어와 같은 악성 프로세스들이 산업 스파이 목적들 및/또는 고의적 방해를 위한 특정 컴퓨터들을 목표로 하기 위해 개발되었다.
[0006] 본원에 개시된 디바이스들, 시스템들, 장치, 방법들, 물건들, 미디어, 및 다른 구현들은, 하나 이상의 프로세스들을 실행하는 하드웨어 디바이스를 위해서 하드웨어-기반 마이크로-아키텍처 카운터 데이터를 비롯해 하드웨어-기반 마이크로-아키텍처 데이터를 획득하는 단계, 및 하드웨어 디바이스 상에서 실행하는 하나 이상의 프로세스들 중 적어도 하나가 악성 프로세스에 상응하는지 여부를 하드웨어-기반 마이크로-아키텍처 데이터에 적어도 부분적으로 기초하여 결정하는 단계를 포함하는 방법을 포함한다.
[0007] 방법의 실시예들은 아래의 특징들 중 하나 이상을 포함해서, 본 개시에 설명된 특징들 중 적어도 일부를 포함할 수 있다.
[0008] 하드웨어-기반 마이크로-아키텍처 데이터를 획득하는 단계는 다양한 시간 인스턴스들에서 하드웨어-기반 마이크로-아키텍처 데이터를 획득하는 단계를 포함할 수 있다.
[0009] 다양한 시간 인스턴스들에서 하드웨어-기반 마이크로-아키텍처 데이터를 획득하는 단계는 예를 들어 마이크로-아키텍처 데이터를 송신하기 위해 하드웨어 디바이스에 의해 개시되는 데이터 푸시 동작 및/또는 마이크로-아키텍처 데이터를 송신하기 위해 항바이러스 엔진에 의해 개시되는 데이터 풀 동작 중 하나 이상을 수행하는 단계를 포함할 수 있다.
[0010] 하드웨어-기반 마이크로-아키텍처 데이터를 획득하는 단계는 다수의 프로세서 코어들을 갖는 프로세서 디바이스 상에서의 하나 이상의 프로세스들의 실행으로부터 발생하는 다중-코어 하드웨어-기반 마이크로-아키텍처 데이터를 획득하는 단계, 및 다수의 프로세서 코어들 각각으로부터 획득되는 개별적인 하드웨어-기반 마이크로-아키텍처 데이터를 하나 이상의 프로세스들에 상관시키는 단계를 포함할 수 있다.
[0011] 하드웨어-기반 마이크로-아키텍처 데이터에 기초하여, 하나 이상의 프로세스들 중 적어도 하나가 악성 프로세스에 상응하는지 여부를 결정하는 단계는 하나 이상의 프로세스들 중 적어도 하나가 악성 프로세스에 상응하는지 여부를 결정하기 위해 하드웨어-기반 마이크로-아키텍처 데이터에 하나 이상의 머신-습즉 절차들을 적용하는 단계를 포함할 수 있다.
[0012] 하나 이상의 프로세스들 중 적어도 하나가 악성 프로세스에 상응하는지 여부를 결정하기 위해 하드웨어-기반 마이크로-아키텍처 데이터에 하나 이상의 머신-습득 절차들을 적용하는 단계는, 하나 이상의 악성 프로세스들과 관련된 하드웨어-기반 마이크로-아키텍처 데이터의 이전에 식별된 패턴들에 대해, 획득된 하드웨어-기반 마이크로-아키텍처 데이터를 매칭시키는 단계를 포함할 수 있다.
[0013] 방법은, 하나 이상의 악성 프로세스들과 관련된 하드웨어-기반 마이크로-아키텍처 데이터의 이전에 식별된 패턴들에 대한 업데이트들(updates)을 획득하는 단계를 더 포함할 수 있다.
[0014] 업데이트들을 획득하는 단계는, 하드웨어-기반 마이크로-아키텍처 데이터를 제공하는 하드웨어 디바이스와 통신하는 항바이러스 엔진에, 하나 이상의 악성 프로세스들과 관련된 하드웨어-기반 마이크로-아키텍처 데이터의 이전에 식별된 패턴들에 대한 암호화된 데이터를 다운로딩하는 단계, 항바이러스 엔진에서, 하나 이상의 악성 프로세스들과 관련된 하드웨어-기반 마이크로-아키텍처 데이터의 이전에 식별된 패턴들에 대해 다운로딩된 암호화된 데이터를 복호화하는 단계, 및 하드웨어-기반 마이크로-아키텍처 데이터의 이전에 식별된 패턴들의 가장 최근의 업데이트의 정정 넘버(revision number)를 나타내는, 항바이어스 엔진에 의해 유지되는 정정 카운터(revision counter)를 업데이트하는 단계를 포함할 수 있다.
[0015] 하나 이상의 머신 습득 절차들은, 예를 들어, k-최근접 이웃(k-nearest neighbor) 절차, 결정 트리 절차(decision tree procedure), 랜덤 포레스트 절차(random forest procedure), 인공 신경망 절차(artificial neural network procedure), 텐서 밀도 절차(tensor density procedure), 및/또는 히든 마코브 모델 절차(hidden Markov model procedure) 중에서 하나 이상을 포함할 수 있다.
[0016] 악성 프로세스는, 예를 들어, 멀웨어 프로세스(malware process), 및/또는 사이드-채널 어택 프로세스(side-channel attack process) 중에서 하나 이상을 포함할 수 있다.
[0017] 하드웨어-기반 마이크로-아키텍처 데이터는, 예를 들어, 프로세서 로드 밀도 데이터(processor load density data), 브랜치 예측 성능 데이터(branch prediction performance data), 및/또는 명령 캐시 미스들(instruction cache misses)에 관한 데이터 중에서 하나 이상을 포함할 수 있다.
[0018] 몇몇 변형들에서, 하나 이상의 프로세스들을 실행시키는 하드웨어 디바이스, 및 그러한 하드웨어 디바이스와 통신하는 항바이러스 엔진을 포함하는 시스템이 제공된다. 항바이러스 엔진은, 하나 이상의 프로세스들을 실행시키는 하드웨어 디바이스에 대해, 하드웨어-기반 마이크로-아키텍처 카운터 데이터를 포함하여, 하드웨어-기반 마이크로-아키텍처 데이터를 획득하고, 그리고 하드웨어 디바이스 상에서 실행하는 하나 이상의 프로세스들 중 적어도 하나가 악성 프로세스에 상응하는지 여부를, 하드웨어-기반 마이크로-아키텍처 데이터에 적어도 부분적으로 기초하여 결정하도록 구성된다.
[0019] 시스템의 실시예들은, 하기의 피처들 중 하나 이상 뿐만 아니라, 방법과 관련하여 상기 설명된 피쳐들 중 적어도 일부를 포함하여, 본 개시에서 설명되는 피쳐들 중 적어도 일부를 포함할 수 있다.
[0020] 하드웨어-기반 마이크로-아키텍처 데이터를 획득하도록 구성된 항바이어스 엔진은, 다양한 시간 인스턴스들에서 하드웨어-기반 마이크로-아키텍처 데이터를 획득하도록 구성될 수 있다.
[0021] 다양한 시간 인스턴스들에서 하드웨어-기반 마이크로-아키텍처 데이터를 획득하도록 구성된 항바이러스 엔진은, 예를 들어, 하드웨어 디바이스에 의해 개시되는 데이터 푸쉬(push) 동작, 및/또는 항바이러스 엔진에 의해 개시되는 데이터 풀(pull) 동작 중에서 하나 이상에 응답하여 마이크로-아키텍처 데이터를 수신하도록 구성될 수 있다.
[0022] 하드웨어-기반 마이크로-아키텍처 데이터에 기초하여, 하나 이상의 프로세스들 중 적어도 하나가 악성 프로세스에 상응하는지 여부를 결정하도록 구성된 항바이어스 엔진은, 하나 이상의 프로세스들 중 적어도 하나가 악성 프로세스에 상응하는지 여부를 결정하기 위해 하드웨어-기반 마이크로-아키텍처 데이터에 하나 이상의 머신-습득 절차들을 적용하도록 구성될 수 있다.
[0023] 하나 이상의 프로세스들 중 적어도 하나가 악성 프로세스에 상응하는지 여부를 결정하기 위해 하드웨어-기반 마이크로-아키텍처 데이터에 하나 이상의 머신-습득 절차들을 적용하도록 구성된 항바이어스 엔진은, 하나 이상의 악성 프로세스들과 관련된 하드웨어-기반 마이크로-아키텍처 데이터의 이전에 식별된 패턴들에 대해, 획득된 하드웨어-기반 마이크로-아키텍처 데이터를 매칭시키도록 구성될 수 있다.
[0024] 항바이러스 엔진은 또한, 하나 이상의 악성 프로세스들과 관련된 하드웨어-기반 마이크로-아키텍처 데이터의 이전에 식별된 패턴들에 대한 업데이트들을 획득하도록 구성될 수 있다.
[0025] 몇몇 변형들에서, 적어도 하나의 프로그램가능한 디바이스 상에서 실행가능한 명령들의 세트를 저장하는 컴퓨터 판독가능 매체들이 제공된다. 명령들의 세트들은, 실행될 때, 하나 이상의 프로세스들을 실행시키는 하드웨어 디바이스에 대해, 하드웨어-기반 마이크로-아키텍처 카운터 데이터를 포함하여, 하드웨어-기반 마이크로-아키텍처 데이터를 획득하는 것, 및 하드웨어 디바이스 상에서 실행하는 하나 이상의 프로세스들 중 적어도 하나가 악성 프로세스에 상응하는지 여부를, 하드웨어-기반 마이크로-아키텍처 데이터에 적어도 부분적으로 기초하여 결정하는 것을 포함하는 동작들을 야기한다.
[0026] 컴퓨터 판독가능한 매체들의 실시예들은, 시스템 및 방법과 관련하여 상기 설명된 피쳐들 중 적어도 일부를 포함하여, 본 개시에서 설명되는 피쳐들 중 적어도 일부를 포함할 수 있다.
[0027] 몇몇 변형들에서, 장치가 제공된다. 장치는, 하나 이상의 프로세스들을 실행시키는 하드웨어 디바이스에 대해, 하드웨어-기반 마이크로-아키텍처 카운터 데이터를 포함하여, 하드웨어-기반 마이크로-아키텍처 데이터를 획득하기 위한 수단, 및 하드웨어 디바이스 상에서 실행하는 하나 이상의 프로세스들 중 적어도 하나가 악성 프로세스에 상응하는지 여부를, 하드웨어-기반 마이크로-아키텍처 데이터에 적어도 부분적으로 기초하여 결정하기 위한 수단을 포함한다.
[0028] 장치의 실시예들은 방법, 시스템 및 컴퓨터 판독 가능 매체와 관련하여 위에서 설명된 특징들 중 적어도 일부를 포함하여, 본 개시에서 설명되는 특징들 중 적어도 일부를 포함할 수도 있다.
[0029] 달리 정의되지 않는 한, 본 명세서에서 사용되는 모든 기술 및 과학 용어들은 일반적으로 또는 종래에 이해되는 것과 동일한 의미를 갖는다. 본 명세서에서 사용되는 바와 같이, 단수 표현들은 그 표현의 문법상의 대상의 하나를 또는 하나보다 많은 것을(즉, 적어도 하나를) 의미한다. 예로서, "엘리먼트"는 하나의 엘리먼트 또는 하나보다 많은 엘리먼트를 의미한다. 본 명세서에서 사용되는 바와 같이 양, 시간 듀레이션 등과 같은 측정 가능한 값을 의미할 때, "약" 그리고/또는 "대략"은 명시된 값으로부터의 ±20% 또는 ±10%, ±5%, 또는 +0.1%의 편차들을 포괄하는 것으로 여겨지는데, 시스템들, 디바이스들, 회로들, 방법들, 및 본 명세서에서 설명되는 다른 구현들과 관련하여 이러한 편차들이 적절하기 때문이다. 본 명세서에서 사용되는 바와 같이 양, 시간 듀레이션, (주파수와 같은) 물리적 속성 등과 같은 측정 가능한 값을 의미할 때, "실질적으로"는 또한 명시된 값으로부터의 ±20% 또는 ±10%, ±5%, 또는 +0.1%의 편차들을 포괄하는 것으로 여겨지는데, 시스템들, 디바이스들, 회로들, 방법들, 및 본 명세서에서 설명되는 다른 구현들과 관련하여 이러한 편차들이 적절하기 때문이다.
[0030] 청구항들을 포함하여 본 명세서에서 사용되는 바와 같이, "~ 중 적어도 하나" 또는 "~ 중 하나 또는 그 초과"로 서문이 쓰여진 항목들의 리스트에 사용되는 "또는" 혹은 "및"은 기재된 항목들의 임의의 결합이 사용될 수 있음을 나타낸다. 예를 들어, "A, B 또는 C 중 적어도 하나"의 리스트는 A 또는 B 또는 C 또는 AB 또는 AC 또는 BC 및/또는 ABC(즉, A와 B와 C) 결합들 중 임의의 결합을 포함한다. 더욱이, A, B, 또는 C 항목들의 1회보다 많은 발생 또는 사용이 가능할 경우에, A, B, 및/또는 C의 여러 번의 사용들이 고려되는 결합들의 일부를 형성할 수도 있다. 예를 들어, "A, B, 또는 C 중 적어도 하나"의 리스트는 또한 AA, AAB, AAA, BB 등을 포함할 수도 있다.
[0031] 청구항들을 포함하여 본 명세서에서 사용되는 바와 같이, 달리 언급되지 않는 한, 기능, 동작 또는 특징이 항목 및/또는 조건"에 기초한다"는 서술은, 기능, 동작, 기능이 언급된 항목 및/또는 조건에 기초하고, 언급된 항목 및/또는 조건 외에도 하나 또는 그 초과의 항목들 및/또는 조건들에 기초할 수도 있음을 의미한다.
[0032] 첨부 도면들에서 그리고 아래 설명에 하나 또는 그 초과의 구현들의 세부사항들이 제시된다. 추가 특징들, 양상들 및 이점들이 설명, 도면들 및 청구항들로부터 명백해질 것이다.
[0033] 이들 및 다른 양상들은 하기의 도면을 참조하여 이제 상세히 설명될 것이다.
[0034] 도 1은 몇 개의 상이한 프로세스들에 대한 하드웨어-마이크로 아키택처 활동의 그래프들의 예시적인 예시들을 포함한다.
[0035] 도 2는 악성 프로세스들을 검출하기 위한 예시적인 시스템의 개략도이다.
[0036] 도 3은 악성 프로세스를 검출하기 위한 예시적인 프로시저의 흐름도이다.
[0037] 도 4는 AV 엔진이 구현되는 예시적인 시스템의 개략도이다.
[0038] 도 5는 예를 들어, 도 2 내지 도 4의 시스템들 및 프로시저들을 이용하여 테스트되는 안드로이드 멀웨어 패밀리들 및 그 검출 결과들의 테이블이다.
[0039] 도 6은 안드로이드 멀웨어에 의해 부분적으로 생성되는 마이크로-아키택처 데이터에 적용될 때 다양한 이진 분류자들의 정확도를 예시하는 그래프이다.
[0040] 도 7은 루트킷 프로세스들에 적용될 때 분류자들의 정확도를 도시하는 그래프이다.
[0041] 도 8a는 예시적인 보안 업데이트 페이로드의 개략도이다.
[0042] 도 8b는 보안 업데이트 페이로드를 수신하고 AV 엔진의 구성을 업데이트하기 위한 예시적인 프로시저의 흐름도이다.
[0043] 다양한 도면들에서 유사한 참조 심볼들은 유사한 엘리먼트들을 나타낸다.
[0044] 멀웨어와 같이 이례적인 프로그램 실행 프로세스들의 검출을 위한 시스템들, 디바이스들, 장치, 컴퓨터 프로그램 물건들 및 다른 구현들이 본 명세서에서 설명된다. 몇몇 구현들에서, (예를 들어, 하드웨어-기반 성능 카운터들로부터의) 하드웨어-기반 마이크로-아키택처 카운터 데이터를 포함하는 하드웨어-기반 마이크로-아키택처 데이터는 하드웨어 디바이스(예컨대, 프로세서/컴퓨팅-기반 디바이스)로부터 획득되고, 모니터링되는 하드웨어 디바이스 상에서 실행중인 하나 이상의 프로세스들로부터 악성 프로세스들을 식별하기 위해 머신-러닝 프로시저들(예를 들어, 분류 프로시저들)을 이용하여 (예를 들어, 마이크로-아키택처 데이터를 발생시킨 프로세스들을 실행하는 일시적인 거동을 분석하도록) 분석된다.
[0045] 일반적으로, 하드웨어-구현 제어기 디바이스(범용 프로세서, 애플리케이션-특정 제어기 등임) 상에서 실행중인 프로세스들은 페이즈 거동을 나타낸다. 특정한 기능성을 달성하도록 구성되는 프로세스(악성 또는 비-악성 프로세스임)는 잠시 동안 활동 A를 수행하고, 그 후 활동 B로, 이어서 활동 C로 스위칭할 수 있다. 이러한 프로세스는 활동들의 정확한 수행 순서를 변경할 수 있지만, 통상적으로 프로세스는 그의 특정한 기능성을 달성하기 위해 활동들(A, B, 및 C)을 수행할 필요가 있을 것이다. 특정한 프로세스에 대응하는 활동 페이즈들은 통상적으로 아키택처 및 마이크로-아키택처 이벤트의 패턴들에 대응한다. 부가적으로, 상이한 프로세스들(예를 들어, 상이한 기능성을 수행하도록 구성된 상이한 프로그램들)은 상이한 하드웨어-기반 마이크로-아키택처 거동을 발생시킨다. 예를 들어, 몇 개의 상이한 프로세스들에 대한 마이크로-아키택처 활동 그래프들의 예시적인 예시를 제공하는 도 1은, 상이한 프로세스들(도 1의 예에서 프로세스들은 SPEC 밴치마크 수트로부터의 것임)에 대한 마이크로-아키택처 거동은 상이한 경향이 있으며, 이는 상이한 하드웨어 마이크로-아키택처 트래이스들 또는 패턴들을 발생시킨다는 것을 도시한다. 예를 들어, 도 1에서 도시된 바와 같이, (그래프들(102 및 104)에서 예시된 바와 같이) 'bzip2' 프로세스 동안 모니터링되는 L1 배타적 히트들 및 실행된 브랜치 명령들에 대한 거동은 (그래프들(112 및 114)에서 예시되는) 'mcf' 프로세스에 대한 L1 배타적 히트들 및 실행된 브랜치 명령들에 대한 거동과 상이하며, 이는 결국, (그래프들(122 및 124)에서 예시되는) 'sjeng' 프로세스에 대한 L1 배타적 히트들 및 실행된 브랜치 명령들에 대한 거동과 상이하다. 마이크로-아키택처 거동을 모니터링한는 것은 특정한 빌트-인 카운터들에 의해 용이하게 될 수 있고 및/또는 모니터링되는 하드웨어 디바이스의 회로들 상의 특정한 지점에서의 이벤트의 발생을 측정/모니터링함으로써 달성될 수 있다는 것이 주의될 것이다.
[0046] 이에 따라, 하드웨어 디바이스(예를 들어, 하드웨어-기반 제어기 디바이스) 상에서 실행중인 프로세스들은 이러한 시간-변동 마이크로-아키택처 시그니처들/트래이스들에 기초하여 구분(및 이에 따라 식별)될 수 있다. 일반적으로, 특정한 프로세스의 정확한 구현에서 사소한 변동들은, 프로세스로부터 발생하는, 생성된 하드웨어-기반 마이크로-아키택처 트래이스들에 크게 영향을 주지 않고, 이에 따라, 프로세스를 식별하는 것 및/또는 (예를 들어, 머신 러닝 분류 프로시저들, 마이크로-아키택처 데이터를 분석하는 발견적 및 비-발견적 프로시저들 등을 통해) 프로세스가 악성지 아닌지를 결정하는 것은 여전히 수행될 수 있다. 이는 악성 프로세스(예를 들어, 멀웨어) 작가가 근본적인 구현(예를 들어, 소프트웨어 프로그램)을 어떻게 변경하는지에 무관하게, 프로세스의 시멘틱들은 크게 변경되지 않기 때문이다. 예를 들어, 멀웨어의 피스가 GPS 데이터를 수집하고 로그하도록 설계되는 경우, 그 작가가 코드를 아무리 재배열해도, 프로세스는 여전히 GPS 데이터를 수집하고 로그해야 할 것이다. 즉, 프로세스를 특징화하는 활동 페이즈는 일반적으로 프로세스의 특정한 구현에 무관하게 유지될 것이다. 부가적으로, 달성될 필요가 있는 특정한 작업은 크게 변형될 수 없는 다양한 서브-작업들을 포함할 것이다. 예를 들어, GPS 로그기는 항상 GPS를 예열하고, 신호들을 대기하고, 데이터를 디코딩하여 그것을 로그하고, 몇몇 미래 지점에, 데이터를 획득하고자 하는 악당 사용자(프라이버시 도둑)에 역으로 데이터를 탈출시켜야 할 것이다. 특정한 작업들 또는 프로세스들을 달성하도록 요구되는 이들 일반적으로 불변의 동작들의 결과로서, 악성 프로세스의 실행의 특정한 페이즈들은 상이한 구현 변동들에 대해 비교적 불변으로 유지된다.
[0047] 따라서, 하드웨어-기반 마이크로-아키택처 데이터(예를 들어, 하드웨어 성능 카운터들의 데이터), 예컨대, 프로세서 로드 밀도 데이터, 브랜치 예측 성능 데이터, 명령 캐시 미스들에 관한 데이터 등은 멀웨어 및/또는 다른 타입들의 악성 프로세스들을 식별하는데 이용될 수 있다. 실험 결과들(아래에서 보다 구체적으로 논의됨)은, 본 명세서에서 설명된 검출 기법들/프로시저들이 멀웨어 프로그램들(또는 다른 타입들의 악성 프로세스들)의 변동들에 대해 강건하게 되는 경향을 보여준다. 따라서, 프로세싱 플랫폼(예를 들어, 안드로이드 ARM 및 인텔 리눅스 플랫폼) 상에서 멀웨어의 패밀리 내의 변동들의 작은 세트를 실험한 이후, 그 패밀리 내의 다수의 변동들은 실질적으로 정확하게 검출될 수 있다. 또한, 본 명세서에서 설명되는 다양한 구현들은 악성 프로세스 검출기들, 예컨대, 본 명세서에서 설명되는 검출기들이 시스템 소프트웨어 아래에서 안전하게 실행되는 것을 가능케 하고, 이에 따라 턴 오프되는 위험을 감소시키거나, 또는 다 함께 방지한다.
[0048] 이에 따라, 몇몇 실시예들에서, 방법들, 시스템들, 디바이스들, 물건들, 및 다른 구현들이 개시되며, 이는 하나 이상의 프로세스들을 실행중인 하드웨어 디바이스에 대한, 예를 들어, 하드웨어-기반 마이크로-아키택처 카운터 데이터를 포함하는 하드웨어-기반 마이크로-아키택처 데이터를 획득하고, 하드웨어-기반 마이크로-아키택처 데이터에 적어도 부분적으로 기초하여 프로세서-기반 시스템 상에서 실행중인 하나 이상의 프로세스들 중 적어도 하나가 악성 프로세스에 대응하는지를 결정하는 것을 포함하는 방법을 포함한다. 식별/검출되는 악성 프로세스는 예를 들어, 멀웨어 프로세스 및/또는 사이드-채널 공격 프로세스 중 하나 이상을 포함할 수 있다.
[0049] 도 2를 참조하면, 악성 프로세스들을 검출 및/또는 해결하기 위한 예시적인 시스템(200)의 개략도가 도시된다. 시스템(200)은 몇몇 실시예들에서, 성능 카운터 샘플 유닛("샘플러"로서 또한 지칭됨)(212), 다양한 프로세스들(멀웨어 프로세스들을 포함함)에 대응하는 (성능 카운터 프로파일들 또는 시그니처들을 포함하는) 대표적 마이크로-아키택처 프로파일들 또는 시그니처들 및 샘플링 유닛(212)에 의해 수집되는 마이크로-아키택처 데이터를 저장/유지하는 성능 카운터 데이터베이스(214), 및 관찰/모니터링되는 하드웨어 디바이스 상에서 실행중인 하나 이상의 프로세스들이 적어도 하나의 악성 프로세스를 포함하는지를 결정하기 위해 수집된 하드웨어 마이크로-아키택처 데이터를 분석하도록 구성된 분류자(216)(몇몇 실시예들에서, 분류자(216)는 또한 이러한 악성 프로세스를 보다 구체적으로 식별하도록 구성될 수 있음)를 포함하는 안티바이러스(AV) 엔진(210)을 포함한다. AV 엔진(210)은 일반적으로 도 2에서 도시된 프로세서 디바이스들(220 및/또는 222)과 같은 하나 이상의 하드웨어 디바이스들과 통신한다.
[0050] 샘플링 유닛(212)은, 예를 들어, 하드웨어-기반 마이크로-아키텍처 성능 카운터 데이터를 포함하는 하드웨어-기반 마이크로-아키텍처 데이터를, 제어기 디바이스들과 같은 디바이스들, 예를 들어, 디바이스들(220 및 222)과 같은 프로세서 디바이스들, 또는 FPGA(field programmable gate array), ASIC(application specific integrated circuit), DSP 프로세서 등과 같은 모듈들을 이용하여 구현되는 제어기 디바이스들을 포함하는 임의의 다른 타입의 제어기 디바이스들을 포함할 수 있는 하나 이상의 하드웨어-디바이스들로부터 획득하도록 구성된다. 일반적으로, 하드웨어-기반 제어기 디바이스들은, 다양한 이벤트들, 예를 들어, 사이클들, 명령들, 캐시 손실들 등을 카운팅하도록 구성될 수 있는 하드웨어-관련 성능 카운터들을 포함한다. 일부 구현들에서, 이러한 성능 카운터들은 소프트웨어 성능 최적화를 보조하는데 이용된다. 예를 들어, Intel For x86 프로세서 디바이스는 네개(4)의 구성가능한 성능 카운터들을 구현하고, 듀얼 ARM Cortex-A9 코어들을 갖는 OMAP4460 프로세서는 여섯개(6)의 구성가능한 성능 카운터들을 포함한다. AV 엔진(210)은, 공지된 제어기 설계들로부터 마이크로-아키텍처 데이터(예를 들어, 성능 카운터 데이터)를 획득하도록 구성되고, 따라서 AV 엔진(210)은, AV 엔진에 의해 모니터링되고 있는 하드웨어에 특정한 공지된 성능 카운터들로부터 마이크로-아키텍처 데이터를 획득하도록 구성될 수 있다. 즉, 특정 아키텍쳐에 대응하는 성능 카운터들로부터 마이크로-아키텍처 데이터를 획득하기 위해, 모니터링될 하드웨어의 특정 아키텍쳐에 대한 지식이 요구될 수 있다. Intel x86 프로세서 아키텍쳐 상에서 사용되는 마이크로-아키텍처 카운터들의 예들은,
· 0x0440 -- L1D_CACHE_LD.E_STATE;
· 0x0324 -- L2_RQSTS.LOADS;
· 0x03b1 -- UOPS_EXECUTED.PORT (1 또는 2); 및
· 0x7f88 -- BR_INST_EXEC.ANY
를 포함한다.
[0051] 마이크로-아키텍처 데이터가 획득될 수 있는, ARM Cortex-A9 코어 아키텍쳐 상의 통상적 카운터들(특징 이벤트 넘버 할당들)의 예들은, 이벤트 넘버들,
· 0x06 - 아키텍쳐 식으로 실행되는 메모리-판독 명령(데이터를 명시적으로 판독하는 모든 명령에 대해 카운터가 증분함);
· 0x07 - 아키텍쳐 식으로 실행되는 메모리-기록 명령(카운터가, 데이터를 명시적으로 기록한 모든 명령에 대해 카운터가 증분함);
· 0x0C - 예외를 제외하고, 아키텍쳐 식으로 실행되는 PC의 소프트웨어 변화(그의 조건 코드를 실패한 조건부 명령에 대해 카운터가 증분하지 않음);
· 0x0D - 아키텍쳐 식으로 실행된 즉시 브랜치(아키텍쳐 식으로 실행되는 모든 즉시 브랜치 명령들에 대해 카운터가 증분함);
· 0x0F - 아키텍쳐 식으로 실행되는 미할당된 액세스(미할당된 어드레스에 대한 액세스인 각각의 명령을 카운터가 카운팅함); 및
· 0x12 - 프로세서의 브랜치 예측 자원들에 의해 예측될 수 있는 프로그램 플로우에서 브랜치 또는 다른 변화를 카운터가 카운팅함
을 포함한다.
[0052] ARM Cortex-A9 코어 아키텍쳐 상에서 구현될 수 있는 마이크로-아키텍처 카운터들에 대한 추가적인 정보는, 예를 들어, "ARM® Architecture Reference Manual, Arm®v7-A and ARM®v7-R edition, Errata markup"에서 제공되고, 상기 문헌의 내용은 그 전체가 인용에 의해 본원에 통합된다.
[0053] 일부 실시예들에서, 샘플링 유닛(212)은, 데이터 푸쉬 절차들을 통해 및/또는 데이터 풀 절차들을 통해 모니터링되는 하드웨어의 카운터들로부터 마이크로-아키텍처 데이터(마이크로-아키텍쳐 성능 카운터 데이터를 포함함)를 획득하도록 구성될 수 있다. 예를 들어, 데이터를 풀링하는 경우, AV 엔진(210)은 데이터 수집을 개시하여, 예를 들어, 카운터들의 실행을 인터럽팅함으로써 그리고/또는 인터럽트 없이 카운터들에 질의함으로써, 하드웨어 타겟들(예를 들어, 모니터링되고 있는 하드웨어에서 구현되는 특정 하드웨어 성능 카운터들)이 액세스되게 한다. 일부 실시예들에서, AV 엔진(210)은, 예를 들어, 샘플링 모듈(212)을 통해, 매 N 사이클들마다 한번 하드웨어를 인터럽트하도록 구성될 수 있거나(여기서, N은 미리 결정된 상수일 수 있거나, 랜덤 또는 의사랜덤 발생기에 기초하는 가변적 수일 수 있음), 다양한 성능/이벤트 카운터들 뿐만 아니라 다른 값들(예를 들어, 현재 실행하는 프로세스의 PID)을 샘플링할 수 있다. 인터럽트-기반 절차를 이용하여 샘플링 동작들을 수행하는 경우, 샘플링 유닛(212)은, 제어 신호들을 전송하거나 그렇지 않으면 실행 하드웨어가 인터럽트되도록 구성될 수 있고, 성능 카운터들 및/또는 다른 저장 하드웨어에 액세스하고 그리고 AV 엔진(210)에 의한 추가적인 프로세싱을 위해 인터럽트된 하드웨어의 카운터들 상에 저장된 값들을 리트리브하도록 구성될 수 있다. 일부 실시예들에서, 하드웨어 및/또는 카운터들의 인터럽트 시에, 인터럽트된 하드웨어는 먼저, 다양한 자신의 성능 카운터들에 의해 유지되는 데이터를 중앙 저장 위치에(예를 들어, 상태 스택에) 저장할 수 있고, 그 다음, 중앙 저장 위치에 저장된 데이터는 샘플링 유닛(212)에 의해 액세스 및 리트리브될 수 있다. 데이터-푸쉬 샘플링 모드를 구현하는 경우, 성능 카운터들(및/또는 모니터링되고 있는 하드웨어 상의 다른 샘플링 포인트들)에 의해 유지되는 데이터는, 모니터링되고 있는 하드웨어의 실행 또는 그의 성능 카운터를 인터럽팅하거나 또는 하지 않고, 정기적 인터벌 또는 부정기적 인터벌로 AV 엔진(210)에 (예를 들어, 샘플링 유닛(212)에) 통신되도록 구성될 수 있다. 따라서, 이러한 실시예들에서, 모니터링되는 하드웨어 디바이스는 마이크로-아키텍처 데이터를 AV 엔진(210)에 전송하는 것을 개시하도록 구성된다. 예를 들어, 데이터 푸쉬 모드에서, 모니터링되는 하드웨어 디바이스는, 요청을 (예를 들어, 샘플링 유닛(212)으로부터) 수신할 필요없이 마이크로-아키텍처 데이터를 전송하도록 구성될 수 있다.
[0054] 따라서, AV 엔진(210)의 샘플링 유닛(212)에 의해 구현되는 샘플링 동작들은, 모니터링되고 있는 하드웨어 상에서 실행되는 하나 이상의 프로세스들에 대해 모니터링되는 다양한 하드웨어 성능 카운터들 (및/또는 다른 입력 포인트들)의 출력에 대한 시간-기반 데이터를 획득한다. 주목되는 바와 같이, 마이크로-아키텍처 데이터에 추가하여, 프로세스의 ID(예를 들어, PID)와 같은 정보가 또한 레코딩되어, 마이크로-아키텍처 데이터를 프로세스와 연관/상관시키는 것을 가능하게 하고, 이러한 프로세스의 실행은 획득된 마이크로-아키텍처 데이터를 초래한다. 도한 프로세스들의 ID들을 레코딩하고 이들을 획득된 마이크로-아키텍처 데이터와 연관/상관시킴으로써, 본 명세서에서 설명되는 구현들은, 상이한 하드웨어 디바이스들에 걸친 프로세스의 실행으로부터 도출되는 마이크로-아키텍처 데이터를 추적할 수 있다. 예를 들어, 모니터링되고 있는 시스템이 다수의 프로세서 코어들(각각 자기 자신의 성능 카운터들의 세트를 가짐)을 포함하고, 프로세스들/스레드들이 보류되고 다른 코어들 상에서 실행을 재개할 수 있는 상황들에서, 획득된 마이크로-아키텍처 데이터와 함께 프로세스들의 PID들을 유지하는 것은, 프로세스들이 다른 하드웨어 디바이스들로 실행을 스위칭할 때 프로세스들의 동작을 추적하는 것을 가능하게 할 수 있다.
[0055] 몇몇 실시예들에서, 샘플링 유닛(212)은, 하드웨어 디바이스가 모니터링되고 있을 시에 적어도 부분적으로 실현될 수도 있다. 예를 들어, 샘플링 유닛(212)은, FPGA, ASIC 등과 같은 특수화된 하드웨어-기반 제어기 상의 하드웨어 실현으로서 구현될 수도 있다. 몇몇 실시예들에서, 마이크로-아키텍처 데이터베이스(212)은, 머신 상에서 실행하고 있는 악성 프로세스들을 검출하기 위하여 AV 엔진(210)에 의해 모니터링되고 있는 프로세서-기반 디바이스를 포함하는 머신 상에서 실행하는 소프트웨어 구현으로서 적어도 부분적으로 실현될 수도 있다. 예를 들어, 프로세서-디바이스의 다수의 범용 코어들 중 하나는, AV 엔진의 적어도 일부의 소프트웨어 실현을 실행하도록 할당될 수도 있다.
[0056] 언급된 바와 같이, AV 엔진(210)은 또한, 모니터링/관측되고 있는 하드웨어로부터 획득된 마이크로-아키텍처 데이터 뿐만 아니라, 비-악성에 대한 마이크로-아키텍처 데이터(예를 들어, 시간-기반 데이터)를 포함하고/프로세스를 시작하는 트레이닝 데이터 및 공지된 프로세스들의 마이크로-아키텍처 시그너처들/트레이스들(예를 들어, 다양한 마이크로-아키텍처 이벤트들 또는 성능 카운터들에 대한 시계열 트레이스들)을 대표하는 데이터를 포함하는, 원격 노드들(예를 들어, 서버들)로부터 획득된 미리결정된 데이터 세트들을 포함한다. 아래에서 보다 상세히 설명되는 바와 같이, 몇몇 실시예들에서, AV 엔진(210)은, 원격 노드 마이크로-아키텍처 시그너처 데이터로부터의 수신에 의해 모니터링되는 새로운 또는 기존 악성 프로세스들의 거동을 정의하는 마이크로-아키텍처 시그너처 데이터를 위해 새로운 또는 변형된 하드웨어 성능 데이터(예를 들어, 하드웨어 성능 카운터 데이터)를 포함하도록 (규칙적인 또는 불규칙적인 간격들로) 주기적으로 업데이트된다.
[0057] 몇몇 실시예들에서, 데이터베이스(214)는, 하드웨어 디바이스가 모니터링되고 있을 시에 적어도 부분적으로 실현될 수도 있다. 몇몇 실시예들에서, 마이크로-아키텍처 데이터베이스(214)는, AV 엔진(210)에 의해 모니터링되고 있는 프로세서-기반 디바이스를 포함하는 머신 상에서 실행하는 소프트웨어 구현으로서 적어도 부분적으로 실현(예를 들어, 데이터베이스(214)의 소프트웨어 실현을 실행하기 위해 프로세서-디바이스의 다수의 범용 코어들 중 하나를 할당)될 수도 있다.
[0058] 예를 들어 샘플링 유닛(212)을 이용하는 마이크로-아키텍처 데이터(마이크로-아키텍처 성능 카운터 데이터를 포함)의 수집 및/또는 예를 들어 데이터 베이스(214)를 이용하는 수집된 데이터의 저장은 악성 프로세스들(예를 들어, 멀웨어) 및 비-악성 프로세스들의 실행으로부터 야기되는 마이크로-아키텍처 데이터를 포함하는 비교적 다량의 라벨링된 데이터를 제공한다. 따라서, 일부 실시예들에서, 분류기(216)(도한, 기계-학습 엔진으로도 지칭됨)는, 적어도 하나의 악성 프로세스를 식별하고 그리고/또는 마이크로-아키텍처 데이터가 수집된 것과 관련한 프로세스들 적어도 하나가 악성 프로세스에 대응하는지(예를 들어, 잠재적으로 수집된 마이크로-아키텍처 데이터 트래이스들 중 일부가 적어도 하나의 악성 프로세스의 실행으로부터 야기되었는지)를 결정하도록 구성된다.
[0059] 몇몇 구현들에서, AV 엔진(210)의 분류기(216)와 같은 분류기는, 트레이닝 입력 데이터 및 입력 데이터의 대응하는 출력을 반복적으로 분석하고(예를 들어, 입력 데이터에 대응하는 프로세스의 식별 및/또는 프로세스 타입의 결정), 모니터링되고 있는 하드웨어로부터 수집된 후속 마이크로-아키텍처 입력들이 분류기의 습득된 거동과 일치하는 출력들을 생성하게 하는 기능들 또는 모델들을 도출하도록 구성될 수도 있다. 그러한 분류기는 비-악성 프로세스들로부터의 악성 프로세스들을 식별하도록 구성되어야 한다.
[0060] 일반적으로, 머신 습득 분류기들은, 데이터 아이템들을 조사하며, 각각의 데이터 아이템이 N개의 그룹들(클래스들) 중 어느 것에 속하는지를 결정하도록 구성된다. 분류 절차들은 확률들, 예를 들어, 데이터 아이템이 각각의 클래스에 속하는 우도들의 벡터를 생성할 수 있다. 악성 프로세스 검출의 경우, 2개의 분류가 정의될 수 있다: 악성 프로세스(예를 들어, 멀웨어) 및 비-악성 프로세스(예를 들어, 비-멀웨어). 결과적으로, 분류기들로부터의 출력은, 악성인 데이터 아이템의 우도를 표현하는 확률들을 포함할 수도 있다. 특정한 분류기가 (AV 엔진(210)에 의해 수집된 시계열 마이크로-아키텍처 데이터와 같은) 시계열 데이터를 프로세싱/분류하도록 적응되지 않는 상황들에서, 이러한 어려움은, 상이한 시간 인스턴스들에서 발생했던 (예를 들어, 하드웨어의 특정한 위치, 예컨대 특정한 카운터에서 발생한 하드웨어 성능 이벤트들에 대응하는) 입력 데이터를 분류기로의 입력으로서 제시된 특성들의 단일 벡터로 배열함으로써 극복될 수 있다. 이러한 접근법 하에서, 시간-기반 데이터는 데이터의 벡터로 통합될 수도 있으며, 여기서, 각각의 벡터 포인트는, 상이한 시간 인스턴스에서 발생했던 특정한 카운터 또는 위치에 대한 마이크로-아키텍처 데이터 샘플에 대응한다. 부가적으로 및/또는 대안적으로, 시간-의존적인 데이터의 시퀀스들을 핸들링하도록 일반적으로 구성되지 않는 분류기들을 사용하여 시간-의존적인 데이터(마이크로-아키텍처 데이터)를 프로세싱하기 위한 다른 접근법은, 상이한 시간 인스턴스들에서 특정한 프로세스에 대해 취해진 분류기 데이터 포인트들에 대해 별개로 프로세싱하며, 전체 프로세스를 분류하기 위해 분류기의 결과들을 어그리게이팅하는 것이다. 몇몇 실시예들에서, 상이한 어그리게이션 동작들은 분류기의 결과들에 적용될 수도 있으며, 최상의 분류 결과들을 산출하기 위하여 (예를 들어, 테스팅 및 실험을 통해) 결정된 어그리게이션 동작은 장래의 어그리게이션 동작들을 수행하기 위해 사용될 수도 있다. 예를 들어, 사용될 수도 있는 하나의 어그리게이션 동작은 간단한 평균 동작이다. 사용될 수도 있는 다른 어그리게이션 동작은, 예를 들어, 다양한 이용가능한 클래스들 각각에 속할 가능성이 동등하게 있는 데이터 포인트들이 제로 가중치를 부여받는 반면, 높은 확률들을 갖는 데이터 포인트들이 비교적 큰 가중치들을 부여받는 가중된 평균 동작이다.
[0061] 실행중인 프로세스들에 대응하는 수집된 마이크로-아키텍처 데이터 포인트들을 프로세싱/분석하는데 사용될 수도 있는 분류기들의 타입들은 2개의 메인 분류기 카테고리들, 즉 선형 분류기들 및 비-선형 분류기들에 속한다. 선형 분류 절차들은, 초평면에 의해 n-차원 데이터 포인트들을 분리시키기를 시도하도록 구성되며, 즉 평면의 일 측 상의 포인트들은 클래스 X의 포인트들이고, 다른 측 상의 포인트들은 클래스 Y의 포인트들이다. 비-선형 분류기들은 일반적으로, 이러한 타입의 선형 분리에 의존하지 않는다. 따라서, 분류를 도출하기 위한 임의의 동작이 적용될 수도 있다.
[0062] 본원에 설명된 구현들 중 일부에서, 데이터(예를 들어, 마이크로-아키텍처 데이터)가 적어도 하나의 실행 프로세스가 악성인지를 결정하는데 이용되었거나, 악성 프로세스를 식별하는데 이용되었다는 사실을 반영하기 위해 데이터 프로세싱/분석 동작들을 수행하는데 이용되는 비-선형 분류기들이 반드시 선형으로 분리될 필요가 없을 수도 있다. (마이크로-아키텍처 시간-기반 데이터를 수집한) 특정 프로세스가 악성인지 또는 비악성인지를 결정하도록 구성된 분류기들의 일부 예들에서, 다음을 포함하는 AV 엔진(210)의 구현들이 이용될 수 있다.
● KNN(K-Nearest Neighbors) - KNN 분류기는, 트레이닝 데이터 포인트들을 그들의 라벨들과 함께, k-차원 공간에서 포인트들/데이터를 조직화하기 위해 사용되는 k-차원 트리("k-d-트리"로 지칭됨)와 같은 공간 데이터 구조에 삽입함으로써 트레이닝된다. 데이터 포인트를 분류하기 위해, (유클리드 공간에서) 그 포인트의 k개의 가장 인접한 이웃들은 공간 데이터 구조를 사용하여 발견된다. 데이터 포인트가 특정한 클래스를 갖는 확률은, 얼마나 많은 데이터 포인트의 이웃들이 그 클래스를 갖는지 및 그들이 서로 얼마나 떨어져 있는지에 의해 결정된다.
● 결정 트리 - 데이터 포인트들을 분류하기 위한 다른 방식은 결정 트리로 지칭되는 비-공간 트리를 사용하는 것이다. 이러한 트리는, 특정한 차원 상의 그룹들로 트레이닝 데이터를 귀납적으로 분할함으로써 구축된다. 차원 및 분할된 포인트들은, 각각의 그룹에 대한 엔트로피를 최소화시키도록 선택된다. 이들 결정들은 또한, 몇몇 랜덤화를 통합할 수 있어서, 트리의 품질을 감소시키지만, 오버트레이닝을 방지하는 것을 돕는다. 몇몇 최소 엔트로피가 충족되거나, 또는 최대 깊이에 히트(hit)된 이후, 분기가 종료하며, 그의 그룹의 라벨들의 믹스를 그에 저장한다(예를 들어, 30% 멀웨어 대 70% 비멀웨어). 새로운 데이터 포인트를 분류하기 위해, 결정 트리는, 새로운 포인트의 그룹(리프 노드(leaf node))을 발견하기 위해 트리를 횡단하고, 저장된 믹스를 리턴한다.
● 랜덤 포레스트 - 분류기의 정확도를 증가시키기 위한 일 방식은, 많은 상이한 분류기들을 사용하고 결과들을 결합시키는 것이다. 랜덤 포레스트에서, 다수의 결정 트리들은 몇몇 랜덤화를 사용하여 구축된다. 새로운 데이터 포인트를 분류할 경우, 포레스트 내의 모든 트리들의 결과들은 동등하게 가중되어, 결과를 생성한다.
● ANN(Artificial Neural Network) - 신경 네트워크 머신은, 다양한 가중치들을 이용하여 서로 접속되는 뉴런들을 포함함으로써 생물학적 두뇌들을 모델링하기를 시도한다. 접속들 사이의 가중값들은 변경될 수 있으며, 따라서, 신경 네트워크가 그것이 수신하는 트레이닝 데이터에 응답하여 적응(또는 습득)할 수 있게 한다. 피드-포워드 신경 넷들에서, 입력 값들은 하나의 에지에서 공급되며, 무사이클(cycle-less) 네트워크를 통해 출력 노드들로 전파된다. 몇몇 실시예들에서, 각각의 차원에 대해 하나의 입력 뉴런, 및 2개의 출력 노드들(예를 들어, 하나는 멀웨어가 구동중인 확률을 표시하고, 하나는 비멀웨어를 실행할 확률을 표시함)이 정의된다.
● 텐서 밀도 - 이러한 분류기는 입력 공간을 상이한 버켓들로 분리화(discretize)시킨다. 각각의 버켓은 트레이닝 데이터 세트에 클래스들의 믹스를 포함한다. 데이터 포인트는, 그의 빈을 발견하고 저장된 믹스를 리턴함으로써 분류된다. 일반적으로, 텐서 밀도 분류기는 O(1) 룩업 시간을 사용하며, 따라서, 시간-효율적인 것으로 고려된다.
[0063] 일부 실시예들에서, 이용될 수 있는 다른 분류기들은 또한 분류 기능들 또는 일반적 분류 기능들을 발생시키도록 구성된 지지 벡터 머신을 포함할 수 있다. 몇몇 실시예들에서, 분류기들은 최적합 곡선들, 히든 Markov 모델에 기초하는 분류 프로시저 및/또는 다른 타입들의 기계 학습 기법들을 유도하기 위해 회귀(regression) 기법들을 이용하여 구현될 수 있다. 히든 Markov 모델-기반 분류기가 이용되는 실시예들에서, 프로세싱되는 데이터(예를 들어, 마이크로-아키텍처 데이터)의 패턴들은 자기-유사성 분석을 이용하여 식별될 수 있고, 패턴들의 트랜지션들은 데이터가 분류되는 히든 Markov 모델을 구축하기 위해 이용될 수 있다. 부가적으로, 단지 감소된 컴퓨테이셔널 요건들을 갖는 데이터를 정확하게 분류할 수 있는 커널 방법들과 같은 선형 분류 기법들이 또한 이용될 수 있다.
[0064] 모니터링될 하드웨어-기반 디바이스로부터 수집된 마이크로-아키텍처 데이터에 기초한 의심 악성 프로세스를 식별하기 위해서 분류기들을 트레이닝하기 위해, 일부 구현들에서, 본원에 설명된 프로시저들을 수행하는 것과 관련하여 하드웨어 디바이스의 하드웨어 구성과 동일하거나 유사한 원격 시스템은 공지된 악성 프로세스(예를 들어, 일부 제 3 자에 의해 추적되고 그리고/또는 발견된 멀웨어)의 변형들을 실행할 수 있다. (예를 들어, 도 1에 예시된 것들과 유사한 그래프들을 발생시키는데 사용되는 데이터와 유사할 수 있는 형태로 표현되는) 특정 멀웨어 변형들의 실행으로부터 야기되는 마이크로-아키텍처 데이터가 수집된다. 주기적으로, 원격 시스템에 의해 포착된 마이크로-아키텍처 데이터를 표현하는 데이터는 AV 엔진(210)으로 통신되고 데이터베이스(214)에 저장될 수 있다. 원격 시스템은 또한, 공지된 비-악성 프로세스들에 대응하는 마이크로-아키텍처 데이터를 제공한다. 원격 시스템에 의해 통신되는 예시적인 마이크로-아키텍처 데이터는 하나 또는 그 초과의 분류기들(216a-n) 중 적어도 일부에 대해 마이크로-아키텍처 데이터가 생성되게 하는 프로세스들의 타입(예를 들어, 악성 또는 비악성) 및/또는 각각의 아이덴티티들 및 마이크로-아키텍처 데이터를 제공함으로써 분류기(216)를 트레이닝하는데 이용될 수 있다. 트레이닝 데이터는, 분류기들(216a-n)이 분류기들에 유사한 마이크로-아키텍처 데이터(모니터링될 하드웨어 디바이스로부터 수집됨)를 제시할 때, 트레이닝 데이터의 프로세스 타입들/아이덴티티들과 일치하는 출력이 생성될 수 있게, 구성되게 할 것이다.
[0065] 기술된 바와 같이, 도 2의 AV 엔진(210)과 같은 AV 엔진은 전적으로 하드웨어(예를 들어, 모니터링될 하드웨어 디바이스 상의 모듈로서 구현됨)로, 전적으로 소프트웨어로(예를 들어, 모니터링될 하드웨어를 포함하는 컴퓨팅 시스템 상에서 실행되는 멀티-모듈 애플리케이션으로서), 또는 하나의 컴포넌트(예를 들어, 도 2의 샘플링 유닛(212)이 하드웨어로 구현되는 하드웨어-소프트웨어 결합 구현으로서 실현될 수 있지만, 데이터베이스 및 분류기 유닛들(214 및 216)은, 소프트웨어를 통해 구현된다. 소프트웨어에 의해 적어도 부분적으로 구현되는 경우, 소프트웨어 컴포넌트들은 데이터(예를 들어, 샘플링 유닛에 의해 획득된 마이크로-아키텍처 데이터)를 수신하기 위해 그리고/또는 데이터 또는 제어 신호들을 하드웨어-기반 컴포넌트로 송신하기 위해 (예를 들어, 인터페이싱 프로시저를 이용하여) 하드웨어 컴포넌트와 통신하도록 구성될 수 있다.
[0066] 마이크로-아키텍처 데이터를 수집 및 저장하고, 악성 동작이 발생하고 있는지 또는 아닌지를 결정하기 위해(그리고 아마도, 더욱 구체적으로는, 악성 프로세스(들)를 식별하기 위해), 수집된 마이크로-아키텍처 데이터를 분석하도록 구성된 것 외에, AV 엔진(210)은 또한, 위협이 검출되는 경우 특정 액션들을 취하고(예컨대, 하드웨어를 셧다운하거나 또는 악성 동작을 레포팅함) 악성 프로세스 정의들 및 마이크로-아키텍처 시그너처들을 이용하여 AV 엔진을 업데이트하도록 구성된다. 더욱 구체적으로, AV 엔진(210)과 같은 AV 엔진에 의해 구현될 수 있는 폭넓게 다양한 보안 정책들이 존재한다. 몇몇 실현 가능한 보안 정책들은 하기를 포함한다:
· 제1 단계 멀웨어 예측기로서 AV 엔진을 사용한다 ― AV 엔진이 프로그램이 악성인 것으로 의심할 때, AV 엔진은 이 프로그램에 대해 더욱 정교한 동작 분석을 실행할 수 있다. 하드웨어 분석은 '고속으로' 일어나고, 시그너처들을 생성하기 위해 악성 프로세스 애널리스트들에 의해 사용되는 동작 분석보다 상당히 더 빠르다. 이러한 프리필터링은 '굿웨어'에 대한 값비싼 동작 프로세싱을 회피할 수 있다.
· 민감한 계산을 마이그레이팅한다 ― 공공 클라우드들과 같은 멀티-테넌트 셋팅들에서, 시스템 상의 액티브 스레드가 (예컨대, 사이드-채널을 통해) 공격당하고 있다고 AV 엔진이 의심할 때, AV 엔진은 민감한 계산을 이동시킬 수 있다. 몇몇 시나리오들에서는, AV 시스템이 의심스러운 프로세스를 단순히 킬링하는 것이 수용 가능할 수 있다.
· 포렌식스에 대해 AV 엔진을 사용한다 ― 포렌식스에 대한 데이터를 로깅하는 것은 값비싼데, 그 이유는 그것이 의심스러운 프로세스와 환경 사이의 모든 상호작용들을 로깅하는 것을 종종 수반하기 때문이다. 이들 오버헤드들을 경감시키기 위해, 프로세스가 악성이라고 AV 엔진이 의심할 때에만, 포렌식스에 대해 필요한 정보가 로깅될 수 있다.
· 굿웨어를 스크리닝한다 ― 몇몇 실시예들에서, 비-악성 프로세스들을 식별하기 위해 그리고 그러한 프로세스들이 실제 비-악성임을 입증하기 위해, 수집되는 하드웨어-기반 마이크로-아키텍처 데이터가 사용될 수 있다. 예컨대, 몇몇 구현들에서, AV 엔진에 의해 비-악성으로서 식별되는 프로세스들의 하부 코드 샘플들은, 예컨대, 분석되는 프로세스들에 대응하는 알려진 코드 샘플들(이전에 획득되었음)과 코드 샘플을 비교함으로써, 분석될 수 있다. 실행중인 프로세스들의 검사되는 하부 코드가 이전에 획득된 알려진 코드 리스팅에 매칭하는 경우, 실행중인 프로세스는 비-악성인 것으로서 확인된다.
[0067] 따라서, AV 엔진의 출력에 기초하여 취해질 수 있는 넓은 스펙트럼의 액션들이 존재한다. AV 엔진을 구현하기 위해 본원에서 설명되는 시스템들 및 프로시저들은 위에서 설명된 보안 정책들을 구현하기에 충분히 플렉서블해야 한다. 개념적으로, 이는, 몇몇 실시예들에서, AV 엔진이 임의의 주어진 코어 상의 계산을 인터럽팅할 수 있어야 하고 그 머신 상에서 정책 페이로드를 실행시킬 수 있어야 함을 의미한다. 이는, AV 엔진이 마스크 불가능 프로세서간 인터럽트를 발행할 수 있을 것을 요구한다. 선택적으로, 몇몇 실시예들에서, AV 엔진은, 시스템이 다른 공존하는 민감한 계산을 마이그레이팅하기를 시작할 수 있도록 자신이 의심스러운 프로세스를 검출했음을 OS 또는 감독 소프트웨어에 통신할 수 있다. 몇몇 실시예들에서, AV 엔진은 또한, 최고 특권 모드에서 실행되도록 구성될 수 있다.
[0068] 부가하여, 주목된 바와 같이, 몇몇 실시예들에서, AV 엔진(210)은, 새로운 멀웨어 시그너처들이 이용 가능하게 될 때 이 새로운 멀웨어 시그너처들로 업데이트되거나 또는 새로운 분류 기술들이 구현될 때 업데이트되도록 구성될 수 있다. AV 업데이트는, 어태커들이 AV를 손상시키지 못하게 방지하는 방식으로 구현되어야 한다. 예컨대, 사기꾼 사용자는 지속적인 고-특권 루트킷을 생성하기 위해 AV 엔진을 뮤팅하거나 또는 AV 엔진을 전복시킬 수 없어야 한다.
[0069] 일반적으로, 보안 업데이트들은, 예컨대, 분류기, 보안 정책들을 특정하는 액션 프로그램, 어느 성능 특징들이 어떤 분류기들과 함께 사용되어야 하는지를 결정하는 구성 파일, 악성 및/또는 비-악성 프로세스들에 대한 마이크로-아키텍처 데이터, 및/또는 업데이트 개정 번호 중 하나 또는 그 초과를 포함할 수 있다. 이 데이터는, 하드웨어 셋팅에 대해 적응된 기술들/프로시저들을 사용하여 안전하게 AV 엔진에 전달될 수 있다. 페이로드에 적용되는 다양한 인크립션 레벨들을 비롯해 시스템 보안 벤더로부터 전송될 예시적 보안 업데이트 페이로드(800)의 개략도가 도 8a에서 도시된다. 보안 업데이트 페이로드(예컨대, 인크립팅된 페이로드(800))를 수신하고 AV 엔진의 구성을 업데이트하기 위한, 일반적으로 AV 엔진에 의해 수행되는 예시적 프로시저(850)가 도 8b에서 도시된다. 도면에 도시된 바와 같이, 프로시저(850)는 페이로드를 수신(855)하는 것, 그리고 하드웨어(이 하드웨어 상에 AV 엔진이 구현됨)에 임베딩된 "검증" 키를 이용하여 페이로드를 디크립팅(860)하는 것을 포함한다. 이후, "검증"의 결과적 해시가 하드웨어에 임베딩된 검증 키의 예상되는 해시에 매칭하는지의 여부가 결정(865)된다. 매칭하지 않는다면, 프로시저(850)는 870에서 종료된다. "검증" 키의 해시의 매치가 존재하는 경우, SHA-2 해시 함수를 이용하여 페이로드의 무결성이 결정(875)된다. 무결성이 확인되는 경우, AES 키를 이용하여 페이로드가 디크립팅(885)되고(그렇지 않으면, 프로시저는 880에서 종료함), 그리고 890에서, 페이로드에서 표시된 업데이트 개정 번호가 하드웨어 디바이스에서 유지되는 개정 번호 표시자와 일치한다는 결정 시, 페이로드의 업데이트들이 895에서 적용된다.
[0070] 프로시저(850)의 동작(890)과 관련하여 표시된 바와 같이, 몇몇 실시예들에서, AV 엔진이 적어도 부분적으로 구현된 하드웨어 디바이스는 최종 업데이트의 개정 번호를 유지하고, 그 개정 번호는 매 업데이트마다 증가된다. 이는, 어태커가 AV 시스템을 롤백(rollback)하지 못하게 방지/금지하기 위한 것인데, 이 롤백은 시스템이 새로운 악성 프로세스들을 발견하지 못하게 방지하기 위해 어태커가 할 수 있는 것이다. AV 엔진은, 하드웨어 카운터에서 유지되는 개정 번호보다 더 오래된 개정 번호를 갖는 업데이트들을 거부함으로써 이 보호를 제공할 수 있다.
[0071] 이제 도 3을 참조하면, 악성 프로세스들을 검출하기 위한 예시적 프로시저(300)의 흐름도가 도시된다. 프로시저(300)는, 하드웨어-기반 마이크로-아키텍처 카운터 데이터를 비롯해, 하나 또는 그 초과의 프로세스들을 실행하는 하드웨어 디바이스에 대한 하드웨어-기반 마이크로-아키텍처 데이터를 획득(310)하는 것을 포함한다. 주목된 바와 같이, 몇몇 실시예들에서, 마이크로-아키텍처 데이터를 획득하는 것은 샘플링 유닛에 의해 수행될 수 있고, 이 샘플링 유닛은, 모니터링될 하드웨어-디바이스(즉, 하나 또는 그 초과의 프로세스들을 실행하는 하드웨어 디바이스 ―이 하드웨어 디바이스에 대한 마이크로-아키텍처 데이터가 수집될 것임―)의 일부로서 적어도 부분적으로 하드웨어로 구현될 수 있다. 몇몇 실시예들에서, 마이크로-아키텍처 데이터는 규칙적 또는 불규칙적 간격들로(예컨대, 의사랜덤 프로세스에 의해 결정되는 길이의 간격들로) 주기적으로 획득될 수 있고, 그리고 (예컨대, 관찰되고 있는 하드웨어 디바이스를 인터럽션하거나 또는 이 인터럽션 없이, 마이크로-아키텍처 데이터의 수집을 개시하는 샘플링 유닛에 의한) 데이터-풀을 통해 또는 데이터 푸쉬 프로세스(예컨대, 하드웨어 디바이스가 AV 엔진으로의 마이크로-아키텍처 데이터의 주기적 통신을 개시하는 것)를 통해 획득될 수 있다.
[0072] 획득된 하드웨어-기반 마이크로-아키텍처 데이터에 적어도 부분적으로 기초하여, 하드웨어 디바이스 상에서 실행되는 하나 또는 그 초과의 프로세스들 중 적어도 하나의 프로세스가 악성 프로세스에 대응하는지의 여부가 결정(320)된다. 몇몇 실시예들에서, 하드웨어 디바이스 상에서 실행되는 하나 또는 그 초과의 프로세스들 중 적어도 하나의 프로세스의 타입 또는 아이덴티티에 관한 더욱 특정한 결정이 이루어질 수 있다. 주목된 바와 같이, 적어도 하나의 프로세스가 악성인지의 여부의 결정, 및/또는 하드웨어 디바이스 상에서 실행되는 하나 또는 그 초과의 프로세스들 중 적어도 하나의 프로세스의 타입 및/또는 아이덴티티는, 알려진 악성 및 비-악성 프로세스들의 변형들에 대한 마이크로-아키텍처 데이터를 포함하는 트레이닝 데이터로 트레이닝된 하나 또는 그 초과의 분류기들(예컨대, 하나 또는 그 초과의 분류기들(216a-216n)을 포함할 수 있는 머신 학습 시스템을 사용하여 수행될 수 있다.
[0073] 따라서, 알려진 악성 프로세스의 변형이 모니터링될 하드웨어 디바이스 상에서 실행될 때, 심지어 악성 프로세스의 정확한 구현이 수정된 상황들에서도, 악성 프로세스는 일반적으로, 그 프로세스의 특징인 동작들(예컨대, 특정 모듈들에 액세스하기, 특정 타입들의 데이터를 리트리빙하기 등)을 수행할 것이다. 알려진 악성 프로세스의 특징인 이들 동작들은 마이크로-아키텍처 데이터 시그너처(시간 시리즈로서 표현될 수 있음)를 야기할 것이고, 이후, 이 마이크로-아키텍처 데이터 시그너처는 AV 엔진의 머신 학습 시스템의 하나 또는 그 초과의 분류기들 중 적어도 하나의 분류기를 통해 식별(또는 적어도, 악성 또는 비-악성인 것으로서 식별)될 수 있다.
[0074] 도 4를 참조로, AV 엔진(예컨대, 도 2의 AV 엔진(210)이 구현되는 예시적 시스템(400)이 도시된다. 시스템(400)은 하드웨어 디바이스 예컨대 제어기 디바이스(410)를 포함하는데, 이는 프로세서-기반 퍼스널 컴퓨터, 특정 컴퓨팅 디바이스 등일 수 있고, 일부 구현들에서는, 프로세서-기반 유닛 예컨대 CPU(central processor unit)를 포함한다. 몇몇 실시예들에서, 제어기 디바이스(410)는 FPGA(field programmable gate array), ASIC(application-specific integrated circuit), DSP 프로세서 등과 같은 모듈들을 이용하여 적어도 부분적으로 실현될 수 있다.
[0075] 주목된 바와 같이, 몇몇 실시예들에서, AV 엔진의 적어도 일부분은 모니터링될 하드웨어 디바이스 상에서 직접적으로 하드웨어로 구현될 수 있고 그리고/또는 전용 및 보안 제어기 디바이스 상에서 실행되는 소프트웨어로 구현될 수 있다. 예를 들어, 도 4에 도시된 바와 같이, CPU(412)는 멀티-코어 프로세서일 수 있고, 이에 따라 AV 엔진의 하드웨어 부분은 CPU(412)의 코어들(413) 중 하나 또는 둘 이상 상에서 실현될 수 있고, AV 엔진의 기능들 중 하나 또는 둘 이상을 수행(예를 들어, 마이크로-아키텍처 데이터를 수집)하도록 (예를 들어, 프리-제조 또는 포스트-제조 프로그래밍을 통해) 구성될 수 있다. 모니터링될 하드웨어 디바이스가 주문형 제어기 디바이스(예를 들어, 주문형 집적 회로로서 구현됨)인 경우, AV의 하드웨어-부분은, 예를 들어, 네트워크-온-칩, 온-칩/오프-칩 FPGA 또는 오프-칩 ASIC 코-프로세서 상에 있는 특수 목적의 멀웨어 검출 유닛들으로서 제어기의 제조 시간에 실현될 수 있다. 이러한 선택들은 유연성 및 영역-효율성 및 에너지-효율성에 관해 상이한 트레이드-오프들을 표현한다. 안전 보호를 하드웨어 레벨로 이동시키는 것은 몇몇 문제들을 해결하며, 몇몇 관심있는 기회들을 제공한다. 예를 들어, 커널이 절충되는 경우에도, 안전 시스템은 소프트웨어에 의해 디스에이블될 수 없다는 것이 보장된다. 둘째로, 안전 시스템이 운영 시스템 아래에서 실행되기 때문에, 안전 시스템은 커널 익스플로잇(kernel exploit)들 및 커널에 대한 다른 공격들로부터 보호할 수 있다. 셋째로, (AV 엔진의 적어도 몇몇 부분들을 수용하기 위해) 하드웨어 그 자체가 수정되기 때문에, 임의적 상태 및 동적 모니터링 능력들이 부가될 수 있다. 이것은 소프트웨어 동작으로의 안전 시스템의 광대한 뷰잉 능력들을 제공한다.
[0076] 도 4에 추가로 도시된 바와 같이, CPU(412) 및/또는 제어기 기능을 구현하기 위한 다른 주문형 하드웨어와 더불어, 시스템(400)은 메인 메모리, 캐시 메모리 및 버스 인터페이스 회로들(도 4에 도시되지 않음)을 포함한다. 예를 들어, 제어기 디바이스(410)는 대용량 저장 엘리먼트(414), 이를테면, 시스템과 연관된 하드 드라이브 또는 플래시 드라이브를 포함할 수 있다. 컴퓨팅 시스템(400)은 키보드 또는 키패드 또는 몇몇 다른 사용자 입력 인터페이스(416) 및 사용자가 이들에 액세스할 수 있는 곳에 배치될 수 있는 모니터(420), 예를 들어, CRT(cathode ray tube), LCD(liquid crystal display) 모니터 등을 더 포함할 수 있다.
[0077] 제어기 디바이스(410)는, 예를 들어, 프로세스들이 실행중인 (또는 실행할 수 있는) CPU(412) 및/또는 일부 다른 애플리케이션-특정 디바이스상에서의 하나 또는 그 초과의 프로세스들의 실행으로부터 야기되는 하드웨어-기반 마이크로 아키텍처 데이터를 획득하고 획득된 마이크로-아키텍처 데이터에 기초하여, 시스템(400)의 제어기 디바이스(410) 상에서 실행되는 하나 또는 그 초과의 프로세스들 중 적어도 하나가 잠재적으로 악성 프로세스(예를 들어, 멀웨어)인지를 결정하기 위한 동작들의 구현을 가능케하도록 구성된다. 일부 구현들에서, 제어기 디바이스(410)의 하드웨어 상에서 실행되는 하나 또는 그 초과의 프로세스들의 아이덴티티들은 수집된 마이크로-아키텍처 데이터에 기초하여 결정될 수 있다. 따라서, 저장 디바이스(414)는 컴퓨터 프로그램 물건을 포함할 수 있는데, 이 컴퓨터 프로그램 물건은, 실행될 때, 예를 들어, 제어기 디바이스(410)의 프로세서-기반 구현이, 디바이스로 하여금, 마이크로-아키텍처 데이터를 획득하고, 그 데이터에 기초하여 하나 또는 그 초과의 실행 프로세스들 중 적어도 하나가 잠재적으로 악성인지를 결정하는 것을 포함하는, 설명된 프로시저들의 구현을 가능하게 하는 동작들을 수행하게 한다.
[0078] 제어기 디바이스(410)는 입력/출력 기능을 인에이블하기 위한 주변 디바이스들을 더 포함할 수 있다. 이러한 주변 디바이스들은, 예를 들어, CD-ROM 드라이브 및/또는 플래시 드라이브(예를 들어, 이동식(removable) 플래시 드라이브), 또는 연결된 시스템으로 관련 컨텐츠를 다운로드하기 위한 네트워크 연결(예를 들어, USB 포트 및/또는 무선 트랜시버를 이용하여 구현됨)을 포함할 수 있다. 이러한 주변 디바이스들은 또한, 각각의 시스템/디바이스의 일반적 동작을 가능하게 하기 위한 컴퓨터 명령들을 포함하는 소프트웨어를 다운로드하기 위해 이용될 수 있다. 기술된 바와 같이, 대안적으로 그리고/또는 추가적으로, 몇몇 실시예들에서, 특수 목적 로직 회로, 예를 들어, FPGA(field programmable gate array), ASIC(application-specific integrated circuit), DSP 프로세서 등은 시스템(400)의 구현에서 이용될 수 있다. 제어기 디바이스(410)와 포함될 수 있는 다른 모듈들은 스피커들, 사운드 카드, 사용자가 시스템(400)으로의 입력을 제공할 수 있게 하는 포인팅 디바이스, 예를 들어, 마우스 또는 트랙볼이다. 제어기 디바이스(410)는 운영 시스템, 예를 들어, Windows XP® Microsoft Corporation 운영 시스템, Ubuntu 운영 시스템 등을 포함할 수 있다.
[0079] 컴퓨터 프로그램들(프로그램들, 소프트웨어, 소프트웨어 애플리케이션들 또는 코드로 또한 알려져 있음)은 프로그래머블 프로세서에 대한 기계 명령들을 포함하며, 하이-레벨 프로시저 및/또는 객체-지향 프로그래밍 언어로 그리고/또는 어셈블리/기계 언어로 구현될 수 있다. 본원에서 이용되는 바와 같이, "기계 판독가능한 매체"라는 용어는, 기계 판독가능한 신호로서 기계 명령들을 수신하는 비-일시적 기계 판독가능한 매체를 포함하는, 기계 명령들 및/또는 데이터를 프로그래머블 프로세서에 제공하기 위해 이용되는 임의의 비-일시적 컴퓨터 프로그램 물건, 장치 및/또는 디바이스(예를 들어, 자기 디스크들, 광 디스크들, 메모리, PLD(Programmable Logic Device)들)를 지칭한다. 비-일시적 컴퓨터 판독가능한 매체들은, 매체들, 이를테면, 자기 매체들(이를테면, 하드 디스크들, 플로피 디스크들 등), 광 매체들(이를테면, 컴팩트 디스크들, 디지털 비디오 디스크들, 블루-레이 디스크들 등), 반도체 매체들(이를테면, 플래시 메모리, EPROM(electrically programmable read only memory), EEPROM(electrically erasable programmable read only Memory) 등), 송신 동안 어떠한 영속성의 외관(semblance of permanence)도 결여되지 않거나 플릿(fleet)되지 않는 임의의 적합한 매체들, 및/또는 임의의 적합한 유형 매체들을 포함할 수 있다.
[0080] 본원에 설명된 청구 대상의 전부 또는 그 일부는, (예를 들어, 데이터 서버로서) 백-엔드 컴포넌트를 포함하거나, 미들웨어 컴포넌트(예를 들어, 애플리케이션 서버)를 포함하거나, 프론트-엔드 컴포넌트(예를 들어, 사용자가 본원에 설명된 청구 대상의 실시예와 상호 작용할 수 있게 하는 그래픽 사용자 인터페이스 또는 웹 브라우저를 갖는 클라이언트 컴퓨터) 또는 이러한 백-엔드, 미들웨어 또는 프론트-엔드 컴포넌트들의 임의의 결합을 포함하는 컴퓨팅 시스템으로 구현될 수 있다. 시스템의 컴포넌트들은 임의의 형태 또는 매체의 디지털 데이터 통신, 예를 들어, 통신 네트워크에 의해 상호 연결될 수 있다. 통신 네트워크들의 예들은 근거리 네트워크("LAN"), 광역 네트워크 ("WAN") 및 인터넷을 포함한다.
[0081] 컴퓨팅 시스템은 클라이언트들 및 서버들을 포함할 수 있다. 클라이언트 및 서버는 일반적으로 서로 원격이며, 전형적으로 통신 네트워크를 통해 상호 작용한다. 클라이언트 및 서버의 관계는 일반적으로, 각각의 컴퓨터들 상에서 실행되고 서로에 대해 클라이언트-서버 관계를 갖는 컴퓨터 프로그램들에 의해 발생한다.
[0082] 악성 프로세스들의 상이한 타입들의 존재를 검출/식별하기 위해서 본원에 설명된 시스템들 및 절차들의 유효성을 평가하기 위해서, 상이한 하드웨어 디바이스(예를 들어, 상이한 프로세서 아키텍처)에 대한 그리고 상이한 악성 프로세스들(멀웨어, 사이드 채널 공격 프로세스들 등)에 대한 테스팅이 수행되었다
[0083] 수행된 평가들 및 테스팅은 안드로이드 멀웨어를 검출하기 위해 본원에서 설명된 시스템들 및 절차들의 유효성을 결정하기 위한 테스팅을 포함한다. 안드로이드 멀웨어의 예들은, 사용자의 디바이스를 어지럽히는 광고들을 생성하고 원하지 않는 링크들을 인스톨하는 등의 멀웨어를 포함한다. 보다 진전된 멀웨어는 전화의 유리한 특징들을 활용할 수 있는데, 예를 들어, 전화를 걸거나 또는 프리미엄 서비스들로 텍스트 메시지들을 전송한 결과, 사용자의 셀 폰 청구서에 요금이 청구되게 할 수 있다. 다른 타입의 안드로이드 멀웨어는 전화 번호들, 연락처 정보, IMEI 번호들 및 다른 민감한 데이터와 같은 정보에 액세스하는 것을 비롯하여, 사용자의 프라이버시를 다양한 방법들로 손상시킬 수 있다. 또한, 많은 안드로이드-기반 모바일 디바이스들은 GPS 능력을 가질 수 있고, 따라서, 멀웨어는 희생자들을 물리적으로 추적할 수 있다.
[0084] 본원에 설명된 시스템들 및 절차들이 멀웨어들의 목록을 작성하거나 또는 연구하는 다양한 소스들로부터 획득된 안드로이드 멀웨어에 적용되었다. 획득된 멀웨어 데이터 세트들이 변종들의 군들(families)로 분할된다. 단지 하나의 변종만을 갖는 군들에서, 멀웨어 표본에 대한 마이크로-아키텍처 데이터를 획득하기 위해 상이한 실행 사이클들이 사용되었다. 2 이상의 변종을 갖는 군들의 경우, 변종들 중 일부가 트레이닝 목적으로 사용되는 반면(예를 들어, 전반적으로 변종들의 약 1/3이 트레이닝용으로 사용되었다), 나머지 변종들은 (예를 들어, 본원에 설명된 시스템 및 절차들이 그러한 변종들을 검출할 것인지 여부를 결정하기 위한) 테스트용을 사용되었다. 도 5는, 테스트되었던 안드로이드 멀웨어 군들 중 일부의 테이블(500)이다. 테이블(500)의 APK들로서 식별된 컬럼(502)는 각각의 멀웨어 군들에 대해 이용가능했던 변종들의 수를 나타낸다.
[0085] 마이크로-아키텍처 데이터를 프로세싱하기 위해 사용되었던 분류기들을 트레이닝하기 위해서, 마이크로-아키텍처 성능 데이터가 모든 멀웨어 샘플들에 대해 수집되었다. 수행된 평가들 및 테스팅에서, 수집 인프라스트럭처가 스레드 레벨로 동작된다. 멀웨어 상의 데이터에 부가하여, 86개의 논-멀웨어 애플리케이션들에 대한 데이터가 또한 수집된 결과, 92,475개의 넌-멀웨어 스레드들 상에 데이터를 발생시킨다. 일반적으로 데이터 세트들 중 1/3이 트레이닝을 위해 사용되고, 데이터 세트들 중 나머지가 테스팅을 위해 사용되 상태에서 트레이닝과 테스팅 둘모두를 위해 이러한 데이터 세트들이 사용되었다. 마이크로-아키텍처 데이터를 프로세싱하기 위해 사용될 수 있는 다양한 분류기들의 성능이 이들 각각의 구성 파라미터들을 이용하여 조정될 수 있다. 예를 들어, KNN(k-Nearest Neighbors) 분류기들의 경우, k는 조정가능한 구성 파라미터이다. 파라미터들의 최적의 세트를 식별하기 위해서, 선택되는 분류기(또는 어떤 상황들에서, 몇 개의 분류기들)는 최고의 멀웨어를 정확하게 식별하는 것이다. 그러나, 식별된 멀웨어의 양이 잘못된 포지티브 레이트에 의해 변한다. 분류기가 더욱 민감해지게 구성됨에 따라, 더 많은 멀웨어가 식별되지만, 유해하지 않고, 이후, 정당한 프로세스들이 멀웨어로서 또한 식별된다. 어느 분류기(또는 분류기들)를 사용할지를 결정하기 위해서, 일부 실시예들에서, 주어진 잘못된 포지티브 퍼센티지에 대해 (트레이닝 데이터에 관해) 최선을 수행하는 분류기(들)이 선택될 수 있다.
[0086] 도 6은 안드로이드 멀웨어의 검출 시 다양한 이진 분류기들의 정확도를 나타내는 그래프(600)를 포함한다. 그래프(600)에 도시된 바와 같이, 잘못된 포지티브 레이트가 증가됨에 따라, 분류기들은 더 많은 멀웨어를 찾는다(도 5의 테이블(500)의 컬럼(504)은, 분류기들, 이를 테면, 결정 트리 분류기가 10% 또는 그보다 더 양호한 잘못된 포지티브 레이트에 대해 적용되는 다양한 멀웨어 군들에 대해 실행된 프로세스들을 정확하게 식별하기 위한 레이트를 제공한다). 안드로이드 멀웨어를 위해 획득된 결과들은, 분류기들이 적절하게 작동하는 것을 테스트하고 (마이크로-아키텍처 성능 카운터 데이터를 포함한) 마이크로-아키텍처 데이터가, 간단한 분석을 이용하여, 상대적으로 정확한 정확도로 안드로이드 멀웨어를 검출하도록 사용될 수 있다는 것을 나타낸다. 예를 들어, "AnserverBot" 멀웨어는 187개의 알려진 변종들(이는, 언급된 바와 같이, 안드로이드 멀웨어와 같은 악성 프로세서들을 연구하고 카테고리화하는 제 3자로부터 획득되었음)을 갖는다. 그러한 187개의 알려진 변종들 중, 본원에 설명된 시스템들 및 절차들의 분류기들이 트레이닝하기 위해 61개의 변종들이 사용되었다. 그러한 61개의 변종들로 트레이닝된 후, 테스팅된 분류기들이 나머지 126개의 변종들의 스레드들의 96.6%를 식별할 수 있었다.
[0087] 본원에 설명된 시스템들 및 절차들의 유효성을 결정하기 위한 평가들 및 테스팅은 또한 알려진 리눅스 루트키트들 상에서 수행되었다. 루트키트들은, 공격자들이 시스템들 상에서 검출을 회피하고 그들의 액세스 기간을 최대화하기 위해 감염된 시스템들 상에 인스톨되는 악성 소프트웨어이다. 일단 인스톨되면, 루트키트들은, 통상적으로, 특정 프로세스들, 네트워크 포트들, 파일들, 디렉토리들 및 세션 로그-온 트레이스들을 불명료하게 하기 위해 운영 시스템들의 부분들을 변경함으로써 시스템들 내의 그들의 존재를 숨긴다. 그들이 스텔스(stealth) 능력들에 의해, 그들은 이러한 감염들을 검출하는 데에 있어 어려움으로 인해 시스템들 보안에 심각한 위협을 줄 수 있다.
[0088]리눅스 루트키트 프로세스들을 검출하기 위해서 시스템들 및 절차들의 유효성을 평가하고 테스트할 때, 2개의 공중에 이용가능한 리눅스 루트키트들이 사용되엇고, 일단 로딩되면, 공격자에게 로그-온 세션 트레이스들, 네트워크 포트들, 프로세스들, 파일들 및 디렉토리들을 숨기는 능력을 준다.
사용된 2개의 루트키트들은:
1.평균 코더 루트키트-이 루트키트 작업들은 커널 파일 시스템 함수 호출들의 후킹(hooking)을 통해 트레이스들을 숨기는 로딩가능한 커널 모듈로서 작동한다. 이것은 리눅스 커맨드 인스모드(insmod)을 통해 커널로 로딩된다. 이는, 공격자들로 하여금, 에코 커맨드를 통해 미리정의된 파일/proc / buddyinfo로 기록함으로써 런타임에 숨길 시스템 정보를 변경할 수 있게 한다.
2.Jynx2 루트키트-이 루트키느는 공유된 라이브러리로서 기능하고 이 루트키트를 참조하도록 LDPRELOAD 환경 변수를 구성함으로써 인스톨된다. 이것이 완료되면, 임의의 프로그램이 실행될 때 루트키트가 공유 라이브러리로서 실행된다. 이것이 숨긴 정보는 컴파일 시에 미리 구성되고 일단 로딩되면 변경될 수 없다.
[0089] 리눅스 운영 시스템은 (현재 프로세싱 리스팅과 네트워크 포트들과 같은) 시스템 현재 상태의 리스팅들을 생성하는 네이티브 유틸리티 프로그램들을 갖는다. 검출을 회피하기 위해서, 루트키트들은 이러한 프로그램들의 출력의 부분들을 불명료하게 하도록 설계된다. 따라서, (루트키트 프로세스들이 실행되고 있는 프로세서 디바이스 상에 생성된) 이러한 프로그램들에 대한 마이크로-아키텍처 성능 카운터 데이터가 루트키트 감염 이후 어느 정도의 편차를 보여주게 될 가능성이 높다. 이러하 편차의 존재를 검사하기 위해서, 프로세스-단위 성능 카운터 데이터의 수집이 다음 프로세스들에 대해 초점을 맞춘다.
프로그램 관련 기능
ps List active running processes
ls List files and directories
who List active log-on sessions
netstat List active network connections
[0090] 마이크로-아키텍처 성능 카운터 데이터가 프로그램들 모두의 다수의 실행 런들에 대해 (분기 오예측의 횟수, 데이터 TLB 미스들의 횟수, L1 명령 캐시 판독들의 횟수와 같은) 다양한 임의적으로 선택된 이벤트 타입들에 대해 수집되었다. 데이터의 2개의 세트들이 수집되었다 ―하나의 세트는 루트키트들이 인스톨되기 전에 수집되었고(그 수집된 세트는 "크린 세트"로 지칭되었음), 제 2 세트는 시스템이 루트키트들로 감염되었던 이후에 수집되었다(그 세트는 "더티(dirty) 세트"로 지칭되었음). 프로그램들의 실행 흐름들에 대한 변화들을 유도하기 위해서, 프로그램들의 각각의 런이 그들의 연관된 파라미터들의 랜덤한 조합으로 실행되었다. 이를 위해서, 유효 파라미터들의 랜덤 세트로 결합된 프로그램 네임들을 포함하는 커맨드-라인들의 리스트가 생성되엇다. 이후, 각각의 커맨드 라인들이 크린 또는 더티로 랜덤하게 태깅되어 사용될 데이터의 세트를 나타내었다. 커맨드-라인들의 예시적인 서브셋 리스트가 아래에 제공된다:
( 크린 ) netstat -n
( 크린 ) netstat -nt
( 더티 ) netstat -ntu
...
( 더티 ) ls -l / usr /include
( 크린 ) ls -ld /home
( 더티 ) ls - lar /home/user
( 크린 ) ls - lart ../
...
[0091] 커맨드-라인들의 랜덤 리스트가 생성되면서, 프로세스-단위 실행-단위 성능 데이터가 수집된다. 부가적으로, 입력 바이어스를 감소시키고 그리고 수집된 데이터를 더 현실적이게 하기 위해, 서버에 로깅하는 다양한 사용자들의 동작 및 (새로운 파일들을 생성하는 것 및 새로운 프로세스들을 실행시키는 것과 같은) 일련의 태스크들을 행하는 것이 시뮬레이팅된다. 사용된 루트킷들 둘 모두가 상이한 스텔스 능력들을 갖고, 상이한 프로그램들의 출력들을 타겟팅하기 때문에, 더티 데이터는 각각의 루트킷에 대해 별개로 수집된다. 각각의 루트킷에 대한 데이터의 수집은 다음에 대하여 설계된 다음의 프로그램들을 이용하여 수행된다.
Figure 112015096828160-pct00001
[0092] 더티 데이터가 수집되면서, 루트킷들에 의해 숨겨진 정보 또한 변한다. 이것은, 루트킷들에 의해 숨겨진 네트워크 포트들, 파일들, 프로세스들, 및 로그-온 세션 로그들의 리스트에 부가하는 것 및 그들로부터 제거하는 것을 포함한다. 안드로이드 멀웨어에 관하여 수행된 테스팅에 대해서와 같이, 루트킷들에 대하여 수집된 마이크로-아키텍쳐 데이터는 테스팅 및 트레이닝 세트들로 분할되며, 데이터의 1/3은 많은 수의 분류기들을 트레이닝하기 위해 사용되고, 나머지 데이터는 트레이닝된 분류기들을 테스팅하기 위해 사용된다. 분류기들은, 마이크로-아키텍쳐 데이터가 수집된 프로세스들/프로그램들이 루트킷들을 이용하여 실행되는지 또는 루트킷들 없이 실행되는지(즉, 루트킷 오염(contamination)이 존재하는지 또는 존재하지 않는지)를 결정도록 트레이닝된다. 도 7은, 본 명세서에 구현된 AV 엔진의 일부로서 사용되는 분류기들의 (잘못된-포지티브 레이트의 기능으로서 정확히 식별된 악성 스레드들의 개수의 관점들에서) 정확도를 도시하는 그래프들(700)을 포함한다. 루트킷 검출에 대해 본 명세서에 설명된 시스템들 및 절차들에 의해 달성되는 정확도는 일반적으로 시스템들 및 절차들이 안드로이드 멀웨어에 적용되는 경우에 달성되는 것보다 더 낮지만, 루트킷들이 별개의 프로그램들로서 동작하지 않고, 오히려 프로그램들의 정상 제어 흐름을 동적으로 인터셉트하도록 구성되기 때문에, 사용되는 트레이닝 데이터는 상대적으로 작은 정도로 루트킷들에 의해 영향을 받음이 유의되어야 한다. 결과로서, 루트킷들의 식별은 일반적으로 다른 타입들의 악성 프로세스들의 식별보다 더 어렵다.
[0093] 본 명세서에 설명된 시스템들 및 절차들의 평가 및 테스팅은 사이드-채널 공격들에 관하여 또한 수행된다. 용어 사이드-채널은, 시스템들의 실제의 구현들에서 존재하는 의도되지 않은 정보 유출을 지칭한다. 특정한 구현들은 이론적 모델들의 최적화된 공리들을 고수할 수 없기 때문에, 사이드-채널들이 이론적으로 안전한 시스템들로부터 정보를 훔치기 위해 사용될 수 있다. 예를 들어, RSA 암호 키들은, 대부분의 기존의 구현들에 대해, 분기 예측기 또는 캐시들의 성능을 관측함으로써 도난당할 수 있다. 통상적인 사이드-채널 매체들은 청각 또는 전기적 신호들, 전력 드로우(draw), 애플리케이션-레벨 타이밍 채널들, 아키텍쳐 또는 마이크로-아키텍쳐 어펙트(affect)들, 또는, 일반적으로, 임의의 공유된 리소스들을 포함한다. 사이드-채널 공격들은 일반적으로 멀웨어로 고려되지 않지만, 하드웨어-기반 디바이스의 보안을 취약하게 만들고, 또한, 본 명세서에 설명된 시스템들 및 절차들에 의해 검출될 수도 있는 특유의 마이크로-아키텍쳐 거동을 갖는다.
[0094] 사이드-채널 "공격자" 프로세스는, 리소스를 공유하고 그 리소스를 사용하여 정보를 학습하는 그러한 방식으로 시스템 내에 배치되는 프로세스이다. 마이크로-아키텍쳐 예들은, 네트워크 카드, 코어 파이프라인, 메모리 대역폭 및 캐시들을 공유하는 것을 포함한다. 캐시 상에서의 사이드-채널 공격들을 수반하는 실시예들에서, 공유된 온-칩 캐시들은, 예를 들어, 암호 키들 및/또는 다른 타입들의 비공개 데이터를 훔치는데 용이하게 사용될 수 있는 엄청난 양의 데이터를 유출시킬 수 있다. 직관적으로, 마이크로-아키텍쳐 사이드-채널들을 활용하는 공격자 프로그램들은 성능의 관점에서 명료한 시그니처들을 가져야 한다. 예를 들어, 사이드-채널 공격 프로세스들은 특정한 공유된 리소스들을 반복적으로 쓰래싱(thrash)시킴으로써, 그 공유된 리소스에 관한 피해자 프로세스의 활동 전부를 게이징(gauge)한다. 따라서, 마이크로-아키텍쳐 이벤트들 및 성능 카운터들은 그러한 공격들 동안 극도의 값들을 나타낼 개연성이 있으며, 그에 따라, 공격자 프로그램들/프로세스들의 발생을 표시한다(그리고 가능하게는, 그 공격자 프로그램들/프로세스들을 식별함).
[0095] 사이드-채널 공격들의 발생을 결정하기 위한(그리고/또는 특정한 사이드-채널 공격 프로세스들을 식별하기 위한) 본 명세서에 설명된 시스템들 및 절차들의 유효성을 테스팅하기 위해, 캐시 사이드-채널 공격들의 어레이가 구현된다. 표준 프라임-앤-프로브(prime-and-probe) 기술의 변형들이 구현되며, 여기서, 공격자 프로그램/프로세스는 L1 데이터 캐시에서의 모든 각각 라인에 기입하고, 그 후, 모든 각각의 라인을 판독하기 위해 (컴파일 시간에서의 패턴 선택을 사용하여) 캐시를 반복적으로 스캔한다. 미스가 발생할 때마다, 이는, 캐시를 공유하는 피해자 프로세스에 의해 야기되는 충돌 미스가 존재함을 의미한다. 성공적인 프라임-앤-프로브 공격의 결과 데이터는, 시간에 걸쳐 피해자 프로세스에 의해 사용되는 캐시 라인들에 관한 데이터를 포함한다. 프라임-앤-프로브 변형들은, OpenSSL 피해자 프로세스에 관하여 구현 및 실행된다. 캐시 사이드-채널 공격 프로세스들은, SPEC2006 int, SPEC2006 fp, PARSEC, 웹 브라우저들, 게임들, 그래픽 에디터들의 프로그램들 및 다른 통상적인 데스크톱 애플리케이션들 뿐만 아니라 범용 시스템-레벨 프로세스들을 포함하는 다수의 정상 프로세스들에 관해 비교된다.
[0096] 안드로이드 멀웨어 및 리눅스 루트킷들에 대해 수행되는 테스팅에 대해서와 같이, 수집된 마이크로-아키텍쳐 데이터의 1/3은 AV 엔진의 분류기들(즉, KNN, DecisionTree, Tensor, RandomForest, 및 FANN 분류기들)을 트레이닝하는데 사용된다. 이러한 경우에서, 트레이닝 데이터는 3872개의 정상 프로그램 스레드들 및 12개의 공격 스레드들을 포함한다. 트레이닝된 분류기들은 수집된 데이터의 남아있는 2/3를 분석하기 위해 사용된다. 완전히 달성된 분류기들은, 이러한 예시적인 테스팅의 7744개의 정상 스레드들 및 24 개의 공격 스레드들을 분석하는 경우, 어떠한 잘못된 포지티브들도 생성하지 않으면서 24개의 공격 스레드들 전부를 검출하는 것을 초래한다. 결과는 또한, 사이드-채널 공격 마이크로-아키텍쳐 데이터를 프로세싱하는 것에서, 어느 특정한 분류기가 사용되는지는 문제가 되지 않음을 나타낸다.
[0097] 특정한 실시예들이 본 명세서에 상세히 기재되었지만, 이는 단지 예시의 목적들을 위해 예로서 행해졌으며, 후속되는 첨부된 청구항들의 범위에 관하여 제한하는 것으로 의도되지 않는다. 다른 몇몇 양상들, 이점들, 및 변형들이 아래에 제공되는 청구항들의 범위 내에 있는 것으로 고려된다. 제시된 청구항들은, 본 명세서에 기재된 실시예들 및 특성들 중 적어도 일부를 나타낸다. 다른 청구되지 않은 실시예들 및 특성들이 또한 고려된다.

Claims (21)

  1. 하드웨어-기반 마이크로-아키텍처 카운터 데이터를 포함하고, 시간 주기(period)에 걸쳐 하드웨어 디바이스상에서 실행하는 프로세스에 의해 수행되는 마이크로-아키텍처 활동들의 시간 트레이스(trace)를 나타내는 하드웨어-기반 마이크로-아키텍처 데이터를 획득하는 단계 ― 상기 하드웨어 디바이스는, 상기 프로세스에 의해 수행되는 불변의(invariant) 아키텍처 활동들을 나타내는, 상기 시간 트레이스에 배열되는 내부 마이크로-아키텍처 이벤트들을 이용하여 상기 내부 마이크로-아키텍처 이벤트들을 카운팅하도록 구성됨 ―; 및
    상기 시간 주기에 걸쳐 하드웨어 디바이스상에서 실행하는 프로세스에 의해 수행되는 내부 마이크로-아키텍처 활동들을 나타내는 상기 하드웨어-기반 마이크로-아키텍처 데이터에 적어도 부분적으로 기초하여, 그리고 각각의 시간 주기들 동안 상기 하드웨어 디바이스상에서 실행가능한 상이한 이상(anomalous) 프로세스들에 의해 수행되는 활동들의 각각의 트레이스들을 나타내는 마이크로-아키텍처 데이터의 다수의 데이터 세트들에 추가로 기초하여, 상기 프로세스의 거동을 나타내는 내부 마이크로-아키텍처 활동들의 상기 트레이스와 상기 상이한 이상 프로세스들의 상기 각각의 트레이스들을 나타내는 상기 다수의 데이터 세트들 중 적어도 하나의 데이터 세트 사이의 유사성을 결정하여, 상기 하드웨어 디바이스상에서 실행하는 상기 프로세스가 이상 프로세스에 해당하는지의 여부를 결정하는 단계를 포함하는, 방법.
  2. 제 1항에 있어서, 상기 하드웨어-기반 마이크로-아키텍처 데이터를 획득하는 상기 단계는 다양한 시간 인스턴스들에서 상기 하드웨어-기반 마이크로-아키텍처 데이터를 획득하는 단계를 포함하는, 방법.
  3. 제 2항에 있어서, 다양한 시간 인스턴스들에서 상기 하드웨어-기반 마이크로-아키텍처 데이터를 획득하는 상기 단계는 상기 마이크로-아키텍처 데이터를 전송하기 위하여 상기 하드웨어 디바이스에 의해 개시되는 데이터 푸시 동작(data push operation) 또는 상기 마이크로-아키텍처 데이터를 전송하기 위하여 안티바이러스 엔진에 의해 개시되는 데이터 풀 동작(data pull operation)중 하나 이상을 수행하는 단계를 포함하는, 방법.
  4. 제 1항에 있어서, 하드웨어-기반 마이크로-기반 데이터를 획득하는 상기 단계는,
    하나 이상의 프로세스들을 실행하는 다수의 프로세서 코어들을 갖는 프로세서 디바이스상에서 상기 프로세스를 실행하는 것으로부터 발생하는 멀티-코어 하드웨어-기반 마이크로-아키텍처 데이터를 획득하는 단계; 및
    상기 다수의 프로세서 코어들의 각각으로부터 획득된 개별 하드웨어-기반 마이크로-아키텍처 데이터를 상기 하나 이상의 프로세스들에 상관시키는 단계를 포함하는, 방법.
  5. 제 1항에 있어서, 상기 하드웨어-기반 마이크로-아키텍처 데이터에 기초하여 상기 프로세스가 이상 프로세스에 해당하는지의 여부를 결정하는 단계는, 상기 프로세스가 상기 이상 프로세스에 해당하는지의 여부를 결정하기 위하여 상기 하드웨어-기반 마이크로-아키텍처 데이터에 하나 이상의 기계-학습 프로시저들을 적용하는 단계를 포함하는, 방법.
  6. 제 5항에 있어서, 상기 프로세스가 상기 이상 프로세스에 해당하는지의 여부를 결정하기 위하여 상기 하드웨어-기반 마이크로-아키텍처 데이터에 하나 이상의 기계-학습 프로시저들을 적용하는 상기 단계는 하나 이상의 이상 프로세스들과 연관된 하드웨어-기반 마이크로-아키텍처 데이터의 이전에 식별된 패턴들에, 획득된 하드웨어-기반 마이크로-아키텍처 데이터를 매칭시키는 단계를 포함하는, 방법.
  7. 제 6항에 있어서, 상기 하나 이상의 이상 프로세스들과 연관된 하드웨어-기반 마이크로-아키텍처 데이터의 이전에 식별된 패턴들에 대한 업데이트들을 획득하는 단계를 더 포함하는, 방법.
  8. 제 7항에 있어서, 상기 업데이트들을 획득하는 단계는,
    상기 하나 이상의 이상 프로세스들과 연관된 하드웨어-기반 마이크로-아키텍처 데이터의 이전에 식별된 패턴들에 대한 암호화된 데이터를, 상기 하드웨어-기반 마이크로-아키텍처 데이터를 제공하는 하드웨어 디바이스와 통신하는 안티바이러스 엔진에 다운로드하는 단계;
    하나 이상의 이상 프로세스들과 연관된 하드웨어-기반 마이크로-아키텍처 데이터의 이전에 식별된 패턴들에 대한 다운로드된 암호화된 데이터를 상기 안티바이러스 엔진에서 암호해독하는 단계; 및
    상기 하드웨어-기반 마이크로-아키텍처 데이터의 이전에 식별된 패턴들의 가장 최근의 업데이트의 수정 갯수를 표시하는, 상기 안티바이러스 엔진에 의해 유지되는 수정 카운터를 업데이트는 단계를 포함하는, 방법.
  9. 제 5항에 있어서, 상기 하나 이상의 기계 학습 프로시저들은 k-최근접 이웃 프로시저(k-nearest neighbor procedure), 결정 트리 프로시저(decision tree procedure), 랜덤 포레스트 프로시저(random forest procedure), 인공 신경망 프로시저(artificial neural network procedure), 텐서 밀도 프로시저(tensor density procedure) 또는 인닉 마르코프 모델(hidden Markov model procedure) 중 하나 이상을 포함하는, 방법.
  10. 제 1항에 있어서, 상기 이상 프로세스에 대응하는 상기 프로세스는 비악성 또는 악성 프로세스 중 하나 이상을 포함하며, 상기 악성 프로세스는 멀웨어 프로세스(malware process) 또는 사이드-채널 공격 프로세스(side-channel attack process) 중 하나 이상을 포함하는, 방법.
  11. 제 1항에 있어서, 상기 하드웨어-기반 마이크로-아키텍처 데이터는 프로세서 로드 밀도 데이터, 브랜치 예측 성능 데이터 또는 명령 캐시 손실들에 관한 데이터 중 하나 이상을 포함하는, 방법.
  12. 하나 이상의 프로세스들을 실행하는 하드웨어 디바이스; 및
    상기 하드웨어 디바이스와 통신하는 안티바이러스 엔진을 포함하며;
    상기 안티바이러스 엔진은,
    하드웨어-기반 마이크로-아키텍처 카운터 데이터를 포함하고, 시간 주기에 걸쳐 하드웨어 디바이스상에서 실행하는 프로세스에 의해 수행되는 마이크로-아키텍처 활동들의 시간 트레이스를 나타내는 하드웨어-기반 마이크로-아키텍처 데이터를 획득하며 ― 상기 하드웨어 디바이스는, 상기 프로세스에 의해 수행되는 불변의 아키텍처 활동들을 나타내는 상기 시간 트레이스에 배열되는 내부 마이크로-아키텍처 이벤트들을 이용하여 상기 내부 마이크로-아키텍처 이벤트들을 카운팅하도록 구성됨 ―; 그리고
    상기 시간 주기에 걸쳐 하드웨어 디바이스상에서 실행하는 프로세스에 의해 수행되는 내부 마이크로-아키텍처 활동들을 나타내는 상기 하드웨어-기반 마이크로-아키텍처 데이터에 적어도 부분적으로 기초하여, 그리고 각각의 시간 주기들 동안 상기 하드웨어 디바이스상에서 실행가능한 상이한 이상 프로세스들에 의해 수행되는 활동들의 각각의 트레이스들을 나타내는 마이크로-아키텍처 데이터의 다수의 데이터 세트들에 추가로 기초하여, 상기 프로세스의 거동을 나타내는 내부 마이크로-아키텍처 활동들의 상기 트레이스와 상기 상이한 이상 프로세스들의 상기 각각의 트레이스들을 나타내는 상기 다수의 데이터 세트들 중 적어도 하나의 데이터 세트 사이의 유사성을 결정하여, 상기 하드웨어 디바이스상에서 실행하는 상기 프로세스가 이상 프로세스에 해당하는지의 여부를 결정하도록 구성되는, 시스템.
  13. 제 12항에 있어서, 상기 하드웨어-기반 마이크로-아키텍처 데이터를 획득하도록 구성된 상기 안티바이러스 엔진은 다양한 시간 인스턴스들에서 상기 하드웨어-기반 마이크로-아키텍처 데이터를 획득하도록 구성되는, 시스템.
  14. 제 13항에 있어서, 다양한 시간 인스턴스들에서 상기 하드웨어-기반 마이크로-아키텍처 데이터를 획득하도록 구성된 상기 안티바이러스 엔진은 상기 하드웨어 디바이스에 의해 개시되는 데이터 푸시 동작 또는 안티바이러스 엔진에 의해 개시되는 데이터 풀 동작중 하나 이상에 응답하여 상기 마이크로-아키텍처 데이터를 수신하도록 구성되는, 시스템.
  15. 제 12항에 있어서, 상기 하드웨어-기반 마이크로-아키텍처 데이터에 기초하여 상기 프로세스가 이상 프로세스에 해당하는지의 여부를 결정하도록 구성된 상기 안티바이러스 엔진은, 상기 프로세스가 상기 이상 프로세스에 해당하는지의 여부를 결정하기 위하여 상기 하드웨어-기반 마이크로-아키텍처 데이터에 하나 이상의 기계-학습 프로시저들을 적용하도록 구성되는, 시스템.
  16. 제 15항에 있어서, 상기 프로세스가 상기 이상 프로세스에 해당하는지의 여부를 결정하기 위하여 상기 하드웨어-기반 마이크로-아키텍처 데이터에 하나 이상의 기계-학습 프로시저들을 적용하도록 구성된 상기 안티바이러스 엔진은, 하나 이상의 이상 프로세스들과 연관된 하드웨어-기반 마이크로-아키텍처 데이터의 이전에 식별된 패턴들에, 획득된 하드웨어-기반 마이크로-아키텍처 데이터를 매칭시키도록 구성되는, 시스템.
  17. 제 16항에 있어서, 상기 안티바이러스 엔진은 상기 하나 이상의 이상 프로세스들과 연관된 하드웨어-기반 마이크로-아키텍처 데이터의 이전에 식별된 패턴들에 대한 업데이트들을 획득하도록 추가로 구성되는, 시스템.
  18. 적어도 하나의 프로그램가능 디바이스상에서 실행가능한 명령들의 세트를 저장한 컴퓨터 판독가능 매체로서, 상기 명령들의 세트는 실행될 때 동작들을 야기하고,
    상기 동작들은:
    하드웨어-기반 마이크로-아키텍처 카운터 데이터를 포함하고, 시간 주기에 걸쳐 하드웨어 디바이스상에서 실행하는 프로세스에 의해 수행되는 마이크로-아키텍처 활동들의 시간 트레이스를 나타내는 하드웨어-기반 마이크로-아키텍처 데이터를 획득하는 동작 ― 상기 하드웨어 디바이스는, 내부 마이크로-아키텍처 이벤트들을 카운팅하고, 상기 프로세스에 의해 수행되는 불변의 아키텍처 활동들을 나타내는 상기 시간 트레이스에 상기 내부 마이크로-아키텍처 이벤트들을 배열하도록 구성됨 ―; 및
    상기 시간 주기에 걸쳐 하드웨어 디바이스상에서 실행하는 프로세스에 의해 수행되는 내부 마이크로-아키텍처 활동들을 나타내는 상기 하드웨어-기반 마이크로-아키텍처 데이터에 적어도 부분적으로 기초하여, 그리고 각각의 시간 주기들 동안 상기 하드웨어 디바이스상에서 실행가능한 상이한 이상 프로세스들에 의해 수행되는 활동들의 각각의 트레이스들을 나타내는 마이크로-아키텍처 데이터의 다수의 데이터 세트들에 추가로 기초하여, 상기 프로세스의 거동을 나타내는 내부 마이크로-아키텍처 활동들의 상기 트레이스와 상기 상이한 이상 프로세스들의 상기 각각의 트레이스들을 나타내는 상기 다수의 데이터 세트들 중 적어도 하나의 데이터 세트 사이의 유사성을 결정하여, 상기 하드웨어 디바이스상에서 실행하는 상기 프로세스가 이상 프로세스에 해당하는지의 여부를 결정하는 동작을 포함하는, 컴퓨터 판독가능 매체.
  19. 제 18항에 있어서, 상기 하드웨어-기반 마이크로-아키텍처 데이터에 기초하여 상기 프로세스가 이상 프로세스에 해당하는지의 여부를 결정하는 것은 상기 프로세스가 상기 이상 프로세스에 해당하는지의 여부를 결정하기 위하여 상기 하드웨어-기반 마이크로-아키텍처 데이터에 하나 이상의 기계-학습 프로시저들을 적용하는 것을 포함하는, 컴퓨터 판독가능 매체.
  20. 제 18항에 있어서, 상기 프로세스가 상기 이상 프로세스에 해당하는지의 여부를 결정하기 위하여 상기 하드웨어-기반 마이크로-아키텍처 데이터에 하나 이상의 기계-학습 프로시저들을 적용하는 것은 하나 이상의 이상 프로세스들과 연관된 하드웨어-기반 마이크로-아키텍처 데이터의 이전에 식별된 패턴들에, 획득된 하드웨어-기반 마이크로-아키텍처 데이터를 매칭시키는 것을 포함하는, 컴퓨터 판독가능 매체.
  21. 하드웨어-기반 마이크로-아키텍처 카운터 데이터를 포함하고, 시간 주기에 걸쳐 하드웨어 디바이스상에서 실행하는 프로세스에 의해 수행되는 마이크로-아키텍처 활동들의 시간 트레이스를 나타내는 하드웨어-기반 마이크로-아키텍처 데이터를 획득하기 위한 수단 ― 상기 하드웨어 디바이스는, 상기 프로세스에 의해 수행되는 불변의 아키텍처 활동들을 나타내는 상기 시간 트레이스에 배열되는 내부 마이크로-아키텍처 이벤트들을 이용하여 상기 내부 마이크로-아키텍처 이벤트들을 카운팅하도록 구성됨 ―; 및
    상기 시간 주기에 걸쳐 하드웨어 디바이스상에서 실행하는 프로세스에 의해 수행되는 내부 마이크로-아키텍처 활동들을 나타내는 상기 하드웨어-기반 마이크로-아키텍처 데이터에 적어도 부분적으로 기초하여, 그리고 각각의 시간 주기들 동안 상기 하드웨어 디바이스상에서 실행가능한 상이한 이상 프로세스들에 의해 수행되는 활동들의 각각의 트레이스들을 나타내는 마이크로-아키텍처 데이터의 다수의 데이터 세트들에 추가로 기초하여, 상기 프로세스의 거동을 나타내는 내부 마이크로-아키텍처 활동들의 상기 트레이스와 상기 상이한 이상 프로세스들의 상기 각각의 트레이스들을 나타내는 상기 다수의 데이터 세트들 중 적어도 하나의 데이터 세트 사이의 유사성을 결정하여, 상기 하드웨어 디바이스상에서 실행하는 상기 프로세스가 이상 프로세스에 해당하는지의 여부를 결정하기 위한 수단을 포함하는, 장치.
KR1020157027784A 2013-03-18 2013-11-05 하드웨어-기반 마이크로-아키텍처 데이터를 이용한 이상 프로그램 실행의 검출 KR102160659B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201361803029P 2013-03-18 2013-03-18
US61/803,029 2013-03-18
PCT/US2013/068451 WO2014149080A1 (en) 2013-03-18 2013-11-05 Detection of anomalous program execution using hardware-based micro-architectural data

Publications (2)

Publication Number Publication Date
KR20150138229A KR20150138229A (ko) 2015-12-09
KR102160659B1 true KR102160659B1 (ko) 2020-09-28

Family

ID=51580568

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157027784A KR102160659B1 (ko) 2013-03-18 2013-11-05 하드웨어-기반 마이크로-아키텍처 데이터를 이용한 이상 프로그램 실행의 검출

Country Status (4)

Country Link
US (2) US10025929B2 (ko)
KR (1) KR102160659B1 (ko)
CN (1) CN105229612B (ko)
WO (1) WO2014149080A1 (ko)

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101794116B1 (ko) 2013-03-18 2017-11-06 더 트러스티스 오브 컬럼비아 유니버시티 인 더 시티 오브 뉴욕 하드웨어 특징들을 사용한 이상 프로세스들의 비감시된 검출
US9213831B2 (en) * 2013-10-03 2015-12-15 Qualcomm Incorporated Malware detection and prevention by monitoring and modifying a hardware pipeline
WO2015179865A1 (en) * 2014-05-23 2015-11-26 The George Washington University System and method for uncovering covert timing channels
US10708296B2 (en) 2015-03-16 2020-07-07 Threattrack Security, Inc. Malware detection based on training using automatic feature pruning with anomaly detection of execution graphs
US9940187B2 (en) 2015-04-17 2018-04-10 Microsoft Technology Licensing, Llc Nexus determination in a computing device
US20160359695A1 (en) * 2015-06-04 2016-12-08 Cisco Technology, Inc. Network behavior data collection and analytics for anomaly detection
US10187412B2 (en) 2015-08-28 2019-01-22 Cisco Technology, Inc. Robust representation of network traffic for detecting malware variations
US10437998B2 (en) * 2015-10-26 2019-10-08 Mcafee, Llc Hardware heuristic-driven binary translation-based execution analysis for return-oriented programming malware detection
CN106709336A (zh) 2015-11-18 2017-05-24 腾讯科技(深圳)有限公司 识别恶意软件的方法和装置
US10789358B2 (en) * 2015-12-17 2020-09-29 Cryptography Research, Inc. Enhancements to improve side channel resistance
WO2017109135A1 (en) * 2015-12-24 2017-06-29 British Telecommunications Public Limited Company Malicious network traffic identification
US11201876B2 (en) * 2015-12-24 2021-12-14 British Telecommunications Public Limited Company Malicious software identification
KR102450834B1 (ko) * 2016-01-04 2022-10-05 한국전자통신연구원 다중 특징벡터를 이용하는 행위기반 악성코드 탐지 장치 및 방법
DE102016201262A1 (de) * 2016-01-28 2017-08-17 Robert Bosch Gmbh Verfahren und Vorrichtung zum Bereitstellen eines Computerprogramms
EP3217307B1 (en) * 2016-02-22 2018-11-07 Eshard Method of testing the resistance of a circuit to a side channel analysis of second order or more
US10560536B2 (en) * 2016-08-24 2020-02-11 International Business Machines Corporation Simplifying user interactions with decision tree dialog managers
WO2018178028A1 (en) 2017-03-28 2018-10-04 British Telecommunications Public Limited Company Initialisation vector identification for encrypted malware traffic detection
JP6911544B2 (ja) * 2017-06-02 2021-07-28 富士通株式会社 プログラム、情報処理装置及び情報処理方法
RU2654146C1 (ru) * 2017-06-16 2018-05-16 Акционерное общество "Лаборатория Касперского" Система и способ обнаружения вредоносных файлов с использованием элементов статического анализа
CN107888411B (zh) * 2017-10-31 2021-05-25 努比亚技术有限公司 黑屏检测方法、移动终端及计算机可读存储介质
US10977546B2 (en) 2017-11-29 2021-04-13 International Business Machines Corporation Short depth circuits as quantum classifiers
US11017077B2 (en) * 2018-03-21 2021-05-25 Nxp Usa, Inc. Run-time security protection system and method
US11709939B2 (en) * 2018-05-04 2023-07-25 New York University Anomaly detection in real-time multi-threaded processes on embedded systems and devices using hardware performance counters and/or stack traces
US11126721B2 (en) * 2018-06-28 2021-09-21 Intel Corporation Methods, systems and apparatus to detect polymorphic malware
US11227047B1 (en) 2018-06-29 2022-01-18 Fireeye Security Holdings Us Llc System and method for improved end-to-end cybersecurity machine learning and deployment
US10834121B2 (en) * 2018-07-24 2020-11-10 EMC IP Holding Company LLC Predictive real-time and scheduled anti-virus scanning
US10897480B2 (en) * 2018-07-27 2021-01-19 The Boeing Company Machine learning data filtering in a cross-domain environment
EP3623980B1 (en) 2018-09-12 2021-04-28 British Telecommunications public limited company Ransomware encryption algorithm determination
US12008102B2 (en) 2018-09-12 2024-06-11 British Telecommunications Public Limited Company Encryption key seed determination
EP3623982B1 (en) 2018-09-12 2021-05-19 British Telecommunications public limited company Ransomware remediation
US11216556B2 (en) * 2018-12-17 2022-01-04 Intel Corporation Side channel attack prevention by maintaining architectural state consistency
US11023582B2 (en) * 2018-12-19 2021-06-01 EMC IP Holding Company LLC Identification and control of malicious users on a data storage system
RU2739865C2 (ru) * 2018-12-28 2020-12-29 Акционерное общество "Лаборатория Касперского" Система и способ обнаружения вредоносного файла
US11277424B2 (en) * 2019-03-08 2022-03-15 Cisco Technology, Inc. Anomaly detection for a networking device based on monitoring related sets of counters
US20200372183A1 (en) * 2019-05-21 2020-11-26 Hewlett Packard Enterprise Development Lp Digitally Signing Software Packages With Hash Values
US10860324B1 (en) * 2019-06-05 2020-12-08 Arm Limited Apparatus and method for making predictions for branch instructions
CN110414567B (zh) * 2019-07-01 2020-08-04 阿里巴巴集团控股有限公司 数据处理方法、装置和电子设备
US10986023B2 (en) * 2019-07-19 2021-04-20 Cisco Technology, Inc. Using machine learning to detect slow drain conditions in a storage area network
US10630715B1 (en) * 2019-07-25 2020-04-21 Confluera, Inc. Methods and system for characterizing infrastructure security-related events
EP3772007A1 (en) * 2019-07-30 2021-02-03 Continental Teves AG & Co. OHG Physical execution monitor
US20230044072A1 (en) * 2020-01-30 2023-02-09 Hewlett-Packard Development Company, L.P. Monitoring side channels
US10887337B1 (en) 2020-06-17 2021-01-05 Confluera, Inc. Detecting and trail-continuation for attacks through remote desktop protocol lateral movement
US11615782B2 (en) * 2020-11-12 2023-03-28 Sony Interactive Entertainment Inc. Semi-sorted batching with variable length input for efficient training
US11934840B2 (en) * 2020-12-17 2024-03-19 Hewlett Packard Enterprise Development Lp Classification of hardware components
US11790087B2 (en) * 2020-12-23 2023-10-17 Intel Corporation Method and apparatus to identify hardware performance counter events for detecting and classifying malware or workload using artificial intelligence
US11640389B2 (en) 2021-07-23 2023-05-02 Bank Of America Corporation Hash-based identification of data corruption issues in time-series data
US11645252B2 (en) 2021-07-23 2023-05-09 Bank Of America Corporation System and method for efficiently validating time-series data using a hash-based representation of the data
US11397808B1 (en) 2021-09-02 2022-07-26 Confluera, Inc. Attack detection based on graph edge context
US20230092190A1 (en) * 2021-09-22 2023-03-23 The Regents Of The University Of California Two-layer side-channel attacks detection method and devices
US11947450B1 (en) 2022-09-16 2024-04-02 Bank Of America Corporation Detecting and mitigating application security threats based on quantitative analysis
US12099601B2 (en) 2022-09-16 2024-09-24 Bank Of America Corporation Detecting and mitigating application security threats based on threat change patterns

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030070087A1 (en) * 2001-10-05 2003-04-10 Dmitry Gryaznov System and method for automatic updating of multiple anti-virus programs
US20080184371A1 (en) * 2007-01-29 2008-07-31 Deutsche Telekom Ag method and system for detecting malicious behavioral patterns in a computer, using machine learning
US20120254641A1 (en) * 2011-03-31 2012-10-04 Efraim Rotem Apparatus and method for high current protection
US20120266244A1 (en) 2011-04-13 2012-10-18 Microsoft Corporation Detecting Script-Based Malware using Emulation and Heuristics

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6112317A (en) * 1997-03-10 2000-08-29 Digital Equipment Corporation Processor performance counter for sampling the execution frequency of individual instructions
US20110238855A1 (en) * 2000-09-25 2011-09-29 Yevgeny Korsunsky Processing data flows with a data flow processor
US20060265746A1 (en) * 2001-04-27 2006-11-23 Internet Security Systems, Inc. Method and system for managing computer security information
US20050278178A1 (en) * 2004-06-10 2005-12-15 International Business Machines Corporation System and method for intrusion decision-making in autonomic computing environments
US7590880B1 (en) 2004-09-13 2009-09-15 National Semiconductor Corporation Circuitry and method for detecting and protecting against over-clocking attacks
US20060277395A1 (en) * 2005-06-06 2006-12-07 Fowles Richard G Processor performance monitoring
CA2626993A1 (en) 2005-10-25 2007-05-03 The Trustees Of Columbia University In The City Of New York Methods, media and systems for detecting anomalous program executions
US8490194B2 (en) 2006-01-31 2013-07-16 Robert Moskovitch Method and system for detecting malicious behavioral patterns in a computer, using machine learning
US7512570B2 (en) 2006-05-30 2009-03-31 Zaracom Technologies Inc. Artificial intelligence analyzer and generator
US8229726B1 (en) 2006-10-05 2012-07-24 Oracle America, Inc. System for application level analysis of hardware simulations
US8250645B2 (en) * 2008-06-25 2012-08-21 Alcatel Lucent Malware detection methods and systems for multiple users sharing common access switch
US7861305B2 (en) * 2007-02-07 2010-12-28 International Business Machines Corporation Method and system for hardware based program flow monitor for embedded software
IL191744A0 (en) 2008-05-27 2009-02-11 Yuval Elovici Unknown malcode detection using classifiers with optimal training sets
EP2141626A1 (en) 2008-07-04 2010-01-06 Koninklijke KPN N.V. Malware detection uses time-based CPU utilization metric
US7657941B1 (en) 2008-12-26 2010-02-02 Kaspersky Lab, Zao Hardware-based anti-virus system
US20110041179A1 (en) 2009-08-11 2011-02-17 F-Secure Oyj Malware detection
CN102054149B (zh) * 2009-11-06 2013-02-13 中国科学院研究生院 一种恶意代码行为特征提取方法
US8661536B2 (en) * 2010-03-17 2014-02-25 Microsoft Corporation Side channel attack analysis
US8707427B2 (en) 2010-04-06 2014-04-22 Triumfant, Inc. Automated malware detection and remediation
US8819225B2 (en) 2010-11-15 2014-08-26 George Mason Research Foundation, Inc. Hardware-assisted integrity monitor
US9369433B1 (en) * 2011-03-18 2016-06-14 Zscaler, Inc. Cloud based social networking policy and compliance systems and methods
US9330256B2 (en) * 2013-02-01 2016-05-03 Qualcomm Incorporated Location based process-monitoring
KR101794116B1 (ko) 2013-03-18 2017-11-06 더 트러스티스 오브 컬럼비아 유니버시티 인 더 시티 오브 뉴욕 하드웨어 특징들을 사용한 이상 프로세스들의 비감시된 검출
US20150205691A1 (en) * 2014-01-23 2015-07-23 Concurix Corporation Event prediction using historical time series observations of a computer application

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030070087A1 (en) * 2001-10-05 2003-04-10 Dmitry Gryaznov System and method for automatic updating of multiple anti-virus programs
US20080184371A1 (en) * 2007-01-29 2008-07-31 Deutsche Telekom Ag method and system for detecting malicious behavioral patterns in a computer, using machine learning
US20120254641A1 (en) * 2011-03-31 2012-10-04 Efraim Rotem Apparatus and method for high current protection
US20120266244A1 (en) 2011-04-13 2012-10-18 Microsoft Corporation Detecting Script-Based Malware using Emulation and Heuristics

Also Published As

Publication number Publication date
US10025929B2 (en) 2018-07-17
US20160275288A1 (en) 2016-09-22
CN105229612B (zh) 2018-06-26
KR20150138229A (ko) 2015-12-09
US20180300484A1 (en) 2018-10-18
WO2014149080A1 (en) 2014-09-25
CN105229612A (zh) 2016-01-06

Similar Documents

Publication Publication Date Title
KR102160659B1 (ko) 하드웨어-기반 마이크로-아키텍처 데이터를 이용한 이상 프로그램 실행의 검출
US11277423B2 (en) Anomaly-based malicious-behavior detection
Moussaileb et al. A survey on windows-based ransomware taxonomy and detection mechanisms
EP3506139B1 (en) Malware detection in event loops
KR101794116B1 (ko) 하드웨어 특징들을 사용한 이상 프로세스들의 비감시된 검출
Demme et al. On the feasibility of online malware detection with performance counters
Almousa et al. Api-based ransomware detection using machine learning-based threat detection models
EP4244718A1 (en) Methods and systems for trusted unknown malware detection and classification in linux cloud environments
Kumara et al. Automated multi-level malware detection system based on reconstructed semantic view of executables using machine learning techniques at VMM
Vidal et al. A novel pattern recognition system for detecting Android malware by analyzing suspicious boot sequences
Shan et al. Growing grapes in your computer to defend against malware
EP3531329B1 (en) Anomaly-based-malicious-behavior detection
Aslan et al. Using a subtractive center behavioral model to detect malware
Akhtar Malware detection and analysis: Challenges and research opportunities
Mishra et al. PSI-NetVisor: Program semantic aware intrusion detection at network and hypervisor layer in cloud
Mohamed et al. Detecting malicious android applications based on API calls and permissions using machine learning algorithms
Maniriho et al. A systematic literature review on Windows malware detection: Techniques, research issues, and future directions
Shalaginov et al. Automated intelligent multinomial classification of malware species using dynamic behavioural analysis
Poudyal Multi-level analysis of Malware using Machine Learning
Jawhar A Survey on Malware Attacks Analysis and Detected
Nugraha Malware classification using machine learning algorithm
Mahesh et al. Spyware Detection and Prevention using Deep Learning, AI for user applications
AlMasri et al. Check for updates Detecting Spyware in Android Devices Using Random Forest
Arul et al. Dynamic runtime protection technique against the file system injecting malwares
Salas et al. Static Analysis for Malware Classification Using Machine and Deep Learning

Legal Events

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