KR20200069111A - 가상 머신 커널의 수행 흐름 무결성 검증 방법 및 그 장치 - Google Patents

가상 머신 커널의 수행 흐름 무결성 검증 방법 및 그 장치 Download PDF

Info

Publication number
KR20200069111A
KR20200069111A KR1020180156279A KR20180156279A KR20200069111A KR 20200069111 A KR20200069111 A KR 20200069111A KR 1020180156279 A KR1020180156279 A KR 1020180156279A KR 20180156279 A KR20180156279 A KR 20180156279A KR 20200069111 A KR20200069111 A KR 20200069111A
Authority
KR
South Korea
Prior art keywords
packet
virtual machine
integrity
address
kernel
Prior art date
Application number
KR1020180156279A
Other languages
English (en)
Inventor
백윤흥
권동현
서지원
백세현
Original Assignee
서울대학교산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 서울대학교산학협력단 filed Critical 서울대학교산학협력단
Priority to KR1020180156279A priority Critical patent/KR20200069111A/ko
Publication of KR20200069111A publication Critical patent/KR20200069111A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow

Landscapes

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

Abstract

가상 머신 커널의 수행 흐름 무결성 검증 방법 및 그 장치가 개시된다. 수행 흐름 무결성 검증 장치는 감시 대상인 가상머신 커널에 존재하는 적어도 하나 이상의 기본블록의 시작주소에 대한 정보를 파악하고, 프로세서 추적을 통해 제공되는 가상머신 커널에 대한 패킷들 중 분기, 예외처리 또는 인터럽트와 관련된 패킷을 추출하고, 기본블록의 시작주소와 추출한 패킷을 기초로 수행 흐름의 무결성을 검증한다.

Description

