KR101759008B1 - 코드 실행의 프로파일링 - Google Patents

코드 실행의 프로파일링 Download PDF

Info

Publication number
KR101759008B1
KR101759008B1 KR1020157021835A KR20157021835A KR101759008B1 KR 101759008 B1 KR101759008 B1 KR 101759008B1 KR 1020157021835 A KR1020157021835 A KR 1020157021835A KR 20157021835 A KR20157021835 A KR 20157021835A KR 101759008 B1 KR101759008 B1 KR 101759008B1
Authority
KR
South Korea
Prior art keywords
operations
monitored
malware
pattern
entities
Prior art date
Application number
KR1020157021835A
Other languages
English (en)
Other versions
KR20150106941A (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 KR20150106941A publication Critical patent/KR20150106941A/ko
Application granted granted Critical
Publication of KR101759008B1 publication Critical patent/KR101759008B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • 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

Abstract

전자 장치를 보안하기 위한 기술들은 복수의 규칙을 결정하는 단계, 전자 장치의 실행을 모니터링하는 단계, 규칙들에 기초하여 동작들 중 하나가 발생했다는 통지를 생성하는 단계, 및 통지 및 동작들의 패턴에 기초하여, 동작들이 멀웨어를 나타내는지를 판단하는 단계를 포함할 수 있다. 규칙들은 모니터링될 전자 장치의 복수의 엔티티의 식별, 모니터링될 엔티티들 사이의 하나 이상의 동작의 식별 및 모니터링될 동작들의 패턴의 식별을 포함할 수 있다.

Description

코드 실행의 프로파일링{PROFILING CODE EXECUTION}
본 발명의 실시예들은 일반적으로 컴퓨터 보안 및 멀웨어(malware) 보호에 관한 것으로서, 특히 코드 실행의 프로파일링에 관한 것이다.
컴퓨터들 및 다른 전자 장치들 상에서의 멀웨어 감염은 매우 침입적이고, 검출 및 치료가 어렵다. 안티-멀웨어 솔루션들은 악성 코드 또는 파일들의 시그니처를 평가되는 소프트웨어와 매칭시켜 그 소프트웨어가 컴퓨팅 시스템에 해롭다고 판단하는 것을 필요로 할 수 있다. 멀웨어는 다형성(polymorphic) 프로그램들 또는 실행 파일들의 사용을 통해 변장할 수 있으며, 멀웨어는 안티-멀웨어 솔루션들에 의한 검출을 피하도록 변신한다. 그러한 경우에, 안티-멀웨어 솔루션들은 제로 데이 공격에서 새로운 또는 변형된 멀웨어를 검출하지 못할 수 있다. 멀웨어는 스파이웨어, 루트킷, 패스워드 스틸러(stealer), 스팸, 피싱 공격 소스, 서비스 거부 공격 소스, 바이러스, 로거(logger), 트로이 목마 바이러스, 애드웨어, 또는 원하지 않는 활동을 유발하는 임의의 다른 디지털 콘텐츠를 포함할 수 있지만, 이에 한정되지 않는다.
이제, 본 발명의 실시예들 및 그의 특징들 및 장점들의 더 완전한 이해를 위해 첨부 도면들과 연계하여 해석되는 아래의 설명을 참조한다. 도면들에서:
도 1은 코드 실행을 프로파일링하기 위한 시스템(100)의 일 실시예의 예시이다.
도 2는 멀웨어 액세스 규칙들의 일 실시예의 예시이다.
도 3은 코드 실행을 프로파일링하기 위한 규칙들 또는 멀웨어 액세스 규칙 로직을 결정하기 위한 방법의 일 실시예의 예시이다.
도 4는 코드 실행을 프로파일링하기 위한 방법의 일 실시예의 예시이다.
도 1은 코드 실행을 프로파일링하기 위한 시스템(100)의 일 실시예의 예시이다. 시스템(100)은 코드가 전자 장치 상에 동적으로 로딩되고 실행될 때 코드의 실행을 프로파일링하도록 구성될 수 있다. 코드 실행을 프로파일링함으로써, 시스템(100)은 멀웨어를 나타내는 실행의 패턴들에 대하여 실행을 모니터링할 수 있다. 일 실시예에서, 시스템(100)은 운영 체제 또는 애플리케이션 훅킹을 이용하지 않고서 그러한 모니터링을 수행할 수 있다. 다른 실시예에서, 시스템(100)은 프로세서 상의 예외 로딩을 이용하여 그러한 모니터링을 수행할 수 있다. 또 다른 실시예에서, 시스템(100)은 상이한 주소 공간들 사이의 전이들을 기록하고 평가함으로써 코드 실행의 프로파일링을 수행할 수 있다.
시스템(100)은 전자 장치(102)가 멀웨어에 의해 감염되었는지를 평가하도록 구성되는 안티-멀웨어 모듈(110)을 포함할 수 있다. 안티-멀웨어 모듈(110)은 전자 장치(102) 상에 또는 전자 장치(102)에 통신 결합되는 전자 장치 상에 존재할 수 있다. 안티-멀웨어 모듈(110)은 전자 장치(102)의 프로세서(106)에 그리고 멀웨어 액세스 규칙 로직(108)에 통신 결합될 수 있다. 안티-멀웨어 모듈(110)은 멀웨어 액세스 규칙 로직(108)에 액세스하여 전자 장치의 메모리(104)의 어떤 부분들을 모니터링할지를 결정하도록 구성될 수 있다. 더구나, 안티-멀웨어 모듈(110)은 멀웨어 액세스 규칙 로직(108)에 액세스하여 메모리의 주어진 부분으로부터 다른 부분으로의 어떠한 전이들을 모니터링할지를 결정하도록 구성될 수 있다. 안티-멀웨어 모듈(110)은 예를 들어 제1의 정의된 주소 공간(또는 범위)과 제2의 정의된 주소 공간(또는 범위) 사이에서 전이가 발생할 때 예외들을 생성하도록 프로세서(106)를 구성함으로써 그러한 규칙들을 프로세서(106)에서 정의하도록 구성될 수 있다. 프로세서(106)는 결과적인 예외를 안티-멀웨어 모듈(110)로 전송하도록 구성될 수 있다. 안티-멀웨어 모듈(110)은 멀웨어 액세스 규칙 로직(108)에 액세스하여, 프로세서(106)에 의해 검출된 전이가 이전에 결정된 전이들과 함께 멀웨어와 관련된 시퀀스, 상태 그래프 모델 또는 다른 규칙을 충족시키는지를 판단하도록 구성될 수 있다.
멀웨어 액세스 규칙 로직(108)은 전자 장치(102) 상에 또는 안티-멀웨어 모듈(110)에 의해 액세스될 수 있는 임의의 다른 전자 장치 상에 존재할 수 있다. 일 실시예에서, 멀웨어 액세스 규칙 로직(108)은 안티-멀웨어 모듈(110)에 통신 결합된 네트워크 상의 안티-멀웨어 서버 상에 존재할 수 있다. 다른 실시예에서, 멀웨어 액세스 규칙 로직(108)은 메모리(104), 프로세서(106) 또는 안티-멀웨어 모듈(110) 내에 로딩될 수 있다. 멀웨어 액세스 규칙 로직(108)은 임의의 적절한 방식으로, 예를 들어 서버, 프록시, 애플리케이션, 모듈, 스크립트, 라이브러리, 함수, 로직, 데이터베이스, 파일, 테이블 또는 다른 데이터 구조 또는 엔티티를 이용하여 구현될 수 있다. 멀웨어 액세스 규칙 로직(108)은 모니터링할 메모리(104)의 영역들, 모니터링할 전이들, 모니터링할 I/O 포트들, 판독 또는 기록할 메모리 영역들, 또는 멀웨어를 나타내는 전이들의 시퀀스를 정의하기 위한 임의의 적절한 정보를 포함할 수 있다.
멀웨어 액세스 규칙 로직(108)은 모니터링되는 동작 또는 시퀀스를 안전한 것으로서 인식하는 긍정(positive) 규칙들, 또는 모니터링되는 동작 또는 시퀀스를 악성으로서 인식하는 부정(negative) 규칙들을 포함할 수 있다. 더구나, 멀웨어는 합법 소프트웨어에서의 예상 실행 순서를 조작할 수 있으며, 따라서 개별 동작들은 악성이 아니고, 사실상 합법 소프트웨어와 관련되지만, 그러한 동작들의 순서가 악성이 되게 하는 시퀀스로 수행된다. 그러한 멀웨어는 예를 들어 반환 지향 프로그래밍(ROP)을 포함할 수 있다. 조합 규칙들 내의 긍정 규칙들의 사용에 의해, 멀웨어의 하나 이상의 "거짓 긍정" 식별이 제거될 수 있다.
전자 장치(102)는 임의의 적절한 방식으로 구현될 수 있다. 예를 들어, 전자 장치(102)는 이동 장치, 컴퓨터, 서버, 랩탑, 데스크탑, 보드 또는 블레이드를 포함할 수 있다.
안티-멀웨어 모듈(110)은 임의의 적절한 방식으로 구현될 수 있다. 예를 들어, 안티-멀웨어 모듈(110)은 명령어, 로직, 함수, 라이브러리, 공유 라이브러리, 애플리케이션, 스크립트, 프로그램, 실행 파일, 객체, 아날로그 회로, 디지털 회로 또는 이들의 임의의 적절한 조합을 포함할 수 있다.
프로세서(106)는 예를 들어 마이크로프로세서, 마이크로컨트롤러, 디지털 신호 프로세서(DSP), 주문형 집적 회로(ASIC), 또는 프로그램 명령어들 및/또는 프로세스 데이터를 해석 및/또는 실행하도록 구성되는 임의의 다른 디지털 또는 아날로그 회로를 포함할 수 있다. 일부 실시예들에서, 프로세서(106)는 메모리(104) 내에 저장된 프로그램 명령어들 및/또는 프로세스 데이터를 해석 및/또는 실행할 수 있다. 메모리(104)는 애플리케이션 메모리, 시스템 메모리 또는 이들 양자로서 부분적으로 또는 완전히 구성될 수 있다. 메모리(104)는 하나 이상의 메모리 모듈을 유지 및/또는 내장하도록 구성되는 임의의 시스템, 장치 또는 기기를 포함할 수 있다. 각각의 메모리 모듈은 프로그램 명령어들 및/또는 데이터를 소정 기간 동안 유지하도록 구성되는 임의의 시스템, 장치 또는 기기(예로서, 컴퓨터 판독 가능 저장 매체)를 포함할 수 있다. 전자 장치(102) 또는 안티-멀웨어 모듈(110)과 같은 컴포넌트들의 구성들과 같은 시스템(100)의 동작을 구성하기 위한 명령어들, 로직 또는 데이터가 프로세서(106)에 의한 실행을 위해 메모리(104) 내에 존재할 수 있다.
프로세서(106)는 프로세서의 하나 이상의 코어에 의해 실행될 하나 이상의 코드 명령어(들)를 실행할 수 있다. 프로세서 코어들은 코드 명령어들에 의해 표시되는 명령어들의 프로그램 시퀀스를 따를 수 있다. 각각의 코드 명령어는 프로세서의 하나 이상의 디코더에 의해 처리될 수 있다. 디코더는 사전 정의된 포맷의 고정-폭 마이크로 동작과 같은 마이크로 동작을 그의 출력으로서 생성할 수 있거나, 본래의 코드 명령어를 반영하는 다른 명령어들, 마이크로 명령어들 또는 제어 신호들을 생성할 수 있다. 프로세서(106)는 또한 레지스터 개명 로직 및 스케줄링 로직을 포함할 수 있으며, 이들은 일반적으로 자원들을 할당하고, 변환된 명령어들에 대응하는 동작을 실행을 위해 큐잉(queueing)한다. 코드 명령어들에 의해 지정된 동작들의 실행의 완료 후에, 프로세서(106) 내의 백엔드 로직이 명령어를 회수할 수 있다. 일 실시예에서, 프로세서(106)는 비순차적 실행을 허가할 수 있지만, 명령어들의 순차적 회수를 요구한다. 프로세서(106) 내의 회수 로직은 이 분야의 기술자들에게 알려진 바와 같은 다양한 형태들(예로서, 재배열 버퍼 등)을 취할 수 있다. 따라서, 프로세서(106)의 프로세서 코어들은 적어도 디코더에 의해 생성되는 출력, 레지스터 개명 로직에 의해 사용되는 하드웨어 레지스터들 및 테이블들, 및 실행 로직에 의해 변경되는 임의의 레지스터들과 관련하여 코드의 실행 중에 변형된다.
안티-멀웨어 모듈(110)은 모니터링할 메모리(104)의 임의의 적절한 부분을 정의하도록 구성될 수 있다. 안티-멀웨어 모듈(110)은 예를 들어 멀웨어 액세스 규칙 로직(108)을 참조함으로써 그러한 정의들을 행할 수 있다. 예를 들어, 안티-멀웨어 모듈(110)은 커널 모드 동작을 위해 사용되는 메모리(104)의 부분들을 정의할 수 있다. 도 1의 예에서, 안티-멀웨어 모듈(110)은 (0x000) 내지 ((M*F)xFFF)의 메모리 주소들을 포함하는 커널 공간이 하나의 영역으로서 모니터링되어야 한다는 것을 정의할 수 있다. 다른 예에서, 안티-멀웨어 모듈(110)은 사용자 모드 동작을 위해 사용되는 메모리(104)의 부분들이 하나의 영역으로서 모니터링되어야 한다는 것을 정의할 수 있다. 도 1의 예에서, 안티-멀웨어 모듈(110)은 ((M*F)xFFF) 내지 ((N*F)xFFF)의 메모리 주소들을 포함하는 사용자 공간이 하나의 영역으로서 모니터링되어야 한다는 것을 정의할 수 있다.
안티-멀웨어 모듈(110)에 의한 모니터링을 위해 특정 애플리케이션들, 프로세스들 또는 스레드들이 식별될 수 있다. 이들은 메모리(104) 내에 로딩될 때 동적으로 추적될 수 있다. 도 1의 예에서, 안티-멀웨어 모듈(110)은 R5로 표시되는 영역 내에 로딩된 바와 같은 특정한 추적되는 프로세스가 모니터링되어야 한다는 것을 정의할 수 있다. 추적되는 프로세스는 멀웨어와의 관련성이 알려지지 않은 프로세스를 나타낼 수 있다.
안티-멀웨어 모듈(110)에 의한 모니터링을 위해 운영 체제의 특정 부분들이 식별될 수 있다. 이러한 부분들은 메모리(104) 내에 로딩될 때 동적으로 추적될 수 있다. 운영 체제의 임의의 적절한 부분에 대한 메모리가 모니터링될 수 있다. 도 1의 예에서, 안티-멀웨어 모듈(110)은 R1로 표시된 영역 내에 로딩되는 바와 같은 시스템 서비스 디스패치 테이블(SSDT) 및 R7로 표시된 영역 내에 로딩되는 바와 같은 운영 체제의 사용자-부분 "X"가 모니터링될 수 있다는 것을 정의할 수 있다. SSDT 내의 개별 포인터들과 같은, 영역들 또는 운영 체제 구조체들 내의 특정 요소들이 모니터링될 수 있다. 그러한 개별 포인터들은 SSDT에 의해 관리되는 특정한 식별된 함수들의 액세스를 나타낼 수 있다.
메모리(104) 내에 존재함에 따라 모니터링될 수 있는 다른 엔티티들은 예를 들어 동적 링크 라이브러리(DLL)를 포함하는 시스템 공유 라이브러리, 인터럽트 설명자 테이블(IDT), 시스템 호출 테이블, 사용자 공유 라이브러리 또는 운영 체제 호출 디스패처를 포함할 수 있다. 그러한 엔티티들은 임의의 적절한 운영 체제에서 사용될 수 있다. 커널 공간의 영역들(R2, R3, R4) 및 사용자 공간의 영역(R6)과 같은 메모리(104)의 다른 영역들이 정의될 수 있다.
더구나, 안티-멀웨어 모듈(110)은 코드 실행을 프로파일링하는 데 사용될 특정 전이, 판독, 기록, 실행, 속성 변경 또는 I/O 포트 속성 변경을 식별하도록 구성될 수 있다. 특정 전이들 및 액세스들이 멀웨어 액세스 규칙 로직(108)에서 정의될 수 있다. 예시적인 전이들이 도 1에 예시되며, R7 내의 운영 체제의 사용자 부분 "X"과 같은 사용자 공간의 알려진 부분으로부터 R5 내의 추적되는 프로세스로의 전이(114); R4 내의 커널 공간 내의 식별되지 않은 엔티티들로부터 R5 내의 추적되는 프로세스로의 전이(124); R4 내의 커널 공간 내의 하나의 식별되지 않은 엔티티로부터 R3 내의 커널 공간 내의 다른 식별되지 않은 엔티티로의 전이(122); R4 내의 추적되는 프로세스로부터 R1 내의 SSDT와 같은 커널 공간 내의 알려진 엔티티로의 전이(118); R4 내의 추적되는 프로세스로부터 R3 내의 커널 공간 내의 식별되지 않은 엔티티로의 전이(116); 또는 R2 내의 커널 공간 내의 알려지지 않은 엔티티로부터 R1 내의 SSDT와 같은 커널 공간 내의 알려진 엔티티로의 전이(120)를 포함할 수 있다.
게다가, 안티-멀웨어 모듈(110)은 코드 실행을 프로파일링하는 목적들을 위해 전이들의 특정 양태들을 식별하도록 구성될 수 있다. 특정 양태들은 멀웨어 액세스 규칙 로직(108)에서 정의될 수 있다. 일 실시예에서, 전이의 특정 방향이 평가될 수 있다. 예를 들어, R1에서 R2로의 전이는 R2에서 R1으로의 전이와 구별될 수 있다. 따라서, 멀웨어 액세스 규칙 로직(108)은 주어진 전이가 지정된 방향에서 매칭되는 것을 필요로 할 수 있다. 다른 실시예에서, 전이의 거리가 평가될 수 있다. 예를 들어, 하나의 메모리 공간으로부터 이웃 메모리 공간으로의 전이는 무시될 전이를 나타낼 만큼 충분히 짧을 수 있다. 따라서, 멀웨어 액세스 규칙 로직(108)은 전이가 임계치 아래의 메모리 주소들에 걸쳐 행해지는 경우에 전이에 대한 예외를 제공할 수 있다. 그러한 임계치는 예를 들어 50 바이트를 포함할 수 있다. 또 다른 실시예에서, 전이의 카운트가 평가될 수 있다. 예를 들어, 하나의 모니터링되는 영역으로부터 다른 모니터링되는 영역으로의 전이가 여러 번 반복될 수 있으며, 그러한 전이가 소정 횟수 반복된 경우에만, 실행은 멀웨어 액세스 규칙 로직(108)을 적용할 가치가 있는 것으로 간주될 것이다. 따라서, 멀웨어 액세스 규칙 로직(108)은 n번의 그러한 전이가 발생할 때 전이가 매칭된다는 것을 명시할 수 있다. 그러한 전이들의 이전 또는 후속 인스턴스들은 무시될 수 있다. 또 다른 실시예에서, 전이들 상에 조건문들이 배치될 수 있으며, 따라서 NOT, AND, OR, XOR 또는 다른 그러한 동작들을 포함하는 로직이 하나 이상의 전이에 적용될 수 있다. 예를 들어, 특정 전이는 다른 식별된 전이를 아직 만나지 못한 경우에 매칭될 수 있다. 따라서, 멀웨어 액세스 규칙 로직(108)은 전이 매칭을 위한 켤레 또는 복합 로직 조건들을 지정할 수 있다.
전이들(114, 116, 118, 120, 122, 124)과 같은 전이들이 메모리(104)의 상이한 영역들 간의 실행 중인 분기들로서 정의될 수 있다. 일 실시예에서, 실행 중인 점프가 프로세서(106)의 명령어 포인터(112) 내에 로딩된 주소들에 따라 평가될 수 있다. 실행 전에 명령어 포인터(112) 내에 로딩된 주어진 범위의 메모리 주소들이 실행 후에 명령어 포인터(112) 내에 로딩된 다른 주어진 범위의 메모리 주소들과 비교될 수 있다. 실행 전후의 명령어 포인터(112)와 관련된 메모리 범위들의 변화는 JMP 명령어, 호출 명령어, 또는 메모리(104) 내에 존재하는 엔티티들 사이에 실행을 분기시키기 위한 다른 명령어를 반영할 수 있다. 다른 실시예에서, 메모리 주소들의 판독들, 기록들 또는 실행들은 실행의 분기들을 정의할 수 있으며, 메모리(104)의 상이한 부분들 내에 있는 메모리의 후속 판독들, 기록들 또는 실행들은 전이들로서 간주될 수 있다. 또 다른 실시예에서는, 명령어 인출을 이용하여 메모리(104) 내의 실행의 포인트를 결정할 수 있다.
타이밍 및 명령어 카운트들도 멀웨어 액세스 규칙 로직(108)에서 고려될 수 있다. 예컨대, 2개의 전이 사이의 - 중앙 처리 유닛 카운터에 의해 결정하는 것과 같은 - 시간 간격이 너무 길거나 너무 짧은 경우에는 주어진 규칙이 적용되지 않을 수 있다. 유사하게, 명령어 카운터가 임계치 위에 또는 아래에 있는 경우, 규칙 매칭의 상태는 초기 상태로 재설정될 수 있다.
도 1에는 단일 프로세서(106)가 도시되지만, 시스템은 다수의 프로세서를 포함할 수 있다. 더구나, 프로세서(106)는 다수의 코어 또는 중앙 처리 유닛을 포함할 수 있다. 시스템(100)에 의해 수행되는 프로파일 실행은 프로세서별로, 코어별로 또는 중앙 처리 유닛별로 수행될 수 있다. 더구나, 그러한 프로파일 실행은 임의의 그러한 프로세서, 코어 또는 중앙 처리 유닛 상에서 프로세스별로 또는 스레드별로 수행될 수 있다.
도 1에서의 전이들과 관련된 코드 실행 프로파일링의 예시는 연속 메모리와 관련하여 행해진다. 그러한 프로파일링은 엔티티들의 프로파일링을 포함할 수 있는데, 이는 그러한 엔티티들이 가상 메모리 내에 존재하기 때문이다. 일 실시예에서, 코드 실행의 프로파일링은 가상 메모리의 기초가 되는 물리 주소들을 참조하여 달성될 수 있다.
전술한 바와 같이, 안티-멀웨어 모듈(110)은 멀웨어 액세스 규칙 로직(108)에 액세스하여, 모니터링될 임의의 적절한 수 또는 종류의 전이들을 결정할 수 있다. 일 실시예에서, 모니터링될 그러한 전이들에 대한 규칙들, 표시들 또는 로직은 예를 들어 프로세서(106) 내에 또는 프로세서(106)에 결합된 랜덤 액세스 메모리 제어기 내에 로딩될 수 있다. 규칙들에 의해 정의되는 그러한 전이를 만날 때, 프로세서(106)는 안티-멀웨어 모듈(110)에 의해 처리될 수 있는 페이지 장애, 인터럽트 또는 예외를 생성할 수 있다. 다른 실시예에서, 모니터링될 그러한 전이들에 대한 규칙들, 표시들 또는 로직은 하이퍼바이저 또는 가상 머신 모니터와 같은 운영 체제 하부 트랩핑 에이전트(below-operating system trapping agent) 내에 로딩될 수 있다. 규칙들에 의해 정의되는 그러한 전이를 만날 때, 하이퍼바이저 또는 가상 머신 모니터는 안티-멀웨어 모듈(110)에 의해 처리될 수 있는 가상 머신 종료 또는 다른 통지를 생성할 수 있다. 안티-멀웨어 모듈(110)은 또한 멀웨어 액세스 규칙 로직(108)에 액세스하여, 검출된 전이가 멀웨어를 나타내는지를 판단할 수 있다. 통지의 처리 동안, 실행이 중지될 수 있다.
프로세서(106)에 의해 행해지는, 규칙이 매칭되었다는 통지는 상황 정보를 포함할 수 있다. 이 정보는 매칭된 규칙의 식별, 액세스된 메모리 위치, 액세스를 개시한 메모리 위치 및 프로세서(106)의 실행 스택 상에 존재하는 값들과 같은 임의의 관련 파라미터들을 포함할 수 있다.
안티-멀웨어 모듈(110)은 다수의 검출된 전이의 발생들을 추적하여, 그러한 전이들이 멀웨어를 나타내는 동작 패턴을 포함하는지를 판단하도록 구성될 수 있다. 그러한 패턴들은 예를 들어 멀웨어 액세스 규칙 로직(108)에서 정의될 수 있다.
하나 이상의 검출된 전이가 멀웨어를 나타내지 않는 경우, 안티-멀웨어 모듈(110)은 전이를 허가하도록 구성될 수 있다. 하나 이상의 검출된 전이가 추가적인 결정되는 전이들까지 멀웨어를 표시할 수 있는 경우, 안티-멀웨어 모듈(110)은 전이를 허가하지만, 가능한 미래의 정정 액션을 위해 전이를 기록하도록 구성될 수 있다.
더구나, 하나 이상의 검출된 전이가 추가적인 결정되는 전이들까지 멀웨어를 표시할 수 있는 경우, 안티-멀웨어 모듈(110)은 멀웨어 액세스 규칙 로직(108)으로부터 추가적인 규칙들을 로딩하도록 구성될 수 있다. 그러한 추가적인 규칙들은 예를 들어 모니터링될 메모리(104)의 추가 영역들, 추적될 추가 전이들 또는 추적될 전이들의 추가 조합들을 지정할 수 있다. 결과적으로, 적용되는, 선택되는 멀웨어 액세스 규칙 로직(108)은 동적으로 바뀔 수 있다. 그러한 동적 접근법은 프로세서 내에 로딩되는 전체 규칙 세트를 유지하기 위한 프로세서의 용량의 한계를 극복할 수 있다. 규칙들은 필요 시에 동적으로 로딩되고, 무관한 규칙들이 폐기될 수 있다. 예를 들어, 초기에 트리거되지 않을 수 있는 3개의 상태("A"-"B"-"C")를 갖는 규칙이 제1 상태 "A"와 매칭될 수 있다. 그러한 포인트에서, "C"에 대한 매칭이 폐기될 수 있는데, 이는 먼저 "B"의 매칭 없이는 "C"의 고려가 부적절할 수 있기 때문이다. 전이가 발생하여 "B"와 매칭되면, "C"와 관련된 규칙의 나머지가 리로딩될 수 있다. 규칙 분기들의 로딩 또는 언로딩은 예를 들어 안티-멀웨어 모듈(110)에 의해 수행될 수 있다.
또한, 하나 이상의 검출된 전이는 추가적인 조사 동작들까지 멀웨어를 나타낼 수 있다. 그러한 추가적인 조사 동작들은 전이들의 평가 외에 결정들을 포함할 수 있다. 예를 들어, 전이들의 세트에 의해 정의되는 실행 패턴이 주어지는 경우, 멀웨어 액세스 규칙 로직(108)은 그러한 액션들의 소스가 예를 들어 안전하거나 멀웨어와 관련된 것으로 알려진 엔티티들에 대한 해시 또는 디지털 시그니처를 이용하여 평가되어야 한다는 것을 정의할 수 있다. 다른 예에서, 전이들의 세트에 의해 정의되는 실행 패턴이 주어지는 경우, 멀웨어 액세스 규칙 로직(108)은 그러한 액션들이 운영 체제의 보안된 부분, 서명된 드라이버 또는 보호된 함수 호출과 같은 허가 또는 검증된 객체로부터 개시되었어야 한다는 것을 정의한다.
하나 이상의 전이가 멀웨어를 나타낸다는 판단 시에, 안티-멀웨어 모듈(110)은 임의의 적절한 정정 액션을 취하도록 구성될 수 있다. 예를 들어, 멀웨어를 나타내는 전이들과 관련된 메모리(104) 내의 엔티티들은 격리, 보고, 제거, 청소 또는 달리 처리될 수 있다. 더구나, 그러한 엔티티들과 관련된 무언가, 예를 들어 저장 장치 내의 또는 디스크 상의 콘텐츠 또는 메모리 내의 다른 실행 프로세스들이 격리, 보고, 제거, 청소 또는 달리 처리될 수 있다.
소정의 인터럽트들 또는 통지들이 멀웨어 액세스 규칙 로직(108)의 화이트리스트에 따라 정의될 수 있다. 그러한 인터럽트들 또는 통지들의 화이트리스트 내의 배치는 안티-멀웨어 모듈(110)로 하여금 멀웨어 분석과 관련하여 그러한 인터럽트들을 무시하게 할 수 있다. 그러한 인터럽트들 또는 통지들은 예를 들어 시스템(100)의 알려진 또는 안전한 요소들의 결과일 수 있거나, 멀웨어와 무관하고, 따라서 안티-멀웨어 모듈(110)에 의한 어떠한 처리도 필요로 하지 않을 수 있다.
도 2는 시스템(100)의 동작을 수행할 수 있는 멀웨어 액세스 규칙 로직(108)의 일 실시예의 예시이다.
멀웨어 액세스 규칙 로직(108)은 모니터링되는 영역들(202)을 포함할 수 있다. 모니터링되는 영역들(202)은 모니터링될 엔티티들을 정의할 수 있다. 일 실시예에서, 모니터링되는 영역들(202)은 실행이 시스템(100)에 의해 프로파일링될 메모리(104)의 메모리 범위들을 정의할 수 있다. 메모리 범위들은 적절한 경우에 물리 메모리 주소들 또는 가상 메모리 주소들에 따라 정의될 수 있다. 주어진 엔티티에 대응하는 메모리 범위들의 맵핑은 예를 들어 안티-멀웨어 모듈(110)에 따라 정의될 수 있는데, 이는 그가 메모리(104)의 요소들의 로딩 및 언로딩을 추적하기 때문이다. 도 2의 예에서, 모니터링되는 영역들(202)은 사용자 공간 및 커널 공간이 모니터링되어야 한다는 것을 정의할 수 있다. 그러한 모니터링되는 영역들(202)은 사용자 공간이 주소 (M*FxFFF) 내지 (N*FxFFF)에 존재할 수 있다는 것과 커널 공간이 주소 (0x000) 내지 (M*FxFFF)에 존재할 수 있다는 것을 정의할 수 있다. 구체적으로, 모니터링되는 영역들(202) 내에는 SSDT, 추적되는 프로세스, 및 운영 체제의 사용자 부분 "X"와 같은 요소들이 정의될 수 있다. 도 2의 예에서는 구체적인 메모리 주소 범위들이 상술되지 않지만, 그러한 주소들은 그들이 결정된 후에 지정될 수 있다. 더구나, 각각의 그러한 범위는 고유 식별자를 부여받거나, 다른 규칙들에 의한 참조를 위해 달리 라벨링될 수 있다. 커널 공간 및 사용자 공간은 그와 같이 참조될 수 있다. SSDT에 대한 공간은 R1로서 표시될 수 있고, 추적되는 프로세스에 대한 공간은 R5로서 표시될 수 있으며, 운영 체제의 사용자 부분 "X"에 대한 공간은 R7로서 표시될 수 있다.
멀웨어 액세스 규칙 로직(108)은 어떤 전이들 또는 다른 동작들이 멀웨어 평가를 위한 처리를 필요로 할 수 있는지를 지정할 수 있는 모니터링되는 동작들(204)을 포함할 수 있다. 멀웨어 액세스 규칙 로직(108)의 다른 부분들에 의한 참조를 위해, 모니터링되는 동작들(204) 각각은 고유 식별자에 의해 표시될 수 있다. 따라서, 고유 식별자는 모니터링되는 동작이 발생한 동작의 상태를 나타낼 수 있다. 예를 들어, R5(추적되는 프로세스)로부터 R7(사용자 부분 "X")로의 호출, 점프 또는 다른 분기가 전이로서 간주되고, 상태 (A)로서 마킹될 수 있다. R7(사용자 부분 "X")로부터 커널 공간 내의 어딘가로의 호출, 점프 또는 다른 분기가 전이로서 간주되고, 상태 (B)로서 마킹될 수 있다. 커널 공간 내의 어딘가로부터 R1(SSDT)로의 호출, 점프 또는 다른 분기가 전이로서 간주되고, 상태 (C)로서 마킹될 수 있다. 커널 공간 내의 어딘가로부터 커널 공간 내의 다른 어딘가로의 호출, 점프 또는 다른 분기가 전이로서 간주되고, 상태 (D)로서 마킹될 수 있다. 그러한 이벤트는 최소 거리 요구를 필요로 할 수 있다. 커널 공간 내의 어딘가로부터 사용자 공간 내의 다른 어딘가로의 호출, 점프 또는 다른 분기가 전이로서 간주되고, 상태 (E)로서 마킹될 수 있다.
모니터링되는 동작들(204) 각각 내에서 모니터링되는 특정 동작은 임의의 적절한 동작을 포함할 수 있다. 동작은 엔티티의 타입에 고유할 수 있다. 예를 들어, 그러한 모니터링은 R5 내의 소정 엔티티들의 실행 또는 단지 R1 내의 엔티티들 내의 데이터의 액세스를 포함할 수 있다.
멀웨어 액세스 규칙 로직(108)은 모니터링되는 동작들(204) 내에 정의되는 것들과 같은 주어진 순서로 조우되는 동작들을 어떻게 처리할지를 지정할 수 있는 프로파일링 규칙들(206)을 포함할 수 있다. 프로파일링 규칙들(206) 각각은 예를 들어 로직 요구들의 세트 또는 상태 머신에 의해 표현될 수 있다. 예를 들어, 검출되는 동작 (A), 이어서 (B), 이어서 (C), 이어서 (D), 이어서 (E)가 주어지는 경우, 프로파일링 규칙들(206)은 그러한 검출되는 시퀀스가 타입 "XYZ"의 멀웨어를 나타낸다는 것을 표시할 수 있다. 일 실시예에서, 시퀀스는 모니터링되는 동작들(204) 중 어떠한 다른 검출되는 동작들도 지정된 상태들 사이에 나타나지 않도록 할 것을 필요로 할 수 있다. 따라서, (A)-(B)-(C)-(D)-(E)의 검출되는 동작 시퀀스는 시퀀스가 타입 "XYZ"의 멀웨어를 나타낸다는 판단을 트리거하지만, (A)-(B)-(A)-(C)-(D)-(E)의 시퀀스는 그러한 멀웨어를 나타내지 않을 것이다. 그러나, (A)-(A)-(B)-(C)-(D)-(E)의 시퀀스는 그러한 패턴과 매칭될 수 있다. 다른 실시예에서, 시퀀스는 모니터링되는 동작들(204) 중 다른 검출되는 동작들이 지정된 상태들 사이에 나타나는 것을 허용할 수 있다. 따라서, 시퀀스 (A)-(B)-(C)-(D)-(E), (A)-(B)-(A)-(C)-(D)-(E) 및 (A)-(A)-(B)-(C)-(D)-(E) 각각은 패턴과 매칭될 것이다.
다른 예에서, 멀웨어 "PDQ"는 상태 머신의 지정된 상태와 매칭되는 모니터링되는 동작들(204)의 패턴으로서 정의될 수 있다. 상태 머신의 로직은 명령들의 임의의 적절한 시리즈에서 구현될 수 있다. 그러한 상태 머신은 모니터링되는 동작들(204)의 최초 상태에서 (A)의 관찰이 모니터링으로 하여금 ((A)로 표시되는) 후속 상태로 이동하게 할 것이라는 것을 지정할 수 있다. 임의의 다른 관찰은 모니터링이 최초 상태로 유지되게 할 것이다. (A)의 상태의 모니터링 시에, (B)의 후속 관찰은 모니터링이 ((B)로 표시되는) 후속 상태로 이동하게 할 것이고, (A), (C), (D) 또는 (E)의 관찰은 모니터링을 최초 상태로 복귀시킬 것이고, 임의의 다른 관찰은 현재 모니터링을 유지할 것이다. (B)의 상태의 모니터링 시에, (C)의 후속 관찰은 모니터링이 ((C)로 표시되는) 후속 상태로 이동하게 할 것이고, (A), (B), (D) 또는 (E)의 관찰은 모니터링을 최초 상태로 복귀시킬 것이고, 임의의 다른 관찰은 현재 모니터링을 유지할 것이다. (C)의 상태의 모니터링 시에, (D)의 후속 관찰은 모니터링이 ((D)로 표시되는) 후속 상태로 이동하게 할 것이고, (A), (B), (C) 또는 (E)의 관찰은 모니터링을 최초 상태로 복귀시킬 것이고, 임의의 다른 관찰은 현재 모니터링을 유지할 것이다. (D)의 상태의 모니터링 시에, (E)의 후속 관찰은 모니터링으로 하여금 멀웨어 "PDQ"가 검출되었다는 판단의 후속 상태로 이동하게 할 것이고, (A), (B), (C) 또는 (D)의 관찰은 모니터링을 최초 상태로 복귀시킬 것이고, 임의의 다른 관찰은 현재 모니터링을 유지할 것이다.
또 다른 예에서, 멀웨어 "MNO"는 (A), 이어서 (B) 또는 (C), 이어서 (D)의 적어도 3개의 인스턴스, 이어서 (E)의 검출의 지정된 시퀀스와 매칭되는 모니터링되는 동작들(204)의 패턴으로서 정의될 수 있다. 따라서, 패턴은 다수의 인스턴스의 요구는 물론, 가능한 악성 거동에 대한 로직 조건들도 이용할 수 있다.
또 다른 예에서, 멀웨어 "JKL"은 (A), 이어서 (B)의 3개 이하의 인스턴스, 이어서 (D), 이어서 (E), 그러나 (C)를 만나지 않는 지정된 검출 시퀀스와 매칭되는 모니터링되는 동작들(204)의 패턴으로서 정의될 수 있다. 따라서, 패턴은 지정된 수 이하의 인스턴스의 요구는 물론, 일부 조건들이 관찰되지 않아야 한다는 요구들도 이용할 수 있다.
제공되는 예들은 모든 가능한 규칙 조합들 및 구현들의 포괄적인 설명으로서 간주되지 않아야 한다는 점에 유의한다. 전이들 또는 이벤트들의 임의의 다른 알고리즘 조합이 멀웨어 액세스 규칙 로직(108)에서 구현될 수 있다. 그러한 알고리즘들은 예를 들어 스크립트, 테이블, 그래프로서 또는 임의의 다른 적절한 방식으로 표현될 수 있다.
따라서, 프로파일링 규칙들(206)은 특정 엔티티의 멀웨어로서의 시그니처 식별에 의존하지 않고서 일반 타입의 멀웨어의 거동을 지정할 수 있다. 따라서, 그의 전체 기능 없이 그 자신의 콘텐츠(결과적으로 시그니처)를 변경할 수 있는 다형성 멀웨어가 검출될 수 있다. 더구나, 특이한 또는 예상하지 못한 동작 패턴들이 검출될 수 있다. 그러한 특이한 또는 예상치 못한 동작 패턴들은 새로운, 알려지지 않은 종류의 멀웨어를 반영할 수 있다. 예를 들어, 프로세스는 신뢰되는 프로세스의 동작을 나타내지만 그러한 신뢰되는 프로세스에 대한 이례적인 액세스를 또한 수행할 수 있는 동작의 시퀀스의 주어진 프리픽스와 매칭될 수 있다. 그러한 경우에, 프로파일링 규칙들(206) 중 하나는 일련의 보조 동작들이 주어지는 경우에 시퀀스를 마무리하기 위한 정의된, 예상된 동작들의 세트를 제외한 무언가가 멀웨어를 나타낼 수 있다는 것을 지정할 수 있다.
도 3은 코드 실행을 프로파일링하기 위한 규칙들 또는 멀웨어 액세스 규칙 로직을 결정하기 위한 방법(300)의 일 실시예의 예시이다. 방법(300)의 결정들은 예를 들어 안티-멀웨어 연구; 특정 전자 장치 또는 그의 엔티티들의 프로파일링; 전자 장치의 클래스 또는 그의 엔티티들의 프로파일링; 안티-멀웨어 서버의 액세스; 안티-멀웨어 규칙 로직의 액세스; 안티-멀웨어 정의 파일들의 판독에 의해, 또는 임의의 다른 적절한 프로세스를 통해 수행될 수 있다. 방법(300)의 결과는 코드 실행을 프로파일링할 수 있는 하나 이상의 안티-멀웨어 규칙의 가용성일 수 있다.
305에서, 모니터링될 전자 장치의 엔티티들이 결정될 수 있다. 그러한 엔티티들은 예를 들어 커널 공간, 사용자 공간, SSDT, 운영 체제 호출 디스패처, 시스템 DLL, 사용자 DLL, 프로세스, I/O 포트, 힙(heap), 스레드 또는 시스템 스택을 포함할 수 있다. 310에서, 그러한 엔티티들이 전자 장치 상에 존재함에 따라 그러한 엔티티들과 관련된 메모리의 영역들이 결정될 수 있다. 315에서, 메모리의 영역들 및 엔티티들에 대한 모니터링될 동작들이 결정될 수 있다. 그러한 동작들은 예를 들어 점프, 호출 또는 다른 실행 분기들을 포함할 수 있다. 동작들은 하나의 메모리 영역으로부터 다른 메모리 영역으로의 방향성으로 정의될 수 있다. 더구나, 동작들은 영역들 사이의 최소 분기 거리들을 필요로 할 수 있다. 320에서, 모니터링될 동작들의 패턴들이 결정될 수 있다. 그러한 패턴들은 명령들, 로직 또는 상태 머신들을 통한 동작들의 특정 순서들을 지정할 수 있다. 패턴들은 예를 들어 멀웨어의 또는 알려진 안전한 컴포넌트들의 거동을 나타낼 수 있다.
도 4는 코드 실행을 프로파일링하기 위한 방법(400)의 일 실시예의 예시이다. 방법(400)은 전자 장치 상의 코드 실행을 프로파일링하기 위해 수행될 수 있다.
405에서, 모니터링할 동작들 및 동작의 패턴들을 구현하는 규칙들, 명령들 또는 명령어들이 프로세서, 하이퍼바이저 또는 안티-멀웨어 모듈과 같은 적절한 트랩핑 에이전트 내에 로딩될 수 있다. 규칙들 중 하나와 매칭되는 전자 장치 내의 관찰된 활동들은 처리될 인터럽트, 예외 또는 다른 통지를 유발할 수 있다. 그러한 규칙들, 명령들 또는 명령어들은 임의의 적절한 방식 또는 메커니즘을 통해 결정될 수 있다. 예를 들어, 방법(300)의 수행은 405에서 규칙들이 로딩되게 할 수 있다.
410에서, 전자 장치 상의 실행이 모니터링될 수 있다. 정의된 동작들과 매칭되는 실행은 인터럽트 또는 예외와 같은 통지가 생성되게 할 수 있다. 415에서, 임의의 그러한 통지가 생성되었는지를 판단할 수 있다. 그러한 경우, 방법(400)은 420으로 진행할 수 있다. 그렇지 않은 경우, 방법(400)은 410으로 복귀할 수 있다.
420에서, 전자 장치의 실행이 중지될 수 있다. 425에서, 관찰된 동작이 기록될 수 있다. 관찰된 동작의 현재 인스턴스가 멀웨어를 나타낼 수 있거나 나타내하지 않을 수 있지만, 후속 관찰된 동작과 관련된 현재 인스턴스가 멀웨어를 나타낼 수 있다. 더구나, 규칙 패턴들의 동적 인식, 로딩 또는 언로딩이 수행될 수 있다.
430에서, 동작이 멀웨어를 나타내는지를 판단할 수 있다. 그러한 판단은 기록된 이전에 관찰된 동작들을 고려하여 행해질 수 있다. 판단은 방법(300)에서 판단되고 405에서 로딩된 동작의 패턴들에 따라 행해질 수 있다. 관찰된 동작이 멀웨어를 나타내는 경우, 방법(400)은 435로 진행할 수 있다. 관찰된 동작이 멀웨어를 나타내지 않는 경우, 방법(400)은 440으로 진행할 수 있다.
435에서, 후속 액션이 취해질 수 있다. 통지, 운영 체제 또는 보안 소프트웨어에 대한 소프트웨어 예외 트리거링, 격리, 네트워크로부터의 손상된 장치의 제거, 청소, 또는 동작을 행하는 엔티티의 제거와 같은 임의의 적절한 액션이 취해질 수 있거나, 허용이 행해질 수 있다. 더구나, 동작과 관련된 다른 엔티티들이 결정되고, 이어서 격리, 청소 또는 제거될 수 있다.
440에서, 관찰된 동작이 적용될 기존 규칙들에 대한 임의의 변경, 추가, 제외 또는 다른 변경에 대한 필요를 유발하는지를 판단할 수 있다. 그러한 변경들은 예를 들어 모니터링될 엔티티들 또는 메모리에 대한 변경들, 검출될 동작들에 대한 변경들, 또는 매칭될 동작 패턴들에 대한 변경들을 포함할 수 있다. 변경이 필요하지 않은 경우, 방법(400)은 450으로 진행할 수 있다. 변경이 필요한 경우, 445에서 그러한 변경들이 수행되고, 새로운 규칙들이 적절한 트랩핑 메커니즘 내에 로딩될 수 있다. 450에서, 실행이 재개될 수 있다. 방법(400)은 410으로 복귀할 수 있다.
방법들(300, 400)은 도 1-2의 시스템 또는 방법들(300, 400)을 구현하도록 동작 가능한 임의의 다른 시스템을 이용하여 구현될 수 있다. 따라서, 방법들(300, 400)에 대한 바람직한 초기화 포인트 및 방법들(300, 400)을 포함하는 요소들의 순서는 선택되는 구현에 의존할 수 있다. 일부 실시예들에서, 일부 요소들은 옵션으로서 생략, 반복 또는 결합될 수 있다. 소정 실시예들에서, 방법들(300, 400)은 컴퓨터 판독 가능 매체 내에 구현되는 소프트웨어에서 부분적으로 또는 완전히 구현될 수 있다. 방법들(300, 400)은 동일하거나 상이한 사용자들, 액터들, 전자 장치들, 모듈들 또는 다른 엔티티들에 의해 수행될 수 있다.
본 개시의 목적들을 위해, 컴퓨터 판독 가능 매체는 소정 기간 동안 데이터 및/또는 명령어들을 유지할 수 있는 임의의 기구 또는 기구들의 집합을 포함할 수 있다. 컴퓨터 판독 가능 매체는 직접 액세스 저장 장치(예로서, 하드 디스크 드라이브 또는 플로피 디스크), 순차 액세스 저장 장치(예로서, 테이프 디스크 드라이브), 컴팩트 디스크, CD-ROM, DVD, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 전기적으로 소거 및 프로그래밍 가능한 판독 전용 메모리(EEPROM) 및/또는 플래시 메모리와 같은 저장 매체는 물론, 및/또는 전술한 것들의 임의 조합을 포함할 수 있지만, 이에 한정되지 않는다.
전술한 바와 같이, 멀웨어는 그의 정체를 숨기기 위해 그 자신에 대한 변경들을 행할 수 있다. 더구나, 멀웨어 저자들은 멀웨어에 대한 변경들을 행하여 그 자신을 숨길 수 있다. 멀웨어의 콘텐츠의 변경은 멀웨어의 디지털 해시 또는 시그니처의 변경을 유발할 수 있다. 결과적으로, 알려진 멀웨어 시그니처들의 리스트에 대한 전자 장치 상의 엔티티들의 식별의 검사는 그러한 변경된 멀웨어를 식별하지 못할 수 있다. 정적 코드의 코드 또는 실행 분석은 마찬가지로 효과적이지 못할 수 있는데, 이는 코드가 그러한 다형성 멀웨어에서 변경될 수 있기 때문이다.
시스템(100) 및 방법들(300, 400)의 장점은 그러한 변경된 멀웨어를 검출하는 것을 포함할 수 있다. 그러한 검출은 멀웨어 뒤의 기본 알고리즘들의 신뢰성 있는 검출을 제공함으로써 수행될 수 있다. 더구나, 시스템(100) 및 방법들(300, 400)은 애플리케이션 프로그래밍 인터페이스 호출, 커널 이벤트 등 내로의 훅킹을 필요로 하지 않고서 그러한 동적 실행 프로파일링을 제공할 수 있다. 프로세서 내에 로딩된 규칙들에 의해 인식을 수행함으로써, 고유 프로세서 속도로 거동 분석이 수행될 수 있다.
아래의 예들은 추가 실시예들과 관련된다. 예들 내의 상세들은 위에서 또는 여기서 설명되는 하나 이상의 실시예 내의 어딘가에서 사용될 수 있다. 예 1에서, 전자 장치를 보안하기 위한 시스템은 메모리 및 메모리 내에 존재하는 멀웨어 액세스 규칙 로직의 세트를 포함할 수 있다. 멀웨어 액세스 규칙 로직의 세트는 모니터링될 전자 장치의 복수의 엔티티의 식별, 모니터링될 엔티티들 사이의 하나 이상의 동작의 식별, 및 모니터링될 동작들의 패턴의 식별을 포함할 수 있다. 시스템은 메모리에 결합되고, 멀웨어 액세스 규칙 로직의 세트에 기초하여, 동작들 중 하나가 발생했다는 통지를 생성하도록 구성되는 프로세서를 포함할 수 있다. 시스템은 통지 및 동작들의 패턴에 기초하여, 동작들이 멀웨어를 나타내는지를 판단하도록 구성되는 안티-멀웨어 모듈을 포함할 수 있다. 안티-멀웨어 모듈은 통지 및 동작들의 패턴에 기초하여, 추가 엔티티의 식별 또는 엔티티들 사이의 동작의 식별 또는 모니터링될 동작들의 패턴의 식별을 포함하는 멀웨어 액세스 규칙 로직의 추가 요소를 식별하도록 더 구성될 수 있다. 안티-멀웨어 모듈은 통지 및 동작들의 패턴에 기초하여, 동작의 원인에 관한 시그니처 검사를 수행하도록 더 구성될 수 있다. 모니터링될 동작들은 엔티티들 사이의 실행 분기를 포함할 수 있다. 모니터링될 동작들은 엔티티들 사이의 실행 분기의 방향을 포함할 수 있다. 모니터링될 동작들은 지정된 거리의 실행 분기를 포함할 수 있다. 모니터링될 동작들은 명령어 포인터 변경을 포함할 수 있다. 모니터링될 동작들은 명령어 인출을 포함할 수 있다. 모니터링될 동작들은 동작의 빈도를 포함할 수 있다. 모니터링될 동작들은 명령어들에서 측정된 실행의 지속기간을 포함할 수 있다. 모니터링될 동작들은 실행 사이클들 또는 클럭 사이클들에서 측정된 실행의 지속기간을 포함할 수 있다. 동작들은 하이퍼바이저 또는 가상 머신 모니터에 의해 모니터링될 수 있다. 모니터링되는 엔티티들은 커널 공간, 사용자 공간, SSDT, DLL, I/O 포트 주소, 운영 체제 호출 디스패처, 프로세스, 스레드 또는 다른 적절한 엔티티를 포함할 수 있다. 통지는 예외 또는 인터럽트를 포함할 수 있다. 패턴은 동작이 실행된 횟수의 열거를 포함할 수 있다. 패턴은 특정 동작이 관찰되지 않았다는 요건을 포함할 수 있다. 패턴은 그의 요소들 중 하나 이상의 요소의 로직 제약들을 포함할 수 있다.
예 2에서, 전자 장치를 보안하기 위한 방법은 멀웨어 액세스 규칙 로직의 세트에 기초하여 전자 장치의 실행을 모니터링하는 단계를 포함할 수 있다. 멀웨어 액세스 규칙 로직의 세트는 모니터링될 전자 장치의 복수의 엔티티의 식별, 모니터링될 엔티티들 사이의 하나 이상의 동작의 식별, 및 모니터링될 동작들의 패턴의 식별을 포함할 수 있다. 방법은 멀웨어 액세스 규칙 로직의 세트에 기초하여, 동작들 중 하나가 발생했다는 통지를 생성하는 단계, 및 통지 및 동작들의 패턴에 기초하여, 동작들이 멀웨어를 나타내는지를 판단하는 단계를 더 포함할 수 있다. 방법은 통지 및 동작들의 패턴에 기초하여, 추가 엔티티의 식별 또는 엔티티들 사이의 동작의 식별 또는 모니터링될 동작들의 패턴의 식별을 포함하는 멀웨어 액세스 규칙 로직의 추가 요소를 식별하는 단계를 더 포함할 수 있다. 방법은 통지 및 동작들의 패턴에 기초하여, 동작의 원인에 관한 시그니처 검사를 수행하는 단계를 더 포함할 수 있다. 모니터링될 동작들은 엔티티들 사이의 실행 분기를 포함할 수 있다. 모니터링될 동작들은 엔티티들 사이의 실행 분기의 방향을 포함할 수 있다. 모니터링될 동작들은 지정된 거리의 실행 분기를 포함할 수 있다. 모니터링될 동작들은 명령어 포인터 변경을 포함할 수 있다. 모니터링될 동작들은 명령어 인출을 포함할 수 있다. 모니터링될 동작들은 동작의 빈도를 포함할 수 있다. 모니터링될 동작들은 명령어들에서 측정된 실행의 지속기간을 포함할 수 있다. 모니터링될 동작들은 실행 사이클들 또는 클럭 사이클들에서 측정된 실행의 지속기간을 포함할 수 있다. 동작들은 하이퍼바이저 또는 가상 머신 모니터에 의해 모니터링될 수 있다. 모니터링되는 엔티티들은 커널 공간, 사용자 공간, SSDT, DLL, I/O 포트 주소, 운영 체제 호출 디스패처, 프로세스, 스레드 또는 다른 적절한 엔티티를 포함할 수 있다. 통지는 예외 또는 인터럽트를 포함할 수 있다. 패턴은 동작이 실행된 횟수의 열거를 포함할 수 있다. 패턴은 특정 동작이 관찰되지 않았다는 요건을 포함할 수 있다. 패턴은 그의 요소들 중 하나 이상의 요소의 로직 제약들을 포함할 수 있다.
예 3에서, 적어도 하나의 머신 판독가능 저장 매체는 컴퓨터 판독가능 매체 상에 보유된 컴퓨터 실행가능 명령어들을 포함할 수 있다. 명령어들은 프로세서에 의해 실행될 수 있는 명령어들일 수 있다. 명령어들은 판독 및 실행될 때 프로세서로 하여금 멀웨어 액세스 규칙 로직의 세트에 기초하여 전자 장치의 실행을 모니터링하게 할 수 있다. 멀웨어 액세스 규칙 로직의 세트는 모니터링될 전자 장치의 복수의 엔티티의 식별, 모니터링될 엔티티들 사이의 하나 이상의 동작의 식별, 및 모니터링될 동작들의 패턴의 식별을 포함할 수 있다. 명령어들은 또한, 프로세서로 하여금, 멀웨어 액세스 규칙 로직에 기초하여, 동작들 중 하나가 발생했다는 통지를 생성하고, 통지 및 동작들의 패턴에 기초하여, 동작들이 멀웨어를 나타내는지를 판단하게 할 수 있다. 프로세서는 통지 및 동작들의 패턴에 기초하여, 추가 엔티티의 식별 또는 엔티티들 사이의 동작의 식별 또는 모니터링될 동작들의 패턴의 식별을 포함하는 멀웨어 액세스 규칙 로직의 추가 요소를 식별할 수 있다. 프로세서는 통지 및 동작들의 패턴에 기초하여, 동작의 원인에 관한 시그니처 검사를 더 수행할 수 있다. 모니터링될 동작들은 엔티티들 사이의 실행 분기를 포함할 수 있다. 모니터링될 동작들은 엔티티들 사이의 실행 분기의 방향을 포함할 수 있다. 모니터링될 동작들은 지정된 거리의 실행 분기를 포함할 수 있다. 모니터링될 동작들은 명령어 포인터 변경을 포함할 수 있다. 모니터링될 동작들은 명령어 인출을 포함할 수 있다. 모니터링될 동작들은 동작의 빈도를 포함할 수 있다. 모니터링될 동작들은 명령어들에서 측정된 실행의 지속기간을 포함할 수 있다. 모니터링될 동작들은 실행 사이클들 또는 클럭 사이클들에서 측정된 실행의 지속기간을 포함할 수 있다. 동작들은 하이퍼바이저 또는 가상 머신 모니터에 의해 모니터링될 수 있다. 모니터링되는 엔티티들은 커널 공간, 사용자 공간, SSDT, DLL, I/O 포트 주소, 운영 체제 호출 디스패처, 프로세스, 스레드 또는 다른 적절한 엔티티를 포함할 수 있다. 통지는 예외 또는 인터럽트를 포함할 수 있다. 패턴은 동작이 실행된 횟수의 열거를 포함할 수 있다. 패턴은 특정 동작이 관찰되지 않았다는 요건을 포함할 수 있다. 패턴은 그의 요소들 중 하나 이상의 요소의 로직 제약들을 포함할 수 있다.
예 4에서, 전자 장치를 보안하기 위한 시스템은 멀웨어 액세스 규칙 로직의 세트에 기초하여 전자 장치의 실행을 모니터링하기 위한 수단을 포함할 수 있다. 멀웨어 액세스 규칙 로직의 세트는 모니터링될 전자 장치의 복수의 엔티티의 식별, 모니터링될 엔티티들 사이의 하나 이상의 동작의 식별, 및 모니터링될 동작들의 패턴의 식별을 포함할 수 있다. 시스템은 멀웨어 액세스 규칙 로직의 세트에 기초하여, 동작들 중 하나가 발생했다는 통지를 생성하고, 통지 및 동작들의 패턴에 기초하여, 동작들이 멀웨어를 나타내는지를 판단하기 위한 수단을 더 포함할 수 있다. 시스템은 통지 및 동작들의 패턴에 기초하여, 추가 엔티티의 식별 또는 엔티티들 사이의 동작의 식별 또는 모니터링될 동작들의 패턴의 식별을 포함하는 멀웨어 액세스 규칙 로직의 추가 요소를 식별하기 위한 수단을 더 포함할 수 있다. 시스템은 통지 및 동작들의 패턴에 기초하여, 동작의 원인에 관한 시그니처 검사를 수행하기 위한 수단을 더 포함할 수 있다. 모니터링될 동작들은 엔티티들 사이의 실행 분기를 포함할 수 있다. 모니터링될 동작들은 엔티티들 사이의 실행 분기의 방향을 포함할 수 있다. 모니터링될 동작들은 지정된 거리의 실행 분기를 포함할 수 있다. 모니터링될 동작들은 명령어 포인터 변경을 포함할 수 있다. 모니터링될 동작들은 명령어 인출을 포함할 수 있다. 모니터링될 동작들은 동작의 빈도를 포함할 수 있다. 모니터링될 동작들은 명령어들에서 측정된 실행의 지속기간을 포함할 수 있다. 모니터링될 동작들은 실행 사이클들 또는 클럭 사이클들에서 측정된 실행의 지속기간을 포함할 수 있다. 동작들은 하이퍼바이저 또는 가상 머신 모니터에 의해 모니터링될 수 있다. 모니터링되는 엔티티들은 커널 공간, 사용자 공간, SSDT, DLL, I/O 포트 주소, 운영 체제 호출 디스패처, 프로세스, 스레드 또는 다른 적절한 엔티티를 포함할 수 있다. 통지는 예외 또는 인터럽트를 포함할 수 있다. 패턴은 동작이 실행된 횟수의 열거를 포함할 수 있다. 패턴은 특정 동작이 관찰되지 않았다는 요건을 포함할 수 있다. 패턴은 그의 요소들 중 하나 이상의 요소의 로직 제약들을 포함할 수 있다.
위의 예들에서의 상세 사항들은 하나 이상의 실시예 내의 어딘가에서 사용될 수 있다.
본 발명이 상세히 설명되었지만, 첨부된 청구범위에 의해 정의되는 바와 같은 본 발명의 사상 및 범위로부터 벗어나지 않으면서 그에 대한 다양한 변화들, 교체들 및 변경들이 이루어질 수 있다는 것을 이해해야 한다.

Claims (26)

  1. 전자 장치를 보안하기 위한 시스템으로서,
    프로세서와,
    하드웨어 프로세서에 통신가능하게 연결된 머신 판독가능 기록 매체와,
    상기 머신 판독가능 기록 매체 상의 명령어를 포함하는 안티-멀웨어 모듈을 포함하되,
    상기 명령어는, 상기 프로세서에 의해 로딩되고 실행될 때, 상기 프로세서로 하여금,
    모니터링될 상기 전자 장치의 복수의 엔티티들(plurality of entities)을 식별하게 하고,
    모니터링될 상기 엔티티들 간의 하나 이상의 동작들―상기 동작들은 모니터링될 명령어 인출(an instruction fetch)의 식별을 포함함―을 식별하게 하며,
    상기 명령어 인출의 식별에 따라 모니터링될 상기 동작들의 패턴―상기 패턴은 특정 동작이 부재함(the pattern including the absence of a particular operation)―을 식별하게 하고,
    상기 동작들 중 하나가 발생했다고 결정하게 하며,
    상기 동작들이 멀웨어를 나타내는지 여부를 판정하게 하는
    시스템.
  2. 제 1 항에 있어서,
    모니터링될 상기 동작들은 상기 엔티티들 간의 실행 분기(an execution branch)를 포함하는
    시스템.
  3. 제 1 항에 있어서,
    모니터링될 상기 동작들은 명령어 포인터 변경을 포함하는
    시스템.
  4. 제 1 항에 있어서,
    상기 안티-멀웨어 모듈은, 상기 프로세서로 하여금,
    통지를 생성하게 하고,
    상기 통지 및 상기 동작들의 패턴에 기초하여, 모니터링될 추가 엔티티의 식별 또는 엔티티들 간의 동작들의 식별 또는 동작들의 패턴의 식별을 포함하는 멀웨어 액세스 규칙 로직의 추가 요소를 식별하게 하는
    명령어를 더 포함하는
    시스템.
  5. 제 4 항에 있어서,
    상기 통지는 예외를 포함하는
    시스템.
  6. 제 1 항에 있어서,
    상기 패턴은 상기 동작들이 실행된 횟수의 열거(enumeration)를 포함하는
    시스템.
  7. 전자 장치를 보안하기 위한 방법으로서,
    멀웨어 액세스 규칙 로직의 세트에 기초하여 상기 전자 장치의 실행을 모니터링하는 단계와,
    모니터링될 상기 전자 장치의 복수의 엔티티들을 식별하는 단계와,
    모니터링될 상기 엔티티들 간의 하나 이상의 동작들을 식별하는 단계―상기 동작들은 모니터링될 명령어 인출의 식별을 포함함―와,
    상기 명령어 인출의 식별에 따라 모니터링될 상기 동작들의 패턴을 식별하는 단계―상기 패턴은 특정 동작이 부재함―와,
    상기 멀웨어 액세스 규칙 로직의 세트에 기초하여 상기 동작들 중 하나가 발생했다는 통지를 생성하는 단계와,
    상기 통지 및 상기 동작들의 패턴에 기초하여, 상기 동작들이 멀웨어를 나타내는지를 판정하는 단계를 포함하는
    방법.
  8. 제 7 항에 있어서,
    모니터링될 상기 동작들은 상기 엔티티들 간의 실행 분기를 포함하는
    방법.
  9. 제 7 항에 있어서,
    모니터링될 상기 동작들은 명령어 포인터 변경을 포함하는
    방법.
  10. 제 7 항에 있어서,
    상기 통지 및 상기 동작들의 패턴에 기초하여, 모니터링될 추가 엔티티의 식별 또는 엔티티들 간의 동작들의 식별 또는 동작들의 패턴의 식별을 포함하는 멀웨어 액세스 규칙 로직의 추가 요소를 결정하는 단계를 더 포함하는
    방법.
  11. 제 7 항에 있어서,
    상기 통지는 프로세서 예외를 포함하는
    방법.
  12. 제 7 항에 있어서,
    상기 패턴은 상기 동작들이 실행된 횟수의 열거를 포함하는
    방법.
  13. 적어도 하나의 머신 판독가능 매체 상에 보유되는 컴퓨터 실행가능 명령어를 포함하는 머신 판독가능 저장 매체로서,
    상기 명령어는 프로세서에 의해 판독가능하고, 상기 명령어는 판독되고 실행될 때 상기 프로세서로 하여금,
    멀웨어 액세스 규칙 로직의 세트에 기초하여 전자 장치의 실행을 모니터링하게 하고,
    모니터링될 상기 전자 장치의 복수의 엔티티들을 식별하게 하고,
    모니터링될 상기 엔티티들 간의 하나 이상의 동작들을 식별―상기 동작들은 모니터링될 명령어 인출의 식별을 포함함―하게 하고,
    상기 명령어 인출의 식별에 따라 모니터링될 상기 동작들의 패턴―상기 패턴은 특정 동작이 부재함―을 식별하게 하고,
    상기 멀웨어 액세스 규칙 로직의 세트에 기초하여 상기 동작들 중 하나가 발생했다는 통지를 생성하게 하고,
    상기 통지 및 상기 동작들의 패턴에 기초하여, 상기 동작들이 멀웨어를 나타내는지를 판정하게 하는
    머신 판독가능 저장 매체.
  14. 제 13 항에 있어서,
    모니터링될 상기 동작들은 상기 엔티티들 간의 실행 분기를 포함하는
    머신 판독가능 저장 매체.
  15. 제 13 항에 있어서,
    모니터링될 상기 동작들은 명령어 포인터 변경을 포함하는
    머신 판독가능 저장 매체.
  16. 제 13 항에 있어서,
    상기 프로세서로 하여금, 상기 통지 및 상기 동작들의 패턴에 기초하여, 모니터링될 추가 엔티티의 식별 또는 엔티티들 간의 동작들의 식별 또는 동작들의 패턴의 식별을 포함하는 멀웨어 액세스 규칙 로직의 추가 요소를 식별하게 하는 명령어를 더 포함하는
    머신 판독가능 저장 매체.
  17. 제 13 항에 있어서,
    상기 통지는 프로세서 예외를 포함하는
    머신 판독가능 저장 매체.
  18. 제 13 항에 있어서,
    상기 패턴은 상기 동작들이 실행된 횟수의 열거를 포함하는
    머신 판독가능 저장 매체.
  19. 제 1 항에 있어서,
    상기 패턴은 커널 공간과 사용자 공간 사이의 일련의 복수의 정의된 동작들을 포함하는
    시스템.
  20. 제 1 항에 있어서,
    상기 패턴은 일련의 복수의 정의된 동작들을 포함하고, 상기 정의된 동작들은 동작들이 실행되고 멀웨어를 나타내는 최대 횟수의 열거를 포함하는
    시스템.
  21. 제 1 항에 있어서,
    상기 패턴은 제 1 매칭된 동작 및 제 2 매칭된 동작을 포함하는 일련의 복수의 동작들을 지정하고, 가변 개수의 다른 동작들이 상기 제 1 매칭된 동작과 상기 제 2 매칭된 동작 사이에서 실행되는
    시스템.
  22. 삭제
  23. 제 13 항에 있어서,
    상기 패턴은 커널 공간과 사용자 공간 사이의 일련의 복수의 정의된 동작들을 포함하는
    머신 판독가능 저장 매체.
  24. 제 13 항에 있어서,
    상기 패턴은 일련의 복수의 정의된 동작들을 포함하고, 상기 정의된 동작들은 동작들이 실행되고 멀웨어를 나타내는 최대 횟수의 열거를 포함하는
    머신 판독가능 저장 매체.
  25. 제 13 항에 있어서,
    상기 패턴은 제 1 매칭된 동작 및 제 2 매칭된 동작을 포함하는 일련의 복수의 동작들을 지정하고, 가변 개수의 다른 동작들이 상기 제 1 매칭된 동작과 상기 제 2 매칭된 동작 사이에서 실행되는
    머신 판독가능 저장 매체.
  26. 삭제
KR1020157021835A 2013-03-13 2014-03-03 코드 실행의 프로파일링 KR101759008B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/801,650 2013-03-13
US13/801,650 US10127379B2 (en) 2013-03-13 2013-03-13 Profiling code execution
PCT/US2014/019939 WO2014158760A1 (en) 2013-03-13 2014-03-03 Profiling code execution

Publications (2)

Publication Number Publication Date
KR20150106941A KR20150106941A (ko) 2015-09-22
KR101759008B1 true KR101759008B1 (ko) 2017-07-17

Family

ID=51535124

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020157021835A KR101759008B1 (ko) 2013-03-13 2014-03-03 코드 실행의 프로파일링

Country Status (6)

Country Link
US (1) US10127379B2 (ko)
EP (1) EP2973170B1 (ko)
KR (1) KR101759008B1 (ko)
CN (1) CN105103158A (ko)
RU (1) RU2627107C2 (ko)
WO (1) WO2014158760A1 (ko)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103620612B (zh) * 2011-07-12 2016-04-13 惠普发展公司,有限责任合伙企业 包括端口和来宾域的计算设备
US10127379B2 (en) 2013-03-13 2018-11-13 Mcafee, Llc Profiling code execution
US10102374B1 (en) * 2014-08-11 2018-10-16 Sentinel Labs Israel Ltd. Method of remediating a program and system thereof by undoing operations
US11507663B2 (en) * 2014-08-11 2022-11-22 Sentinel Labs Israel Ltd. Method of remediating operations performed by a program and system thereof
US9710648B2 (en) 2014-08-11 2017-07-18 Sentinel Labs Israel Ltd. Method of malware detection and system thereof
JP2016053956A (ja) * 2014-09-02 2016-04-14 エスケー インフォセック カンパニー リミテッドSK INFOSEC Co.,Ltd. ウェブ基盤の悪性コード探知システムおよび方法
WO2016125837A1 (ja) * 2015-02-04 2016-08-11 日本電信電話株式会社 悪性通信パターン抽出装置、悪性通信パターン抽出システム、悪性通信パターン抽出方法、および、悪性通信パターン抽出プログラム
US9805194B2 (en) * 2015-03-27 2017-10-31 Intel Corporation Memory scanning methods and apparatus
US10176438B2 (en) 2015-06-19 2019-01-08 Arizona Board Of Regents On Behalf Of Arizona State University Systems and methods for data driven malware task identification
KR101729680B1 (ko) * 2015-12-01 2017-04-25 한국전자통신연구원 경량 하이퍼바이저에 기반하는 운영체제의 제공 방법 및 장치
US9898605B2 (en) * 2015-12-24 2018-02-20 Mcafee, Llc Monitoring executed script for zero-day attack of malware
US10275595B2 (en) * 2016-09-29 2019-04-30 Trap Data Security Ltd. System and method for characterizing malware
US10567430B2 (en) 2016-12-09 2020-02-18 International Business Machines Corporation Protecting against notification based phishing attacks
US11616812B2 (en) 2016-12-19 2023-03-28 Attivo Networks Inc. Deceiving attackers accessing active directory data
US11695800B2 (en) 2016-12-19 2023-07-04 SentinelOne, Inc. Deceiving attackers accessing network data
WO2018193429A1 (en) * 2017-04-20 2018-10-25 Morphisec Information Security Ltd. System and method for runtime detection, analysis and signature determination of obfuscated malicious code
WO2019032728A1 (en) 2017-08-08 2019-02-14 Sentinel Labs, Inc. METHODS, SYSTEMS AND DEVICES FOR DYNAMICALLY MODELING AND REGROUPING END POINTS FOR ONBOARD NETWORKING
US10885183B2 (en) * 2017-09-28 2021-01-05 International Business Machines Corporation Return oriented programming attack protection
US11470115B2 (en) 2018-02-09 2022-10-11 Attivo Networks, Inc. Implementing decoys in a network environment
US11429725B1 (en) * 2018-04-26 2022-08-30 Citicorp Credit Services, Inc. (Usa) Automated security risk assessment systems and methods
WO2020236981A1 (en) 2019-05-20 2020-11-26 Sentinel Labs Israel Ltd. Systems and methods for executable code detection, automatic feature extraction and position independent code detection
JP7333748B2 (ja) * 2019-12-13 2023-08-25 株式会社日立製作所 電子機器および電子機器の攻撃検知方法
US11681804B2 (en) 2020-03-09 2023-06-20 Commvault Systems, Inc. System and method for automatic generation of malware detection traps
US11579857B2 (en) 2020-12-16 2023-02-14 Sentinel Labs Israel Ltd. Systems, methods and devices for device fingerprinting and automatic deployment of software in a computing network using a peer-to-peer approach
US11899782B1 (en) 2021-07-13 2024-02-13 SentinelOne, Inc. Preserving DLL hooks

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120254993A1 (en) * 2011-03-28 2012-10-04 Mcafee, Inc. System and method for virtual machine monitor based anti-malware security
US20120255002A1 (en) * 2011-03-31 2012-10-04 Mcafee, Inc. System and method for below-operating system trapping of driver loading and unloading

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5696822A (en) 1995-09-28 1997-12-09 Symantec Corporation Polymorphic virus detection module
US20030101381A1 (en) * 2001-11-29 2003-05-29 Nikolay Mateev System and method for virus checking software
CA2480475A1 (en) 2002-04-17 2003-10-30 Computer Associates Think, Inc. Detecting and countering malicious code in enterprise networks
US7430760B2 (en) * 2003-12-05 2008-09-30 Microsoft Corporation Security-related programming interface
US7827541B2 (en) * 2006-03-16 2010-11-02 International Business Machines Corporation Method and apparatus for profiling execution of code using multiple processors
US8479174B2 (en) * 2006-04-05 2013-07-02 Prevx Limited Method, computer program and computer for analyzing an executable computer file
US7818807B1 (en) * 2006-06-30 2010-10-19 Symantec Corporation System and method of logical prefetching for optimizing file scanning operations
US8135994B2 (en) * 2006-10-30 2012-03-13 The Trustees Of Columbia University In The City Of New York Methods, media, and systems for detecting an anomalous sequence of function calls
US8065728B2 (en) * 2007-09-10 2011-11-22 Wisconsin Alumni Research Foundation Malware prevention system monitoring kernel events
US7620992B2 (en) 2007-10-02 2009-11-17 Kaspersky Lab Zao System and method for detecting multi-component malware
US20100031353A1 (en) * 2008-02-04 2010-02-04 Microsoft Corporation Malware Detection Using Code Analysis and Behavior Monitoring
US8595834B2 (en) * 2008-02-04 2013-11-26 Samsung Electronics Co., Ltd Detecting unauthorized use of computing devices based on behavioral patterns
US8370931B1 (en) * 2008-09-17 2013-02-05 Trend Micro Incorporated Multi-behavior policy matching for malware detection
JP2011023903A (ja) * 2009-07-15 2011-02-03 Fujitsu Ltd 通信端末の異常検出装置及び通信端末の異常検出方法
US9213838B2 (en) * 2011-05-13 2015-12-15 Mcafee Ireland Holdings Limited Systems and methods of processing data associated with detection and/or handling of malware
KR20120096983A (ko) * 2011-02-24 2012-09-03 삼성전자주식회사 악성 프로그램 검출 방법 및 이를 구현하는 휴대 단말기
US8555385B1 (en) * 2011-03-14 2013-10-08 Symantec Corporation Techniques for behavior based malware analysis
WO2012135192A2 (en) 2011-03-28 2012-10-04 Mcafee, Inc. System and method for virtual machine monitor based anti-malware security
US9575903B2 (en) * 2011-08-04 2017-02-21 Elwha Llc Security perimeter
US8984581B2 (en) 2011-07-27 2015-03-17 Seven Networks, Inc. Monitoring mobile application activities for malicious traffic on a mobile device
US9043903B2 (en) * 2012-06-08 2015-05-26 Crowdstrike, Inc. Kernel-level security agent
US9275223B2 (en) * 2012-10-19 2016-03-01 Mcafee, Inc. Real-time module protection
US10127379B2 (en) 2013-03-13 2018-11-13 Mcafee, Llc Profiling code execution

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120254993A1 (en) * 2011-03-28 2012-10-04 Mcafee, Inc. System and method for virtual machine monitor based anti-malware security
US20120255002A1 (en) * 2011-03-31 2012-10-04 Mcafee, Inc. System and method for below-operating system trapping of driver loading and unloading

Also Published As

Publication number Publication date
EP2973170B1 (en) 2020-05-27
RU2015134147A (ru) 2017-02-17
US20140283076A1 (en) 2014-09-18
EP2973170A4 (en) 2016-10-26
US10127379B2 (en) 2018-11-13
RU2627107C2 (ru) 2017-08-03
CN105103158A (zh) 2015-11-25
WO2014158760A1 (en) 2014-10-02
KR20150106941A (ko) 2015-09-22
EP2973170A1 (en) 2016-01-20

Similar Documents

Publication Publication Date Title
KR101759008B1 (ko) 코드 실행의 프로파일링
US10055585B2 (en) Hardware and software execution profiling
US9565214B2 (en) Real-time module protection
US9779240B2 (en) System and method for hypervisor-based security
JP6282305B2 (ja) ハイパーバイザモードにおけるコードの安全な実行システムおよび方法
US9262246B2 (en) System and method for securing memory and storage of an electronic device with a below-operating system security agent
US9384349B2 (en) Negative light-weight rules
US8549648B2 (en) Systems and methods for identifying hidden processes
US8549644B2 (en) Systems and method for regulating software access to security-sensitive processor resources
KR101265173B1 (ko) 비실행 파일 검사 장치 및 방법
US11363058B2 (en) Detecting execution of modified executable code
US10395033B2 (en) System, apparatus and method for performing on-demand binary analysis for detecting code reuse attacks
US10114948B2 (en) Hypervisor-based buffer overflow detection and prevention
JP2019521400A (ja) 推測的なエクスプロイトの試みの検出
US9202053B1 (en) MBR infection detection using emulation
WO2018071093A1 (en) Programmable hardware security counters
EP2881883B1 (en) System and method for reducing load on an operating system when executing antivirus operations
CN110516445B (zh) 反检测恶意代码的识别方法、装置及存储介质
Yamauchi et al. Kernel rootkits detection method by monitoring branches using hardware features

Legal Events

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