KR101931779B1 - 가상 머신 내부의 파일 접근 모니터링 장치 및 그 방법 - Google Patents
가상 머신 내부의 파일 접근 모니터링 장치 및 그 방법 Download PDFInfo
- Publication number
- KR101931779B1 KR101931779B1 KR1020170099703A KR20170099703A KR101931779B1 KR 101931779 B1 KR101931779 B1 KR 101931779B1 KR 1020170099703 A KR1020170099703 A KR 1020170099703A KR 20170099703 A KR20170099703 A KR 20170099703A KR 101931779 B1 KR101931779 B1 KR 101931779B1
- Authority
- KR
- South Korea
- Prior art keywords
- job
- file
- information
- virtual machine
- identification information
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
- H04L63/101—Access control lists [ACL]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/1734—Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45591—Monitoring or debugging support
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Debugging And Monitoring (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
Abstract
본 발명의 일 실시예는, 가상화 환경에 기반한 클라우드 컴퓨팅 시스템에 있어서, 적어도 하나의 가상 머신을 구현하고, 상기 가상 머신이 상기 가상 머신의 환경 정보를 포함한 데이터를 저장하는 스토리지로부터 메모리로 로딩된 파일에 접근하는 작업을 모니터링하여 상기 가상 머신을 관리하는 하이퍼바이저를 포함하는, 가상 머신 내부의 파일 접근 모니터링 장치를 제공한다.
Description
본 발명은 클라우드 컴퓨팅 환경에서 동작하는 합동 수용된 복수의 가상 머신들에 대해, 각 가상 머신 내부의 파일 시스템 접근을 실시간으로 모니터링하는 기술에 관한 것이다.
가상화 환경에 기반한 클라우드 컴퓨팅 시스템 내 각 단일 노드에서 동작하는 가상 머신들은 합동 수용되어 자원을 공유하며 동작하지만 사용자로 하여금 독립적인 컴퓨팅 시스템으로 인식하도록 동작하기 때문에 보안 위협에 대한 대비 또한 각자 수행하도록 구성되어 있는 경우가 많다.
가상 머신을 모니터링하는 방법으로는 각 가상 머신들의 내부에 에이전트(Agent)를 설치하여 모니터링하는 방법과 하이퍼바이저 수준에서의 모니터링 방법이 존재한다.
에이전트를 설치하여 가상 머신들을 모니터링하는 방식은 가상 머신 내의 정확한 정보를 에이전트에서 수집하여 하이퍼바이저에게 전달함으로써 시맨틱 갭(semantic gap)을 극복하는 방법을 사용한다. 이는 가상 머신 내부에만 존재하는 시맨틱(semantic) 정보를 직접 전달함으로써 정확한 정보에 의한 모니터링을 수행할 수 있는 장점이 있다. 하지만 각 에이전트가 각 가상 머신(VM: Virtual Machine)에게 할당된 자원을 중복 소모하게 되어 확장성 문제가 생길 수 있으며 가상 머신 내 모니터링 개체의 존재가 노출되기 때문에 해당 가상 머신이 침해당한 경우 이를 우회하거나 무력화 하려는 시도가 빈번하게 이루어지게 된다. 반면에, 본 발명에서 제안하는 방식인 하이퍼바이저 수준에서 가상 머신의 파일 접근을 모니터링하기 때문에 불필요한 중 자원 소모를 줄일 수 있으며 가상 머신 내부에서 시스템상의 모니터링 시도를 알아차리거나 무력화하기 어렵게 만든다.
에이전트를 사용하지 않는 하이퍼바이저 기반 모니터링 방식으로는 2007년도 CCS에서 발표된 "Stealthy malware detection through VMM-based "out-of-the-box" semantic view reconstruction", 2012년도 IEEE CLOUD에서 발표된 "Maitland: Lighter-weight VM introspection to support cyber-security in the cloud", 2014년도 IC2E에서 발표된 "Agentless Cloud-Wide Streaming of Guest File System Updates" 가 있다.
첫 번째 논문은 2007년도 CCS에서 발표된 "Stealthy malware detection through VMM-based "out-of-the-box" semantic view reconstruction"으로 호스트(host)-게스트(guest)간의 시맨틱 갭을 VMI(Virtual Machine Introspection) 방법을 통해 좁히면서 저수준 가상 머신 상태(VM state)를 확인할 수 있는 방법을 제시하였다. 이것은 게스트 내부의 파일, 프로세스, 커널 모듈 등의 시맨틱 뷰(semantic view)를 게스트 운영체제(guest OS)의 데이터 구조를 캐스팅(casting)하는 방식으로 가상 머신 모니터(VMM: Virtual Machine Monitor)에서 재구성함으로써 맬웨어를 탐지하는 방식을 제시하였다. 이 논문은 보다 정확한 시맨틱 뷰를 획득하기 위해 시맨틱 정보를 하이퍼바이저에서 재구성하는 방식을 사용했으나, 게스트 커널 소스(guest kernel source)가 필요하며 소요 시간이 수십 초 ~ 수십 분에 걸치는 등 실시간성을 제공할 수 없어 제한된 종류의 맬웨어 동작만을 확인할 수 있는 단점이 존재한다.
두 번째 논문은 2012년도 IEEE CLOUD에서 발표된 "Maitland: Lighter-weight VM introspection to support cyber-security in the cloud"로써 클라우드 환경에 적용 가능한 부하가 적은 introspection 기법을 메모리의 dirty page tracking 기법을 사용하여 반가상화(Paravirtualized) 환경에서 구현하였다. 제안한 방법은 Dirty memory page의 상태를 메모리 관리 장치(MMU: Memory Management Unit) 업데이트와 page fault 처리를 추적하는 방법을 통해 모니터링함으로써 언패킹(unpacking)또는 복호화(decryption) 동작의 수행을 탐지해낼 수 있다. 이전 연구들에 비해서 성능 저하를 다소 억제한 방법이지만 게스트 운영체제 커널 내부에서 동작해야 하는 부분이 존재하기 때문에 게스트 운영체제를 수정하는 반가상화 환경에서만 적용 가능하다.
세 번째 논문은 2014년도 International Conference on Cloud Engineering에서 발표된 "Agentless Cloud-Wide Streaming of Guest File System Updates" 로써 가상 디스크(virtual disk)의 특정 시점의 스냅샷을 확보한 뒤 블록 입출력(I/O: Input/Output) 중 쓰기 요청을 수집하여 각각의 메타데이터를 추출한 뒤 결합함으로써 파일 수준의 업데이트 스트림을 확보할 수 있도록 하는 방법을 제안하였다. 즉, 디스크 섹터 쓰기의 수집을 통해 파일의 업데이트를 추정함으로써 별도의 에이전트를 내부에서 동작시키지 않더라도 가상 머신 외부에서 내부의 파일 업데이트 동작을 모니터링 할 수 있도록 하였다.
기존에 제안된 위와 같은 파일시스템 lookup 방식 및 블록 입출력 모니터링 방법들은 하이퍼바이저 수준에서의 모니터링으로 에이전트 방식의 문제점들을 보완하였으나, 모니터링의 실시간성을 갖지 못할 뿐만 아니라 파일로의 읽기 접근에 의한 데이터의 노출은 모니터링하지 못하는 단점이 있다.
더욱 큰 문제점은 가상 머신 내부의 디스크 캐시의 존재로 인해 일정하지 않은 시간 동안 스토리지 내의 파일 정보와 메모리상에 존재하는 파일 간에 일시적으로 일치하지 않는 부분이 존재하게 되어 모니터링의 사각지대가 발생하는 점이다. 보다 자세하게는, 가상 머신 내의 게스트 운영체제에서 관리하는 메모리상의 디스크 캐시에 존재하는 파일 데이터와 관련하여, 기존의 디스크 입출력 모니터링은 변경된 데이터가 캐시로부터 제거(eviction)되어 영구 스토리지(permanent storage)로의 블록 입출력이 발생하지 않으면 데이터의 변경 여부를 알 수 없다. 또한 디스크 캐시로의 프리패치(prefetch)가 항상 실제 데이터 접근을 의미하는 것은 아닌데다가 디스크 캐시에 올려져 있는 파일 데이터를 읽기 위한 접근은 블록 입출력 요청을 발생시키지 않기 때문에 하이퍼바이저에서는 접근 사실을 알 수 없어 데이터 접근 여부를 모니터링하기 위한 목적으로는 적합하지 않다.
전술한 배경기술은 발명자가 본 발명의 도출을 위해 보유하고 있었거나, 본 발명의 도출 과정에서 습득한 기술 정보로서, 반드시 본 발명의 출원 전에 일반 공중에게 공개된 공지기술이라할 수는 없다.
본 발명의 목적은 영구 스토리지로부터 메모리로 로딩된 파일 데이터에의 접근을 하이퍼바이저에서 모니터링하여 허가되지 않은 작업 컨텍스트에서의 파일 접근을 인지하고 적절한 조치를 취할 수 있도록 하는 가상 머신 내부의 파일 접근 모니터링 장치 및 그 방법을 제공하는 것이다.
또한, 본 발명의 목적은 허가되지 않은 작업에 의한 파일 접근을 실시간으로 탐지하면서도 탐지에 의해 발생하는 성능 부하를 줄이는 가상 머신 내부의 파일 접근 모니터링 장치 및 그 방법을 제공하는 것이다.
본 발명의 일 실시예는, 가상화 환경에 기반한 클라우드 컴퓨팅 시스템에 있어서, 적어도 하나의 가상 머신을 구현하고, 상기 가상 머신이 상기 가상 머신의 환경 정보를 포함한 데이터를 저장하는 스토리지로부터 메모리로 로딩된 파일에 접근하는 작업을 모니터링하여 상기 가상 머신을 관리하는 하이퍼바이저를 포함하는, 가상 머신 내부의 파일 접근 모니터링 장치를 제공한다.
이때, 상기 하이퍼바이저는 상기 작업에 대한 작업 식별 정보를 생성하고, 상기 작업 식별 정보를 이용하여 새로운 작업인지 여부를 판단하는 작업 식별부; 및 기설정된 작업 식별 정보와 접근 허용 파일 정보를 포함한 화이트리스트를 이용하여 상기 작업에 대한 허용 여부를 결정하는 결정부를 포함할 수 있다.
이때, 상기 하이퍼바이저는 상기 가상 머신 내의 운영체제에서 생성하여 전달하는 상기 스토리지에 대한 입출력 요청을 분석하여 요청된 파일에 대한 스토리지 상의 위치 정보와 상기 파일이 적재된 디스크 캐시에 속한 메모리의 페이지 프레임 번호를 수집하는 입출력 정보 분석부; 상기 페이지 프레임 번호 또는 상기 스토리지 상의 위치 정보를 이용하여 상기 파일에 대한 시맨틱 정보를 추출하고, 이를 페이지 프레임 번호와 상기 시맨틱 정보에 상응하는 파일 정보를 해당 페이지 프레임에 연결된 모니터링 메타데이터에 추가하는 파일 정보 추출부; 및 상기 디스크 캐시에 속한 페이지 프레임에 접근 이벤트가 발생한 경우, 해당 작업에 상응하는 작업 식별 정보를 획득하여 이벤트 정보를 생성하는 디스크 캐시 접근 탐지부를 더 포함할 수 있다.
이때, 상기 하이퍼바이저는 상기 작업에 의한 시스템 호출을 탐지하고, 시스템 호출 테이블을 모니터링하여 상기작업이 시스템을 호출시 함께 입력된 시스템 호출 인수를 확보하여, 상기 작업이 접근을 시도하는 파일에 상응하는 파일 정보를 획득하는 시스템 호출 탐지부를 더 포함하고, 상기 결정부는 상기 작업에 상응하는 상기 작업 식별 정보 및 상기 작업이 접근을 시도하는 상기 파일에 상응하는 파일 정보가 상기 화이트리스트에 포함되어 있는 경우, 상기 작업을 허용할 수 있다.
이때, 상기 결정부는 상기 작업 식별 정보 및 상기 파일 정보가 상기 화이트리스트에 포함되어 있지 않은 경우, 상기 작업에 대해서 기지정된 동작을 수행할 수 있다.
이때, 상기 기지정된 동작은 상기 작업을 강제로 종료하는 것일 수 있다.
이때, 상기 작업 식별부는 상기 작업에 대하여 상기 작업이 동작하는 코어의 레지스터 값을 단독으로 사용하거나 상기 레지스터 값에 상기 작업의 원본 이미지 파일의 경로 이름을 결합한 간소화된 작업 식별 정보를 생성하고, 상기 결정부는 상기 간소화된 작업 식별 정보와 상기 작업에서 접근하는 파일을 특정하는 간소화된 파일 정보를 기반으로 생성된 인덱스 테이블을 이용하여 상기 작업의 허용 여부를 결정할 수 있다.
이때, 상기 시스템 호출 탐지부는 상기 시스템 호출 인수로부터 획득한 파일 정보를 상기 시스템 호출에 의해 로드된 데이터가 저장되는 페이지 프레임의 메타데이터 영역에 저장할 수 있다.
이때, 상기 시맨틱 정보는 상기 스토리지 상의 위치 정보를 이용하여 상기 디스크 캐시의 메타데이터 정보를 역추적하여 획득할 수 있다.
이때, 상기 시맨틱 정보는 상기 스토리지 상의 위치 정보를 이용하여 상기 시스템 호출 인수에서의 파일 정보를 추출하여 획득할 수 있다.
본 발명의 다른 일 실시예는, 가상화 환경에 기반한 클라우드 컴퓨팅 시스템에 있어서, 적어도 하나의 가상 머신을 구현하는 단계; 및 상기 가상 머신이 상기 가상 머신의 환경 정보를 포함한 데이터를 스토리지로부터 메모리로 로딩된 파일에 접근하는 작업을 모니터링하여 상기 가상 머신을 관리하는 단계를 포함하는, 가상 머신 내부의 파일 접근 모니터링 방법을 제공한다
이때, 상기 가상 머신을 관리하는 단계는 상기 작업에 대한 작업 식별 정보를 생성하는 단계; 상기 작업 식별 정보를 이용하여 새로운 작업인지 여부를 판단하는 단계; 및 기설정된 작업 식별 정보와 접근 허용 파일 정보를 포함한 화이트리스트를 이용하여 상기 작업에 대한 허용 여부를 결정하는 단계를 포함할 수 있다.
이때, 상기 가상 머신을 관리하는 단계는 상기 가상 머신 내의 운영체제에서 생성하여 전달하는 상기 스토리지에 대한 입출력 요청을 분석하여 요청된 파일에 대한 스토리지 상의 위치 정보와 상기 파일이 적재된 디스크 캐시에 속한 메모리의 페이지 프레임 번호를 수집하는 단계; 상기 페이지 프레임 번호 또는 상기 스토리지 상의 위치 정보를 이용하여 상기 파일에 대한 시맨틱 정보를 추출하고, 이를 페이지 프레임 번호와 상기 시맨틱 정보에 상응하는 파일 정보를 해당 페이지 프레임에 연결된 모니터링 메타데이터에 추가하는 단계; 및 상기 디스크 캐시에 속한 페이지 프레임에 접근 이벤트가 발생한 경우, 해당 작업에 상응하는 작업 식별 정보를 획득하여 이벤트 정보를 생성하는 단계를 더 포함할 수 있다.
이때, 상기 가상 머신을 관리하는 단계는 상기 작업에 의한 시스템 호출을 탐지하고, 시스템 호출 테이블을 모니터링하여 상기작업이 시스템을 호출시 함께 입력된 시스템 호출 인수를 확보하여 상기 작업이 접근을 시도하는 파일에 상응하는 파일 정보를 획득하는 단계를 더 포함하고, 상기 허용 여부를 결정하는 단계는 상기 작업에 상응하는 상기 작업 식별 정보 및 상기 작업이 접근을 시도하는 상기 파일에 상응하는 파일 정보가 상기 화이트리스트에 포함되어 있는 경우, 상기 작업을 허용할 수 있다.
이때, 상기 결정부는 상기 작업 식별 정보 및 상기 파일 정보가 상기 화이트리스트에 포함되어 있지 않은 경우, 상기 작업에 대해서 기지정된 동작을 수행할 수 있다.
이때, 상기 기지정된 동작은 상기 작업을 강제로 종료하는 것일 수 있다.
이때, 상기 작업 식별 정보를 생성하는 단계는 상기 작업에 대하여 상기 작업이 동작하는 코어의 레지스터 값을 단독으로 사용하거나 상기 레지스터 값에 상기 작업의 원본 이미지 파일의 경로 이름을 결합한 간소화된 작업 식별 정보를 생성하고, 상기 허용 여부를 결정하는 단계는 상기 간소화된 작업 식별 정보와 상기 작업에서 접근하는 파일을 특정하는 간소화된 파일 정보를 기반으로 생성된 인덱스 테이블을 이용하여 상기 작업의 허용 여부를 결정할 수 있다.
이때, 상기 파일 정보를 획득하는 단계는 상기 시스템 호출 인수로부터 획득한 파일 정보를 상기 시스템 호출에 의해 로드된 데이터가 저장되는 페이지 프레임의 메타데이터 영역에 저장할 수 있다.
이때, 상기 시맨틱 정보는 상기 스토리지 상의 위치 정보를 이용하여 상기 디스크 캐시의 메타데이터 정보를 역추적하여 획득할 수 있다.
이때, 상기 시맨틱 정보는 상기 스토리지 상의 위치 정보를 이용하여 상기 시스템 호출 인수에서의 파일 정보를 추출하여 획득할 수 있다.
본 발명에 따르면, 가상 머신 내부의 파일 접근 모니터링 장치 및 그 방법에 의해, 영구 스토리지로부터 메모리로 로딩된 파일 데이터에의 접근을 하이퍼바이저에서 모니터링하여 허가되지 않은 작업 컨텍스트에서의 파일 접근을 인지하고 적절한 조치를 취할 수 있도록 함으로써, 스토리지 I/O의 모니터링을 하더라도 이미 로딩된 파일에 대한 접근 시도를 알아내지 못하는 문제점을 해결하고 데이터 보안성을 증대시킬 수 있다.
또한, 본 발명은 가상 머신 내부의 파일 접근 모니터링 장치 및 그 방법에 의해, 허가되지 않은 작업에 의한 파일 접근을 실시간으로 탐지하면서도 탐지에 의해 발생하는 성능 부하를 줄임으로써, 모니터링에 의한 전체 시스템 부하를 감소시킬 수 있다.
또한, 본 발명은 가상 머신 내부의 파일 접근 모니터링 장치 및 그 방법에 의해, 가상 머신 내부와 외부에서의 시맨틱 갭을 시스템 콜 후킹/메모리 캐시 입출력 탭핑(tapping)을 통해 극복하고 이를 호출 시점의 작업 컨택스트와 결합함으로써, 가상 머신 내에서 임의의 프로세스가 허가되지 않는 파일에 읽기/쓰기를 통해 접근하려 할 때 이를 하이퍼바이저 상에서 가상 머신 내에 어떠한 모듈도 탑재하지 않고 탐지하여 허가/거부를 결정하고 대응하도록 할 수 있다. 이는 가상 머신 내부에서의 응용프로그램 수준에서의 악성코드 및 커널 루트킷에 의해 허가되지 않는 데이터로의 접근 시도를 무산시켜 가상 머신의 보안성을 높일 수 있다.
도 1은 본 발명의 일 실시예에 따른 가상 머신 내부의 파일 접근 모니터링 시스템의 구성을 나타낸 도면이다.
도 2는 본 발명의 일 실시예에 따른 가상 머신 내부의 파일 접근 모니터링 장치를 나타낸 도면이다.
도 3은 본 발명의 일 실시예에 따른 가상 머신 내부의 파일 접근 모니터링 장치를 나타낸 도면이다.
도 4는 본 발명의 일 실시예에 따른 가상 머신 내부의 파일 접근 모니터링 장치를 나타낸 도면이다.
도 5는 본 발명의 일 실시예에 따른 가상 머신 내부의 파일 접근 모니터링 방법을 나타낸 동작 흐름도이다.
도 6은 본 발명의 일 실시예에 따른 가상 머신 내부의 파일 접근 모니터링 방법을 나타낸 동작 흐름도이다.
도 2는 본 발명의 일 실시예에 따른 가상 머신 내부의 파일 접근 모니터링 장치를 나타낸 도면이다.
도 3은 본 발명의 일 실시예에 따른 가상 머신 내부의 파일 접근 모니터링 장치를 나타낸 도면이다.
도 4는 본 발명의 일 실시예에 따른 가상 머신 내부의 파일 접근 모니터링 장치를 나타낸 도면이다.
도 5는 본 발명의 일 실시예에 따른 가상 머신 내부의 파일 접근 모니터링 방법을 나타낸 동작 흐름도이다.
도 6은 본 발명의 일 실시예에 따른 가상 머신 내부의 파일 접근 모니터링 방법을 나타낸 동작 흐름도이다.
본 발명은 다양한 변환을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세하게 설명하고자 한다. 본 발명의 효과 및 특징, 그리고 그것들을 달성하는 방법은 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 여기서, 반복되는 설명, 본 발명의 요지를 불필요하게 흐릴 수 있는 공지 기능, 및 구성에 대한 상세한 설명은 생략한다. 본 발명의 실시형태는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위해서 제공되는 것이다. 따라서, 도면에서의 요소들의 형상 및 크기 등은 보다 명확한 설명을 위해 과장될 수 있다.
그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 각 실시예들의 전부 또는 일부가 선택적으로 조합되어 구성되어 다양한 형태로 구현될 수 있다. 이하의 실시예에서, 제1, 제2 등의 용어는 한정적인 의미가 아니라 하나의 구성 요소를 다른 구성 요소와 구별하는 목적으로 사용되었다. 또한, 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는한 복수의 표현을 포함한다. 또한, 포함하다 또는 가지다 등의 용어는 명세서상에 기재된 특징, 또는 구성요소가 존재함을 의미하는 것이고, 하나 이상의 다른 특징들 또는 구성요소가 부가될 가능성을 미리 배제하는 것은 아니다.
이하, 첨부된 도면을 참조하여 본 발명의 실시예들을 상세히 설명하기로 하며, 도면을 참조하여 설명할 때 동일하거나 대응하는 구성 요소는 동일한 도면 부호를 부여하고 이에 대한 중복되는 설명은 생략하기로한다.
도 1은 본 발명의 일 실시예에 따른 가상 머신 내부의 파일 접근 모니터링 시스템(1)의 구성을 나타낸 도면이다.
도 1을 참조하면, 본 발명의 일 실시예에 따른 가상 머신 내부의 파일 접근 모니터링 시스템(1)은 가상 머신 내부의 파일 접근 모니터링 장치(100)와 적어도 하나의 가상 머신(210), 가상 머신을 이용할 적어도 하나의 클라이언트 장치(220) 및 스토리지(230) 등을 포함한다.
여기서, 가상 머신 내부의 파일 접근 모니터링 장치(100)는 가상 머신을 생성하고 관리하기 위한 하이퍼바이저(110)를 포함할 수 있고, 가상 머신(210)은 클라이언트 장치(220)와 상호 연결된다.
하이퍼바이저(110)는 가상화 시스템을 구축하기 위한 소프트웨어 계층으로 운영체제와 하드웨어 사이에 존재하며, 각 가상 머신에게 논리적으로 분리된 하드웨어를 제공하게 된다. 또한, 하이퍼바이저(110)는 가상 머신 모니터(VMM: virtual machine monitor)로 명명될 수도 있으며, 가상 머신을 생성하고 실행하는 펌웨어 또는 소프트웨어를 지칭할 수 있다.
그리고, 하이퍼바이저(110) 상에는 적어도 하나의 가상 머신(110)이 실행될 수 있다. 가상 머신(110)은 운영체제 계층 및 어플리케이션 계층을 포함할 수 있다.
여기에서, 각 가상 머신에 대한 운영체제 계층은 서로에 대하여 독립적일 수 있다. 즉, 하이퍼바이저(110)는 하드웨어 계층의 자원을 가상 머신(110)에게 분배하고, 서로에 대하여 독립적으로 동작할 수 있도록 자원 분배를 수행할 수 있다.
또한, 하이퍼바이저(110)는 디스크 이미지를 이용하여 각 가상 머신으로부터의 데이터 입출력을 처리할 수 있다.
스토리지(230)는 가상 머신 이미지나 가상 머신의 환경 정보 등을 포함하는 데이터를 저장하는 저장소로, 영구 스토리지를 의미할 수 있다.
본 발명이 적용되는 환경은 단일 하드웨어 컴퓨터 상에서 하나 이상의 가상 머신(VM: Virtual Machine)이 구동되는 가상화 환경으로, 가상 머신 내에 어떠한 동작 개체도 존재하지 않는 무에이전트(Agentless) 방식을 기반으로 하이퍼바이저 상에서 파일 데이터가 담겨 있는 메모리 페이지 프레임을 추적, 모니터링하여 해당 페이지 프레임을 접근하는 작업 컨텍스트를 식별하고 접근된 메모리 페이지 프레임이 담고 있는 파일의 정보를 연계시킴으로써 실시간성 및 파일 데이터로의 읽기 및 쓰기 접근을 모니터링한다.
전체 시스템의 실행 흐름은 다음과 같이 요약할 수 있다. 우선, 가상 머신 내 게스트 운영체제가 관리하는 디스크 캐시에 속한 페이지 프레임을 추적한다. 그리고, 파일 데이터로의 작업 접근 이벤트를 탐지하고, 접근 시도 작업을 식별하고 접근 파일 데이터 정보를 확인한다. 그리고, 화이트리스트 기반의 허용 여부를 결정하여, 그 결과에 따른 정책을 집행 또는 전달한다.
여기서, 파일 데이터로의 접근을 모니터링하는 방식에는, 시맨틱 갭을 줄이기 위한 방편으로 시스템 호출을 통한 접근을 모니터링하여 접근하는 파일에 대한 시맨틱 정보를 획득하는 방법과, 파일 데이터가 로드된 메모리로의 접근을 직접 모니터링하고 해당 정보를 게스트의 파일 시스템을 역추적하여 접근한 데이터의 시맨틱 정보를 획득하는 방법이 있다.
이때, 두가지 방법 중에서의 선택은 write-through/write-back 등 가상 머신에서의 캐시 사용 여부 또는 유저 영역/커널 영역에서의 접근 등에 의한 데이터 접근 형태, 모니터링 목적, 모니터링 부하의 감내 가능 정도, 파일의 접근 패턴 및 빈도에 따라 관리자가 결정할 수 있다.
도 2는 본 발명의 일 실시예에 따른 가상 머신 내부의 파일 접근 모니터링 장치를 나타낸 도면이다.
상세히, 하이퍼바이저(310)는 작업 식별부(Task Identifier, 311), 시스템 호출 탐지부(System Call Invocation Detector, 312) 및 결정부(Decision module, 313) 등을 포함한다.
작업 식별부(311)는 각 프로세서 내의 CPU 코어에서 현재 동작하고 있는 작업(task)을 식별하고 각각의 작업에 대해 작업 식별 정보(taskID)를 부여하여 관리한다.
이때, 각 작업은 사용하는 페이지 테이블의 위치를 가리키는 레지스터 값을 기준으로 식별되며, 식별된 작업 식별 정보는 해당 작업의 원본 이미지 정보를 기준으로 생성될 수 있다.
이때, 사용하는 프로세서가 인텔 프로세서(Intel Processor)인 경우, CR3 레지스터의 값을 기준으로 각 작업을 식별할 수 있다.
이때, 작업 식별 정보는 결정부(313)에서 화이트리스트에 해당 항목(entry)이 존재하는지를 검색하는 키로 사용될 수 있다.
이때, 작업 식별 정보는 작업의 원본 이미지 파일의 핑거프린트(fingerprint) 값 등 재부팅시에도 변경되지 않는 값을 사용할 수 있다.
만약, 결정부(313)에서 에서 빠른 검색을 위한 인덱스 테이블을 사용하는 경우 간소화된 작업 식별 정보(short_taskID)를 생성하여 사용할 수 있다.
이때, 간소화된 작업 식별 정보(short_taskID)는 해당 작업이 동작하는 코어의 CR3 레지스터 값을 단독으로 사용하거나, CR3 레지스터의 값에 해당 작업의 원본 이미지 파일의 전체 경로명을 결합하여 생성할 수 있다.
시스템 호출 탐지부(312)는 가상 머신 내의 작업에 의해서 시스템 호출이 이루어지는 것을 탐지하고, 호출시 함께 입력된 시스템 호출 인수(system call argument)들을 확보한다.
이때, 시스템 호출 탐지부(312)는 시스템 호출 테이블(System Call Table, 321)을 모니터링하여, 임의의 작업이 시스템을 호출하였을 때 통보되는 이벤트를 받아 시스템 호출을 확인하고, 레지스터, 스택 및 메모리에 저장되어 있는 인수들을 읽어들여 유저의 작업이 접근을 시도하는 파일의 절대 경로명을 확보할 수 있다.
여기서, 시스템 호출 테이블에는 리눅스(Linux)의 Syscall와 윈도우(Windows)의 SSDT(System Service Dispatch Table)가 포함될 수 있다.
결정부(313)는 작업 식별부(311)로부터 전달된 작업 식별 정보와 시스템 호출 탐지부(312)로부터 전달된 접근된 파일의 경로 값을 연결한 정보를 받아 이것이 관리자에 의해 허용된 접근인지를 검사한다.
이때, 사전에 관리자에 의해 작성된 화이트리스트를 이용하여, 화이트리스트에 해당 항목이 존재하는지를 검색하여 해당 작업의 허용 여부를 결정할 수 있다.
만약, 화이트리스트에 해당 항목이 존재할 경우, 해당 접근이 허가된 것이므로 스레드(330)으로 하여금 작업을 수행하도록 하고 추가적으로 아무 것도 하지 않는다. 하지만 존재하지 않을 경우 관리자에 의해 지정된 동작을 수행할 수 있다. 예컨대, 허용되지 않은 파일 접근으로 판별될 경우 스레드(330)로 하여금 해당 작업의 실행을 정지시키도록 구성할 수 있다.
이때, 결정부(313)는 검색용 캐시 테이블인 인덱스 테이블(index table)을 생성할 수 있다. 이는, 결정부(313)에서 작업의 매 파일 접근에 대해서 검색 및 비교를 통해 허용 결정을 내릴 때, 불변의 작업 식별 정보 및 파일 정보 값을 사용하는 것은 키 값 및 비교값 생성에 필요한 코드의 반복 실행이 추가되어 지속적인 누적 성능 저하를 야기하기 때문이다.
즉, 결정부(313)는 현재 실행중인 작업의 작업 식별 정보 생성 및 화이트리스트 내 검색에 소모되는 시간을 줄이기 위하여, 간소화된 작업 식별 정보와 간소화된 파일 정보(short_파일정보)를 기반으로 인덱스 테이블을 생성하여 사용할 수 있다.
이때, 인덱스 테이블은 각 항목으로 <short_taskID, short_파일정보>의 쌍을 포함할 수 있으며, 각 항목은 각 작업의 파일 최초 접근시 허용 여부와 함께 생성 및 추가될 수 있다. 그리고, 간소화된 파일 정보의 값은 해당 파일을 특정할 수 있는 형태의 간소화 정보로 생성할 수 있다. 그리고, 간소화된 작업 식별 정보는 작업 식별부(311)에서 생성할 수 있다.
도 3은 본 발명의 일 실시예에 따른 가상 머신 내부의 파일 접근 모니터링 장치를 나타낸 도면이다.
상세히, 하이퍼바이저(410)는 작업 식별부(411), 입출력 정보 분석부(412), 파일 정보 추출부(413), 디스크 캐시 접근 탐지부(414) 및 결정부(415) 등을 포함한다.
작업 식별부(411)는 각 프로세서 내의 CPU 코어에서 현재 동작하고 있는 작업을 식별하고 각각의 작업에 대해 작업 식별 정보를 부여하여 관리한다.
이때, 각 작업은 사용하는 페이지 테이블의 위치를 가리키는 레지스터 값을 기준으로 식별되며, 식별된 작업 식별 정보는 해당 작업의 원본 이미지 정보를 기준으로 생성될 수 있다.
이때, 사용하는 프로세서가 인텔 프로세서인 경우, CR3 레지스터의 값을 기준으로 각 작업을 식별할 수 있다.
이때, 작업 식별 정보는 결정부(415)에서 화이트리스트에 해당 항목이 존재하는지를 검색하는 키로 사용될 수 있다.
이때, 작업 식별 정보는 작업의 원본 이미지 파일의 핑거프린트값 등 재부팅시에도 변경되지 않는 값을 사용할 수 있다.
만약, 결정부(415)에서 에서 빠른 검색을 위한 인덱스 테이블을 사용하는 경우 간소화된 작업 식별 정보(short_taskID)를 생성하여 사용할 수 있다.
이때, 간소화된 작업 식별 정보는 해당 작업이 동작하는 코어의 CR3 레지스터 값을 단독으로 사용하거나, CR3 레지스터의 값에 해당 작업의 원본 이미지 파일의 전체 경로명을 결합하여 생성할 수 있다.
입출력 정보 분석부(412)는 가상 머신 내 운영체제에서 생성하여 전달하는 스토리지 입출력 요청을 분석한다.
여기서, 스토리지 입출력 요청은 리눅스의 bio, 윈도우의 IRP(I/O Request Packets)를 포함할 수 있다.
이때, 입출력 정보 분석부(412)는 입출력 요청 모니터(I/O Request monitor)와 입출력 완료 핸들러 모니터(I/O completion handler monitor)로 구성될 수 있다.
이때, 입출력 요청 모니터와 입출력 완료 핸들러 모니터의 연속된 실행에 의해 얻어진 정보를 통해 임의 작업이 접근하는 스토리지 상의 데이터 위치 및 해당 데이터가 어느 페이지 프레임에 로드되어 있는지에 대한 정보를 확보할 수 있다. 여기서, 각 입출력 요청에 대해서 입출력 요청 모니터와 입출력 완료 핸들러 모니터의 순서로 동작한다.
입출력 요청 모니터는 각 작업에서 생성한 입출력 요청에 의해 로드될 데이터를 저장할 메모리를 작업 내용 별로 구분하여 추적할 수 있도록, 해당 입출력 요청을 생성한 작업의 작업 식별 정보를 입출력 요청과 연결한다. 이후, 입출력 요청 모니터는 입출력 요청을 생성하는데 사용되는 커널(420) 내 입출력 요청(예컨대, BIO, IRP) 생성 함수의 사용 여부를 모니터링하여 함수 호출 완료시 만들어진 입출력 요청의 메모리 주소를 확보하고, 이를 알려진 객체 구조를 통해 파싱하여 연계된 입출력 완료 핸들러의 위치를 파악한다. 그리고, 이 위치는 입출력 완료 핸들러 모니터로 사용 여부를 모니터링하기 위해 넘겨진다.
입출력 완료 핸들러 모니터에서는 입출력 요청 모니터에서 모니터링할 것을 지정한 입출력 요청들에 대해서, 입출력이 종료되면서 호출되는 함수의 위치를 넘겨받아 그 실행을 모니터링하여 검출한다. 그리고, 해당 입출력 요청에 의해 파일 데이터가 로드된 페이지 프레임의 주소를 얻어내고, 이 페이지 프레임들을 디스크 캐시(422)에 속한 페이지 프레임들로 간주하여 가상 머신 별로 관리한다.
이때, 가상 머신의 운영체제가 디스크 캐시로 사용한 페이지 프레임을 재사용(Reclamation)하여 더 이상 디스크 캐시로 사용되지 않는 것이 탐지되면, 해당 페이지 프레임의 모니터링을 중지하고 연결한 관련 메타데이터를 삭제할 수 있다. 그리고, 관리중인 페이지 프레임의 재사용의 탐지는 해당 페이지 프레임을 접근하는 경로가 파일시스템 접근 인터페이스가 아니면 해당 페이지 프레임은 재사용된 것으로 간주하고 관리 대상에서 제외하는 형태로 동작할 수 있다.
파일 정보 추출부(413)는 디스크 캐시(422) 내 메모리에 저장되어 있는 데이터에 대한 파일 시스템 수준의 시맨틱(semantic) 정보를 해당 데이터가 저장되어 있는 메모리의 페이지 프레임 번호(PFN: Page Frame Number)와 결합하여 특정 메모리 주소에 저장되어 있는 데이터의 소속 파일 정보를 <PFN, 파일 정보> 의 형태로 생성한다. 여기서 데이터가 저장되어 있는 메모리의 페이지 프레임 번호는 입출력 정보 분석부(412)에서 획득할 수 있다.
이때, 사용되는 메모리 내 데이터의 시맨틱 정보는 입출력 정보 분석부(412)에서 확보한 스토리지 상의 데이터 위치 정보를 시스템 호출 인수 에서의 파일 정보와 연결하여 획득할 수 있다.
이때, 사용되는 메모리 내 데이터의 시맨틱 정보는 입출력 정보 분석부(412)에서 확보한 스토리지 상의 데이터 위치 정보를 사용하여 대상 파일 시스템의 메타데이터 파싱을 통해 디스크 캐시의 메타데이터 정보를 역추적하여 획득할 수 있다.
디스크 캐시 접근 탐지부(414)는 디스크 캐시(422)에 속한 페이지 프레임에 접근되는 이벤트가 발생하면 작업 식별부(411)로부터 해당 작업에 상응하는 작업 식별 정보(taskID)를 얻어 <taskID, PFN>을 생성하고, 이를 이용하여 접근 이벤트 정보를 생성한다.
이때, 디스크 캐시(422)로의 직접 접근이 발생한 경우에는, 입출력 정보 분석부(412)에서 미리 수집 및 저장해두었던 해당 페이지 프레임의 <PFN, 파일 정보>를 사용해 <taskID, PFN, 파일 정보> 또는 <taskID, 파일정보> 이벤트 정보를 생성할 수 있다.
이와 같이, 디스크 캐시 접근 탐지부(414)에서 생성된 이벤트 정보는 결정부(415)로 보내져 실제 접근이 이루어지기 전에 접근의 유효성을 결정할 수 있도록 한다. 이때, 사용되는 파일 정보는 파일의 파일시스템 상의 전체 경로를 기본 형태로 할 수 있으며, 다른 형태를 가질 수도 있다.
결정부(415)는 작업 식별 정보와 접근된 파일의 경로 값을 연결한 정보를 받아 이것이 관리자에 의해 허용된 접근인지를 검사한다.
이때, 사전에 관리자에 의해 작성된 화이트리스트를 이용하여, 화이트리스트에 해당 항목이 존재하는지를 검색하여 해당 작업의 허용 여부를 결정할 수 있다.
만약, 화이트리스트에 해당 항목이 존재할 경우, 해당 접근이 허가된 것이므로 스레드(430)으로 하여금 작업을 수행하도록 하고 추가적으로 아무 것도 하지 않는다. 하지만 존재하지 않을 경우 관리자에 의해 지정된 동작을 수행할 수 있다. 예컨대, 허용되지 않은 파일 접근으로 판별될 경우 스레드(430)로 하여금 해당 작업의 실행을 정지시키도록 구성할 수 있다.
이때, 결정부(415)는 검색용 캐시 테이블인 인덱스 테이블을 생성할 수 있다. 이는, 결정부(415)에서 작업의 매 파일 접근에 대해서 검색 및 비교를 통해 허용 결정을 내릴 때, 불변의 작업 식별 정보 및 파일 정보 값을 사용하는 것은 키 값 및 비교값 생성에 필요한 코드의 반복 실행이 추가되어 지속적인 누적 성능 저하를 야기하기 때문이다.
즉, 결정부(415)는 현재 실행중인 작업의 작업 식별 정보 생성 및 화이트리스트 내 검색에 소모되는 시간을 줄이기 위하여, 간소화된 작업 식별 정보와 간소화된 파일 정보(short_파일정보)를 기반으로 인덱스 테이블을 생성하여 사용할 수 있다.
이때, 인덱스 테이블은 각 항목으로 <short_taskID, short_파일정보>의 쌍을 포함할 수 있으며, 각 항목은 각 작업의 파일 최초 접근시 허용 여부와 함께 생성 및 추가될 수 있다. 그리고, 간소화된 파일 정보의 값은 해당 파일을 특정할 수 있는 형태의 간소화 정보로 생성할 수 있다. 그리고, 간소화된 작업 식별 정보는 작업 식별부(411)에서 생성할 수 있다.
도 4는 본 발명의 일 실시예에 따른 가상 머신 내부의 파일 접근 모니터링 장치를 나타낸 도면이다.
상세히, 하이퍼바이저(510)는 작업 식별부(511), 시스템 호출 탐지부(512), 입출력 정보 분석부(513), 파일 정보 추출부(514), 디스크 캐시 접근 탐지부(515) 및 결정부(516) 등을 포함한다.
작업 식별부(511)는 각 프로세서 내의 CPU 코어에서 현재 동작하고 있는 작업을 식별하고 각각의 작업에 대해 작업 식별 정보를 부여하여 관리한다.
이때, 각 작업은 사용하는 페이지 테이블의 위치를 가리키는 레지스터 값을 기준으로 식별되며, 식별된 작업 식별 정보는 해당 작업의 원본 이미지 정보를 기준으로 생성될 수 있다.
이때, 사용하는 프로세서가 인텔 프로세서인 경우, CR3 레지스터의 값을 기준으로 각 작업을 식별할 수 있다.
이때, 작업 식별 정보는 결정부(516)에서 화이트리스트에 해당 항목이 존재하는지를 검색하는 키로 사용될 수 있다.
이때, 작업 식별 정보는 작업의 원본 이미지 파일의 핑거프린트값 등 재부팅시에도 변경되지 않는 값을 사용할 수 있다.
만약, 결정부(516)에서 에서 빠른 검색을 위한 인덱스 테이블을 사용하는 경우 간소화된 작업 식별 정보(short_taskID)를 생성하여 사용할 수 있다.
이때, 간소화된 작업 식별 정보는 해당 작업이 동작하는 코어의 CR3 레지스터 값을 단독으로 사용하거나, CR3 레지스터의 값에 해당 작업의 원본 이미지 파일의 전체 경로명을 결합하여 생성할 수 있다.
시스템 호출 탐지부(512)는 가상 머신 내의 작업에 의해서 시스템 호출이 이루어지는 것을 탐지하고, 호출시 함께 입력된 시스템 호출 인수들을 확보한다.
이때, 시스템 호출 탐지부(512)는 시스템 호출 테이블(521)을 모니터링하여, 임의의 작업이 시스템을 호출하였을 때 통보되는 이벤트를 받아 시스템 호출을 확인하고, 레지스터, 스택 및 메모리에 저장되어 있는 인수들을 읽어들여 유저의 작업이 접근을 시도하는 파일의 절대 경로명을 확보할 수 있다.
여기서, 시스템 호출 테이블에는 리눅스의 Syscall와 윈도우의 SSDT가 포함될 수 있다.
입출력 정보 분석부(513)는 가상 머신 내 운영체제에서 생성하여 전달하는 스토리지 입출력 요청을 분석한다.
여기서, 스토리지 입출력 요청은 리눅스의 bio, 윈도우의 IRP를 포함할 수 있다.
이때, 입출력 정보 분석부(513)는 입출력 요청 모니터와 입출력 완료 핸들러 모니터로 구성될 수 있다.
이때, 입출력 요청 모니터와 입출력 완료 핸들러 모니터의 연속된 실행에 의해 얻어진 정보를 통해 임의 작업이 접근하는 스토리지 상의 데이터 위치 및 해당 데이터가 어느 페이지 프레임에 로드되어 있는지에 대한 정보를 확보할 수 있다. 여기서, 각 입출력 요청에 대해서 입출력 요청 모니터와 입출력 완료 핸들러 모니터의 순서로 동작한다.
입출력 요청 모니터는 각 작업에서 생성한 입출력 요청에 의해 로드될 데이터을 저장할 메모리를 작업 내용 별로 구분하여 추적할 수 있도록, 해당 입출력 요청을 생성한 작업의 작업 식별 정보를 입출력 요청과 연결한다. 이후, 입출력 요청 모니터는 입출력 요청을 생성하는데 사용되는 커널(520) 내 입출력 요청(예컨대, BIO, IRP) 생성 함수의 사용 여부를 모니터링하여 함수 호출 완료시 만들어진 입출력 요청의 메모리 주소를 확보하고, 이를 알려진 객체 구조를 통해 파싱하여 연계된 입출력 완료 핸들러의 위치를 파악한다. 그리고, 이 위치는 입출력 완료 핸들러 모니터로 사용 여부를 모니터링하기 위해 넘겨진다.
입출력 완료 핸들러 모니터에서는 입출력 요청 모니터에서 모니터링할 것을 지정한 입출력 요청들에 대해서, 입출력이 종료되면서 호출되는 함수의 위치를 넘겨받아 그 실행을 모니터링하여 검출한다. 그리고, 해당 입출력 요청에 의해 파일 데이터가 로드된 페이지 프레임의 주소를 얻어내고, 이 페이지 프레임들을 디스크 캐시(522)에 속한 페이지 프레임들로 간주하여 가상 머신 별로 관리한다.
이때, 가상 머신의 운영체제가 디스크 캐시로 사용한 페이지 프레임을 재사용하여 더 이상 디스크 캐시로 사용되지 않는 것이 탐지되면, 해당 페이지 프레임의 모니터링을 중지하고 연결한 관련 메타데이터를 삭제할 수 있다. 그리고, 관리중인 페이지 프레임의 재사용의 탐지는 해당 페이지 프레임을 접근하는 경로가 파일시스템 접근 인터페이스가 아니면 해당 페이지 프레임은 재사용된 것으로 간주하고 관리 대상에서 제외하는 형태로 동작할 수 있다.
파일 정보 추출부(514)는 디스크 캐시(522) 내 메모리에 저장되어 있는 데이터에 대한 파일 시스템 수준의 시맨틱정보를 해당 데이터가 저장되어 있는 메모리의 페이지 프레임 번호(PFN)와 결합하여 특정 메모리 주소에 저장되어 있는 데이터의 소속 파일 정보를 <PFN, 파일 정보> 의 형태로 생성한다. 여기서 데이터가 저장되어 있는 메모리의 페이지 프레임 번호는 입출력 정보 분석부(513)에서 획득할 수 있다.
이때, 사용되는 메모리 내 데이터의 시맨틱 정보는 입출력 정보 분석부(513)에서 확보한 스토리지 상의 데이터 위치 정보를 시스템 호출 인수 에서의 파일 정보와 연결하여 획득할 수 있다.
이때, 사용되는 메모리 내 데이터의 시맨틱 정보는 입출력 정보 분석부(513)에서 확보한 스토리지 상의 데이터 위치 정보를 사용하여 대상 파일 시스템의 메타데이터 파싱을 통해 디스크 캐시의 메타데이터 정보를 역추적하여 획득할 수 있다.
디스크 캐시 접근 탐지부(515)는 디스크 캐시(522)에 속한 페이지 프레임에 접근되는 이벤트가 발생하면 작업 식별부(511)로부터 해당 작업에 상응하는 작업 식별 정보(taskID)를 얻어 <taskID, PFN>을 생성하고, 이를 이용하여 접근 이벤트 정보를 생성한다.
이때, 시스템 호출을 통한 접근이 발생한 경우에는, 시스템 호출 탐지부(512)로부터 해당 시스템 요청의 인수를 수집하고 <taskID, 파일 정보> 이벤트 정보를 생성할 수 있다.
이때, 디스크 캐시(522)로의 직접 접근이 발생한 경우에는, 입출력 정보 분석부(513)에서 미리 수집 및 저장해두었던 해당 페이지 프레임의 <PFN, 파일 정보>를 사용해 <taskID, PFN, 파일 정보> 또는 <taskID, 파일정보> 이벤트 정보를 생성할 수 있다.
이와 같이, 디스크 캐시 접근 탐지부(515)에서 생성된 이벤트 정보는 결정부(516)로 보내져 실제 접근이 이루어지기 전에 접근의 유효성을 결정할 수 있도록 한다. 이때, 사용되는 파일 정보는 파일의 파일시스템 상의 전체 경로를 기본 형태로 할 수 있으며, 다른 형태를 가질 수도 있다.
결정부(516)는 작업 식별 정보와 접근된 파일의 경로 값을 연결한 정보를 받아 이것이 관리자에 의해 허용된 접근인지를 검사한다.
이때, 사전에 관리자에 의해 작성된 화이트리스트를 이용하여, 화이트리스트에 해당 항목이 존재하는지를 검색하여 해당 작업의 허용 여부를 결정할 수 있다.
만약, 화이트리스트에 해당 항목이 존재할 경우, 해당 접근이 허가된 것이므로 스레드(530)으로 하여금 작업을 수행하도록 하고 추가적으로 아무 것도 하지 않는다. 하지만 존재하지 않을 경우 관리자에 의해 지정된 동작을 수행할 수 있다. 예컨대, 허용되지 않은 파일 접근으로 판별될 경우 스레드(530)로 하여금 해당 작업의 실행을 정지시키도록 구성할 수 있다.
이때, 결정부(516)는 검색용 캐시 테이블인 인덱스 테이블을 생성할 수 있다. 이는, 결정부(516)에서 작업의 매 파일 접근에 대해서 검색 및 비교를 통해 허용 결정을 내릴 때, 불변의 작업 식별 정보 및 파일 정보 값을 사용하는 것은 키 값 및 비교값 생성에 필요한 코드의 반복 실행이 추가되어 지속적인 누적 성능 저하를 야기하기 때문이다.
즉, 결정부(516)는 현재 실행중인 작업의 작업 식별 정보 생성 및 화이트리스트 내 검색에 소모되는 시간을 줄이기 위하여, 간소화된 작업 식별 정보와 간소화된 파일 정보(short_파일정보)를 기반으로 인덱스 테이블을 생성하여 사용할 수 있다.
이때, 인덱스 테이블은 각 항목으로 <short_taskID, short_파일정보>의 쌍을 포함할 수 있으며, 각 항목은 각 작업의 파일 최초 접근시 허용 여부와 함께 생성 및 추가될 수 있다. 그리고, 간소화된 파일 정보의 값은 해당 파일을 특정할 수 있는 형태의 간소화 정보로 생성할 수 있다. 그리고, 간소화된 작업 식별 정보는 작업 식별부(511)에서 생성할 수 있다.
도 5는 본 발명의 일 실시예에 따른 가상 머신 내부의 파일 접근 모니터링 방법을 나타낸 동작 흐름도이다.
도 5는 디스크 캐시의 접근을 모니터링하기 위한 구성을 포함하는 가상 머신 내부의 파일 접근 모니터링 방법을 나타낸다.
도 5를 참조하면, 본 발명의 일 실시예에 따른 가상 머신 내부의 파일 접근 모니터링 방법은, 새로운 작업이 처음으로 파일에 접근하는 등 필요한 시점에 해당 작업의 작업 식별 정보를 생성한다(S501).
이때, 각 가상 머신 내에서 현재 실행중인 대상 프로세스의 CR3 레지스터 값과 동일한 CR3 레지스터 값을 갖는 프로세스가, 자신의 가상 머신별 작업 관리 목록에의 등재 여부 또는 이미 생성된 작업 식별 정보가 존재하는가의 여부로 새로운 작업의 존재를 확인할 수 있다.
이때, 작업 식별 정보는 CR3 레지스터의 값으로 대변되는 가리키는 해당 작업의 페이지 테이블 주소를 사용하여 생성한 작업 ID(taskID)를 포함할 수 있다.
이때, 작업 식별 정보는 대상 프로그램의 소속 가상 머신, 실행 파일의 경로, 이미지 파일의 해시값 등을 사용하여 생성할 수 있다.
만약, 동일 CR3 값을 갖는 스레드들 간의 구분이 필요한 경우 게스트 운영 체제의 프로세스 관리 데이터구조에서 각 프로세스에 대한 엔트리를 찾고, 해당 엔트리에서 각 스레드를 식별하는 식별자(예컨대, 스레드 ID)를 찾아 CR3 레지스터 값과 결합하여 ID로 사용할 수 있다.
이때, 작업 식별 정보의 생성이 필요한 시점 및 대상은 모니터링 중인 디스크 캐시의 페이지 프레임으로 접근 시도가 발생한 시점에서 접근을 시도한 프로세스 및 시스템 호출에 의해 파일 데이터를 접근하려는 시도가 발생한 시점에서 해당 시스템을 호출한 프로세스를 기준으로 할 수 있다.
또한, 본 발명의 일 실시예에 따른 가상 머신 내부의 파일 접근 모니터링 방법은, 가상 머신 내에서 작업들이 생성하는 스토리지 입출력 요청의 생성을 추적하고, 해당 요청과 연계된 입출력 완료 핸들러의 호출 이벤트를 탐지함으로써 요청된 파일의 위치 정보와 함께 해당 파일 데이터가 적재된 디스크 캐시에 속한 메모리의 페이지 프레임 번호(PFN) 값을 수집하여 각 가상 머신별로 관리한다(S503).
이때, 위치 정보에는 스토리지 내의 섹터 번호 및 오프셋 등이 포함될 수 있다.
또한, 본 발명의 일 실시예에 따른 가상 머신 내부의 파일 접근 모니터링 방법은, 확보한 <PFN, 위치 정보>를 기반으로 디스크 캐시에 속한 페이지 프레임에 저장된 데이터의 소속 파일에 대한 시맨틱 정보(소속 파일의 절대경로 등)를 가상 머신 내 게스트 운영체제의 파일 시스템으로부터 추출하고, 이를 <PFN, 파일 정보>의 형태로 해당 페이지 프레임에 연결되어 있는 모니터링 메타데이터에 추가하고 하이퍼바이저가 관리한다(S505).
또한, 본 발명의 일 실시예에 따른 가상 머신 내부의 파일 접근 모니터링 방법은, 작업에 의해 디스크 캐시에 속한 페이지 프레임이 접근되면 해당 이벤트를 탐지하고, 이벤트를 생성한 작업의 작업 식별 정보를 확보하여 <taskID, PFN, 파일 정보> 또는 <taskID, 파일 정보>와 같은 이벤트 정보를 생성한다(S507).
또한, 본 발명의 일 실시예에 따른 가상 머신 내부의 파일 접근 모니터링 방법은, 하이퍼바이저에서 생성한 <taskID, 파일 정보>를 검색 키로 이용하여 화이트리스트에 해당 항목이 존재하는지 여부에 따라 작업 허용 여부를 결정한다(S509).
만약, 화이트리스트에 일치하는 항목이 존재할 경우에는 허용된 작업이므로, 해당 작업을 허용하고 아무런 동작도 하지 않는다. 하지만, 화이트리스트에 일치하는 항목이 존재하지 않을 경우에는 허용되지 않은 작업이므로, 기설정된 동작을 수행하도록 할 수 있다.
이때, 허용되지 않은 작업에 대해서 대상 작업의 실행을 강제 종료하도록 할 수 있다.
이때, 화이트리스트는 사전에 관리자에 의하여 <taskID, 접근 허용 파일 정보>와 같은 형태의 목록으로 작성될 수 있다.
도 6은 본 발명의 일 실시예에 따른 가상 머신 내부의 파일 접근 모니터링 방법을 나타낸 동작 흐름도이다.
도 6은 시스템 호출과 디스크 캐시의 접근을 동시에 탐지하여, 가상 머신 내의 모든 파일 접근을 모니터링하기 위한 구성을 포함하는 가상 머신 내부의 파일 접근 모니터링 방법을 나타낸다.
도 6을 참조하면, 본 발명의 일 실시예에 따른 가상 머신 내부의 파일 접근 모니터링 방법은, 새로운 작업이 처음으로 파일에 접근하는 등 필요한 시점에 해당 작업의 작업 식별 정보를 생성한다(S601).
이때, 각 가상 머신 내에서 현재 실행중인 대상 프로세스의 CR3 레지스터 값과 동일한 CR3 레지스터 값을 갖는 프로세스가, 자신의 가상 머신별 작업 관리 목록에의 등재 여부 또는 이미 생성된 작업 식별 정보가 존재하는가의 여부로 새로운 작업의 존재를 확인할 수 있다.
이때, 작업 식별 정보는 CR3 레지스터의 값으로 대변되는 가리키는 해당 작업의 페이지 테이블 주소를 사용하여 생성한 작업 ID(taskID)를 포함할 수 있다.
이때, 작업 식별 정보는 대상 프로그램의 소속 가상 머신, 실행 파일의 경로, 이미지 파일의 해시값 등을 사용하여 생성할 수 있다.
만약, 동일 CR3 값을 갖는 스레드들 간의 구분이 필요한 경우 게스트 운영 체제의 프로세스 관리 데이터구조에서 각 프로세스에 대한 엔트리를 찾고, 해당 엔트리에서 각 스레드를 식별하는 식별자(예컨대, 스레드 ID)를 찾아 CR3 레지스터 값과 결합하여 ID로 사용할 수 있다.
이때, 작업 식별 정보의 생성이 필요한 시점 및 대상은 모니터링 중인 디스크 캐시의 페이지 프레임으로 접근 시도가 발생한 시점에서 접근을 시도한 프로세스 및 시스템 호출에 의해 파일 데이터를 접근하려는 시도가 발생한 시점에서 해당 시스템을 호출한 프로세스를 기준으로 할 수 있다.
또한, 본 발명의 일 실시예에 따른 가상 머신 내부의 파일 접근 모니터링 방법은, 모니터링 중인 작업이 접근하는 파일에 대한 open()/read()/write()/close() 등의 시스템 호출을 탐지하여, 호출시 입력된 인수 값들을 추출함으로써 접근 대상 파일의 정보를 획득한다(S603).
이때, 하이퍼바이저는 획득한 파일의 정보를 대상 작업의 ID와 연결하여 <taskID, PathName> 또는 <taskID, 파일 정보>와 같은 검색 키를 생성할 수 있다.
이때, 입력된 인수는 게스트 운영체제의 구현에 따라 레지스터, 스택 프레임 또는 별도로 할당된 메모리에서 읽어들일 수 있다.
이때, 필요한 경우, 시스템 호출 인수에서 추출된 파일 정보는 해당 시스템 호출에 의해 로드된 데이터가 저장되는 페이지 프레임의 메타데이터 영역에 저장할 수 있다.
또한, 본 발명의 일 실시예에 따른 가상 머신 내부의 파일 접근 모니터링 방법은, 가상 머신 내에서 작업들이 생성하는 스토리지 입출력 요청의 생성을 추적하고, 해당 요청과 연계된 입출력 완료 핸들러의 호출 이벤트를 탐지함으로써 요청된 파일의 위치 정보와 함께 해당 파일 데이터가 적재된 디스크 캐시에 속한 메모리의 페이지 프레임 번호(PFN) 값을 수집하여 각 가상 머신별로 관리한다(S605).
이때, 위치 정보에는 스토리지 내의 섹터 번호 및 오프셋 등이 포함될 수 있다.
또한, 본 발명의 일 실시예에 따른 가상 머신 내부의 파일 접근 모니터링 방법은, 페이지 프레임 번호에 저장된 데이터를 로드하도록 하는 시스템 호출의 인수에서 시맨틱 정보를 추출하고, 이를 <PFN, 파일 정보>의 형태로 해당 페이지 프레임에 연결되어 있는 모니터링 메타데이터에 추가하고 하이퍼바이저가 관리한다(S607).
만약, 프리패치(prefetch) 등의 기능을 통해 로딩되는 등 데이터에 시스템 호출 인수에서 추출하여 연결한 정보가 없는 경우, 확보한 <PFN, 위치 정보>를 기반으로 디스크 캐시에 속한 페이지 프레임에 저장된 데이터의 소속 파일에 대한 시맨틱 정보(소속 파일의 절대경로 등)를 가상 머신 내 게스트 운영체제의 파일 시스템으로부터 추출하고, 이를 <PFN, 파일 정보>의 형태로 해당 페이지 프레임에 연결되어 있는 모니터링 메타데이터에 추가하고 하이퍼바이저가 관리할 수 있다.
또한, 본 발명의 일 실시예에 따른 가상 머신 내부의 파일 접근 모니터링 방법은, 작업에 의해 디스크 캐시에 속한 페이지 프레임이 접근되면 해당 이벤트를 탐지하고, 이벤트를 생성한 작업의 작업 식별 정보를 확보하여 <taskID, PFN, 파일 정보> 또는 <taskID, 파일 정보>와 같은 이벤트 정보를 생성한다(S609).
또한, 본 발명의 일 실시예에 따른 가상 머신 내부의 파일 접근 모니터링 방법은, 하이퍼바이저에서 생성한 <taskID, 파일 정보>를 검색 키로 이용하여 화이트리스트에 해당 항목이 존재하는지 여부에 따라 작업 허용 여부를 결정한다(S611).
만약, 화이트리스트에 일치하는 항목이 존재할 경우에는 허용된 작업이므로, 해당 작업을 허용하고 아무런 동작도 하지 않는다. 하지만, 화이트리스트에 일치하는 항목이 존재하지 않을 경우에는 허용되지 않은 작업이므로, 기설정된 동작을 수행하도록 할 수 있다.
이때, 허용되지 않은 작업에 대해서 대상 작업의 실행을 강제 종료하도록 할 수 있다.
이때, 화이트리스트는 사전에 관리자에 의하여 <taskID, 접근 허용 파일 정보>와 같은 형태의 목록으로 작성될 수 있다.
이상 설명된 본 발명에 따른 실시예는 다양한 컴퓨터 구성요소를 통하여 실행될 수 있는 프로그램 명령어의 형태로 구현되어 컴퓨터 판독 가능한 기록 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능한 기록 매체는 프로그램 명령어, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 컴퓨터 판독 가능한 기록 매체에 기록되는 프로그램 명령어는 본 발명을 위하여 특별히 설계되고 구성된 것이거나 컴퓨터 소프트웨어 분야의 당업자에게 공지되어 사용 가능한 것일 수 있다. 컴퓨터 판독 가능한 기록 매체의 예에는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM 및 DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical medium), 및 ROM, RAM, 플래시 메모리 등과 같은, 프로그램 명령어를 저장하고 실행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령어의 예에는, 컴파일러에 의하여 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용하여 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드도 포함된다. 하드웨어 장치는 본 발명에 따른 처리를 수행하기 위하여 하나 이상의 소프트웨어 모듈로 변경될 수 있으며, 그 역도 마찬가지이다.
본 발명에서 설명하는 특정 실행들은 일 실시 예들로서, 어떠한 방법으로도 본 발명의 범위를 한정하는 것은 아니다. 명세서의 간결함을 위하여, 종래 전자적인 구성들, 제어시스템들, 소프트웨어, 상기시스템들의 다른 기능적인 측면들의 기재는 생략될 수 있다. 또한, 도면에 도시된 구성 요소들 간의 선들의 연결 또는 연결 부재들은 기능적인 연결 및/또는 물리적 또는 회로적 연결들을 예시적으로 나타낸 것으로서, 실제 장치에서는 대체 가능하거나 추가의 다양한 기능적인 연결, 물리적인 연결, 또는 회로 연결들로서 나타내어질 수 있다. 또한, “필수적인”, “중요하게” 등과 같이 구체적인 언급이 없다면 본 발명의 적용을 위하여 반드시 필요한 구성 요소가 아닐 수 있다.
따라서, 본 발명의 사상은 상기 설명된 실시예에 국한되어 정해져서는 아니되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 또는 이로부터 등가적으로 변경된 모든 범위는 본 발명의 사상의 범주에 속한다고 할 것이다.
1: 가상 머신 내부의 파일 접근 모니터링 시스템
100: 가상 머신 내부의 파일 접근 모니터링 장치
110: 하이퍼바이저
210: 가상 머신 220: 클라이언트 장치
230: 스토리지
100: 가상 머신 내부의 파일 접근 모니터링 장치
110: 하이퍼바이저
210: 가상 머신 220: 클라이언트 장치
230: 스토리지
Claims (20)
- 가상 머신 내부의 파일 접근 모니터링 장치에 있어서,
적어도 하나의 가상 머신을 구현하고, 상기 가상 머신이 상기 가상 머신의 환경 정보를 포함한 데이터를 저장하는 스토리지로부터 메모리로 로딩된 파일에 접근하는 작업을 모니터링하여 상기 가상 머신을 관리하는 하이퍼바이저
를 포함하고,
상기 하이퍼바이저는
상기 작업에 대한 작업 식별 정보를 생성하고, 상기 작업 식별 정보를 이용하여 새로운 작업인지 여부를 판단하는 작업 식별부; 및
기설정된 작업 식별 정보와 접근 허용 파일 정보를 포함한 화이트리스트를 이용하여 상기 작업에 대한 허용 여부를 결정하는 결정부
를 포함하고,
상기 작업 식별부는
상기 작업이 새로운 작업으로 판단된 경우,
상기 작업에 대하여 상기 작업이 동작하는 코어의 레지스터 값을 단독으로 사용하거나 상기 레지스터 값에 상기 작업의 원본 이미지 파일의 경로 이름을 결합한 간소화된 작업 식별 정보를 생성하고, 상기 작업에서 접근하는 파일을 특정하는 간소화된 파일 정보를 생성하여
각 항목으로 상기 간소화된 작업 식별 정보, 상기 간소화된 파일 정보 및 작업의 파일 접근 허용 여부를 함께 포함하는 인덱스 테이블을 생성하고,
상기 결정부는
상기 작업 식별 정보에 상응하는 상기 간소화된 작업 식별 정보를 이용하여 상기 인덱스 테이블에서 상기 작업에 대한 상기 간소화된 파일 정보 및 상기 작업의 파일 접근 허용 여부를 검색하고,
상기 인덱스 테이블에서 검색된 상기 간소화된 파일 정보 및 상기 작업의 파일 접근 허용 여부에 상응하는 상기 접근 허용 파일 정보 및 상기 작업 식별 정보를 이용하여 상기 화이트리스트를 검색하기 위한 검색 키를 생성하고, 상기 검색 키를 이용하여 상기 화이트리스트를 검색하여 상기 작업의 허용 여부를 결정하는, 가상 머신 내부의 파일 접근 모니터링 장치. - 삭제
- 청구항 1에 있어서,
상기 하이퍼바이저는
상기 가상 머신 내의 운영체제에서 생성하여 전달하는 상기 스토리지에 대한 입출력 요청을 분석하여 요청된 파일에 대한 스토리지 상의 위치 정보와 상기 파일이 적재된 디스크 캐시에 속한 메모리의 페이지 프레임 번호를 수집하는 입출력 정보 분석부;
상기 페이지 프레임 번호 또는 상기 스토리지 상의 위치 정보를 이용하여 상기 파일에 대한 시맨틱 정보를 추출하고, 이를 페이지 프레임 번호와 상기 시맨틱 정보에 상응하는 파일 정보를 해당 페이지 프레임에 연결된 모니터링 메타데이터에 추가하는 파일 정보 추출부; 및
상기 디스크 캐시에 속한 페이지 프레임에 접근 이벤트가 발생한 경우, 해당 작업에 상응하는 작업 식별 정보를 획득하여 이벤트 정보를 생성하는 디스크 캐시 접근 탐지부
를 더 포함하는 것인, 가상 머신 내부의 파일 접근 모니터링 장치. - 청구항 3에 있어서,
상기 하이퍼바이저는
상기 작업에 의한 시스템 호출을 탐지하고, 시스템 호출 테이블을 모니터링하여 상기작업이 시스템을 호출시 함께 입력된 시스템 호출 인수를 확보하여, 상기 작업이 접근을 시도하는 파일에 상응하는 파일 정보를 획득하는 시스템 호출 탐지부
를 더 포함하고,
상기 결정부는
상기 작업에 상응하는 상기 작업 식별 정보 및 상기 작업이 접근을 시도하는 상기 파일에 상응하는 파일 정보가 상기 화이트리스트에 포함되어 있는 경우, 상기 작업을 허용하는 것인, 가상 머신 내부의 파일 접근 모니터링 장치. - 청구항 4에 있어서,
상기 결정부는
상기 작업 식별 정보 및 상기 파일 정보가 상기 화이트리스트에 포함되어 있지 않은 경우, 상기 작업에 대해서 기지정된 동작을 수행하는 것인, 가상 머신 내부의 파일 접근 모니터링 장치. - 청구항 5에 있어서,
상기 기지정된 동작은
상기 작업을 강제로 종료하는 것인, 가상 머신 내부의 파일 접근 모니터링 장치. - 삭제
- 청구항 6에 있어서,
상기 시스템 호출 탐지부는
상기 시스템 호출 인수로부터 획득한 파일 정보를 상기 시스템 호출에 의해 로드된 데이터가 저장되는 페이지 프레임의 메타데이터 영역에 저장하는 것인, 가상 머신 내부의 파일 접근 모니터링 장치. - 청구항 8에 있어서,
상기 시맨틱 정보는
상기 스토리지 상의 위치 정보를 이용하여 상기 디스크 캐시의 메타데이터 정보를 역추적하여 획득하는 것인, 가상 머신 내부의 파일 접근 모니터링 장치. - 청구항 8에 있어서,
상기 시맨틱 정보는
상기 스토리지 상의 위치 정보를 이용하여 상기 시스템 호출 인수에서의 파일 정보를 추출하여 획득하는 것인, 가상 머신 내부의 파일 접근 모니터링 장치. - 가상 머신 내부의 파일 접근 모니터링 장치의 가상 머신 내부의 파일 접근 모니터링 방법에 있어서,
하이퍼바이저가, 적어도 하나의 가상 머신을 구현하는 단계; 및
상기 하이퍼바이저가, 상기 가상 머신이 상기 가상 머신의 환경 정보를 포함한 데이터를 스토리지로부터 메모리로 로딩된 파일에 접근하는 작업을 모니터링하여 상기 가상 머신을 관리하는 단계
를 포함하고,
상기 가상 머신을 관리하는 단계는
상기 작업에 대한 작업 식별 정보를 생성하는 단계;
상기 작업 식별 정보를 이용하여 새로운 작업인지 여부를 판단하는 단계; 및
기설정된 작업 식별 정보와 접근 허용 파일 정보를 포함한 화이트리스트를 이용하여 상기 작업에 대한 허용 여부를 결정하는 단계
를 포함하고,
상기 작업 식별 정보를 생성하는 단계는
상기 작업이 새로운 작업으로 판단된 경우,
상기 작업에 대하여 상기 작업이 동작하는 코어의 레지스터 값을 단독으로 사용하거나 상기 레지스터 값에 상기 작업의 원본 이미지 파일의 경로 이름을 결합한 간소화된 작업 식별 정보를 생성하고, 상기 작업에서 접근하는 파일을 특정하는 간소화된 파일 정보를 생성하여
각 항목으로 상기 간소화된 작업 식별 정보, 상기 간소화된 파일 정보 및 작업의 파일 접근 허용 여부를 함께 포함하는 인덱스 테이블을 생성하고,
상기 허용 여부를 결정하는 단계는
상기 작업 식별 정보에 상응하는 상기 간소화된 작업 식별 정보를 이용하여 상기 인덱스 테이블에서 상기 작업에 대한 상기 간소화된 파일 정보 및 상기 작업의 파일 접근 허용 여부를 검색하고,
상기 인덱스 테이블에서 검색된 상기 간소화된 파일 정보 및 상기 작업의 파일 접근 허용 여부에 상응하는 상기 접근 허용 파일 정보 및 상기 작업 식별 정보를 이용하여 상기 화이트리스트를 검색하기 위한 검색 키를 생성하고, 상기 검색 키를 이용하여 상기 화이트리스트를 검색하여 상기 작업의 허용 여부를 결정하는, 가상 머신 내부의 파일 접근 모니터링 방법. - 삭제
- 청구항 11에 있어서,
상기 가상 머신을 관리하는 단계는
상기 가상 머신 내의 운영체제에서 생성하여 전달하는 상기 스토리지에 대한 입출력 요청을 분석하여 요청된 파일에 대한 스토리지 상의 위치 정보와 상기 파일이 적재된 디스크 캐시에 속한 메모리의 페이지 프레임 번호를 수집하는 단계;
상기 페이지 프레임 번호 또는 상기 스토리지 상의 위치 정보를 이용하여 상기 파일에 대한 시맨틱 정보를 추출하고, 이를 페이지 프레임 번호와 상기 시맨틱 정보에 상응하는 파일 정보를 해당 페이지 프레임에 연결된 모니터링 메타데이터에 추가하는 단계; 및
상기 디스크 캐시에 속한 페이지 프레임에 접근 이벤트가 발생한 경우, 해당 작업에 상응하는 작업 식별 정보를 획득하여 이벤트 정보를 생성하는 단계
를 더 포함하는 것인, 가상 머신 내부의 파일 접근 모니터링 방법. - 청구항 13에 있어서,
상기 가상 머신을 관리하는 단계는
상기 작업에 의한 시스템 호출을 탐지하고, 시스템 호출 테이블을 모니터링하여 상기작업이 시스템을 호출시 함께 입력된 시스템 호출 인수를 확보하여 상기 작업이 접근을 시도하는 파일에 상응하는 파일 정보를 획득하는 단계
를 더 포함하고,
상기 허용 여부를 결정하는 단계는
상기 작업에 상응하는 상기 작업 식별 정보 및 상기 작업이 접근을 시도하는 상기 파일에 상응하는 파일 정보가 상기 화이트리스트에 포함되어 있는 경우, 상기 작업을 허용하는 것인, 가상 머신 내부의 파일 접근 모니터링 방법. - 청구항 14에 있어서,
상기 허용 여부를 결정하는 단계는
상기 작업 식별 정보 및 상기 파일 정보가 상기 화이트리스트에 포함되어 있지 않은 경우, 상기 작업에 대해서 기지정된 동작을 수행하는 것인, 가상 머신 내부의 파일 접근 모니터링 방법. - 청구항 15에 있어서,
상기 기지정된 동작은
상기 작업을 강제로 종료하는 것인, 가상 머신 내부의 파일 접근 모니터링 방법. - 삭제
- 청구항 16에 있어서,
상기 파일 정보를 획득하는 단계는
상기 시스템 호출 인수로부터 획득한 파일 정보를 상기 시스템 호출에 의해 로드된 데이터가 저장되는 페이지 프레임의 메타데이터 영역에 저장하는 것인, 가상 머신 내부의 파일 접근 모니터링 방법. - 청구항 18에 있어서,
상기 시맨틱 정보는
상기 스토리지 상의 위치 정보를 이용하여 상기 디스크 캐시의 메타데이터 정보를 역추적하여 획득하는 것인, 가상 머신 내부의 파일 접근 모니터링 방법. - 청구항 18에 있어서,
상기 시맨틱 정보는
상기 스토리지 상의 위치 정보를 이용하여 상기 시스템 호출 인수에서의 파일 정보를 추출하여 획득하는 것인, 가상 머신 내부의 파일 접근 모니터링 방법.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170099703A KR101931779B1 (ko) | 2017-08-07 | 2017-08-07 | 가상 머신 내부의 파일 접근 모니터링 장치 및 그 방법 |
US15/938,003 US10965679B2 (en) | 2017-08-07 | 2018-03-28 | Apparatus for monitoring file access in virtual machine and method for the same |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020170099703A KR101931779B1 (ko) | 2017-08-07 | 2017-08-07 | 가상 머신 내부의 파일 접근 모니터링 장치 및 그 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR101931779B1 true KR101931779B1 (ko) | 2018-12-21 |
Family
ID=64960035
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020170099703A KR101931779B1 (ko) | 2017-08-07 | 2017-08-07 | 가상 머신 내부의 파일 접근 모니터링 장치 및 그 방법 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10965679B2 (ko) |
KR (1) | KR101931779B1 (ko) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11507653B2 (en) * | 2018-08-21 | 2022-11-22 | Vmware, Inc. | Computer whitelist update service |
US11741056B2 (en) | 2019-11-01 | 2023-08-29 | EMC IP Holding Company LLC | Methods and systems for allocating free space in a sparse file system |
US20220166778A1 (en) * | 2020-11-24 | 2022-05-26 | Saudi Arabian Oil Company | Application whitelisting based on file handling history |
US20220350933A1 (en) * | 2021-04-29 | 2022-11-03 | EMC IP Holding Company LLC | Methods and systems for securing data in a distributed storage system |
US11740822B2 (en) | 2021-04-29 | 2023-08-29 | EMC IP Holding Company LLC | Methods and systems for error detection and correction in a distributed storage system |
US11669259B2 (en) | 2021-04-29 | 2023-06-06 | EMC IP Holding Company LLC | Methods and systems for methods and systems for in-line deduplication in a distributed storage system |
US11892983B2 (en) | 2021-04-29 | 2024-02-06 | EMC IP Holding Company LLC | Methods and systems for seamless tiering in a distributed storage system |
US11677633B2 (en) | 2021-10-27 | 2023-06-13 | EMC IP Holding Company LLC | Methods and systems for distributing topology information to client nodes |
US12007942B2 (en) | 2021-10-27 | 2024-06-11 | EMC IP Holding Company LLC | Methods and systems for seamlessly provisioning client application nodes in a distributed system |
US11922071B2 (en) | 2021-10-27 | 2024-03-05 | EMC IP Holding Company LLC | Methods and systems for storing data in a distributed system using offload components and a GPU module |
US11762682B2 (en) | 2021-10-27 | 2023-09-19 | EMC IP Holding Company LLC | Methods and systems for storing data in a distributed system using offload components with advanced data services |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010282242A (ja) | 2007-08-20 | 2010-12-16 | Nec Corp | アクセス制御システム、アクセス制御方法およびアクセス制御用プログラム |
KR101072807B1 (ko) | 2010-09-30 | 2011-10-14 | 한국과학기술원 | 가상 머신 모니터 시스템 |
KR101482903B1 (ko) * | 2014-02-06 | 2015-01-15 | (주)누스코 | 데이터 유출 방지 방법, 서버 장치, 및 클라이언트 장치 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7370324B2 (en) * | 2003-09-30 | 2008-05-06 | Intel Corporation | Switching between a service virtual machine and a guest virtual machine in a virtual machine monitor environment |
US8738932B2 (en) * | 2009-01-16 | 2014-05-27 | Teleputers, Llc | System and method for processor-based security |
JPWO2010097933A1 (ja) * | 2009-02-27 | 2012-08-30 | 富士通株式会社 | 情報処理装置、情報処理方法及びコンピュータプログラム |
US9229757B2 (en) * | 2010-07-19 | 2016-01-05 | International Business Machines Corporation | Optimizing a file system interface in a virtualized computing environment |
KR20130022091A (ko) | 2011-08-24 | 2013-03-06 | 주식회사 케이티 | 클라우드 컴퓨팅 서버 시스템의 가상머신 제어 장치 및 방법 |
US9223962B1 (en) * | 2012-07-03 | 2015-12-29 | Bromium, Inc. | Micro-virtual machine forensics and detection |
US9218193B2 (en) * | 2013-07-12 | 2015-12-22 | International Business Machines Corporation | Distributed virtual machine image management for cloud computing |
US20150058519A1 (en) * | 2013-08-22 | 2015-02-26 | International Business Machines Corporation | Detection of hot pages for partition hibernation |
US9507935B2 (en) * | 2014-01-16 | 2016-11-29 | Fireeye, Inc. | Exploit detection system with threat-aware microvisor |
WO2016135809A1 (ja) * | 2015-02-23 | 2016-09-01 | 株式会社日立製作所 | 計算機システムおよび計算機システムのキャッシュ管理方法 |
KR20160136489A (ko) | 2015-05-19 | 2016-11-30 | (주)나누미넷 | 클라우드 서비스를 위한 가상화 기반 자원 관리 방법 |
KR101673774B1 (ko) | 2015-06-01 | 2016-11-08 | 주식회사 수산아이앤티 | 가상화 시스템에서 파일 입출력 제어를 위한 방법 |
US10142353B2 (en) * | 2015-06-05 | 2018-11-27 | Cisco Technology, Inc. | System for monitoring and managing datacenters |
KR101816751B1 (ko) | 2015-10-07 | 2018-01-10 | 한국전자통신연구원 | 하이퍼바이저 기반의 가상머신 모니터링 장치 및 방법 |
US10121004B2 (en) | 2015-10-07 | 2018-11-06 | Electronics And Telecommunications Research Institute | Apparatus and method for monitoring virtual machine based on hypervisor |
US9990222B2 (en) * | 2016-03-18 | 2018-06-05 | Airwatch Llc | Enforcing compliance rules against hypervisor and virtual machine using host management component |
US11265291B2 (en) * | 2017-08-25 | 2022-03-01 | Red Hat, Inc. | Malicious packet filtering by a hypervisor |
US10996974B2 (en) * | 2019-01-30 | 2021-05-04 | Commvault Systems, Inc. | Cross-hypervisor live mount of backed up virtual machine data, including management of cache storage for virtual machine data |
-
2017
- 2017-08-07 KR KR1020170099703A patent/KR101931779B1/ko active IP Right Grant
-
2018
- 2018-03-28 US US15/938,003 patent/US10965679B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010282242A (ja) | 2007-08-20 | 2010-12-16 | Nec Corp | アクセス制御システム、アクセス制御方法およびアクセス制御用プログラム |
KR101072807B1 (ko) | 2010-09-30 | 2011-10-14 | 한국과학기술원 | 가상 머신 모니터 시스템 |
KR101482903B1 (ko) * | 2014-02-06 | 2015-01-15 | (주)누스코 | 데이터 유출 방지 방법, 서버 장치, 및 클라이언트 장치 |
Also Published As
Publication number | Publication date |
---|---|
US10965679B2 (en) | 2021-03-30 |
US20190044946A1 (en) | 2019-02-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101931779B1 (ko) | 가상 머신 내부의 파일 접근 모니터링 장치 및 그 방법 | |
US11663031B2 (en) | Techniques for securing virtual cloud assets at rest against cyber threats | |
Bauman et al. | A survey on hypervisor-based monitoring: approaches, applications, and evolutions | |
Hizver et al. | Real-time deep virtual machine introspection and its applications | |
US8468310B2 (en) | Method and system for tracking data correspondences | |
CN109074450B (zh) | 威胁防御技术 | |
Bianchi et al. | Blacksheep: Detecting compromised hosts in homogeneous crowds | |
US10121004B2 (en) | Apparatus and method for monitoring virtual machine based on hypervisor | |
KR20160030385A (ko) | 가상 머신에서 멀웨어 탐지를 위한 프로세스 평가 | |
US11494491B2 (en) | Systems and methods for protecting against malware code injections in trusted processes by a multi-target injector | |
EP3991073B1 (en) | Behavior-based vm resource capture for forensics | |
US20220035905A1 (en) | Malware analysis through virtual machine forking | |
US10061918B2 (en) | System, apparatus and method for filtering memory access logging in a processor | |
CN103886259A (zh) | 基于Xen虚拟化环境的内核级rootkit检测和处理方法 | |
CN109120618B (zh) | 一种基于硬件虚拟化的云平台受控侧信道攻击检测方法 | |
Kourai et al. | Efficient VM introspection in KVM and performance comparison with Xen | |
US9785492B1 (en) | Technique for hypervisor-based firmware acquisition and analysis | |
US9971613B2 (en) | Tag based permission system and method for virtualized environments | |
US9696940B1 (en) | Technique for verifying virtual machine integrity using hypervisor-based memory snapshots | |
US20170153982A1 (en) | Invalidation of translation look-aside buffer entries by a guest operating system | |
Patel et al. | Using {Trātṛ} to tame Adversarial Synchronization | |
KR102656980B1 (ko) | 가상화 환경에서 인스턴스의 메모리를 연속적으로 기록하는 방법 및 장치 | |
Zhan et al. | SAVM: A practical secure external approach for automated in‐VM management | |
Xu et al. | Research on semantic gap problem of virtual machine | |
US20240111857A1 (en) | Secure execution of a file on a copy device in a virtualized computing environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
GRNT | Written decision to grant |