가상 머신 커널의 수행 흐름 무결성 검증 방법 및 그 장치{Method and apparatus for verifying control-flow integrity of virtual machine kernel}
본 발명은 커널의 수행 흐름 무결성(control-flow integrity)을 검증하는 방법 및 그 장치에 관한 것으로, 보다 상세하게는 커널 코드나 바이너리의 변경 없이 가상머신 커널(Virtual Machine Kernel)의 수행 흐름 무결성을 검증하는 방법 및 그 장치에 관한 것이다.
오늘날 음성인식 기술과 같은 인공지능 서비스부터 스마트 홈과 같은 사물인터넷 서비스까지 많은 서비스들이 클라우드 컴퓨팅 환경을 통해 사람들에게 제공되고 있다. 그러나 이러한 서비스들이 늘어날수록 다양한 중요 정보들이 클라우드 환경에서 처리되므로 보안 문제에 대한 우려가 커지고 있다.
클라우드 컴퓨팅 환경에서 보안성을 높이기 위하여, 클라우드 관리자가 각 사용자의 어플리케이션을 수행하는 가상머신(Virtual Machine)의 커널 무결성을 보장해 주어야 한다. 이를 위해, 가상화를 통해 가상머신에 발생하는 하드웨어 이벤트들 검사하거나 코드 또는 바이너리 수정을 통해 가상머신의 커널이 특정 코드를 수행할 때의 정보를 추출하여 가상머신 커널의 일부 메모리 무결성을 검증하는 방법이 있다.
그러나 이러한 종래 기술들은 가상머신 커널의 수행 흐름 무결성을 효율적으로 보장하지 못한다. 여기서, 수행 흐름 무결성이란 감시하는 프로그램이 적법한 수행 흐름으로 실행되는지를 검사하는 것을 의미한다. 수행 흐름 무결성을 위해 커널 코드 또는 바이너리를 수정하여 커널의 수행 흐름을 검증하는 종래의 방법은 클라우드 환경에 쓰기 어렵다.
첫 번째 이유로, 일반적인 클라우드 컴퓨팅 환경에서 클라우드 관리자는 다양한 종류의 커널과 각 커널의 여러 버전을 제공하는데, 종래의 커널 수정 기반의 방법은 새로운 커널이 등장하거나 커널이 패치될 때마다 클라우드 관리자가 매번 커널 코드를 수정하여야 하므로 현실적으로 적용하기 어렵다.
두 번째 이유로, 사용자의 QoS(Quality of Service) 보장 측면에서 문제가 존재한다. 클라우드 사용자는 클라우드 관리자와 계약을 통해 가상 머신에서 사용할 하드웨어 자원을 정한다. 그리고 클라우드 사용자가 자원을 사용하는 동안 클라우드 관리자는 계약에 따라 일정한 QoS를 클라우드 사용자에게 제공하여야 한다. 그러나 수행 흐름 무결성을 위해 커널 코드가 수정될 경우 이로 인해 예측하지 못한 성능 부하가 발생하여 QoS를 보장할 수 없는 문제점이 발생한다.
본 발명의 실시 예가 이루고자 하는 기술적 과제는, 커널 수정 없이 가상머신 커널의 수행 흐름 무결성을 검증하는 방법 및 그 장치를 제공하는 데 있다.
상기의 기술적 과제를 달성하기 위한, 본 발명의 실시 예에 따른 수행 흐름 무결성 검증 장치의 일 예는, 감시 대상인 가상머신 커널에 존재하는 적어도 하나 이상의 기본블록의 시작주소에 대한 정보를 파악하는 바이너리분석부; 프로세서 추적을 통해 제공되는 상기 가상머신 커널에 대한 패킷들 중 분기, 예외처리 또는 인터럽트와 관련된 패킷을 추출하는 패킷디코더; 및 상기 기본블록의 시작주소와 상기 패킷디코더가 추출한 패킷을 기초로 수행 흐름의 무결성을 검증하는 무결성검사부;를 포함한다.
상기의 기술적 과제를 달성하기 위한, 본 발명의 실시 예에 따른 수행 흐름 무결성 검증 방법의 일 예는, 감시 대상인 가상머신 커널에 존재하는 적어도 하나 이상의 기본블록의 시작주소에 대한 정보를 파악하는 단계; 프로세서 추적을 통해 제공되는 상기 가상머신 커널에 대한 패킷들 중 분기, 예외처리 또는 인터럽트와 관련된 패킷을 추출하는 단계; 및 상기 기본블록의 시작주소와 상기 추출한 패킷을 기초로 수행 흐름의 무결성을 검증하는 단계;를 포함한다.
본 발명의 실시 예에 따르면, 가상머신 커널의 코드나 바이너리 변경 없이 수행 흐름 무결성을 검증할 수 있다. 또한, 소프트웨어 수정을 최소화하여 수행 흐름 무결성 검증을 구현할 수 있다. 클라우드 제공자는 클라우드 환경의 사용자들을 위해 다양한 버전의 OS 커널을 제공하는데, 종래에는 매번 커널의 코드 등의 변경이 필요하나 본 실시 예는 커널 코드 등의 변경이 필요 없으므로 종래 대비 실용성(practicality)을 갖는다. 또한, 커널 코드를 변경하지 않으므로 사용자 가상머신의 성능 부하를 최소화할 수 있다. 클라우드 사용자는 계약한 OS 커널과 같은 소프트웨어 스택 이외에 하드웨어적 컴퓨팅 자원의 경우에도 사용을 보장받아야 하는데, 만약 수행 흐름 무결성을 보장하기 위하여 클라우드 사용자의 가상머신에 성능 오버헤드가 발생한다면 이는 사용자 QoS 측면에서 문제가 발생할 수 있다. 그러나 본 실시 예는 인텔 등의 기존 아키텍처가 제공하는 프로세스 추적(PT, Processor Trace)을 이용하므로 가상머신의 성능 부하를 최소화할 수 있어 사용자 QoS에 문제를 일으키지 않는다.
도 1은 본 발명의 실시 예가 적용되는 아키텍처의 일 예를 도시한 도면,
도 2는 본 발명의 실시 예에 따른 수행 흐름 무결성 검증 장치의 구성의 일 예를 도시한 도면,
도 3은 본 발명의 실시 예에 따른 가상머신 커널로부터 기본블록에 대한 정보를 추출하여 저장하는 방법의 예를 도시한 도면,
도 4는 본 발명의 실시 예에 따른 수행 흐름 무결성 검증 방법의 일 예를 도시한 도면, 그리고,
도 5는 본 발명의 실시 예에 따른 수행 흐름 무결성 검증 방법의 다른 일 예를 도시한 도면이다.
이하에서, 첨부된 도면들을 참조하여 본 발명의 실시 예에 따른 가상 머신 커널의 수행 흐름 무결성 검증 방법 및 그 장치에 대해 상세히 살펴본다.
수행 흐름 하이재킹 공격(control flow hijacking attack)의 경우에, 공격자는 수행 흐름을 변조하여 자신이 수행하고자 하는 악성코드를 실행한다. 이를 위해 공격자는 제어 이전 명령(control transfer instruction)을 사용하는데, 제어 이전 명령은 크게 직접(direct) 제어 이전 명령과 간접(indirect) 제어 이전 명령으로 구분된다. 직접 제어 이전 명령은 코드에 제어 이전 목적지 주소(transfer control target address)가 포함되어 있는 형태로 공격자가 이 코드를 변조하여 공격할 수 있다. 그러나 이러한 코드 변조 행위는 종래 W+X 정책을 통해 쉽게 방어가 가능하다고 알려져 있다. 그러나 간접 제어 이전 명령의 경우에 제어 이전 목적지 주소는 레지스터에 의해 결정되므로, 공격자는 코드의 변조 없이 수행 흐름을 변조할 수 있다. 따라서 본 실시 예는 주로 간접 제어 이전 명령에 대한 수행 흐름 무결성 검증 방법에 대해 제시한다.
도 1은 본 발명의 실시 예가 적용되는 아키텍처의 일 예를 도시한 도면이다.
도 1을 참조하면, 본 실시 예는 가상머신의 사용자 커널(guest kernel)이 동작하는 모드(110)와 호스트 커널 또는 하이퍼바이저(hypervisor)가 동작하는 모드(120)를 포함하는 아키텍처(100)에 적용될 수 있다. 도 1은 설명의 편의를 위하여 인텔 아키텍처의 일 예를 도시하고 있으나, 본 실시 예가 반드시 이에 한정되는 것은 아니며 사용자 커널과 호스트 커널의 동작 모드를 다르게 할 수 있는 모든 종류의 아키텍처에 적용될 수 있다. 다만, 설명의 편의를 위하여 본 실시 예를 포함한 이하의 실시 예는 주로 인텔 아키텍처를 이용하여 설명한다.
인텔 아키텍처는 링(ring)이라고 부르는 권한 레벨(privilege level)이 존재한다. 링0은 커널이 동작하는 권한이고, 링3는 사용자 어플리케이션이 동작하는 권한이다. 링0은 링3에 비해 높은 권한을 가지며 따라서 각종 시스템 레지스터는 링0에서만 변경이 가능하다.
인텔 아키텍처는 또한 VT-x라고 하는 가상화 확장(virtualization extension)을 제공한다. 가상화 확장은 루트(root) 모드(120) 및 논-루트(non-root) 모드(110)를 포함한다. 가상머신 커널을 포함한 가상머신 사용자의 어플리케이션은 논-루트 모드(110)에서 수행되고, 가성 머신 관리자(VMM, Virtual Machine Manage)를 포함한 호스트 커널과 호스트 어플리케이션은 루트 모드(120)에서 수행된다. 루트 모드(120)와 논-루트 모드(110) 사이에 전환이 발생할 때 VM 엔트리(exit)(130)와 VM 엑시트(exit)(140)라는 이벤트가 발생한다.
도 2는 본 발명의 실시 예에 따른 수행 흐름 무결성 검증 장치의 구성의 일 예를 도시한 도면이다.
도 2를 참조하면, 수행 흐름 무결성 검증 장치(이하, '검증장치'라 함)(250)는 바이너리분석부(200), 무결성검사부(220) 및 패킷디코더(230)를 포함한다. 검증장치(250)는 소프트웨어 모듈로 구현될 수 있다. 예를 들어, 가상머신 환경을 제공하는 호스트는 본 실시 예의 검증장치(250)가 구현된 소프트웨어 모듈을 메모리에 로딩하고 이를 수행하여 수행 흐름 무결성을 검증할 수 있다. 인텔 아키텍처로 구현되는 경우에, 검증장치(250)는 루트 모드(120)의 링3 레벨에서 동작할 수 있다.
바이너리분석부(200)는 감시 대상 가상머신의 사용자 커널(이하, 가상머신 커널)(240) 내에 존재하는 적어도 하나 이상의 기본블록(basic block)에 대한 정보를 추출하여 메타데이터(210)로 저장한다. 예를 들어, 바이너리분석부(200)는 가상 머신 커널 바이너리를 덤프(dump)하고 디어셈블리(diassemble)하여 가상머신 커널(240)에 존재하는 모든 기본블록의 시작주소를 추출할 수 있다. 바이너리분석부(200)는 가상머신 커널(240)이 동작하기 전에 오프라인에서 기본블록에 대한 정보를 추출할 수 있다. 메타데이터(210)는 비트맵 형태로 기본블록의 시작주소를 포함할 수 있다. 바이너리분석부(200)가 기본블록의 정보를 추출하여 저장하는 방법의 일 예가 도 3에 도시되어 있다.
패킷디코더(230)는 가상머신 커널(240)이 동작하는 중에 프로세서 추적(PT, processor trace) 기능을 통해 가상머신 커널(240)에 대한 패킷들 중 수행 흐름 무결성 검증에 사용할 분기(예를 들어, 간접분기(indirect branch)), 예외처리(exception) 또는 인터럽트(interrupt) 등과 관련된 패킷을 추출한다. 여기서, 프로세서 추적은 프로세서의 수행 흐름(control flow) 정보를 제공하는 기능을 의미한다. 예를 들어, 인텔 아키텍처는 수행 흐름 정보를 여러 패킷의 형태로 메모리 버퍼(260)에 저장하는 프로세서 추적 기능을 제공한다. 프로세서 추적은 그 용어에 한정되는 것은 아니며, 수행 흐름 정보를 제공하는 종래의 다양한 아키텍처가 본 실시 예에 적용될 수 있다.
패킷디코더(230)는 프로세서 추적이 제공하는 패킷들 중 가상머신에 대한 패킷을 구분하기 위하여 도 1에서 살펴본 동작 모드(110,120)에 대한 정보를 포함하는 제1 패킷을 추출할 수 있다. 또한, 패킷디코더(230)는 예외처리 또는 인터럽트의 발생시 출발지 주소(source address)를 포함하는 제2 패킷, 또는 분기(예를 들어, 간접 분기), 예외처리 또는 인터럽트의 발생시 목적지 주소를 포함하는 제3 패킷을 추출할 수 있다.
도 1의 인텔 아키텍처의 경우에, 패킷디코더(230)는 제1 내지 제3 패킷에 해당하는 PIP(Paging Information Packet), TIP(Target IP Packet), FUP(Flow Update Packet)를 추출할 수 있다. 이들 패킷을 정리하면 다음과 같다.
패킷 이름 설명
PIP 현재 사용 중인 페이징(paging) 정보를 답고 있는 CR3 레지스터의 변화가 있을 때마다 발생하는 패킷이다. 특히 가상머신 커널의 수행과 호스트 커널의 수행을 구분할 수 있는 NR(non-root) 비트를 포함하고 있다.
TIP 간접 분기, 예외처리, 인터럽트가 발생한 경우의 목적지 주소를 기록하는 패킷이다.
FUP 인터럽트와 예외처리가 발생한 경우의 출발지 주소를 기록하는 패킷이다.
무결성검사부(220)는 바이너리분석부(200)가 추출한 기본블록의 시작주소와 패킷디코더(230)가 프로세서 추적을 통해 파악한 가상머신 커널에 대한 분기, 예외처리 또는 인터럽트 등의 패킷을 이용하여 수행 흐름 무결성을 검증한다. 예를 들어, 무결성검사부(220)는 패킷디코더(230)로부터 예외처리 또는 인터럽트의 출발지 주소를 포함하는 제2 패킷(예를 들어, FUP)을 수신하면, 제2 패킷에 포함된 출발지 주소를 스택에 푸쉬(push)한다. 다른 예로, 무결성검사부(220)는 패킷디코더(230)로부터 분기, 예외처리 또는 인터럽트의 목적지 주소를 포함하는 제3 패킷(예를 들어, TIP)를 수신하면, 목적지 주소와 기본블록의 시작주소를 비교하여 일치하는지 파악하고, 두 주소가 일치하지 않으면, 목적지 주소와 스택의 최상위 요소(top element)에 저장된 주소를 비교하여 두 주소의 차이가 기 설정된 크기 이상이면 공격이라고 판단한다. 목적지 주소와 스택의 최상위 요소에 저장된 주소의 차이가 기 설정된 크기 미만이면, 무결성검사부(220)는 스택의 최상위 요소를 팝(pop)한다. 무결성검사부의 검사 방법의 일 예가 도 5에 도시되어 있다.
도 3은 본 발명의 실시 예에 따른 가상머신 커널로부터 기본블록에 대한 정보를 추출하여 저장하는 방법의 예를 도시한 도면이다.
도 3을 참조하면, 바이너리분석부(200)는 가상머신 커널 바이너리(300)를 분석하여 포함된 기본블록의 시작주소를 파악한다. 기본블록은 엔트리(entry) 외에는 들어오는 분기가 없고, 출구(exit) 외에는 나가는 분기가 없는 직선 코드열로 구성된 블록을 의미한다. 다시 말해, 기본블록의 첫 번째 명령어가 실행되면, 기본블록의 나머지 명령어들은 순서에 따라 정확히 한 번씩 수행된다.
바이너리분석부(200)는 가상머신 커널의 코드 메모리 영역(310)을 기준으로 기본블록의 시작주소인지 여부를 비트맵(320) 형태로 저장한다. 예를 들어, 바이너리분석부(200)는 가상머신 커널의 코드 메모리 영역(310)을 일정 크기(예를 들어, 8byte) 단위로 각 비트와 맵핑한 비트맵(320)을 생성하고, 코드 메모리 영역(310)에서 기본블록의 시작주소에 해당하는 부분과 맵핑된 비트를 '1'로 설정할 수 있다.
도 4는 본 발명의 실시 예에 따른 수행 흐름 무결성 검증 방법의 일 예를 도시한 도면이다. 수행 흐름 무결성 검증을 위하여 호스트는 도 2의 수행 흐름 무결성 검증 장치가 구현된 소프트웨어 모듈을 로딩할 수 있다.
도 2 및 도 4를 함께 참조하면, 검증장치(250)는 감시대상인 가상머신 커널(240)에 존재하는 기본블록에 대한 정보를 추출한다(S400). 예를 들어, 검증장치(250)는 가상머신 커널(240)에 존재하는 모든 기본블록의 시작주소를 파악하고, 기본블록의 시작주소 정보를 도 3과 같이 비트맵 형태로 저장할 수 있다. 가상머신 커널(240)에 대한 기본블록에 대한 정보 추출은 가상머신 커널이 동작하기 전에 오프라인에서 이루어질 수 있다.
가상머신 커널(240)의 기본블록에 대한 정보 추출이 완료되면, 검증장치(250)는 런타임으로 수행 흐름 무결성을 검증할 수 있다. 런타임 검증을 위하여, 검증장치(250)는 가상머신 커널(240)의 동작 중에 가상머신 커널에 대한 분기, 예외처리, 인터럽트 등과 관련된 정보를 포함하는 패킷을 프로세서 추적을 통해 파악한다(S410).
인텔 아키텍처 등으로 구현된 호스트는 프로세서 추적 기능을 통해 수행 흐름 정보를 포함하는 패킷을 메모리 버퍼(260)에 저장한다. 검증장치(250)는 가상머신 커널(240)의 수행 흐름 무결성을 검증하므로 메모리 버퍼(260)에 저장된 패킷들 중 필요한 패킷만을 선별할 필요가 있다. 예를 들어, 도 1과 같은 인텔 아키텍처의 경우에, 검증장치(250)는 프로세서 추적 기능이 제공하는 다양한 필터 기능 중 특권 레벨 기반의 필터를 사용하여 사용자 또는 호스트 어플리케이션(즉, 링3에서 수행하는 프로그램)의 패킷들을 제외할 수 있다. 또한, 무결성 검증과 관련없는 타이밍 정보(timing information)와 파워 이벤트(power event)의 패킷이 생성되지 않도록 프로세서 추적 기능이 설정될 수 있다.
검증장치(250)는 프로세서 추적을 통해 제공된 패킷들 중 가상머신 커널(240)에 대한 패킷과 호스트 커널에 대한 패킷을 구분하기 위하여, 가상머신 커널의 동작 모드와 호스트 커널의 동작 모드에 대한 정보를 포함하는 패킷(예를 들어, 표1의 PIP)을 이용할 수 있다. 인텔 아키텍처를 예로 들면, 도 1과 같이 두 모드(110,120) 사이의 VM 엑시트(130) 또는 VM 엔트리(140) 이벤트가 발생할 때, 프로세서 추적 기능은 루트 모드(120) 또는 논-루트 모드(110)를 나타내는 PIP 패킷 출력한다. 따라서 검증장치(250)는 PIP 패킷을 통해 가상머신 커널과 호스트 커널의 패킷을 구분할 수 있다. 즉, PIP 패킷을 통해 현재 논-루트 모드(110)라고 판단되면, 이후 메모리 버퍼(260)에 저장되는 패킷은 호스트 커널에 대한 패킷이 아니라 가상머신 커널(240)에 대한 패킷이다. 그리고 검증장치(250)는 가상머신 커널(240)에 대한 패킷들 중 분기, 예외처리 또는 인터럽트 등과 같이 수행 흐름과 관련된 패킷들(예를 들어, 인텔 아키텍처의 TIP, FUP)을 선별할 수 있다.
검증장치(250)는 가상머신 커널(240)의 수행 흐름과 관련된 패킷과 기본블록에 관한 정보를 이용하여 수행 흐름 무결성을 검증한다(S420). 수행 흐름 무결성 검증의 방법에 대해서는 도 5에서 살펴본다.
도 5는 본 발명의 실시 예에 따른 수행 흐름 무결성 검증 방법의 다른 일 예를 도시한 도면이다. 도 5는 설명의 편의를 위하여 인텔 아키텍처의 TIP 패킷 및 FUP 패킷을 이용하여 설명한다.
도 2 및 도 5를 함께 참조하면, 검증장치(250)(또는 도 2의 무결성 검사부(220))는 가상머신 커널(240)의 수행 흐름과 관련된 패킷을 수신하면(S500), 해당 패킷의 타입의 TIP 패킷인지 아니면 FUP 패킷인지 파악한다(S510).
패킷이 FUP 패킷이면(S510), 검증장치(250)는 FUP 패킷에 포함된 출발지 주소를 스택에 푸쉬(push) 한다(S520). 그리고 검증장치(250)는 패킷 버퍼(260)에 저장된 다음 패킷을 처리한다.
패킷이 TIP 패킷이면(S510), 검증장치(250)는 TIP 패킷에 포함된 목적지 주소가 가상머신 커널(240)에 존재하는 기본블록의 시작주소에 해당하는지 메타데이터(210)를 통해 파악한다(S530). 목적지 주소가 기본블록의 시작주소에 해당하면(S530), 검증장치(250)는 패킷 버퍼(260)에 저장된 다음 패킷을 처리한다.
그러나 목적지 주소가 기본블록의 시작주소에 해당하지 않으면(S530), 검증장치(250)는 목적지 주소와 상기 스택의 최상위 요소(top element)에 저장된 주소의 차이가 기 설정된 크기 미만인지 파악한다(S540). 두 주소의 차이가 기 설정된 크기 미만이면(S540), 검증장치(250)는 스택에서 최상위 요소를 팝(pop)하고(S550) 다음 패킷을 처리한다. 두 주소의 차이가 기 설정된 크기 이상이면(S540), 검증장치(250)는 악의적인 공격이라고 판단한다(S560).
본 발명은 또한 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 v프로그램 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의하여 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 ROM, RAM, CD-ROM, 자기 테이프, 플로피디스크, 광데이터 저장장치 등이 있다. 또한 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
이제까지 본 발명에 대하여 그 바람직한 실시예들을 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.

