KR102534334B1 - 컴퓨팅 디바이스들에서 프로세스들에 대한 소프트웨어 공격들의 검출 - Google Patents

컴퓨팅 디바이스들에서 프로세스들에 대한 소프트웨어 공격들의 검출 Download PDF

Info

Publication number
KR102534334B1
KR102534334B1 KR1020187010607A KR20187010607A KR102534334B1 KR 102534334 B1 KR102534334 B1 KR 102534334B1 KR 1020187010607 A KR1020187010607 A KR 1020187010607A KR 20187010607 A KR20187010607 A KR 20187010607A KR 102534334 B1 KR102534334 B1 KR 102534334B1
Authority
KR
South Korea
Prior art keywords
virtual memory
processor
computing device
monitored
structural attributes
Prior art date
Application number
KR1020187010607A
Other languages
English (en)
Other versions
KR20180054726A (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 KR20180054726A publication Critical patent/KR20180054726A/ko
Application granted granted Critical
Publication of KR102534334B1 publication Critical patent/KR102534334B1/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
    • 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
    • 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/552Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
    • 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

Abstract

다양한 실시형태들은 컴퓨팅 디바이스 상에서 실행하는 프로세스에 대한 소프트웨어 공격들을 검출하는 방법들을 포함한다. 다양한 실시형태 방법들은 프로세스에 의해 이용되는 복수의 가상 메모리 영역들의 구조적 속성들을 모니터링하는 단계, 및 모니터링된 구조적 속성들을 복수의 VMR들의 예상된 구조적 속성들과 비교하는 단계를 포함할 수도 있다. 다양한 실시형태 방법들은 모니터링된 구조적 속성들과 예상된 구조적 속성들 간의 비교에 기초하여, 모니터링된 구조적 속성들이 프로세스의 비정상적인 거동을 나타내는지 여부를 결정하는 단계를 더 포함할 수도 있다.

Description

컴퓨팅 디바이스들에서 프로세스들에 대한 소프트웨어 공격들의 검출
관련 출원들
본 출원은 "Detecting Software Attacks on Processes in Computing Devices" 란 발명의 명칭으로, 2015년 9월 17일에 출원된 미국 가출원 번호 제 62/219,970호에 대해 우선권의 이익을 주장하며, 이의 전체 내용들이 본원에 참고로 포함된다.
데스크탑 컴퓨터들, 랩탑들, 태블릿들, 및 모바일 통신 디바이스들 예컨대, 스마트폰들을 포함한, 다양한 컴퓨팅 디바이스들은 메모리에 저장된 소프트웨어 명령들에 따라서 애플리케이션들 및 시스템 프로세스들을 실행한다. 어떤 애플리케이션 프로세스들 또는 시스템 서비스 프로세스들은 컴퓨팅 디바이스에 대한 더 높은 액세스 허가들 (예컨대, 루트 액세스 허가) 을 가질 수도 있다. 이들 프로세스들은 특권 프로세스를 제어하여 악성 코드를 실행하는 것을 목표로 하는 제어-하이재킹 소프트웨어에 의해 표적이 될 수도 있다. 제어-하이재킹 소프트웨어의 목표는 쉘을 획득하거나 또는 개인 데이터를 훔치려고 시도할 수도 있다.
많은 상이한 유형들의 제어-하이재킹 소프트웨어 공격들이 있다. 예를 들어, "스택 스매싱 (stack smashing)" 은 스택 버퍼 오버플로우를 생성하는 것 및 스택에 삽입된 악성 코드를 실행하는 것을 수반할 수도 있다. 힙 버퍼 오버플로우는 힙 (heap) 을 오버플로우하는 것과 유사하게 작동하여, 메모리에서의 다른 로케이션에 삽입된 악성 코드의 실행을 초래한다. 반환-지향-프로그래밍 (return-oriented-programming) 또는 공격은 스택 오버플로우를 발생시킨 후, 함께 접속될 때 악의적인 목적을 달성하는 기존 코드의 선택된 부분들의 실행이 뒤따른다.
다양한 실시형태들은 컴퓨팅 디바이스 상에서 실행하는 프로세스에 대한 소프트웨어 공격들을 검출하는, 컴퓨팅 디바이스 상에서 구현되는 방법들을 포함한다. 다양한 실시형태들은 프로세스에 의해 이용되는 복수의 가상 메모리 영역들의 구조적 속성들을 모니터링하는 단계; 모니터링된 구조적 속성들을 복수의 가상 메모리 영역들의 예상된 구조적 속성들과 비교하는 단계; 및 모니터링된 구조적 속성들과 예상된 구조적 속성들 간의 비교에 기초하여, 모니터링된 구조적 속성들이 프로세스의 비정상적인 거동을 나타내는지 여부를 결정하는 단계를 포함할 수도 있다.
일부 실시형태들은 모니터링된 구조적 속성들이 비정상적인 거동을 나타낸다고 결정하는 것에 응답하여 보호 액션을 개시하는 단계를 더 포함할 수도 있다. 일부 실시형태들에서, 복수의 가상 메모리 영역들의 모니터링된 구조적 속성들은 프로세스에 의해 이용되는 가상 메모리 영역들의 수; 복수의 가상 메모리 영역들의 각각의 사이즈; 복수의 가상 메모리 영역들의 어드레스 공간 레이아웃 변화들; 복수의 가상 메모리 영역들의 액세스 허가 변화들; 및/또는 복수의 가상 메모리 영역들의 상태 트랜지션 이력을 포함할 수도 있다.
일부 실시형태들에서, 프로세스에 의해 이용되는 복수의 가상 메모리 영역들의 구조적 속성들을 모니터링하는 단계는 프로세스가 실행중인 현재의 가상 메모리 영역에 관한 정보를 저장하는 단계; 프로세스에 의해 현재 실행중인 명령에 관한 새로운 정보를 수신하는 단계; 새로운 정보에 기초하여, 현재의 가상 메모리 영역으로부터의 트랜지션이 있었는지 여부를 결정하는 단계; 및 현재의 가상 메모리 영역으로부터의 트랜지션이 있었다고 결정할 시, 현재의 가상 메모리 영역으로부터의 트랜지션을 새로운 가상 메모리 영역으로 로그하는 단계를 포함할 수도 있다. 일부 실시형태들에서, 새로운 정보는 프로그램 카운터 및 프로세스 식별자를 포함할 수도 있다.
일부 실시형태들에서, 프로세스에 의해 이용되는 복수의 가상 메모리 영역들의 구조적 속성들을 모니터링하는 단계는 프로세스가 실행중인 현재의 가상 메모리 영역에 관한 정보를 저장하는 단계; 복수의 가상 메모리 영역들에 대해 하나 이상의 가상 메모리 영역 추적 전략들을 구현하는 단계; 하나 이상의 가상 메모리 영역 추적 전략들로부터, 현재의 가상 메모리 영역으로부터의 트랜지션이 있었는지 여부를 결정하는 단계; 및 현재의 가상 메모리 영역으로부터의 트랜지션이 있었다고 결정할 시, 현재의 가상 메모리 영역으로부터의 트랜지션을 새로운 가상 메모리 영역으로 로그하는 단계를 포함할 수도 있다. 일부 실시형태들에서, 하나 이상의 가상 메모리 영역 추적 전략들은 선택적 추적, 주기적인 추적, 기회주의적 추적, 및 페이지 오류 기반의 추적을 포함할 수도 있다.
일부 실시형태들에서, 모니터링된 구조적 속성들을 복수의 가상 메모리 영역들의 예상된 구조적 속성들과 비교하는 단계는 규칙들의 세트를 모니터링된 구조적 속성들에 적용하는 단계를 포함할 수도 있으며, 여기서, 규칙들의 세트는 복수의 가상 메모리 영역들의 예상된 구조적 속성들에 기초한다. 일부 실시형태들에서, 모니터링된 구조적 속성들을 복수의 가상 메모리 영역들의 예상된 구조적 속성들과 비교하는 단계는 복수의 가상 메모리 영역들의 예상된 구조적 속성들을 모델링하는 단계; 및 모니터링된 구조적 속성들을 모델과 비교하는 단계를 포함할 수도 있다.
추가 실시형태들은 위에서 요약된 방법들의 동작들을 수행하기 위한 프로세서-실행가능한 명령들로 구성된 프로세서, 및 메모리를 포함하는 컴퓨팅 디바이스를 포함한다. 추가적인 실시형태들은 컴퓨팅 디바이스의 프로세서로 하여금, 위에서 요약된 방법들의 동작들을 수행하게 하도록 구성된, 저장된 프로세서-실행가능한 소프트웨어 명령들을 가지는 비일시성 프로세서-판독가능 저장 매체를 포함한다. 추가 실시형태들은 위에서 요약된 방법들의 동작들의 기능들을 수행하는 수단을 포함하는 컴퓨팅 디바이스를 포함한다.
본원에 포함되어 본 명세서의 부분을 구성하는, 첨부 도면들은, 예시적인 실시형태들을 예시하며, 본원에서 제공되는 일반적인 설명 및 상세한 설명과 함께, 청구범위의 특징들을 설명하는 것을 돕는다.
도 1a 는 다양한 실시형태들에 따라 사용하기 위한 컴퓨팅 디바이스의 블록도이다.
도 1b 는 다양한 실시형태들에 따른, 가상 메모리 영역의 구조적 속성들을 분석하는 관측기/분석 유닛의 기능 블록 다이어그램이다.
도 2 는 다양한 실시형태들에 따른, 프로세스 어드레스 공간의 다이어그램이다.
도 3a 내지 도 3b 는 스택 버퍼 오버플로우 제어-하이재킹 소프트웨어 공격을 예시하는 다이어그램들이다.
도 4a 내지 도 4b 는 힙 버퍼 오버플로우 제어-하이재킹 소프트웨어 공격을 예시하는 다이어그램들이다.
도 5 는 리턴-온-프로그래밍 (return-on-programming) 제어-하이재킹 소프트웨어 공격을 예시하는 다이어그램이다.
도 6 은 다양한 실시형태들에 따른, 컴퓨팅 디바이스에서의 가상 메모리 영역 모니터링 시스템의 블록도이다.
도 7 은 다양한 실시형태들에 따른, 가상 메모리 영역 트랜지션 추적기의 컴포넌트 블록도이다.
도 8 은 다양한 실시형태들에 따른, 컴퓨팅 디바이스 상에서 실행하는 프로세스에 대한 소프트웨어 공격들을 검출하는 방법들을 예시하는 프로세스 흐름도이다.
도 9 는 다양한 실시형태들에 따른, 컴퓨팅 디바이스 상에서 실행하는 프로세스의 가상 메모리 영역 트랜지션들을 추적하는 하드웨어-기반의 방법들을 예시하는 프로세스 흐름도이다.
도 10 은 다양한 실시형태들에 따른, 컴퓨팅 디바이스 상에서 실행하는 프로세스의 가상 메모리 영역 트랜지션들을 추적하는 소프트웨어-기반의 방법들을 예시하는 프로세스 흐름도이다.
도 11 은 일부 실시형태 방법들을 구현하는데 적합한 모바일 통신 디바이스의 컴포넌트 블록도이다.
다양한 실시형태들이 첨부 도면들을 참조하여 자세히 설명된다. 가능한 경우에는 언제나, 동일한 또는 유사한 부재들을 지칭하기 위해서 동일한 참조 번호들이 도면들 전반에 걸쳐서 사용된다. 특정의 예들 및 구현예들에 대한 참조들은 예시적인 목적들을 위한 것이며, 서술된 설명 또는 청구항의 범위를 한정하려고 의도되지 않는다.
본원에서 사용될 때, 용어 "컴퓨팅 디바이스" 는 셀룰러 전화기들, 스마트폰들, 개인 또는 모바일 멀티-미디어 플레이어들, 개인 휴대 정보단말기들, 데스크탑 컴퓨터들, 랩탑 컴퓨터들, 태블릿 컴퓨터들, 서버들, 스마트 북들, 스마트 워치들, 팜탑 컴퓨터들, 무선 전자 메일 수신기들, 멀티미디어 인터넷-이용가능 셀룰러 전화기들, 무선 게이밍 제어기들, 및 프로그래밍가능 프로세서 및 메모리를 포함하는 유사한 개인 또는 기업 전자 디바이스들 중 임의의 하나 또는 모두를 지칭한다.
컴퓨팅 디바이스들은 다양한 애플리케이션 및 시스템 프로세스들을 실행하며, 이들 중 일부는 루트 액세스와 같은, 하위 레벨의 컴퓨팅 디바이스로의 특권 액세스를 가질 수도 있다. 이들 프로세스들은 낮은 레벨에서 컴퓨팅 디바이스를 제어하려고 시도하는 제어-하이재킹 소프트웨어 공격들을 받을 수도 있다. 이들 공격들의 예들은 스택 또는 힙 버퍼 오버플로우 공격들 및 리턴-온-프로그래밍 공격들을 포함할 수도 있다.
각각의 프로세스는 어떤 내부 메모리 구조, 또는 운영 시스템에 의해 유지관리되는 그의 내부 상태의 구성요소 배열 (geography) 을 갖는다. 예를 들어, 각각의 프로세스는 그 프로세스에 대한 다양한 명령들 및 데이터가 메모리에 저장되는 위치를 레이아웃하는 프로세스 어드레스 공간을 갖는다. 프로세스들은 일반적으로 동일한 라이브러리들의 세트를 로드하며, 라이브러리 의존성들은 런 타임 동안 대개 동적으로 변하지 않는다. 또한, 프로세스들은 일반적으로 코드를 실행하고 그의 어드레스 공간을 예측가능한 방법으로 횡단한다. 이것은 유사한 요청들의 세트를 반복적으로 처리하도록 설계된 시스템 서비스들의 경우에 특히 그럴 수도 있다.
제어-하이재킹 소프트웨어 공격이 발생할 때, 목표된 프로세스의 내부 메모리 구조 및 어드레스 공간을 횡단할 때의 거동이 변할 수도 있다. 예를 들어, 악성 소프트웨어는 프로세스의 제어 흐름에서의 변화를 초래할 수도 있다 (즉, 상이한 명령들의 세트가 실행되거나, 또는 상이한 순서로 실행된다). 코드가 실행중인 메모리의 영역들은 상이할 수도 있다.
개관에서, 다양한 실시형태들은 제어-하이재킹 소프트웨어 공격들에 의해 초래되는 비정상적인 실행 거동을 검출하기 위해 프로세스의 메모리 구조, 또는 구성요소 배열의 내부 상태를 모니터링하는 시스템들 및 방법들을 제공한다. 프로세스의 프로세스 어드레스 공간은 데이터, 함수들, 또는 명령들을 저장하는 프로세스 어드레스 공간 내의 메모리의 연속된 부분들 (contiguous portions) 을 나타내는 다수의 가상 메모리 영역들 (VMRs) 로 분할될 수도 있다. 컴퓨팅 디바이스에서의 관측기 또는 분석기 유닛은 컴퓨팅 디바이스 상에서 실행하는 프로세스에 대한 VMR들의 다양한 구조적 속성들을 모니터링할 수도 있다. 모니터링된 구조적 속성들은 프로세스에 의해 이용되는 VMR들의 수, 각각의 VMR 의 사이즈, VMR들의 어드레스 공간 레이아웃 변화들, VMR들의 액세스 허가 변화들, 및 VMR 상태 트랜지션 이력을 포함할 수도 있다. 구조적 속성들은 각각의 VMR 내에 저장된 데이터와 독립적일 수도 있다.
프로세스의 VMR들의 모니터링된 구조적 속성들은 그후 프로세스의 VMR들의 예상된 구조적 속성들과 비교될 수도 있다. 모니터링된 구조적 속성들이 예상된 구조적 속성들로부터 일탈하면, 그것은 프로세스가 악의적인 목적으로 하이재킹되었다는 표시일 수도 있다. 컴퓨팅 디바이스는 그후 예를 들어, 프로세스를 종료하는 것, 맬웨어 방지 프로그램들을 개시하는 것, 또는 프로세스로부터 운영 시스템의 특정 부분들을 록킹하는 것에 응답하여, 어떤 보호 액션들을 취할 수도 있다.
도 1a 는 다양한 실시형태들을 구현하기에 적합한 컴퓨팅 디바이스 (100) 의 기능 블록 다이어그램이다. 컴퓨팅 디바이스 (100) 는 특히, 데스크탑 컴퓨터, 랩탑, 태블릿, 임의 종류의 모바일 전자 디바이스, 서버 또는 임의 종류의 소비자 또는 기업 전자 디바이스일 수도 있다. 컴퓨팅 디바이스 (100) 는 소프트웨어 명령들을 실행하는 중앙 처리 유닛 (CPU) (102), 및 코드 및 데이터를 저장하는 메모리 (104) 를 포함할 수도 있다. 메모리 (104) 는 프로세서-실행가능한 명령들을 저장하는 비일시성 컴퓨터-판독가능 저장 매체일 수도 있다. 메모리 (104) 는 운영 시스템 (106) 을 저장할 수도 있다. 다수의 시스템 프로세스들 (108) 및/또는 애플리케이션 프로세스들 (110) 은 컴퓨팅 디바이스 (100) 상에서 운영 시스템 (106) 내에서 실행중일 수도 있다. 프로세스들 (108, 110) 중 일부는 하위 레벨의 컴퓨팅 디바이스 (100) 로의 더 높은 액세스 허가들 (예컨대, 루트 또는 기본 입력/출력 시스템 (BIOS) 액세스) 을 가지는 어떤 특권 애플리케이션들 또는 시스템 서비스들에 속할 수도 있다.
컴퓨팅 디바이스 (100) 는 또한 프로세스들 (108, 110) 의 VMR들의 속성들을 모니터링하기 위해 운영 시스템 (106) 내에서 실행하는 관측기/분석기 유닛 (112) 을 포함할 수도 있다. 관측기/분석기 유닛 (112) 은 VMR들의 구조적 속성들을 수집하고 모니터링하여, 모니터링된 구조적 속성들을 프로세스들 (108, 110) 의 VMR들의 예상된 구조적 속성들과 비교할 수도 있다. 관측기/분석기 유닛 (112) 은 모델링, 머신 학습, 및 규칙들-기반의 분석을 포함한, 구조적 속성들을 모니터링하여 비교하는 하나 이상의 기법들을 이용할 수도 있다. 관측기/분석기 유닛 (112) 은 프로세스들 (108, 110) 중 하나 이상이 비정상적인 거동을 보이고 있을 때를 표시하는 출력을 발생할 수도 있다.
컴퓨팅 디바이스 (100) 는 또한 도 1a 에 예시되지 않은 다양한 다른 컴포넌트들을 포함할 수도 있다. 예를 들어, 컴퓨팅 디바이스 (100) 는 많은 입력, 출력, 및 프로세싱 컴포넌트들, 예컨대, 스피커, 마이크로폰, 모뎀, 트랜시버, 가입자 식별 모듈 (SIM) 카드, 키패드, 마우스, 디스플레이 스크린 또는 터치스크린, 다양한 접속 포트들, 오디오 또는 그래픽스 프로세서, 추가적인 하드 드라이브들, 및 당업계에 알려져 있는 많은 다른 컴포넌트들을 포함할 수도 있다.
도 1b 는 도 1a 의 관측기/분석기 유닛 (112) 에 대한 예시적인 논리적 컴포넌트들 및 정보 흐름들을 예시한다. 관측기/분석기 유닛 (112) 은 CPU (102) 와 같은, 프로세서 내에서 실행할 수도 있으며, 거동 분석 기법들을 이용하여 프로세스의 VMR들의 예상된 및 관측된 구조적 속성들을 특성화하도록 구성될 수도 있다. 관측기/분석기 유닛 (112) 은 관측기 유닛 (120), 추출기 유닛 (122), 분석기 유닛 (124), 및 특성화 유닛 (126) 을 포함할 수도 있다.
다양한 구현예들에서, 관측기/분석기 유닛 (112) 의 부분 또는 모두는 관측기 유닛 (120), 추출기 유닛 (122), 분석기 유닛 (124), 및 특성화 유닛 (126) 의 부분으로서 구현될 수도 있다. 유닛들 (120-126) 의 각각은 소프트웨어, 하드웨어, 또는 이들의 조합으로 구현되는 쓰레드, 프로세스, 데몬, 서브-시스템, 또는 컴포넌트일 수도 있다. 다양한 구현예들에서, 유닛들 (120-126) 은 운영 시스템의 부분들 내에 (예컨대, 커널 내, 커널 공간에, 사용자 공간에, 등등에), 별개의 프로그램들 또는 애플리케이션들 내에, 특수화된 하드웨어 버퍼들 또는 프로세서들로, 또는 이들의 임의의 조합으로 구현될 수도 있다. 일부 구현예들에서, 유닛들 (120-126) 중 하나 이상은 컴퓨팅 디바이스 (100) 의 하나 이상의 프로세서들 상에서 실행하는 소프트웨어 명령들로서 구현될 수도 있다.
특성화 유닛 (126) 은 프로세스의 거동 및 프로세스에 의해 이용되는 VMR들의 예상된 구조적 속성들을 특성화하도록 구성될 수도 있다. 특성화 유닛 (126) 은 특성화된 거동 및 예상된 구조적 속성들을 이용하여, 관측된 프로세스의 거동에 기초하여 적어도 하나의 모델을 발생시킬 수도 있다. 특성화 유닛 (126) 은 관측된 거동을 거동 모델과 비교할 수도 있다. 특성화 유닛 (126) 은 또한 관측된 프로세스의 거동과 개별 거동 모델들의, 다른 유닛들에 의해 이루어진, 비교들을 수집할 수도 있다. 특성화 유닛 (126) 은 수집된 비교들에 기초하여, 관측된 프로세스가 비정상적으로 거동중인지 여부를 결정할 수도 있다. 특성화 유닛 (126) 은 관측기 유닛 (120) 에 의해 수집된 정보를 이용하여, 관측된 프로세스에 의해 이용되는 VMR들의 구조적 속성들을 결정할 수도 있으며, 그리고 임의의 또는 모든 이러한 정보를 이용하여, 관측된 프로세스의 거동을 특성화할 수도 있다.
관측기 유닛 (120) 은 프로세스의 거동들을 관측/모니터링하고 그리고 관측/모니터링에 기초하여 VMR 의 구조적 속성들을 결정하도록 구성될 수도 있다. 구조적 속성들은 프로세스에 의해 이용되는 VMR들의 수, 각각의 VMR 의 사이즈, VMR들의 어드레스 공간 레이아웃 변화들, VMR들의 액세스 허가 변화들, 및 VMR 상태 트랜지션 이력을 포함할 수도 있다.
관측기 유닛 (120) 은 관측된 구조적 속성들을 포함한, 수집된 관측된 거동 데이터를 (예컨대, 메모리 기록 동작, 함수 호출, 등을 통해서) 추출기 유닛 (122) 으로 통신할 수도 있다. 추출기 유닛 (122) 은 로그 파일로부터, 관측된 거동 데이터를 수신하거나 또는 취출하고, 이 정보를 이용하여, 관측된 구조적 속성들에 기초하여 하나 이상의 거동 벡터들을 발생시키도록 구성될 수도 있다. 각각의 거동 벡터는 관측된 구조적 속성들을 값 또는 벡터 데이터-구조로 간결하게 기술할 수도 있다. 일부 구현예들에서, 벡터 데이터-구조는 관측기 유닛 (120) 에 의해 수집된 실시간 데이터의 부분 또는 전체 표현을 각각 의미하는 일련의 번호들을 포함할 수도 있다.
일부 구현예들에서, 추출기 유닛 (122) 은 관측기 유닛 (120) 에 의해 발생된 로그 파일로부터 거동 벡터들을 발생시키도록 구성될 수도 있다. 거동 벡터들은 거동 분석 시스템 (예컨대, 분석기 유닛 (124)) 으로 하여금, 실시간 프로세스 거동 및 VMR 구조적 속성들을 빠르게 인식하거나, 식별하거나, 또는 분석가능하게 하는 식별자로서 기능할 수도 있다. 일부 구현예들에서, 추출기 유닛 (122) 은 실시간 프로세스 거동 및 VMR 구조적 속성들을 n-차원 공간에 각각 맵핑하는 사이즈 "n" 의 거동 벡터들을 발생시키도록 구성될 수도 있다. 예시적인 구현예에서, 추출기 유닛 (122) 은 프로세스의 VMR 구조적 속성들의 하나 이상의 특징들에 관한 쿼리에 대한 응답을 발생시켜 프로세스의 거동을 특성화하기 위해, 특성화 유닛 (126) 에서의 특징/결정 노드에 입력될 수도 있는 정보를 포함하도록 거동 벡터들을 발생시키도록 구성될 수도 있다.
추출기 유닛 (122) 은 발생된 거동 벡터(들)을 (예컨대, 메모리 기록 동작, 함수 호출, 등을 통해서) 분석기 유닛 (124) 으로 통신할 수도 있다. 분석기 유닛 (124) 은 프로세스가 합법적이거나, 비-합법적이거나, 또는 비정상적이라는 것을 프로세스에 의해 이용되는 VMR들의 모니터링된 구조적 속성들이 표시하는지 여부와 같은, 프로세스의 관측된 거동들을 특성화하기 위해, 거동 벡터(들)을 분류자 모델에 적용하도록 구성될 수도 있다.
분류자 모델은 프로세스 활동들의 특정의 특징 또는 양태를 평가하는데 사용될 수도 있는 데이터 및/또는 정보 구조들 (예컨대, 특징 벡터들, 거동 벡터들, 컴포넌트 리스트들, 등) 을 포함하는 거동 모델일 수도 있다. 분류자 모델은 또한 프로세스에 의해 이용되는 VMR들의 수를 모니터링하기 위한 결정 기준들을 포함할 수도 있다. 분류자 모델은 컴퓨팅 디바이스 (100) 상에 사전에 설치되거나, 네트워크 서버로부터 다운로드되거나 또는 수신되거나, 관측기 유닛 (120) 에서 발생되거나, 또는 이들의 임의의 조합일 수도 있다. 분류자 모델은 거동 모델링 기법들, 머신 학습 알고리즘들, 또는 분류자 모델들을 발생시키는 다른 방법들을 이용함으로써 발생될 수도 있다.
일부 구현예들에서, 분류자 모델은 어떤 유형들의 프로세스들 (예컨대, 애플리케이션 프로세스들 대 시스템 프로세스들) 에 특정적일 수도 있다. 이러한 분류자 모델은 단지 특정의 프로세스의 거동을 평가하는 것과 가장 관련된 것으로 결정되는 프로세스-특정의 특징들/엔트리들만을 포함/테스트하는 집중된 데이터 모델을 포함할 수도 있다.
일부 구현예들에서, 분석기 유닛 (124) 은 특히 프로세스 거동의 분석이 결정적이지 않을 때, 분석기 유닛 (124) 이 평가하는 프로세스의 특징들의 세부 사항의 레벨 또는 입도를 조정하도록 구성될 수도 있다. 예를 들어, 분석기 유닛 (124) 은 프로세스의 거동을 특성화할 수 없다고 결정하는 것에 응답하여 관측기 유닛 (120) 에 통지하도록 구성될 수도 있다. 이에 응답하여, 관측기 유닛 (120) 은 분석기 유닛 (124) 으로부터 전송된 통지 (예컨대, 관측된 거동 특징들의 분석의 결과들에 기초한 통지) 에 기초하여, 모니터링되는 VMR 구조적 속성들을 변경하거나 및/또는 그의 관측들의 입도 (즉, 세부 사항의 레벨 및/또는 관측된 거동이 관측되는 빈도) 를 조정할 수도 있다.
관측기 유닛 (120) 은 또한 새로운 또는 추가적인 VMR 구조적 속성들을 관측하고, 추가적인 분석/분류를 위해 새로운/추가적인 관측된 거동 데이터를 추출기 유닛 (122) 및 분석기 유닛 (124) 으로 전송할 수도 있다. 관측기 유닛 (120) 과 분석기 유닛 (124) 사이의 이러한 피드백 통신들은 관측기/분석기 유닛 (112) 으로 하여금, 관측들의 입도를 회귀적으로 증가시키거나 (즉, 좀더 상세한 및/또는 더 빈번한 관측들을 행하거나) 또는 관측되는 실시간 데이터를 변경가능하게 할 수도 있다. 관측기/분석기 유닛 (112) 은 분석기 유닛 (124) 이 신뢰성의 범위 이내 또는 신뢰성의 임계치 레벨까지 프로세스의 거동을 평가하고 특성화할 수 있을 때까지, 관측들의 입도를 증가시키거나 또는 관측되는 실시간 데이터를 변경할 수도 있다. 이러한 피드백 통신들은 또한 관측기/분석기 유닛 (112) 으로 하여금, 과도한 양의 프로세싱, 메모리, 또는 에너지 리소스들을 소비함이 없이, 거동 벡터들 및 분류자 모델들을 조정하거나 또는 수정가능하게 할 수도 있다.
다양한 구현예들에서, 분류자 모델은 프로세스 거동의 특정의 특징들에 기초한 부스트된 결정 스텀프들의 세트일 수도 있다. 부스트된 결정 스텀프들은 정확히 하나의 노드 (즉, 하나의 테스트 질문 또는 테스트 조건) 및 가중 값을 가질 수도 있으며 데이터/거동들의 가벼운, 비-프로세서 집약적인 2진 분류에 사용하기에 적합할 수도 있는 하나의-레벨 결정 트리들이다. 거동 벡터를 부스트된 결정 스텀프에 적용하는 것은 2진 응답 (예컨대, 1 또는 0, 예 또는 아니오, 등) 을 초래할 수도 있다. 예를 들어, 부스트된 결정 스텀프에 의해 테스트되는 질문/조건은 디바이스 마이크로폰에 의해 검출된 단어 또는 사운드가 RF-민감한 환경의 특성인지 여부, 또는 디바이스 카메라에 의해 캡쳐된 다른 디바이스의 이미지가 위험을 발생시키는 RF 방출들로서 인식가능한지 여부를 포함할 수도 있으며, 이에 대한 응답들은 2진수일 수도 있다. 부스트된 결정 스텀프들은 이러한 모델들이 2진 응답을 발생시키는데 상당한 프로세싱 리소스들을 필요로 하지 않기 때문에 효율적이다. 부스트된 결정 스텀프들은 또한 고도로 병렬화가능하므로, 다수의 스텀프들이 (예컨대, 유닛, 컴퓨팅 디바이스, 또는 시스템에서의 다수의 코어들 또는 프로세서들에 의해) 병렬로/동시에 적용되거나 또는 테스트될 수도 있다.
도 2 는 컴퓨팅 디바이스 (100) 상에서 실행하고 있을 수도 있는 프로세스 (예컨대, 프로세스들 (108, 110) 중 하나) 의 프로세스 어드레스 공간 (200) 의 일 예를 예시한다. 컴퓨팅 디바이스 상의 운영 시스템들은 일반적으로 컴퓨팅 디바이스 상에서 실행하는 각각의 활성 프로세스에 대해 별개의 어드레스 공간들을 설정한다. 프로세스 어드레스 공간 (200) 은 여러 어드레스 범위들, 또는 가상 메모리 영역들 (VMAs) 을 포함할 수도 있다. 각각의 VMA 는 프로세스의 주어진 부분을 메모리에 맵핑하고 로드하는데 사용될 수도 있다. 얼마나 많은 코드가 프로세스에 의해 로드되는지, 얼마나 많은 스택 및 힙들이 사용되는지, 그리고 얼마나 많은 라이브러리들이 로드되는지에 따라서, 프로세스 어드레스 공간 (200) 은 산재하거나 또는 밀집할 수도 있다.
프로세스 어드레스 공간 (200) 은 사용자 스택 (204) 에 대한 VMA 를 포함할 수도 있다. 사용자 스택 (204) 은 프로세스에 의해 생성된 임시 변수들을 저장하는데 사용되는 메모리의 영역이다. 사용자 스택 (204) 은 변수들이 스택에 하부에서 위로 저장되고 스택 상부로부터 먼저 나가는 선입후출 (FILO) 데이터 구조로서 구성될 수도 있다. 프로세스 어드레스 공간 (200) 은 또한 libc 라이브러리 (208) 및 다른 공유된 라이브러리들 (206) 에 대한 VMA들을 포함할 수도 있다. 라이브러리들 (206, 208) 은 다수의 프로세스들이 이용하는 공유된 다수의 함수들을 포함할 수도 있다. 각각의 프로세스는 라이브러리들 (206, 208) 의 복사본을 그의 어드레스 공간으로 로드할 수도 있다. 프로세스 어드레스 공간 (200) 은 또한 전역 변수들 및 다른 정보를 저장하는데 사용될 수도 있는 힙 (210) 에 대한 VMA 를 포함할 수도 있다. 정보는 예를 들어, malloc() 및 free() 함수들을 이용하여 힙 (210) 에 추가되고 그로부터 제거될 수도 있다. 프로세스 어드레스 공간 (200) 은 또한 프로세스에 대한 코드의 본문을 포함할 수도 있는 메인 텍스트 (212) 에 대한 VMA 를 포함할 수도 있다.
VMA 는 다수의 가상 메모리 영역들 (VMRs) 로 세분될 수도 있으며, 여기서, 각각의 VMR 은 데이터, 명령들, 또는 함수들을 저장하는 VMA 내 어드레스들의 연속된 범위일 수도 있다. 예를 들어, libc 라이브러리 (208) 에 대한 VMA 는 예를 들어, libc 라이브러리 (208) 내 특정의 함수를 포함할 수도 있는 VMR (208a) 을 포함할 수도 있다.
컴퓨팅 디바이스의 CPU 는 프로세스에 의해 현재 실행중인 명령의 어드레스를 포함하는 프로그램 카운터 (PC) (214) 를 이용할 수도 있다. PC (214) 는 어드레스 공간의 상이한 부분들이 호출됨에 따라 프로세스 어드레스 공간 (200) 주위로 점프할 수도 있다. 예를 들어, PC (214) 는 함수가 호출될 때 메인 텍스트 (212) 에서 시작하여 libc 라이브러리 (208) 로 이동할 수도 있다. PC (214) 는 그후 스택 (204) 으로 이동하여 함수 내에 사용되는 임시 변수를 판독하거나 또는 기록하고, 그후 메인 텍스트 (212) 로 되돌아갈 수도 있다.
프로세스 어드레스 공간 (200) 은 도 3a 내지 도 5 에 예시된 여러 상이한 유형들의 제어-하이재킹 소프트웨어 공격들을 받을 수도 있다. 공격의 한 유형은 스택 버퍼 오버플로우 공격, 또는 "스택 스매싱" 공격이다. 스택 버퍼 오버플로우 공격을 예시하는 예시적인 코드를 여기에 나타낸다:
Figure 112018037236734-pct00001
도 3a 는 foo 함수가 호출될 때 스택 (302) 의 콘텐츠가 로드될 수도 있다는 것을 예시한다. 스택 (302) 은 변수 buf[128], 그후, 함수에 대한 반환 어드레스, 스택 프레임 포인터, 및 입력 str 파라미터에 할당된 메모리를 포함할 수도 있다. 흐름도 (304) 는 foo 함수가 스택 (302) 을 이용하여 프로세스의 메인 텍스트로부터 호출될 때 프로세스의 정상 거동을 나타낸다. 프로세스는 메인 텍스트에서 시작하여, 그후 libc 라이브러리 (libc.R1) 의 VMR 로 이동하여 strcpy 함수를 호출하고, libc 라이브러리 (libc.R3) 의 다른 VMR 로 이동하여 printf 함수를 호출하고, 그후 프로세스의 메인 텍스트로 되돌아갈 수도 있다.
스택 버퍼 오버플로우 공격에서, 공격자의 목표는 스택 상의 버퍼를 오버플로우시켜, 스택 상에 어떤 코드를 주입하고, 스택 상의 반환 어드레스를 수정하여 주입된 코드로 점프시키는 것이다. 도 3b 는 악성 소프트웨어에 의해 손상된 스택 (312) 을 예시한다. 악성 소프트웨어는 할당된 변수 buf[128] 보다 큰 스트링 변수로 foo 함수를 호출하여, 스택 (312) 의 다른 부분들, 또는 VMR들을 오버라이트하는 버퍼 오버플로우를 초래할 수도 있다. 입력 변수는 주입된 코드 (즉, Exec("/bin/sh")) 및 주입된 코드를 가리키는 반환 어드레스를 포함할 수도 있다. 따라서, 프로그램 카운터가 스택 (312) 내 반환 어드레스에 도달할 때, 프로그램 카운터는 주입된 코드로 점프하여 실행한다.
흐름도 (314) 는 foo 함수가 스택 (312) 을 이용하여 프로세스의 메인 텍스트로부터 호출될 때 프로세스의 비정상적인 거동을 나타낸다. 프로세스는 메인 텍스트에서 시작하고 그후 libc 라이브러리 (libc.R1) 의 VMR 로 이동하여 strcpy 함수를 호출할 수도 있다. 그러나, strcpy 함수에 대한 반환 어드레스는 버퍼 오버플로우에 의해 오버라이트되어 있으며 지금은 스택 (312) 에서의 주입된 코드 (Exec("/bin/sh")) 를 가리킨다. 프로그램 카운터는 주입된 코드로 점프하여 실행할 것이다.
제어-하이재킹 공격의 다른 유형은 힙 버퍼 오버플로우 공격이다. 힙 버퍼 오버플로우 공격을 예시하는 예시적인 코드를 여기에 나타낸다:
Figure 112018037236734-pct00002
도 4a 는 do_compare 함수가 호출될 때 힙 (402) 의 콘텐츠가 로드될 수도 있다는 것을 예시한다. 힙 (402) 은 변수 buf[128], 및 그후 함수에 대한 포인터에 대한 메모리를 포함할 수도 있다. 흐름도 (404) 는 do_compare 함수가 힙 (402) 을 이용하여 프로세스의 메인 텍스트로부터 호출될 때 프로세스의 정상 거동을 나타낸다. 프로세스는 메인 텍스트에서 시작하고, 그후 libc 라이브러리 (libc.R1) 의 VMR 로 이동하여 strcpy 함수를 호출하고, 그후 메인 텍스트의 다른 VMR 로 이동하여 함수의 나머지를 수행할 수도 있다.
힙 버퍼 오버플로우 공격에서, 공격자의 목표는 힙 상의 할당된 버퍼를 오버플로우시켜, 어떤 코드를 메모리의 다른 부분에 주입하고, 그리고 함수 포인터를 오버라이트하여 함수 호출을 주입된 코드로 재전송 (redirect) 하는 것이다. 도 4b 는 악성 소프트웨어에 의해 손상된 힙 (412) 을 예시한다. 악성 소프트웨어는 할당된 버퍼보다 큰 char 변수들로 do_compare 함수를 호출하고, 힙 (412) 에 저장된 함수 포인터를 주입된 코드에 대한 다른 함수 포인터로 오버라이트하는 버퍼 오버플로우를 초래할 수도 있다. 따라서, 프로그램 카운터가 힙 (412) 에서의 함수 포인터에 도달할 때, 프로그램 카운터가 주입된 코드로 점프하여 실행한다.
흐름도 (414) 는 do_compare 함수가 힙 (412) 을 이용하여 프로세스의 메인 텍스트로부터 호출될 때 프로세스의 비정상적인 거동을 나타낸다. 프로세스는 메인 텍스트에서 시작하고 그후 libc 라이브러리 (libc.R1) 의 VMR 로 이동하여 strcpy 함수를 호출할 수도 있다. 그러나, 힙 (412) 에 저장된 함수 포인터가 이제는 메인 텍스트로 돌아가기 보다는 주입된 코드를 가리킨다. 프로그램 카운터는 주입된 코드로 점프하여 실행할 것이다.
제어-하이재킹 공격의 또 다른 유형은 컴퓨팅 디바이스에서 기존 코드의 작은 조각들을 함께 결합하여 악의적인 함수들을 수행하는 리턴-온-프로그래밍 공격이다. 기존 코드의 작은 조각들은 리턴-온-프로그래밍 (ROP) 가젯들로 지칭될 수도 있다. ROP 가젯들은 반환 명령으로 끝나는 아주 작은 코드 시퀀스들이며, 프로세스에 의해 로드되는 프로세스 어드레스 공간의 메인 텍스트 또는 공유된 라이브러리들에 로케이트될 수도 있다. ROP 가젯들은 쉘을 획득하거나 또는 다른 악의적인 태스크들을 달성하기 위해 특정의 순차적인 순서로 호출될 수도 있다.
도 5 는 다수의 ROP 가젯들을 순차적으로 호출하도록 손상된 스택 (502) 을 예시한다. 스택 (502) 은 도 3b 를 참조하여 설명된 것과 유사한 버퍼 오버플로우를 통해서 손상될 수도 있다. 이 경우, 스택 (502) 은 다수의 ROP 가젯들에 대한 어드레스를, 더미 스택 프레임 포인터들과 함께, 특정의 순서로 포함하도록 오버라이트된다. 흐름도 (504) 는 스택 (502) 으로부터 실행될 때 프로세스의 비정상적인 거동을 나타낸다. 프로세스는 메인 텍스트에서 시작하고 그후 스택 (502) 에 저장된 어드레스로 이동할 수도 있다. 그러나, 스택 (502) 에서의 최상위 어드레스는 이제는 libc 라이브러리 (예컨대, libc.Ri) 내 VMR 에 로케이트될 수도 있는 ROP 가젯 1 을 가리킨다. ROP 가젯 1 을 실행한 후, 프로그램 카운터는 스택 (502) 으로 되돌아가고 그후 libc 라이브러리 (예컨대, libc.Rk) 내 다른 VMR 에 로케이트될 수도 있는 ROP 가젯 2 로 이동한다. 컴퓨팅 디바이스는 각각의 ROP 가젯을, 이들이 스택 (502) 에 배열된 순서로 실행할 수도 있다.
다른 유형들의 제어-하이재킹 공격은 스택 또는 힙 버퍼 오버플로우 공격과 유사하게 동작할 수도 있는 정수 오버플로우 기반의 공격들을 포함할 수도 있다. 함수에서의 정수 변수에 대한 버퍼 할당은 그 변수보다 더 작게 할당될 수도 있으며, 이것이 오버플로우를 초래한다. 주입된 악성 코드를 가리키는 함수 포인터가 오버플로우에 삽입될 수도 있다.
제어-하이재킹 소프트웨어 공격들의 모든 이들 유형들은 일반적으로 프로세스들이 예를 들어, 어드레스 공간의 다양한 부분들에 대한 포인터들, 스택, 또는 힙을 변경함으로써, 프로세스 어드레스 공간을 할당하고 횡단하는 방법을 변경한다. 프로세스들은 알맞게 예측가능한 루틴들을 일반적으로 가질 수도 있으며, 따라서, 프로세스 어드레스 공간을 할당하거나 또는 횡단하는데 예측가능한 거동들을 가질 수도 있다. 따라서, 프로세스에 대한 어드레스 공간은 모니터링되어 예상된 거동에 대해 비교될 수도 있으며, 제어-하이재킹 공격들을 표시하는 비정상적인 거동이 검출될 수도 있다.
도 6 은 컴퓨팅 디바이스에서의 VMR 모니터링 시스템 (600) 의 예시적인 구현예에 대한 블록도를 예시한다. VMR 모니터링 시스템 (600) 은 프로세스에 의해 이용되는 다수의 VMR들의 모니터링된 구조적 속성들 (602 내지 610) 을 입력으로서 취하여, 모니터링된 구조적 속성들을 프로세스에 대한 VMR들의 예상된 구조적 속성들과 비교하는 관측기/분석기 유닛 (112) 을 포함할 수도 있다. 비교 및 분석은 규칙들의 세트에 기초할 수도 있거나, 또는 VMR들의 예상된 구조적 속성들 및 프로세스의 어드레스 공간을 모델링함으로써 머신 학습을 통해서 달성될 수도 있다. 모니터링된 구조적 속성들이 예상된 구조적 속성들과 일치하지 않으면, 관측기/분석기 유닛 (112) 은 출력 (614) 을 컴퓨팅 디바이스에서의 다른 컴포넌트들로 전송할 수도 있다. 출력 (614) 은 프로세스를 종료시키는 것, 프로세스로부터 운영 시스템의 특정 부분들을 록킹하는 것, 맬웨어 방지 프로그램들을 개시하는 것, 또는 다른 액션들과 같은, 보호 액션을 취하라는 명령들을 포함할 수도 있다.
프로세스는 다수의 VMR들을 포함하는 연관된 어드레스 공간을 가질 수도 있다. 이들 VMR들은 프로세스의 스택, 힙, 라이브러리들, 및 메인 텍스트의 부분들을 포함할 수도 있다. 예를 들어, 각각의 VMR 은 함수, 변수, 포인터, 또는 프로세스 어드레스 공간에 저장된 데이터 또는 명령들의 다른 별개의 세그먼트들에 대응할 수도 있다.
VMR들의 구조적 속성들은 구조, 할당, 구성요소 배열, 또는 시간 경과에 따른 VMR들의 상태 트랜지션 이력을 정의하거나 또는 기술하는 속성들을 포함할 수도 있다. 구조적 속성들은 데이터 독립적일 수도 있다. 다시 말해서, VMR 내에 저장된 실제 데이터 또는 콘텐츠는 구조적 속성으로서 포함되지 않을 수도 있으며, VMR 의 구조적 속성들에서의 변화들은 VMR 에 저장된 데이터에서의 변화들에 의존하지 않을 수도 있다. 모니터링된 구조적 속성들 (602 내지 610) 은 관측기/분석기 유닛 (112) 에 의해 모니터링될 수도 있는 다양한 구조적 속성들의 비한정적인 예들이다.
하나의 모니터링된 구조적 속성 (602) 은 어드레스 공간에 존재하는 VMR들의 개수일 수도 있다. 프로세스는 일반적으로 정상 실행 동안 어떤 개수의 VMR들을 이용할 수도 있다. 제어-하이재킹 공격들은 외래 (foreign) 또는 주입된 코드 또는 데이터를 저장하기 위해 메모리의 새로운 섹션들을 할당하는 것을 수반할 수도 있다. 따라서, VMR들의 개수에서의 변화들은 제어-하이재킹 소프트웨어 공격들에 의해 초래되는 비정상적인 거동을 표시할 수도 있다. VMR들의 개수는 새로운 VMR 이 생성될 때마다 함수 (예컨대, do_mmap()) 를 호출하는 커널 맵퍼를 통해서 모니터링될 수도 있다.
다른 모니터링된 구조적 속성 (604) 은 각각의 VMR 의 사이즈일 수도 있다. 예를 들어, 프로세스에 의해 사용되는 어떤 변수들에 할당된 메모리는 다수의 실행들에 걸쳐서 동일할 수도 있으며, 따라서, VMR 의 사이즈에서의 변화는 제어-하이재킹 소프트웨어 공격들 (예컨대, 버퍼 오버플로우를 인위적으로 생성하는 공격) 에 의해 초래되는 비정상적인 거동을 나타낼 수도 있다. VMR들의 사이즈는 커널 맵퍼, malloc() 함수에 대한 호출들, 및 프로세스 어드레스 공간의 라이브러리에의 새로운 함수들의 추가를 통해서 모니터링될 수도 있다.
다른 모니터링된 구조적 속성 (606) 은 프로세스에 대한 어드레스 공간 레이아웃 변화들일 수도 있다. 프로세스는 일반적으로 VMR들이 서로에 대해 동일한 로케이션들에 로케이트되고 레이아웃이 다수의 실행들에 걸쳐서 변경되지 않도록, 그의 어드레스 공간을 특정의 내부 구조로 배열할 수도 있다. 따라서, 어드레스 공간의 레이아웃에 대한 변화들은 제어-하이재킹 소프트웨어 공격들에 의해 초래되는 비정상적인 거동을 표시할 수도 있다. 프로세스의 어드레스 공간 레이아웃 변화들은 커널 맵퍼를 통해서 모니터링될 수도 있다.
다른 모니터링된 구조적 속성 (608) 은 VMR들에 대한 액세스 허가 변화들일 수도 있다. 각각의 VMR 에는 다수의 실행들에 걸쳐서 일반적으로 변하지 않는 프로세스에 의해 액세스 허가들이 할당될 수도 있다. 따라서, VMR들의 액세스 허가들에 대한 변화들은 제어-하이재킹 소프트웨어 공격들에 의해 초래되는 비정상적인 거동을 표시할 수도 있다. VMR들의 액세스 허가 변화들은 VMR 의 허가에 대한 변화가 있을 때마다 호출될 수도 있는 커널 가상 메모리 관리기를 통해서 모니터링될 수도 있다.
다른 모니터링된 구조적 속성 (610) 은 시간 경과에 따른 프로세스의 VMR 상태 트랜지션 이력일 수도 있다. 프로세스는 다양한 VMR들을, 다수의 실행들에 걸쳐서 변하지 않는 예측가능한 순서로 네비게이션할 수도 있다. 따라서, 프로세스가 예상되지 않은 VMR들 사이의 일련의 상태 트랜지션들에 관여할 때, 제어-하이재킹 소프트웨어 공격들에 의해 초래되는 비정상적인 거동을 표시할 수도 있다. VMR 상태 트랜지션 이력은 하드웨어 또는 소프트웨어 기반의 솔루션들을 통해서 모니터링될 수도 있으며, 이는 도 7, 도 9, 및 도 10 을 참조하여 좀더 자세히 설명된다.
도 7 은 컴퓨팅 디바이스 상에서 실행하는 프로세스의 VMR 트랜지션들을 모니터링하기 위한 하드웨어 구현예를 예시한다. 시스템 (700) 은 프로세스를 실행하고 프로세스에 대한 프로그램 카운터를 유지관리하는 CPU 코어 (702) 를 포함한다. 시스템 (700) 은 또한 컴퓨팅 디바이스 상에서 실행하는 다양한 프로세스들의 VMR들의 메모리 범위들을 유지관리하는 VMR 커널 드라이버 (704) 를 포함할 수도 있다. 시스템 (700) 은 또한 VMR 추적기 하드웨어 블록 (706) 을 포함할 수도 있다. VMR 추적기 하드웨어 블록 (706) 은 입력으로서, CPU 코어 (702) 로부터 프로그램 카운터 뿐만 아니라, VMR 커널 드라이버 (704) 로부터 현재의 프로세스 ID (PID) 및 VMR 범위들을 수신하는 VMR 트랜지션 로거 (712) 를 포함할 수도 있다. VMR 추적기 하드웨어 블록 (706) 은 PID 로 인덱싱된, 컴퓨팅 디바이스 상에서 실행하는 각각의 프로세스에 대한 테이블을 포함할 수도 있는 다수의 VMR 테이블들 (710) 을 저장할 수도 있다. 각각의 테이블은 그 프로세스에 의해 할당된 VMR들 및 프로세스가 실행중인 기지의 최종 VMR 을 저장할 수도 있다.
주기적으로, VMR 트랜지션 로거 (712) 는 VMR 범위들, PID 및/또는 프로그램 카운터를 입력들로서 수신할 수도 있다. 이들 입력들은 모니터링될 프로세스 및 프로그램 카운터가 가리키는 현재의 명령을 식별한다. VMR 트랜지션 로거 (712) 는 입력 정보를 VMR 테이블들 (710) 과 비교하여, 모니터링된 프로세스가 여전히 동일한 VMR 에 있는지 또는 상이한 VMR 로 트랜지션되었는지 (예컨대, 라이브러리 함수에 대한 프로세스의 메인 텍스트로부터의 함수 호출) 여부를 결정할 수도 있다. VMR 트랜지션이 있었으면, VMR 트랜지션 로거 (712) 는 VMR 트랜지션을 로그하고 그것을 데이터 버퍼 (708) 에 저장할 수도 있다. VMR 트랜지션 및 PID 는 또한 VMR 커널 드라이버 (704) 로 또한 전송될 수도 있다. 이와 같이, VMR 추적기 하드웨어 블록 (706) 은 컴퓨팅 디바이스 상에서 실행중인 프로세스들에서의 VMR 트랜지션들을 검출하고 모니터링할 수도 있다.
VMR 추적기 하드웨어 블록 (706) 이 VMR 상태 트랜지션 이력을 모니터링하기 위한 하드웨어 구현예이지만, VMR 상태 트랜지션 이력은 대안적으로, 소프트웨어를 통해서 모니터링될 수도 있다. VMR 상태 트랜지션들의 지속적인 소프트웨어 모니터링은 리소스 집약적일 수도 있으며, 컴퓨팅 디바이스 상의 다른 프로세스들의 동작에 영향을 미칠 수도 있다. 그러나, VMR 상태 트랜지션들을 비-연속적인 방식으로 모니터링하는 여러 방법들이 있으며, 개별적으로 또는 조합하여 구현될 수도 있다.
예를 들어, 선택적 추적 VMR 상태 트랜지션에서, 모니터링은 단지 관심있는 어떤 실행중인 프로세스들에 대해서만 개시될 수도 있다. 다른 실행중인 프로세스들은 모니터링되지 않을 수도 있다. 추적 소프트웨어는 관심있는 프로세스들의 프로그램 카운터들을 모니터링할 수도 있다. 주기적인 추적에서, 추적 소프트웨어는 타이머 쓰레드에 따라서 프로세스의 프로그램 카운터를 주기적으로 샘플링할 수도 있다. 다중 CPU 코어 시스템에서, 타이머 쓰레드는 프로세스가 실행되고 있지 않은 CPU 에 결부될 수도 있다. 타이머 쓰레드의 기간은, 주기성이 특정의 프로세스 거동에 대해 적응될 수 있고 VMR 상태 트랜지션들을 손실할 가능성이 감소되도록 조정가능할 수도 있다.
기회주의적 추적에서, VMR 커널 드라이버는 프로세스가 실행중인 CPU 의 제어를 수신할 수도 있다. 이러한 경우들에서, VMR 커널 드라이버는 프로그램 카운터를 샘플링하고 VMR 상태 트랜지션들을 추적할 수도 있다. 예를 들어, VMR 커널 드라이버는 인트럽트 도착들, 컨텍스트 스위치들, 신호 발생, 및 시스템 호출들 동안 프로세서 제어를 수신할 수도 있다. 페이지 오류 (page fault) 기반의 추적에서, 추적 소프트웨어는 비-현재의 VMR들을 비-실행가능한 것 (예컨대, 판독 전용) 으로서 설정할 수도 있으며, 프로세스가 새로운 VMR 로 점프할 때마다 페이지 오류가 있을 것이다. 추적 소프트웨어는 페이지 오류를 검출할 때마다 상태 트랜지션을 로그하고, 새로운 VMR 을 실행가능한 것으로 설정하고, 그리고 구 VMR 을 비-실행가능한 것으로 설정할 수도 있다.
도 8 은 다양한 실시형태들에 따른, 컴퓨팅 디바이스 상에서 실행하는 프로세스에 대한 소프트웨어 공격들을 검출하는 방법 (800) 을 예시한다. 방법 (800) 은 컴퓨팅 디바이스의 프로세서 (예컨대, 도 1a 에서의 컴퓨팅 디바이스 (100) 의 CPU (102)) 에 의해 구현될 수도 있다.
블록 802 에서, 프로세서는 컴퓨팅 디바이스 상에서 실행하는 프로세스의 복수의 가상 메모리 영역들의 구조적 속성들을 모니터링할 수도 있다. 프로세스는 다수의 VMR들로 분할될 수도 있는 연관된 어드레스 공간을 가질 수도 있다. VMR들은 스택, 힙, 라이브러리들, 메인 텍스트, 또는 프로세스에 대한 어드레스 공간의 다른 부분들에서 발견될 수도 있는 데이터, 명령들, 또는 함수들을 저장하는 메모리의 연속된 부분들일 수도 있다. 모니터링된 구조적 속성들은 프로세스에 의해 이용되는 VMR들의 수, 각각의 VMR 의 사이즈, VMR들의 어드레스 공간 레이아웃 변화들, VMR들의 액세스 허가 변화들, 및 VMR 상태 트랜지션 이력을 포함할 수도 있다.
블록 804 에서, 프로세서는 복수의 VMR들의 모니터링된 구조적 속성들을 프로세스의 복수의 VMR들의 예상된 구조적 속성들과 비교할 수도 있다. 컴퓨팅 디바이스는 VMR들 사이에 할당하고 이용하고 트랜지션할 때에 프로세스의 예상된 거동 (즉, 제어-하이재킹 공격들로부터의 간섭 없이 실행) 을 미리 분석하고, 프로세스에 대한 VMR들의 예상된 구조적 속성들을 정의하는 모델 또는 규칙들의 세트를 구성하였을 수도 있다. 프로세서는 수학적 모델들, 규칙-기반의 비교들, 또는 다른 방법들을 이용하여, 모니터링된 구조적 속성들을 예상된 구조적 속성들과 비교할 수도 있다.
결정 블록 806 에서, 프로세서는 모니터링된 구조적 속성들과 예상된 구조적 속성들 간의 비교에 기초하여, 프로세스에 대한 복수의 VMR들의 모니터링된 구조적 속성들이 비정상적인 거동을 나타내는지 여부를 결정할 수도 있다. 예를 들어, 프로세서는 수학적 모델들을 이용하여, 모니터링된 구조적 속성들과 예상된 구조적 속성들 사이의 유사성을 나타내는 값을 발생시키고, 그 값을 유사성의 허용가능한 정도를 나타내는 임계치와 비교할 수도 있다. 그 값이 임계치 아래이면, 모니터링된 구조적 속성들은 비정상적인 거동을 나타낼 수도 있다. 다른 예에서, 프로세서는 규칙들의 세트를 모니터링된 구조적 속성들에 적용하여, 모니터링된 구조적 속성들이 규칙들 모두를 만족하는지 여부를 결정할 수도 있다. 모니터링된 구조적 속성들이 하나 이상의 규칙들을 만족시키지 않으면, 모니터링된 구조적 속성들은 비정상적인 거동을 나타낼 수도 있다.
모니터링된 구조적 속성들이 비정상적인 거동을 나타내지 않는다고 결정하는 것 (결정 블록 806 = "아니오") 에 응답하여, 프로세서는 프로세스가 실행중인 한 복수의 VMR들의 구조적 속성들을 계속해서 모니터링할 수도 있다 (즉, 블록 802 에서의 동작으로 복귀할 수도 있다). 모니터링된 구조적 속성들이 비정상적인 거동을 나타낸다고 결정하는 것 (결정 블록 806 = "예") 에 응답하여, 프로세서는 블록 808 에서 보호 액션을 개시할 수도 있다. 예를 들어, 프로세서는 프로세스를 종료시키거나, 프로세스로부터 운영 시스템의 특정 부분들을 록킹하거나, 맬웨어 방지 프로그램들을 개시하거나, 또는 다른 액션들을 수행할 수도 있다. 이와 같이, 본 방법 (800) 은 프로세스의 어드레스 공간에서의 VMR들의 구조적 속성들을 모니터링함으로써 프로세스들에 대한 제어-하이재킹 소프트웨어 공격들을 모니터링하는 방법을 제공한다.
도 9 는 다양한 실시형태들에 따른, 컴퓨팅 디바이스 상에서 실행하는 프로세스에 대한 VMR 상태 트랜지션 이력의 하드웨어-기반의 추적을 위한 방법 (900) 을 예시한다. 방법 (900) 은 컴퓨팅 디바이스의 프로세서 (예컨대, 도 1a 에서의 컴퓨팅 디바이스 (100) 의 CPU (102)) 에 의해, 또는 컴퓨팅 디바이스 내 VMR 추적기 하드웨어 (예컨대, 도 7 에서의 VMR 추적기 하드웨어 블록 706) 에서의 프로세서에 의해, 구현될 수도 있다.
블록 902 에서, 프로세서는 컴퓨팅 디바이스 상의 프로세스가 실행중인 현재의 VMR 에 관한 정보를 저장할 수도 있다. 프로세스는 데이터, 함수들, 또는 명령들을 저장하는 메모리의 연속된 부분들을 나타내는 다수의 VMR들을 포함하는 어드레스 공간을 이용할 수도 있다. 프로세스에 대한 프로그램 카운터는 프로세스가 실행중인 현재의 VMR 을 가리킬 수도 있다. 저장된 정보는 프로세서의 PID, 프로세스의 어드레스 공간에서의 VMR들 모두의 메모리 범위들, 및 프로세스가 실행중인 현재의 VMR (예컨대, 프로세스의 메인 텍스트에서의 함수) 을 포함할 수도 있다. 예를 들어, 이 정보는 테이블 형태로, 프로세서가 모니터링하고 있는 각각의 프로세스에 대해 하나씩 저장될 수도 있다. 이 정보는 VMR 추적기 하드웨어에서의 데이터 스토어에 저장될 수도 있다.
블록 904 에서, 프로세서는 프로세스에 의해 현재 실행중인 명령에 관한 새로운 정보를 수신할 수도 있다. 예를 들어, 프로세서는 프로세스가 실행중인 CPU 로부터, 업데이트된 프로그램 카운터를 때때로 수신할 수도 있다. 프로세서는 또한 VMR 커널 드라이버로부터 프로세스의 VMR들의 현재의 메모리 범위들 및 PID 를 수신할 수도 있다.
결정 블록 906 에서, 프로세서는 새로운 정보에 기초하여, 프로세스가 VMR 상태 트랜지션을 겪었는지 여부를 결정할 수도 있다. 프로세서는 프로그램 카운터, PID, 및 VMR들의 현재의 메모리 범위들을 이용하여, 프로세스가 다른 VMR 로 트랜지션되었는지 여부를 결정할 수도 있다. 예를 들어, 프로세스에 대한 최종 저장된 현재의 VMR 이 프로세스의 메인 텍스트에 있으면, 프로세서는 프로세스가 동일한 VMR 내에서 여전히 실행중인지, 또는 다른 VMR 로 트랜지션되었는지 (예컨대, 라이브러리에 저장된 함수에 대한 함수 호출) 여부를 프로그램 카운터로부터 결정할 수도 있다.
프로세스가 VMR 상태 트랜지션을 겪지 않았다고 결정하는 것 (결정 블록 906 = "아니오") 에 응답하여, 프로세서는 블록 904 에서, 프로세스에 의해 현재 실행중인 명령에 관한 새로운 정보를 계속해서 수신할 수도 있다. 프로세스가 VMR 상태 트랜지션을 겪었다고 결정하는 것 (결정 블록 906 = "예") 에 응답하여, 프로세서는 블록 908 에서, VMR 상태 트랜지션을 로그할 수도 있다. 예를 들어, 프로세서는 프로세스가 트랜지션하기 이전 VMR 및 프로세서가 트랜지션된 이후 VMR 을 저장할 수도 있다. 프로세서는 그후 블록 902 에서, 새로운 현재의 VMR 정보를 저장할 수도 있다. 이와 같이, 본 방법 (900) 은 프로세스의 VMR 상태 트랜지션 이력을 추적하는 하드웨어-기반의 구현예를 제공한다.
도 10 은 다양한 실시형태들에 따른, 컴퓨팅 디바이스 상에서 실행하는 프로세스에 대한 VMR 상태 트랜지션 이력의 소프트웨어-기반의 추적을 위한 방법 (1000) 을 예시한다. 방법 (1000) 은 컴퓨팅 디바이스의 프로세서 (예컨대, 도 1a 에서의 컴퓨팅 디바이스 (100) 의 CPU (102)) 에 의해 구현될 수도 있다.
블록 1002 에서, 프로세서는 컴퓨팅 디바이스 상의 프로세스가 실행중인 현재의 VMR 에 관한 정보를 저장할 수도 있다. 프로세스는 데이터, 함수들, 또는 명령들을 저장하는 메모리의 연속된 부분들을 나타내는 다수의 VMR들을 포함하는 어드레스 공간을 이용할 수도 있다. 프로세스에 대한 프로그램 카운터는 프로세스가 실행중인 현재의 VMR 을 가리킬 수도 있다. 저장된 정보는 프로세서의 PID, 프로세스의 어드레스 공간에서의 VMR들 모두의 메모리 범위들, 및 프로세스가 실행중인 현재의 VMR (예컨대, 프로세스의 메인 텍스트에서의 함수) 을 포함할 수도 있다. 예를 들어, 이 정보는 테이블 형태로, 프로세서가 모니터링하고 있는 각각의 프로세스에 대해 하나씩 저장될 수도 있다.
블록 1004 에서, 프로세서는 프로세스에 대한 하나 이상의 VMR 추적 전략들을 구현할 수도 있다. VMR 추적 전략들의 예들은 (단지 관심있는 어떤 프로세스들만을 추적하는) 선택적 추적; (VMR 상태 트랜지션 정보를 주기적으로 수집하는) 주기적인 추적; (VMR 커널 드라이버가 프로세스가 실행중인 프로세서의 제어를 획득할 때 VMR 상태 트랜지션 정보를 수집하는) 기회주의적 추적; 및 (모든 비-현재의 VMR들을 비-실행가능한 것으로 설정하고 VMR 상태 트랜지션들이 발생할 때 페이지 오류들을 추적하는) 페이지 오류 기반의 추적을 포함할 수도 있다.
결정 블록 1006 에서, 프로세서는 프로세스가 VMR 상태 트랜지션을 겪었는지 여부를 결정할 수도 있다. 프로세서는 VMR 상태 트랜지션이 발생하였는지 여부를 하나 이상의 VMR 트랜지션 추적 전략들로부터 결정할 수도 있다. 예를 들어, VMR 상태 트랜지션들은, 프로세스의 프로그램 카운터가 새로운 VMR 을 가리킬 때, 또는 페이지 오류 기반의 추적에서 페이지 오류가 있었을 때, 검출될 수도 있다.
프로세스가 VMR 상태 트랜지션을 겪지 않았다고 결정하는 것 (결정 블록 1006 = "아니오") 에 응답하여, 프로세서는 블록 1004 에서, 프로세스에 대한 하나 이상의 VMR 추적 전략들을 계속해서 구현할 수도 있다. 프로세스가 VMR 상태 트랜지션을 겪었다고 결정하는 것 (결정 블록 1006 = "예") 에 응답하여, 프로세서는 블록 1008 에서, VMR 상태 트랜지션을 로그할 수도 있다. 예를 들어, 프로세서는 프로세스가 트랜지션하기 이전 VMR 및 프로세서가 트랜지션된 이후 VMR 을 저장할 수도 있다. 프로세서는 그후 블록 1002 에서, 새로운 현재의 VMR 정보를 저장할 수도 있다. 이와 같이, 본 방법 (1000) 은 프로세스의 VMR 상태 트랜지션 이력을 추적하는 소프트웨어-기반의 구현예를 제공한다.
다양한 실시형태들은 다양한 컴퓨팅 디바이스들 중 임의의 컴퓨팅 디바이스에서 구현될 수도 있으며, 이의 일 예 (예컨대, 통신 디바이스 (1100)) 가 도 11 에 예시된다. 다양한 구현예들에서, 통신 디바이스 (1100) 는 도 1a 를 참조하여 본원에서 설명된 바와 같은 컴퓨팅 디바이스 (100) 와 유사할 수도 있다. 이와 같이, 통신 디바이스 (1100) 는 도 8 내지 도 10 에서의 방법들 (800, 900, 및 1000) 중 일부 또는 모두를 구현할 수도 있다.
통신 디바이스 (1100) 는 터치스크린 제어기 (1104) 및 내부 메모리 (1106) 에 커플링된 프로세서 (1102) 를 포함할 수도 있다. 프로세서 (1102) 는 일반적인 또는 특정의 프로세싱 태스크들용으로 지정된 하나 이상의 멀티-코어 집적 회로들일 수도 있다. 내부 메모리 (1106) 는 휘발성 또는 비-휘발성 메모리일 수도 있으며, 또한 보안 및/또는 암호화된 메모리, 또는 비보안 및/또는 비암호화된 메모리, 또는 이들의 임의의 조합일 수도 있다. 터치스크린 제어기 (1104) 및 프로세서 (1102) 는 또한 저항-감지 터치스크린, 정전용량-감지 터치스크린, 적외선 감지 터치스크린, 등과 같은, 터치스크린 패널 (1112) 에 커플링될 수도 있다. 게다가, 통신 디바이스 (1100) 의 디스플레이는 터치 스크린 능력을 가질 필요가 없다.
통신 디바이스 (1100) 는 프로세서 (1102) 및 안테나 (1110) 에 커플링되며 셀룰러 통신들을 전송하고 수신하도록 구성된 셀룰러 네트워크 트랜시버 (1108) 를 가질 수도 있다. 트랜시버 (1108) 및 안테나 (1110) 는 다양한 실시형태 방법들을 구현하기 위해 본원에서-언급된 회로부와 함께 사용될 수도 있다. 통신 디바이스 (1100) 는 트랜시버 (1108) 및/또는 프로세서 (1102) 에 커플링된 하나 이상의 SIM 카드들 (1116) 을 포함할 수도 있으며 본원에서 설명하는 바와 같이 구성될 수도 있다. 통신 디바이스 (1100) 는 셀룰러 네트워크를 통해서 통신을 가능하게 하며 프로세서에 커플링될 수도 있는 셀룰러 네트워크 무선 모뎀 칩 (1117) 을 포함할 수도 있다.
통신 디바이스 (1100) 는 또한 오디오 출력들을 제공하기 위한 스피커들 (1114) 을 포함할 수도 있다. 통신 디바이스 (1100) 는 또한 본원에서 설명된 컴포넌트들의 모두 또는 일부를 포함하기 위한, 플라스틱, 금속, 또는 재료들의 조합으로 이루어지는 하우징 (1120) 을 포함할 수도 있다. 통신 디바이스 (1100) 는 1회용 또는 재충전가능한 배터리와 같은, 프로세서 (1102) 에 커플링된 전력 소스 (1122) 를 포함할 수도 있다. 재충전가능한 배터리는 또한 통신 디바이스 (1100) 외부에 있는 소스로부터 충전 전류를 수신하기 위해 주변장치 디바이스 접속 포트에 커플링될 수도 있다. 통신 디바이스 (1100) 는 또한 사용자 입력들을 수신하기 위한 물리적인 버튼 (1124) 을 포함할 수도 있다. 통신 디바이스 (1100) 는 또한 통신 디바이스 (1100) 를 턴온 및 턴오프하는 전원 버튼 (1126) 을 포함할 수도 있다.
상기 방법 설명들 및 프로세스 흐름도들은 단지 예시적인 예들로서 제공되며 다양한 실시형태들 및 구현예들의 동작들이 제시된 순서로 수행되어야 한다는 것을 요구하거나 또는 암시하려고 의도된 것이 아니다. 당업자가 주지하고 있는 바와 같이, 전술한 실시형태들 및 구현예들에서의 동작들의 순서는 임의의 순서로 수행될 수도 있다. "그후", "따라서", "다음" 등과 같은 단어들은 동작들의 순서를 제한하려고 의도되지 않으며; 이들 단어들은 방법들의 설명을 통해서 독자를 안내하기 위해서 단지 사용된다. 또, 단수형으로, 예를 들어, 한정사 "한", "하나" 또는 "그" 를 이용한, 청구항 엘리먼트들에 대한 임의의 언급은, 그 엘리먼트를 단수에 한정하는 것으로 해석되어서는 안된다.
본원에서 개시한 실시형태들 및 구현예들과 관련하여 설명한 다양한 예시적인 로직 블록들, 유닛들, 회로들, 및 알고리즘 동작들은 전자적 하드웨어, 컴퓨터 소프트웨어, 또는 양쪽의 조합들로서 구현될 수도 있다. 이러한 하드웨어와 소프트웨어의 상호 교환가능성을 명확히 예시하기 위하여, 다양한 예시적인 컴포넌트들, 블록들, 유닛들, 회로들, 및 동작들은 일반적으로 그들의 기능성의 관점에서 본원에서 설명되었다. 이런 기능성이 하드웨어 또는 소프트웨어로 구현되는지 여부는 특정의 애플리케이션 및 전체 시스템에 부과되는 설계 제한 사항들에 의존한다. 숙련자들은 각각의 특정의 애플리케이션 마다 설명한 기능성을 여러 방법으로 구현할 수도 있으며, 그러나 이러한 구현 결정들은 청구항들의 범위로부터 일탈을 초래하는 것으로 해석되어서는 안된다.
본원에서 개시된 실시형태들 및 구현예들과 관련하여 설명된 다양한 예시적인 로직들, 로직 블록들, 유닛들, 및 회로들을 구현하는데 사용되는 하드웨어는 다양한 프로세서들 또는 프로세서들과 회로들의 조합들에서 구현되거나, 이들에 의해 수행될 수도 있다. 다양한 실시형태들을 구현할 수도 있는 프로세서들 및 회로들의 예들은 범용 프로세서들, 디지털 신호 프로세서들 (DSP), 주문형 집적회로들 (ASIC), 필드 프로그래밍가능 게이트 어레이들 (FPGA), 및 다른 프로그래밍가능 로직 디바이스, 이산 게이트 또는 트랜지스터 로직, 이산 하드웨어 컴포넌트들, 또는 본원에서 설명되는 기능들을 수행하도록 설계된 이들의 임의의 조합을 포함한다. 범용 프로세서는 마이크로프로세서일 수도 있으며, 그러나, 대안적으로는, 프로세서는 임의의 종래의 프로세서, 제어기, 마이크로제어기, 또는 상태 머신일 수도 있다. 프로세서는 또한 컴퓨팅 디바이스들의 조합, 예컨대, DSP 와 마이크로프로세서의 조합, 복수의 마이크로프로세서들, DSP 코어와 결합된 하나 이상의 마이크로프로세서들, 또는 임의의 다른 이러한 구성으로서 구현될 수도 있다. 대안적으로, 일부 동작들 또는 방법들은 주어진 기능에 특유한 회로부에 의해 수행될 수도 있다.
하나 이상의 예시적인 실시형태들 및 구현예들에서, 설명된 기능들은 하드웨어, 소프트웨어, 펌웨어, 또는 이들의 임의의 조합으로 구현될 수도 있다. 소프트웨어로 구현되는 경우, 이 기능들은 비일시성 컴퓨터-판독가능 저장 매체 또는 비일시성 프로세서-판독가능 저장 매체에 하나 이상의 명령들 또는 코드로서 저장될 수도 있다. 본원에서 개시한 방법 또는 알고리즘의 동작들은 비일시성 컴퓨터-판독가능 또는 프로세서-판독가능 저장 매체 상에 상주할 수도 있는 프로세서-실행가능한 소프트웨어 유닛에 내장될 수도 있다. 비일시성 컴퓨터-판독가능 또는 프로세서-판독가능 저장 매체들은 원하는 프로그램 코드를 컴퓨터 또는 프로세서에 의해 액세스될 수도 있는 명령들 또는 데이터 구조들의 형태로 저장하는데 사용될 수도 있는 임의의 저장 매체들일 수도 있다. 비한정적 예로서, 이러한 비일시성 컴퓨터-판독가능 또는 프로세서-판독가능 저장 매체들은 RAM, ROM, EEPROM, 플래시 메모리, CD-ROM 또는 다른 광디스크 스토리지, 및 자기디스크 스토리지 또는 다른 자기 저장 디바이스들을 포함할 수도 있다. 디스크 (disk) 및 디스크 (disc) 는, 본원에서 사용할 때, 컴팩트 디스크 (CD), 레이저 디스크, 광 디스크, 디지털 다기능 디스크 (DVD), 플로피 디스크 및 블루-레이 디스크를 포함하며, 디스크들 (disks) 은 데이터를 자기적으로 보통 재생하지만, 디스크들 (discs) 은 레이저로 데이터를 광학적으로 재생한다. 본원에서 언급한 메모리의 조합들은 또한 비일시성 컴퓨터-판독가능 및 프로세서-판독가능 매체들의 범위 내에 포함된다. 게다가, 방법 또는 알고리즘의 동작들은 컴퓨터 프로그램 제품에 포함될 수도 있는 비일시성 프로세서-판독가능 저장 매체 및/또는 컴퓨터-판독가능 저장 매체 상에, 코드들 및/또는 명령들 중 하나 또는 임의의 조합 또는 세트로 상주할 수도 있다.
다양한 실시형태들 및 구현예들의 상기 설명은 임의의 당업자가 청구항들을 실시하고 이용할 수 있도록 제공된다. 이들 실시형태들에 대한 다양한 변경들은 당업자들에게 명백할 것이며, 본원에서 정의한 일반적인 원리들은 청구항들의 범위로부터 일탈함이 없이 일부 실시형태들에도 적용될 수도 있다. 따라서, 본 개시물은 본원에서 나타낸 실시형태들 및 구현예들에 한정시키려는 것이 아니라, 다음 청구범위에 부합하는 최광의의 범위 및 본원에서 개시된 원리들 및 신규한 특징들을 부여받게 하려는 것이다.

Claims (28)

  1. 컴퓨팅 디바이스 상에서 실행하는 프로세스에 대한 소프트웨어 공격들을 검출하는 방법으로서, 상기 방법은 상기 컴퓨팅 디바이스에서의 프로세서에 의해서 수행되며, 상기 방법은:
    상기 프로세스에 의해 이용되는 복수의 가상 메모리 영역들의 구조적 속성들을 모니터링하는 단계로서, 모니터링된 상기 구조적 속성들은,
    상기 복수의 가상 메모리 영역들의 어드레스 공간 레이아웃,
    상기 복수의 가상 메모리 영역들에 포함된 가상 메모리 영역들의 수, 또는
    상기 복수의 가상 메모리 영역들에 포함된 가상 메모리 영역의 사이즈
    를 포함하는, 상기 구조적 속성들을 모니터링하는 단계;
    모니터링된 상기 구조적 속성들을 상기 복수의 가상 메모리 영역들의 예상된 구조적 속성들과 비교하는 단계; 및
    모니터링된 상기 구조적 속성들과 상기 예상된 구조적 속성들 간의 비교에 기초하여, 모니터링된 상기 구조적 속성들이 상기 프로세스의 비정상적인 거동을 나타내는지 여부를 결정하는 단계를 포함하는, 컴퓨팅 디바이스 상에서 실행하는 프로세스에 대한 소프트웨어 공격들을 검출하는 방법.
  2. 제 1 항에 있어서,
    모니터링된 상기 구조적 속성들이 비정상적인 거동을 나타낸다고 결정하는 것에 응답하여 보호 액션을 개시하는 단계를 더 포함하는, 컴퓨팅 디바이스 상에서 실행하는 프로세스에 대한 소프트웨어 공격들을 검출하는 방법.
  3. 제 1 항에 있어서,
    상기 프로세스에 의해 이용되는 상기 복수의 가상 메모리 영역들의 상기 구조적 속성들을 모니터링하는 단계는,
    상기 어드레스 공간 레이아웃에 대한 변화들을 모니터링하는 단계;
    상기 복수의 가상 메모리 영역들의 액세스 허가들에 대한 변화들을 모니터링하는 단계; 또는
    상기 복수의 가상 메모리 영역들의 상태 트랜지션 이력을 모니터링하는 단계를 더 포함하는, 컴퓨팅 디바이스 상에서 실행하는 프로세스에 대한 소프트웨어 공격들을 검출하는 방법.
  4. 제 1 항에 있어서,
    상기 프로세스에 의해 이용되는 상기 복수의 가상 메모리 영역들의 상기 구조적 속성들을 모니터링하는 단계는,
    상기 프로세스가 실행중인 현재의 가상 메모리 영역에 관한 정보를 저장하는 단계;
    상기 프로세스에 의해 현재 실행되고 있는 명령에 관한 새로운 정보를 수신하는 단계;
    수신된 상기 새로운 정보에 기초하여, 상기 현재의 가상 메모리 영역으로부터의 트랜지션이 있었는지 여부를 결정하는 단계; 및
    상기 현재의 가상 메모리 영역으로부터의 상기 트랜지션이 있었다고 결정하는 것에 응답하여, 상기 현재의 가상 메모리 영역으로부터의 상기 트랜지션을 새로운 가상 메모리 영역으로 로그하는 단계를 포함하는, 컴퓨팅 디바이스 상에서 실행하는 프로세스에 대한 소프트웨어 공격들을 검출하는 방법.
  5. 제 4 항에 있어서,
    상기 프로세스에 의해 현재 실행되고 있는 명령에 관한 새로운 정보를 수신하는 단계는, 프로그램 카운터 값 및 프로세스 식별자를 수신하는 단계를 포함하는, 컴퓨팅 디바이스 상에서 실행하는 프로세스에 대한 소프트웨어 공격들을 검출하는 방법.
  6. 제 1 항에 있어서,
    상기 프로세스에 의해 이용되는 상기 복수의 가상 메모리 영역들의 구조적 속성들을 모니터링하는 단계는,
    상기 프로세스가 실행중인 현재의 가상 메모리 영역에 관한 정보를 저장하는 단계;
    상기 복수의 가상 메모리 영역들에 대해 하나 이상의 가상 메모리 영역 추적 전략들을 구현하는 단계;
    상기 하나 이상의 가상 메모리 영역 추적 전략들에 기초하여, 상기 현재의 가상 메모리 영역으로부터의 트랜지션이 있었는지 여부를 결정하는 단계; 및
    상기 현재의 가상 메모리 영역으로부터의 상기 트랜지션이 있었다고 결정하는 것에 응답하여, 상기 현재의 가상 메모리 영역으로부터의 상기 트랜지션을 새로운 가상 메모리 영역으로 로그하는 단계를 포함하는, 컴퓨팅 디바이스 상에서 실행하는 프로세스에 대한 소프트웨어 공격들을 검출하는 방법.
  7. 제 6 항에 있어서,
    상기 복수의 가상 메모리 영역들에 대해 상기 하나 이상의 가상 메모리 영역 추적 전략들을 구현하는 단계는, 상기 복수의 가상 메모리 영역들에 대해 선택적 추적, 주기적인 추적, 기회주의적 추적, 또는 페이지 오류 기반의 추적을 구현하는 단계를 포함하는, 컴퓨팅 디바이스 상에서 실행하는 프로세스에 대한 소프트웨어 공격들을 검출하는 방법.
  8. 제 1 항에 있어서,
    모니터링된 상기 구조적 속성들을 상기 복수의 가상 메모리 영역들의 상기 예상된 구조적 속성들과 비교하는 단계는, 규칙들의 세트를 모니터링된 상기 구조적 속성들에 적용하는 단계를 포함하며,
    상기 규칙들의 세트는 상기 복수의 가상 메모리 영역들의 상기 예상된 구조적 속성들에 기초하는, 컴퓨팅 디바이스 상에서 실행하는 프로세스에 대한 소프트웨어 공격들을 검출하는 방법.
  9. 제 1 항에 있어서,
    모니터링된 상기 구조적 속성들을 상기 복수의 가상 메모리 영역들의 상기 예상된 구조적 속성들과 비교하는 단계는,
    상기 복수의 가상 메모리 영역들의 상기 예상된 구조적 속성들을 모델링하여 모델을 생성하는 단계; 및
    모니터링된 상기 구조적 속성들을 상기 모델과 비교하는 단계를 포함하는, 컴퓨팅 디바이스 상에서 실행하는 프로세스에 대한 소프트웨어 공격들을 검출하는 방법.
  10. 컴퓨팅 디바이스로서,
    복수의 가상 메모리 영역들을 포함하는 메모리; 및
    상기 메모리에 커플링된 프로세서를 포함하며,
    상기 프로세서는,
    상기 컴퓨팅 디바이스 상에서 실행하는 프로세스에 의해 이용되는 상기 복수의 가상 메모리 영역들의 구조적 속성들을 모니터링하는 것으로서, 모니터링된 상기 구조적 속성들은,
    상기 복수의 가상 메모리 영역들의 어드레스 공간 레이아웃,
    상기 복수의 가상 메모리 영역들에 포함된 가상 메모리 영역들의 수, 또는
    상기 복수의 가상 메모리 영역들에 포함된 가상 메모리 영역의 사이즈
    를 포함하는, 상기 구조적 속성들을 모니터링하고;
    모니터링된 상기 구조적 속성들을 상기 복수의 가상 메모리 영역들의 예상된 구조적 속성들과 비교하며; 그리고
    모니터링된 상기 구조적 속성들과 상기 예상된 구조적 속성들 간의 비교에 기초하여, 모니터링된 상기 구조적 속성들이 상기 프로세스의 비정상적인 거동을 나타내는지 여부를 결정하기 위한
    프로세서-실행가능한 명령들을 실행하도록 구성되는, 컴퓨팅 디바이스.
  11. 제 10 항에 있어서,
    상기 프로세서는,
    모니터링된 상기 구조적 속성들이 비정상적인 거동을 나타낸다고 결정하는 것에 응답하여 보호 액션을 개시하기 위한
    프로세서-실행가능한 명령들을 실행하도록 더 구성되는, 컴퓨팅 디바이스.
  12. 제 10 항에 있어서,
    상기 프로세서는, 상기 프로세스에 의해 이용되는 복수의 가상 메모리 영역들의 구조적 속성들을 모니터링하는 것이,
    상기 어드레스 공간 레이아웃에 대한 변화들을 모니터링하는 것;
    상기 복수의 가상 메모리 영역들의 액세스 허가들에 대한 변화들을 모니터링하는 것; 또는
    상기 복수의 가상 메모리 영역들의 상태 트랜지션 이력을 모니터링하는 것
    에 의해 수행되도록 하는 프로세서-실행가능한 명령들을 실행하도록 더 구성되는, 컴퓨팅 디바이스.
  13. 제 10 항에 있어서,
    상기 프로세서는,
    상기 프로세스가 실행중인 현재의 가상 메모리 영역에 관한 정보를 저장하는 것;
    상기 프로세스에 의해 현재 실행되고 있는 명령에 관한 새로운 정보를 수신하는 것;
    수신된 상기 새로운 정보에 기초하여, 상기 현재의 가상 메모리 영역으로부터의 트랜지션이 있었는지 여부를 결정하는 것; 및
    상기 현재의 가상 메모리 영역으로부터의 상기 트랜지션이 있었다고 결정하는 것에 응답하여, 상기 현재의 가상 메모리 영역으로부터의 상기 트랜지션을 새로운 가상 메모리 영역으로 로그하는 것
    에 의해, 상기 프로세스에 의해 이용되는 상기 복수의 가상 메모리 영역들의 구조적 속성들을 모니터링하기 위한 프로세서-실행가능한 명령들을 실행하도록 더 구성되는, 컴퓨팅 디바이스.
  14. 제 13 항에 있어서,
    상기 프로세서는, 상기 프로세스에 의해 현재 실행되고 있는 명령에 관한 새로운 정보를 수신하는 것이, 프로그램 카운터 값 및 프로세스 식별자를 수신하는 것을 포함하도록 하는 동작들을 수행하기 위한 프로세서-실행가능한 명령들을 실행하도록 구성되는, 컴퓨팅 디바이스.
  15. 제 10 항에 있어서,
    상기 프로세서는, 상기 프로세스에 의해 이용되는 상기 복수의 가상 메모리 영역들의 구조적 속성들을 모니터링하는 것이,
    상기 프로세스가 실행중인 현재의 가상 메모리 영역에 관한 정보를 저장하는 것;
    상기 복수의 가상 메모리 영역들에 대해 하나 이상의 가상 메모리 영역 추적 전략들을 구현하는 것;
    상기 하나 이상의 가상 메모리 영역 추적 전략들에 기초하여, 상기 현재의 가상 메모리 영역으로부터의 트랜지션이 있었는지 여부를 결정하는 것; 및
    상기 현재의 가상 메모리 영역으로부터의 상기 트랜지션이 있었다고 결정하는 것에 응답하여, 상기 현재의 가상 메모리 영역으로부터의 상기 트랜지션을 새로운 가상 메모리 영역으로 로그하는 것
    을 포함하도록 하는 동작들을 수행하기 위한 프로세서-실행가능한 명령들을 실행하도록 더 구성되는, 컴퓨팅 디바이스.
  16. 제 15 항에 있어서,
    상기 프로세서는, 상기 복수의 가상 메모리 영역들에 대해 상기 하나 이상의 가상 메모리 영역 추적 전략들을 구현하는 것이, 상기 복수의 가상 메모리 영역들에 대해 선택적 추적, 주기적인 추적, 기회주의적 추적, 또는 페이지 오류 기반의 추적을 구현하는 것을 포함하도록 하는 동작들을 수행하기 위한 프로세서-실행가능한 명령들을 실행하도록 구성되는, 컴퓨팅 디바이스.
  17. 제 10 항에 있어서,
    상기 프로세서는, 모니터링된 상기 구조적 속성들을 상기 복수의 가상 메모리 영역들의 상기 예상된 구조적 속성들과 비교하는 것이,
    규칙들의 세트를 모니터링된 상기 구조적 속성들에 적용하는 것
    을 포함하도록 하는 프로세서-실행가능한 명령들을 실행하도록 더 구성되며,
    상기 규칙들의 세트는 상기 복수의 가상 메모리 영역들의 상기 예상된 구조적 속성들에 기초하는, 컴퓨팅 디바이스.
  18. 제 10 항에 있어서,
    상기 프로세서는, 모니터링된 상기 구조적 속성들을 상기 복수의 가상 메모리 영역들의 상기 예상된 구조적 속성들과 비교하는 것이,
    상기 복수의 가상 메모리 영역들의 상기 예상된 구조적 속성들을 모델링하여 모델을 생성하는 것; 및
    모니터링된 상기 구조적 속성들을 상기 모델과 비교하는 것
    을 포함하도록 하는 프로세서-실행가능한 명령들을 실행하도록 더 구성되는, 컴퓨팅 디바이스.
  19. 저장된 프로세서-실행가능한 소프트웨어 명령들을 가지는 비일시성 컴퓨터 판독가능 저장 매체로서,
    상기 프로세서-실행가능한 소프트웨어 명령들은, 컴퓨팅 디바이스의 프로세서로 하여금,
    상기 컴퓨팅 디바이스 상에서 실행하는 프로세스에 의해 이용되는 복수의 가상 메모리 영역들의 구조적 속성들을 모니터링하는 것으로서, 모니터링된 상기 구조적 속성들은,
    상기 복수의 가상 메모리 영역들의 어드레스 공간 레이아웃,
    상기 복수의 가상 메모리 영역들에 포함된 가상 메모리 영역들의 수, 또는
    상기 복수의 가상 메모리 영역들에 포함된 가상 메모리 영역의 사이즈
    를 포함하는, 상기 구조적 속성들을 모니터링하는 것;
    모니터링된 상기 구조적 속성들을 상기 복수의 가상 메모리 영역들의 예상된 구조적 속성들과 비교하는 것; 및
    모니터링된 상기 구조적 속성들과 상기 예상된 구조적 속성들 간의 비교에 기초하여, 모니터링된 상기 구조적 속성들이 상기 프로세스의 비정상적인 거동을 나타내는지 여부를 결정하는 것
    을 포함하는 동작들을 수행하게 하도록 구성되는, 비일시성 컴퓨터 판독가능 저장 매체.
  20. 제 19 항에 있어서,
    상기 저장된 프로세서-실행가능한 소프트웨어 명령들은, 상기 프로세서로 하여금,
    모니터링된 상기 구조적 속성들이 비정상적인 거동을 나타낸다고 결정하는 것에 응답하여 보호 액션을 개시하는 것
    을 더 포함하는 동작들을 수행하게 하도록 구성되는, 비일시성 컴퓨터 판독가능 저장 매체.
  21. 제 19 항에 있어서,
    상기 저장된 프로세서-실행가능한 소프트웨어 명령들은, 상기 프로세서로 하여금, 상기 프로세스에 의해 이용되는 복수의 가상 메모리 영역들의 구조적 속성들을 모니터링하는 것이,
    상기 어드레스 공간 레이아웃에 대한 변화들을 모니터링하는 것;
    상기 복수의 가상 메모리 영역들의 액세스 허가들에 대한 변화들을 모니터링하는 것; 또는
    상기 복수의 가상 메모리 영역들의 상태 트랜지션 이력을 모니터링하는 것
    을 더 포함하도록 하는 동작들을 수행하게 하도록 구성되는, 비일시성 컴퓨터 판독가능 저장 매체.
  22. 제 19 항에 있어서,
    상기 저장된 프로세서-실행가능한 소프트웨어 명령들은, 상기 프로세서로 하여금, 상기 프로세스에 의해 이용되는 상기 복수의 가상 메모리 영역들의 구조적 속성들을 모니터링하는 것이,
    상기 프로세스가 실행중인 현재의 가상 메모리 영역에 관한 정보를 저장하는 것;
    상기 프로세스에 의해 현재 실행되고 있는 명령에 관한 새로운 정보를 수신하는 것;
    수신된 상기 새로운 정보에 기초하여, 상기 현재의 가상 메모리 영역으로부터의 트랜지션이 있었는지 여부를 결정하는 것; 및
    상기 현재의 가상 메모리 영역으로부터의 상기 트랜지션이 있었다고 결정하는 것에 응답하여, 상기 현재의 가상 메모리 영역으로부터의 상기 트랜지션을 새로운 가상 메모리 영역으로 로그하는 것
    을 포함하도록 하는 동작들을 수행하게 하도록 구성되는, 비일시성 컴퓨터 판독가능 저장 매체.
  23. 제 22 항에 있어서,
    상기 저장된 프로세서-실행가능한 소프트웨어 명령들은, 상기 프로세서로 하여금, 상기 프로세스에 의해 현재 실행되고 있는 명령에 관한 새로운 정보를 수신하는 것이, 프로그램 카운터 값 및 프로세스 식별자를 수신하는 것을 포함하도록 하는 동작들을 수행하게 하도록 구성되는, 비일시성 컴퓨터 판독가능 저장 매체.
  24. 제 19 항에 있어서,
    상기 저장된 프로세서-실행가능한 소프트웨어 명령들은, 상기 프로세서로 하여금, 상기 프로세스에 의해 이용되는 상기 복수의 가상 메모리 영역들의 구조적 속성들을 모니터링하는 것이,
    상기 프로세스가 실행중인 현재의 가상 메모리 영역에 관한 정보를 저장하는 것;
    상기 복수의 가상 메모리 영역들에 대해 하나 이상의 가상 메모리 영역 추적 전략들을 구현하는 것;
    상기 하나 이상의 가상 메모리 영역 추적 전략들에 기초하여, 상기 현재의 가상 메모리 영역으로부터의 트랜지션이 있었는지 여부를 결정하는 것; 및
    상기 현재의 가상 메모리 영역으로부터의 상기 트랜지션이 있었다고 결정하는 것에 응답하여, 상기 현재의 가상 메모리 영역으로부터의 상기 트랜지션을 새로운 가상 메모리 영역으로 로그하는 것
    을 포함하도록 하는 동작들을 수행하게 하도록 구성되는, 비일시성 컴퓨터 판독가능 저장 매체.
  25. 제 24 항에 있어서,
    상기 저장된 프로세서-실행가능한 소프트웨어 명령들은, 상기 프로세서로 하여금, 상기 복수의 가상 메모리 영역들에 대해 상기 하나 이상의 가상 메모리 영역 추적 전략들을 구현하는 것이, 상기 복수의 가상 메모리 영역들에 대해 선택적 추적, 주기적인 추적, 기회주의적 추적, 또는 페이지 오류 기반의 추적을 구현하는 것을 포함하도록 하는 동작들을 수행하게 하도록 구성되는, 비일시성 컴퓨터 판독가능 저장 매체.
  26. 제 19 항에 있어서,
    상기 저장된 프로세서-실행가능한 소프트웨어 명령들은, 상기 프로세서로 하여금, 모니터링된 상기 구조적 속성들을 상기 복수의 가상 메모리 영역들의 상기 예상된 구조적 속성들과 비교하는 것이,
    규칙들의 세트를 모니터링된 상기 구조적 속성들에 적용하는 것
    을 포함하도록 하는 동작들을 수행하게 하도록 구성되며,
    상기 규칙들의 세트는 상기 복수의 가상 메모리 영역들의 상기 예상된 구조적 속성들에 기초하는, 비일시성 컴퓨터 판독가능 저장 매체.
  27. 제 19 항에 있어서,
    상기 저장된 프로세서-실행가능한 소프트웨어 명령들은, 상기 프로세서로 하여금, 모니터링된 상기 구조적 속성들을 상기 복수의 가상 메모리 영역들의 상기 예상된 구조적 속성들과 비교하는 것이,
    상기 복수의 가상 메모리 영역들의 상기 예상된 구조적 속성들을 모델링하여 모델을 생성하는 것; 및
    모니터링된 상기 구조적 속성들을 상기 모델과 비교하는 것
    을 포함하도록 하는 동작들을 수행하게 하도록 구성되는, 비일시성 컴퓨터 판독가능 저장 매체.
  28. 컴퓨팅 디바이스로서,
    상기 컴퓨팅 디바이스 상에서 실행하는 프로세스에 의해 이용되는 복수의 가상 메모리 영역들의 구조적 속성들을 모니터링하는 수단으로서, 모니터링된 상기 구조적 속성들은,
    상기 복수의 가상 메모리 영역들의 어드레스 공간 레이아웃,
    상기 복수의 가상 메모리 영역들에 포함된 가상 메모리 영역들의 수, 또는
    상기 복수의 가상 메모리 영역들에 포함된 가상 메모리 영역의 사이즈
    를 포함하는, 상기 구조적 속성들을 모니터링하는 수단;
    모니터링된 상기 구조적 속성들을 상기 복수의 가상 메모리 영역들의 예상된 구조적 속성들과 비교하는 수단; 및
    모니터링된 상기 구조적 속성들과 상기 예상된 구조적 속성들 간의 비교에 기초하여, 모니터링된 상기 구조적 속성들이 상기 프로세스의 비정상적인 거동을 나타내는지 여부를 결정하는 수단을 포함하는, 컴퓨팅 디바이스.
KR1020187010607A 2015-09-17 2016-08-12 컴퓨팅 디바이스들에서 프로세스들에 대한 소프트웨어 공격들의 검출 KR102534334B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201562219970P 2015-09-17 2015-09-17
US62/219,970 2015-09-17
US15/057,336 2016-03-01
US15/057,336 US10255434B2 (en) 2015-09-17 2016-03-01 Detecting software attacks on processes in computing devices
PCT/US2016/046747 WO2017048426A1 (en) 2015-09-17 2016-08-12 Detecting software attacks on processes in computing devices

Publications (2)

Publication Number Publication Date
KR20180054726A KR20180054726A (ko) 2018-05-24
KR102534334B1 true KR102534334B1 (ko) 2023-05-18

Family

ID=58282948

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020187010607A KR102534334B1 (ko) 2015-09-17 2016-08-12 컴퓨팅 디바이스들에서 프로세스들에 대한 소프트웨어 공격들의 검출

Country Status (7)

Country Link
US (1) US10255434B2 (ko)
EP (1) EP3350741B1 (ko)
JP (1) JP6777732B2 (ko)
KR (1) KR102534334B1 (ko)
CN (1) CN108027859B (ko)
TW (1) TW201717086A (ko)
WO (1) WO2017048426A1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2547272B (en) * 2016-02-15 2020-07-15 F Secure Corp Improving security of computer resources
JP6750674B2 (ja) 2016-04-26 2020-09-02 日本電気株式会社 プログラム分析システム、プログラム分析方法、及び、コンピュータ・プログラム
US10372909B2 (en) * 2016-08-19 2019-08-06 Hewlett Packard Enterprise Development Lp Determining whether process is infected with malware
US10783246B2 (en) 2017-01-31 2020-09-22 Hewlett Packard Enterprise Development Lp Comparing structural information of a snapshot of system memory
EP3413531A1 (en) * 2017-06-07 2018-12-12 Hewlett-Packard Development Company, L.P. Intrusion detection systems
US10706180B2 (en) * 2017-07-07 2020-07-07 Endgame, Inc. System and method for enabling a malware prevention module in response to a context switch within a certain process being executed by a processor
CN110188540B (zh) * 2019-04-17 2021-06-22 中国科学院软件研究所 一种基于控制状态跟踪的rop攻击检测方法
US20210334373A1 (en) * 2020-04-22 2021-10-28 Arm Limited Moderator system for a security analytics framework
CN112307475A (zh) * 2020-09-29 2021-02-02 北京软慧科技有限公司 一种系统检测方法及装置

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006014554A2 (en) 2004-07-07 2006-02-09 University Of Maryland Method and system for monitoring system memory integrity
NO20050564D0 (no) 2005-02-02 2005-02-02 Tore Lysemose Hansen Programmonitor for a identifisere uautorisert inntrenging i datasystemer
WO2006133222A2 (en) 2005-06-07 2006-12-14 Vmware, Inc. Constraint injection system for immunizing software programs against vulnerabilities and attacks
US7996904B1 (en) 2007-12-19 2011-08-09 Symantec Corporation Automated unpacking of executables packed by multiple layers of arbitrary packers
US8271450B2 (en) 2009-10-01 2012-09-18 Vmware, Inc. Monitoring a data structure in a virtual machine and determining if memory pages containing the data structure are swapped into or out of guest physical memory
US9866426B2 (en) * 2009-11-17 2018-01-09 Hawk Network Defense, Inc. Methods and apparatus for analyzing system events
US8949169B2 (en) * 2009-11-17 2015-02-03 Jerome Naifeh Methods and apparatus for analyzing system events
KR101663013B1 (ko) 2010-01-15 2016-10-06 삼성전자주식회사 코드 주입 공격을 감지하는 장치 및 방법
US9401922B1 (en) * 2010-12-10 2016-07-26 Verizon Patent And Licensing Inc. Systems and methods for analysis of abnormal conditions in computing machines
KR101626424B1 (ko) * 2011-03-28 2016-06-01 맥아피 인코퍼레이티드 가상 머신 모니터 기반 안티 악성 소프트웨어 보안 시스템 및 방법
US8584254B2 (en) 2011-12-08 2013-11-12 Microsoft Corporation Data access reporting platform for secure active monitoring
US9832211B2 (en) * 2012-03-19 2017-11-28 Qualcomm, Incorporated Computing device to detect malware
CN103729305B (zh) * 2012-10-11 2017-09-08 财团法人工业技术研究院 虚拟机的存储器管理的方法和计算机系统
WO2015113052A1 (en) * 2014-01-27 2015-07-30 Webroot Inc. Detecting and preventing execution of software exploits
US9881153B2 (en) * 2014-06-20 2018-01-30 Leviathan, Inc. System and method for detection of heap spray attack
WO2017023773A1 (en) * 2015-07-31 2017-02-09 Digital Guardian, Inc. Systems and methods of protecting data from injected malware

Also Published As

Publication number Publication date
KR20180054726A (ko) 2018-05-24
US20170083702A1 (en) 2017-03-23
US10255434B2 (en) 2019-04-09
JP6777732B2 (ja) 2020-10-28
EP3350741A1 (en) 2018-07-25
CN108027859A (zh) 2018-05-11
EP3350741B1 (en) 2019-07-17
TW201717086A (zh) 2017-05-16
CN108027859B (zh) 2020-03-24
WO2017048426A1 (en) 2017-03-23
JP2018532187A (ja) 2018-11-01

Similar Documents

Publication Publication Date Title
KR102534334B1 (ko) 컴퓨팅 디바이스들에서 프로세스들에 대한 소프트웨어 공격들의 검출
US9898602B2 (en) System, apparatus, and method for adaptive observation of mobile device behavior
US9158604B1 (en) Lightweight data-flow tracker for realtime behavioral analysis using control flow
EP3191960B1 (en) Methods and systems for aggregated multi-application behavioral analysis of mobile device behaviors
US10104107B2 (en) Methods and systems for behavior-specific actuation for real-time whitelisting
US9357411B2 (en) Hardware assisted asset tracking for information leak prevention
US9357397B2 (en) Methods and systems for detecting malware and attacks that target behavioral security mechanisms of a mobile device
US9684787B2 (en) Method and system for inferring application states by performing behavioral analysis operations in a mobile device
US9519533B2 (en) Data flow tracking via memory monitoring
US20180039779A1 (en) Predictive Behavioral Analysis for Malware Detection
US20180060569A1 (en) Detection and Prevention of Malicious Shell Exploits
Grace et al. Behaviour analysis of inter-app communication using a lightweight monitoring app for malware detection
US20180107823A1 (en) Programmable Hardware Security Counters
Moonsamy et al. Contrasting permission patterns between clean and malicious Android applications
KR101988747B1 (ko) 하이브리드 분석을 통한 머신러닝 기반의 랜섬웨어 탐지 방법 및 장치
US11314855B2 (en) Detecting stack pivots using stack artifact verification
Weiss et al. Cost-sensitive detection of malicious applications in mobile devices

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