Claims (13)

  1. 감시 대상인 가상머신 커널에 존재하는 적어도 하나 이상의 기본블록의 시작주소에 대한 정보를 파악하는 바이너리분석부;
    프로세서 추적을 통해 제공되는 상기 가상머신 커널에 대한 패킷들 중 분기, 예외처리 또는 인터럽트와 관련된 패킷을 추출하는 패킷디코더; 및
    상기 기본블록의 시작주소와 상기 패킷디코더가 추출한 패킷을 기초로 수행 흐름의 무결성을 검증하는 무결성검사부;를 포함하는 것을 특징으로 하는 수행 흐름 무결성 검증 장치.
  2. 제 1항에 있어서, 상기 바이너리분석부는,
    상기 가상머신 커널의 메모리 코드 영역을 기준으로 상기 기본블록의 시작주소를 비트맵 형태로 저장하는 것을 특징으로 하는 수행 흐름 무결성 검증 장치.
  3. 제 1항에 있어서, 상기 패킷디코더는,
    프로세서 추적을 통해 제공되는, 가상 머신 커널과 호스트 커널의 수행을 구분하는 정보를 포함하는 제1 패킷을 이용하여, 상기 가상머신 커널에 대한 패킷을 구분하는 것을 특징으로 하는 수행 흐름 무결성 검증 장치.
  4. 제 1항에 있어서, 상기 패킷디코더는,
    예외처리 또는 인터럽트의 출발지 주소를 포함하는 제2 패킷; 또는
    간접분기, 예외처리 또는 인터럽트의 목적지 주소를 포함하는 제3 패킷;을 추출하는 것을 특징으로 하는 수행 흐름 무결성 검증 장치.
  5. 제 4항에 있어서, 상기 무결성검사부는,
    추출한 패킷이 상기 제2 패킷이면, 상기 출발지 주소를 스택에 푸쉬(push)하고,
    추출한 패킷이 상기 제3 패킷이고, 상기 목적지 주소가 상기 기본블록의 시작주소가 아니며, 상기 목적지 주소와 상기 스택의 최상위 요소의 값의 차이가 기 설정된 크기 이상이면, 공격이라고 판단하는 것을 특징으로 하는 수행 흐름 무결성 검증 장치.
  6. 제 4항에 있어서, 상기 무결성검사부는,
    추출한 패킷이 상기 제2 패킷이면, 상기 출발지 주소를 스택에 푸쉬(push)하고,
    추출한 패킷이 상기 제3 패킷이고, 상기 목적지 주소가 상기 기본블록의 시작주소가 아니며, 상기 목적지 주소와 상기 스택의 최상위 요소의 값의 차이가 기 설정된 크기 미만이면, 상기 스택의 최상위 요소를 팝(pop)하는 것을 특징으로 하는 수행 흐름 무결성 검증 장치.
  7. 감시 대상인 가상머신 커널에 존재하는 적어도 하나 이상의 기본블록의 시작주소에 대한 정보를 파악하는 단계;
    프로세서 추적을 통해 제공되는 상기 가상머신 커널에 대한 패킷들 중 분기, 예외처리 또는 인터럽트와 관련된 패킷을 추출하는 단계; 및
    상기 기본블록의 시작주소와 상기 추출한 패킷을 기초로 수행 흐름의 무결성을 검증하는 단계;를 포함하는 것을 특징으로 하는 수행 흐름 무결성 검증 방법.
  8. 제 7항에 있어서, 상기 시작주소에 대한 정보를 파악하는 단계는,
    상기 가상머신 커널의 메모리 코드 영역을 기준으로 상기 기본블록의 시작주소를 비트맵 형태로 저장하는 단계;를 포함하는 것을 특징으로 하는 수행 흐름 무결성 검증 방법.
  9. 제 7항에 있어서, 상기 패킷을 추출하는 단계는,
    프로세서 추적을 통해 제공되는, 가상 머신 커널과 호스트 커널의 수행을 구분하는 정보를 포함하는 제1 패킷을 이용하여, 상기 가상머신 커널에 대한 패킷을 구분하는 단계;를 포함하는 것을 특징으로 하는 수행 흐름 무결성 검증 방법.
  10. 제 7항에 있어서, 상기 패킷을 추출하는 단계는,
    예외처리 또는 인터럽트의 출발지 주소를 포함하는 제2 패킷; 또는
    간접분기, 예외처리 또는 인터럽트의 목적지 주소를 포함하는 제3 패킷;을 추출하는 단계;를 포함하는 것을 특징으로 하는 수행 흐름 무결성 검증 방법.
  11. 제 10항에 있어서, 상기 무결성을 검증하는 단계는,
    추출한 패킷이 상기 제2 패킷이면, 상기 출발지 주소를 스택에 푸쉬하는 단계; 및
    추출한 패킷이 상기 제3 패킷이고, 상기 목적지 주소가 상기 기본블록의 시작주소가 아니며, 상기 목적지 주소와 상기 스택의 최상위 요소의 값의 차이가 기 설정된 크기 이상이면, 공격이라고 판단하는 단계;를 포함하는 것을 특징으로 하는 수행 흐름 무결성 검증 방법.
  12. 제 10항에 있어서, 상기 무결성을 검증하는 단계는,
    추출한 패킷이 상기 제2 패킷이면, 상기 출발지 주소를 스택에 푸쉬(push)하는 단계; 및
    추출한 패킷이 상기 제3 패킷이고, 상기 목적지 주소가 상기 기본블록의 시작주소가 아니며, 상기 목적지 주소와 상기 스택의 최상위 요소의 값의 차이가 기 설정된 크기 미만이면, 상기 스택의 최상위 요소를 팝(pop)하는 단계;를 포함하는 것을 특징으로 하는 수행 흐름 무결성 검증 방법.
  13. 제 7항 내지 제 12항 중 어느 한 항에 기재된 방법을 수행하기 위한 컴퓨터 프로그램 코드를 기록한 컴퓨터로 읽을 수 있는 기록매체.
KR1020180156279A 2018-12-06 2018-12-06 가상 머신 커널의 수행 흐름 무결성 검증 방법 및 그 장치 KR20200069111A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180156279A KR20200069111A (ko) 2018-12-06 2018-12-06 가상 머신 커널의 수행 흐름 무결성 검증 방법 및 그 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180156279A KR20200069111A (ko) 2018-12-06 2018-12-06 가상 머신 커널의 수행 흐름 무결성 검증 방법 및 그 장치

Publications (1)

Publication Number Publication Date
KR20200069111A true KR20200069111A (ko) 2020-06-16

Family

ID=71141590

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180156279A KR20200069111A (ko) 2018-12-06 2018-12-06 가상 머신 커널의 수행 흐름 무결성 검증 방법 및 그 장치

Country Status (1)

Country Link
KR (1) KR20200069111A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230067329A (ko) * 2021-11-09 2023-05-16 한국과학기술원 데이터 재사용 공격에 대한 방어 방법 및 시스템

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20230067329A (ko) * 2021-11-09 2023-05-16 한국과학기술원 데이터 재사용 공격에 대한 방어 방법 및 시스템

Similar Documents

Publication Publication Date Title
US9870324B2 (en) Isolating guest code and data using multiple nested page tables
US10474819B2 (en) Methods and systems for maintaining a sandbox for use in malware detection
US9229881B2 (en) Security in virtualized computer programs
US8504703B2 (en) Systems and methods for instruction sequence compounding in a virtual machine environment
US11438349B2 (en) Systems and methods for protecting devices from malware
JP2018041438A (ja) ファイル中の悪意のあるコードの検出システム及び方法
WO2015152748A1 (en) Process evaluation for malware detection in virtual machines
EP3726390A1 (en) Method and device for protecting kernel integrity
US11443032B2 (en) Stack pivot exploit detection and mitigation
RU2580016C1 (ru) Способ передачи управления между областями памяти
KR102162995B1 (ko) 가상 및 리얼 머신 기반의 악성코드 탐지 시스템 및 방법
CN111324891A (zh) 用于容器文件完整性监视的系统和方法
US20050044292A1 (en) Method and apparatus to retain system control when a buffer overflow attack occurs
US20190286820A1 (en) Apparatus and method for detecting container rootkit
CN105760787A (zh) 用于检测随机存取存储器中的恶意代码的系统及方法
US9202053B1 (en) MBR infection detection using emulation
WO2016164424A1 (en) Isolating guest code and data using multiple nested page tables
KR20200069111A (ko) 가상 머신 커널의 수행 흐름 무결성 검증 방법 및 그 장치
US11816217B2 (en) Decoy memory allocation
CN110659478A (zh) 在隔离的环境中检测阻止分析的恶意文件的方法
KR20110032731A (ko) 윈도우즈 커널 변조 탐지방법
US12032494B2 (en) Kernel integrity protection method and apparatus
US11907101B2 (en) Systems and methods for selective patching based on kernel and user space interaction
US11822663B2 (en) Supervisor-based firmware hardening
WO2022044021A1 (en) Exploit prevention based on generation of random chaotic execution context

Legal Events

Date Code Title Description
E601 Decision to refuse application