KR101049916B1 - Virtualization Security System and Methods - Google Patents

Virtualization Security System and Methods Download PDF

Info

Publication number
KR101049916B1
KR101049916B1 KR1020090109139A KR20090109139A KR101049916B1 KR 101049916 B1 KR101049916 B1 KR 101049916B1 KR 1020090109139 A KR1020090109139 A KR 1020090109139A KR 20090109139 A KR20090109139 A KR 20090109139A KR 101049916 B1 KR101049916 B1 KR 101049916B1
Authority
KR
South Korea
Prior art keywords
virtual
database
virtualization
stored
resource
Prior art date
Application number
KR1020090109139A
Other languages
Korean (ko)
Other versions
KR20110052194A (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 KR1020090109139A priority Critical patent/KR101049916B1/en
Publication of KR20110052194A publication Critical patent/KR20110052194A/en
Application granted granted Critical
Publication of KR101049916B1 publication Critical patent/KR101049916B1/en

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/56Computer malware detection or handling, e.g. anti-virus arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/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
    • G06F21/53Monitoring 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 by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0227Filtering policies
    • H04L63/0263Rule management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • H04L63/1416Event detection, e.g. attack signature detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support

Abstract

프로세스를 가상화하여, 실제 프로세스와 격리되도록 함으로써, 사용 중 악성 코드 등에 의한 감염을 방지하여 보안을 유지할 수 있도록 하는 시스템 및 방법이 제공된다. 본 발명은 가상화 보안 시스템에 관한 것으로, 운영체제에서 제공하는 실제 자원(resource)과 구별되는 가상 자원을 제공하고, 가상 프로세스를 구동시킨 뒤 이를 가상 프로세스 데이터베이스에 저장하여 관리하면서, 가상 프로세스에서 자원을 요청하는 경우 상기 가상 자원을 이용하도록 제어함으로써, 가상 프로세스와 실제 프로세스를 격리하여 시스템의 보안을 유지할 수 있도록 하는 시스템 및 방법에 관한 것이다.A system and method are provided to virtualize a process so that it is isolated from an actual process, thereby preventing infection by malicious code during use and maintaining security. The present invention relates to a virtualization security system, and provides a virtual resource that is distinguished from the actual resources (resource) provided by the operating system, running the virtual process and storing it in a virtual process database, while managing the request, the virtual resource The present invention relates to a system and a method for maintaining security of a system by isolating a virtual process and a real process by controlling to use the virtual resource.

보안, 가상, 가상화, 가상 자원, 가상 프로세스 Security, Virtualization, Virtualization, Virtual Resources, Virtual Processes

Description

가상화 보안 시스템 및 방법 {A SYSTEM FOR SECURITY USING VIRTUALIZATION AND A METHOD THEREFOR}Virtualization Security Systems and Methods {A SYSTEM FOR SECURITY USING VIRTUALIZATION AND A METHOD THEREFOR}

본 발명은 컴퓨터 시스템에서 악성 코드 감염 등을 방지하고 보안을 유지할 수 있도록 하는 시스템 및 방법에 관한 것이다.The present invention relates to a system and method for preventing malicious code infection and maintaining security in a computer system.

최근 인터넷 환경이 발달하면서 바이러스 등의 악성 코드의 전파가 활발해지고, 이에 의한 피해가 늘어남에 따라 보안 문제에 대한 관심이 높아지고 있다. 바이러스 등의 악성 코드는 프로세스, 파일 시스템, 레지스트리 등에 감염되어 개인 정보를 유출시키거나 시스템을 파괴하고, 다른 시스템에 대한 DDOS 공격 등을 수행하도록 하는 것이다.Recently, with the development of the Internet environment, the propagation of malicious codes such as viruses is active, and as the damage is increased, interest in security issues is increasing. Malware, such as viruses, infects processes, file systems, and registries to leak personal information, destroy systems, and perform DDOS attacks on other systems.

도 1은 종래 기술에 따른 악성 코드의 전염 과정을 도시하는 도면이다.1 is a diagram illustrating a process of transmitting malicious code according to the prior art.

도면에 도시한 바와 같이, 기존의 컴퓨터 시스템(101)에서는 웹 브라우저(110)를 통하여 웹 사이트(102)에 접속하였을 때, 웹 사이트에서 악성 코드(150)가 웹 브라우저(110)를 감염시키게 되고, 웹 브라우저(110)에 복사된 악성 코드(151)는 웹 브라우저와 데이터를 주고 받을 수 있는 다른 프로세스(120)에 복사 되어 다른 프로세스(120)를 감염시키거나, 파일시스템(130) 및 레지스트리(140)를 감염시킴으로써, 웹 브라우저(110)뿐 아니라 다른 다양한 기능들에까지 영향을 미치게 된다.As shown in the drawing, in the conventional computer system 101, when accessing the web site 102 through the web browser 110, malicious code 150 infects the web browser 110 in the web site. , The malicious code 151 copied to the web browser 110 is copied to another process 120 that can exchange data with the web browser to infect other processes 120, or the file system 130 and the registry ( Infecting 140 affects not only the web browser 110 but also various other functions.

이와 같이 악성 코드에 감염되게 되면 악성 코드에 처음 접근한 웹 브라우저(110) 등의 프로그램을 통해 다른 모든 프로세스 및 자원들도 악성 코드에 오염되게 되므로, 이를 복구하기가 어렵고, 중요한 시스템 자원이 감염되는 경우 중요 데이터가 손실되거나, 시스템 자체가 파괴되는 등의 커다란 문제가 발생할 수 있다.As such, when infected with malicious code, all other processes and resources are also contaminated with malicious code through a program such as a web browser 110 that first accesses the malicious code, so that it is difficult to recover them, and important system resources are infected. This can cause major problems such as the loss of important data or the destruction of the system itself.

특히 PC방에서와 같이 하나의 컴퓨터 시스템을 복수의 사용자들이 이용하는 경우에는 타인의 사용으로 인하여 감염된 악성 코드에 의해서 시스템이 손상되거나, 중요한 개인정보가 유출되는 등의 문제가 발생할 수 있는 가능성이 매우 높다.In particular, when a single computer system is used by a plurality of users, such as in a PC room, it is very likely that problems may occur due to the use of other people, such as damage to the system or leakage of important personal information. .

따라서, 컴퓨터 시스템이 악성 코드에 노출되는 경우에도 시스템에서 중요한 부분들까지 감염되는 것을 방지하고, 감염 이전의 상태로 간단하게 복구할 수 있도록 하는 시스템 및 방법이 요구된다.Therefore, there is a need for a system and method that prevents infection of critical parts of the system even when the computer system is exposed to malicious code, and enables a simple recovery to a state before infection.

본 발명은 악성 코드의 감염 등 보안상 문제를 방지할 수 있도록 하는 가상화 보안 시스템 및 방법을 제공할 수 있다.The present invention can provide a virtualization security system and method for preventing a security problem such as infection of malicious code.

본 발명은 컴퓨터 시스템을 가상 영역과 실제 영역으로 구분하여 두 영역을 서로 차단함으로써, 가상 영역에서 보안상 문제가 발생하더라도 실제 영역에 영향을 주지 않도록 하는 가상화 보안 시스템 및 방법을 제공할 수 있다.The present invention can provide a virtualization security system and method by dividing a computer system into a virtual area and a real area so as to block two areas from each other, so that a security problem in the virtual area does not affect the real area.

본 발명은 미리 등록된 프로그램에 대해서만 가상 프로세스로 구동할 수 있도록 함으로써, 보다 안전하게 시스템을 관리할 수 있도록 하는 가상화 보안 시스템 및 방법을 제공할 수 있다.The present invention can provide a virtualization security system and method for managing a system more securely by allowing only a pre-registered program to run as a virtual process.

본 발명은 가상 프로세스가 실제 프로세스와 IPC를 수행할 수 없도록 방지함으로써, 가상 프로세스가 악성 코드에 감염되더라도 이것이 실제 프로세스에 전염되지 않도록 하는 가상화 보안 시스템 및 방법을 제공할 수 있다.The present invention can provide a virtualization security system and method by preventing a virtual process from performing an IPC with a real process, so that even if the virtual process is infected with malicious code, it is not transmitted to the real process.

본 발명은 가상 파일 시스템을 제공하고, 가상 프로세스의 데이터를 암호화하여 가상 파일 시스템에 저장하도록 함으로써, 실제 영역에서는 가상 영역에서 작성된 데이터에 접근할 수 없도록 하는 가상화 보안 시스템 및 방법을 제공할 수 있다.The present invention provides a virtual file system, and by encrypting the data of the virtual process to be stored in the virtual file system, it is possible to provide a virtualization security system and method that makes the data created in the virtual area inaccessible.

본 발명의 일실시예에 따른 가상화 보안 시스템은 컴퓨터의 운영체제에서 제공하는 실제 자원(resource)과 구별되며, 가상 프로세스(virtual process) 동작에 필요한 자원을 제공하는 가상 자원, 실행중인 가상 프로세스의 목록을 저장하는 가상 프로세스 데이터베이스, 가상 프로세스를 구동시키고 상기 구동된 가상 프로세스에 대한 정보를 상기 가상 프로세스 데이터베이스에 저장하는 가상화 에이전트 및 상기 가상 프로세스 데이터베이스에 저장된 프로세스들이 상기 실제 자원에 접근하지 못하고, 상기 가상 자원만을 이용할 수 있도록 제어하는 가상화 엔진을 포함하여 구성될 수 있다.The virtualization security system according to an embodiment of the present invention is distinguished from actual resources provided by an operating system of a computer, and provides a list of virtual resources and running virtual processes that provide resources necessary for the operation of a virtual process. The virtual process database for storing, the virtualization agent for driving the virtual process and stores information about the driven virtual process in the virtual process database and the processes stored in the virtual process database do not have access to the real resource, only the virtual resource It can be configured to include a virtualization engine that controls its availability.

이 때, 상기 가상화 보안 시스템은 가상 프로세스로 구동될 수 있는 프로그램의 목록을 저장하는 가상화 프로그램 목록 데이터베이스를 더 포함하고, 상기 가상화 에이전트는 상기 가상화 프로그램 목록 데이터베이스에 저장되어 있는 가상 프로세스로 구동될 수 있는 프로그램만을 상기 가상 프로세스로 구동시키도록 구성될 수 있다.At this time, the virtualization security system further includes a virtualization program list database that stores a list of programs that can be run as a virtual process, the virtualization agent may be driven by a virtual process stored in the virtualization program list database Only programs can be configured to run in the virtual process.

이 때, 상기 가상화 프로그램 목록 데이터베이스는 상기 가상 프로세스로 구동될 수 있는 프로그램에 대응하여 상기 프로그램 파일이 저장되어 있는 위치 정보를 저장할 수 있다.In this case, the virtualization program list database may store location information in which the program file is stored, corresponding to a program that can be driven by the virtual process.

또한, 상기 가상화 에이전트는 상기 컴퓨터에서 새로운 프로세스가 구동되면, 상기 구동된 프로세스의 부모 프로세스(parent process)가 상기 가상 프로세스 데이터베이스에 저장되어 있는지 여부를 확인하고, 상기 부모 프로세스가 상기 가상 프로세스 데이터베이스에 저장되어 있으면, 상기 구동된 새로운 프로세스도 상기 가상 프로세스 데이터베이스에 저장할 수 있다.In addition, when a new process is started in the computer, the virtualization agent checks whether a parent process of the driven process is stored in the virtual process database, and the parent process is stored in the virtual process database. If so, the started new process can be stored in the virtual process database.

또한, 상기 가상화 엔진은 상기 컴퓨터에서 구동되는 프로세스의 자원 요청을 확인하고 상기 자원을 요청한 프로세스가 상기 가상 프로세스 데이터베이스에 저장되어 있는지 여부를 확인하여, 상기 가상 프로세스 데이터베이스에 저장되어 있는 경우에는 상기 자원을 요청한 프로세스에게 상기 가상 자원을 제공하고, 그렇지 않은 경우에는 상기 자원을 요청한 프로세스에게 상기 실제 자원을 제공할 수 있다.In addition, the virtualization engine checks a resource request of a process running in the computer and checks whether the process requesting the resource is stored in the virtual process database, and if the resource is stored in the virtual process database, The virtual resource may be provided to the requesting process, or the actual resource may be provided to the process requesting the resource.

그리고, 상기 가상 자원은 상기 컴퓨터의 파일 시스템에 가상 디스크 이미지 파일 형태로 저장되어 상기 가상화 엔진의 제어에 따라 데이터를 읽고 기록하는 가상 파일 시스템을 포함하여 구성될 수 있다.The virtual resource may be configured to include a virtual file system stored in a file system of the computer in the form of a virtual disk image file to read and write data under the control of the virtualization engine.

이 때, 상기 가상화 엔진은 상기 가상 파일 시스템에 데이터를 기록할 때에는 상기 데이터를 암호화 하여 기록하고, 상기 가상 파일 시스템에서 데이터를 읽을 때에는 상기 읽은 데이터를 복호화할 수 있다.At this time, the virtualization engine encrypts and records the data when writing data to the virtual file system, and decrypts the read data when reading data from the virtual file system.

또한, 상기 가상 자원은 가상 레지스트리를 포함할 수 있다.In addition, the virtual resource may include a virtual registry.

또한, 상기 가상화 보안 시스템은 상기 가상 프로세스에 COM (Component Object Model) 객체를 제공하는 가상 COM 서버를 더 포함하고, 상기 가상화 엔진은 상기 컴퓨터에서 구동되는 프로세스에서 COM 서버를 찾는 경우 상기 프로세스가 상기 가상 프로세스 데이터베이스에 저장되어 있는지 여부를 확인하여, 상기 가상 프로세스 데이터베이스에 저장되어 있는 경우에는 상기 가상 COM 서버의 포트(port)를 상기 프로세스에 알려주고, 그렇지 않은 경우에는 운영체제의 COM 서버의 포트를 상기 프로세스에 알려줄 수 있다.The virtualization security system may further include a virtual COM server that provides a COM (Component Object Model) object to the virtual process, and the virtualization engine searches for the COM server in a process running on the computer. It checks whether or not it is stored in the process database, and informs the process of the port of the virtual COM server if it is stored in the virtual process database. I can tell you.

또한, 상기 가상화 엔진은 상기 컴퓨터에서 구동되는 프로세스가 윈도우 핸들 목록 데이터베이스로부터 윈도우 핸들 목록을 검색하는 경우, 상기 프로세스가 상기 가상 프로세스 데이터베이스에 저장되어 있는지 여부를 확인하여, 상기 가상 프로세스 데이터베이스에 저장되어 있는 경우에는 상기 가상 프로세스들의 윈도우 핸들 목록을 전달하고, 그렇지 않은 경우에는 가상 프로세스가 아닌 프로세스들의 윈도우 핸들 목록을 전달할 수 있다.In addition, when the process running on the computer retrieves the window handle list from the window handle list database, the virtualization engine checks whether the process is stored in the virtual process database, and is stored in the virtual process database. In this case, the window handle list of the virtual processes may be transferred. Otherwise, the window handle list of the non-virtual processes may be transferred.

또한, 상기 가상화 엔진은 상기 컴퓨터에서 구동되는 프로세스가 전역 훅 DLL 목록 데이터베이스로부터 DLL을 검색하는 경우, 상기 프로세스가 상기 가상 프로세스 데이터베이스에 저장되어 있는지 여부를 확인하여, 상기 가상 프로세스 데이터베이스에 저장되어 있는 경우에는 상기 가상 프로세스에서 입력한 DLL만을 제공하고, 그렇지 않은 경우에는 가상 프로세스가 아닌 프로세스들에서 입력한 DLL만을 전달할 수 있다.In addition, when the process running on the computer searches for a DLL from a global hook DLL list database, the virtualization engine checks whether the process is stored in the virtual process database, and if the process is stored in the virtual process database. Only DLLs input by the virtual process are provided, otherwise only DLLs input by processes other than the virtual process can be delivered.

본 발명의 일실시예에 따른 가상화 보안 방법은 컴퓨터의 운영체제에서 제공하는 실제 자원(resource)과 구별되며, 가상 프로세스(virtual process) 동작에 필요한 가상 자원을 설정하는 단계, 가상 프로세스를 구동시키는 단계, 상기 구동된 가상 프로세스에 대한 정보를 상기 가상 프로세스 데이터베이스에 저장하는 단계 및 상기 가상 프로세스 데이터베이스에 저장된 프로세스들이 상기 실제 자원에 접근하지 못하고, 상기 가상 자원만을 이용할 수 있도록 제어하는 단계를 포함하여 구성될 수 있다.The virtualization security method according to an embodiment of the present invention is distinguished from actual resources provided by an operating system of a computer, setting a virtual resource required for a virtual process operation, driving a virtual process, And storing information about the driven virtual process in the virtual process database and controlling the processes stored in the virtual process database to use only the virtual resource without accessing the real resource. have.

이 때, 상기 가상화 보안 방법은 가상 프로세스로 구동될 수 있는 프로그 램의 목록을 가상화 프로그램 목록 데이터베이스에 저장하는 단계를 더 포함하고, 상기 가상 프로세스를 구동시키는 단계는 상기 가상화 프로그램 목록 데이터베이스에 저장되어 있는 가상 프로세스로 구동될 수 있는 프로그램만을 상기 가상 프로세스로 구동시킬 수 있다.At this time, the virtualization security method further comprises the step of storing a list of programs that can be run as a virtual process in the virtualization program list database, the step of running the virtual process is stored in the virtualization program list database Only a program that can be driven by a virtual process can be driven by the virtual process.

이 때, 상기 가상화 프로그램 목록 데이터베이스는 상기 가상 프로세스로 구동될 수 있는 프로그램에 대응하여 상기 프로그램 파일이 저장되어 있는 위치 정보를 저장할 수 있다.In this case, the virtualization program list database may store location information in which the program file is stored, corresponding to a program that can be driven by the virtual process.

또한, 상기 구동된 가상 프로세스에 대한 정보를 저장하는 단계는 상기 컴퓨터에서 새로운 프로세스가 구동되면, 상기 구동된 프로세스의 부모 프로세스(parent process)가 상기 가상 프로세스 데이터베이스에 저장되어 있는지 여부를 확인하고, 상기 부모 프로세스가 상기 가상 프로세스 데이터베이스에 저장되어 있으면, 상기 구동된 새로운 프로세스도 상기 가상 프로세스 데이터베이스에 저장할 수 있다.The storing of the information on the driven virtual process may include checking whether a parent process of the driven process is stored in the virtual process database when a new process is started in the computer. If a parent process is stored in the virtual process database, the started new process may also be stored in the virtual process database.

또한, 상기 제어하는 단계는 상기 컴퓨터에서 구동되는 프로세스의 자원 요청을 확인하는 단계, 상기 자원을 요청한 프로세스가 상기 가상 프로세스 데이터베이스에 저장되어 있는지 여부를 확인하는 단계, 상기 가상 프로세스 데이터베이스에 저장되어 있는 경우에는 상기 자원을 요청한 프로세스에게 상기 가상 자원을 제공하는 단계 및 상기 가상 프로세스 데이터베이스에 저장되어 있지 않은 경우에는 상기 자원을 요청한 프로세스에게 상기 실제 자원을 제공하는 단계를 포함하여 구성될 수 있다.In addition, the controlling may include checking a resource request of a process running on the computer, checking whether the process requesting the resource is stored in the virtual process database, or when storing in the virtual process database. The method may include providing the virtual resource to the process requesting the resource, and providing the actual resource to the process requesting the resource if it is not stored in the virtual process database.

또한, 상기 가상 자원은 상기 컴퓨터의 파일 시스템에 가상 디스크 이미지 파일 형태로 저장되어 상기 가상 프로세스의 데이터를 읽고 기록하는 가상 파일 시스템을 포함할 수 있다.The virtual resource may include a virtual file system stored in a file system of the computer in the form of a virtual disk image file to read and write data of the virtual process.

이 때, 상기 제어하는 단계는 상기 가상 파일 시스템에 데이터를 기록할 때에는 상기 데이터를 암호화 하여 기록하고, 상기 가상 파일 시스템에서 데이터를 읽을 때에는 상기 읽은 데이터를 복호화할 수 있다.In this case, the controlling may encrypt and record the data when recording the data in the virtual file system, and decrypt the read data when reading the data in the virtual file system.

또한, 상기 가상 자원은 가상 레지스트리를 포함할 수 있다.In addition, the virtual resource may include a virtual registry.

또한, 상기 가상화 보안 방법은 상기 컴퓨터에서 구동되는 프로세스에서 COM 서버를 찾는 경우 상기 프로세스가 상기 가상 프로세스 데이터베이스에 저장되어 있는지 여부를 확인하는 단계, 상기 가상 프로세스 데이터베이스에 저장되어 있는 경우에는 가상 COM 서버의 포트(port)를 상기 프로세스에 알려주는 단계 및 상기 가상 프로세스 데이터베이스에 저장되어 있지 않은 경우에는 COM 서버의 포트를 상기 프로세스에 알려주는 단계를 더 포함하여 구성될 수 있다.The virtual security method may further include determining whether the process is stored in the virtual process database when the COM server is found by a process running on the computer, and if the process is stored in the virtual process database, And notifying a process of a port of a COM server if not stored in the virtual process database.

또한, 상기 가상화 보안 방법은 상기 컴퓨터에서 구동되는 프로세스가 윈도우 핸들 목록 데이터베이스로부터 윈도우 핸들 목록을 검색하는 경우, 상기 프로세스가 상기 가상 프로세스 데이터베이스에 저장되어 있는지 여부를 확인하는 단계, 상기 가상 프로세스 데이터베이스에 저장되어 있는 경우에는 상기 가상 프로세스들의 윈도우 핸들 목록을 전달하는 단계 및 상기 가상 프로세스 데이터베이스에 저장되어 있지 않은 경우에는 가상 프로세스가 아닌 프로세스들의 윈도우 핸들 목록을 전달하는 단계를 더 포함하여 구성될 수 있다.The virtual security method may further include determining whether the process is stored in the virtual process database when the process running on the computer retrieves the window handle list from the window handle list database. The method may further include transmitting a window handle list of the virtual processes if the information is stored, and a window handle list of the non-virtual processes if the information is not stored in the virtual process database.

또한, 상기 가상화 보안 방법은 상기 컴퓨터에서 구동되는 프로세스가 전역 훅 DLL 목록 데이터베이스로부터 DLL을 검색하는 경우, 상기 프로세스가 상기 가상 프로세스 데이터베이스에 저장되어 있는지 여부를 확인하는 단계, 상기 가상 프로세스 데이터베이스에 저장되어 있는 경우에는 상기 가상 프로세스에서 입력한 DLL만을 제공하는 단계 및 상기 가상 프로세스 데이터베이스에 저장되어 있지 않은 경우에는 가상 프로세스가 아닌 프로세스들에서 입력한 DLL만을 전달하는 단계를 더 포함하여 구성될 수 있다.In addition, the virtualization security method, if a process running on the computer retrieves a DLL from the global hook DLL list database, checking whether the process is stored in the virtual process database, stored in the virtual process database The method may further include providing only the DLL input by the virtual process if there is one, and delivering only the DLL input by the processes other than the virtual process if it is not stored in the virtual process database.

그리고, 본 발명은 상기 가상화 보안 방법을 실행하기 위한 프로그램이 기록되어 있는 것을 특징으로 하는 컴퓨터에서 판독 가능한 기록매체를 포함할 수 있다.In addition, the present invention may include a computer-readable recording medium, characterized in that a program for executing the virtualization security method is recorded.

본 발명에 따르면 악성 코드의 감염 등 보안상 문제를 방지할 수 있도록 하는 효과가 있다.According to the present invention is effective to prevent security problems, such as infection of malicious code.

본 발명에 따르면 컴퓨터 시스템을 가상 영역과 실제 영역으로 구분하여 두 영역을 서로 차단함으로써, 가상 영역에서 보안상 문제가 발생하더라도 실제 영역에 영향을 주지 않도록 하는 효과가 있다.According to the present invention, the computer system is divided into a virtual area and a real area to block the two areas from each other, so that even if a security problem occurs in the virtual area, the real area is not affected.

본 발명에 따르면 미리 등록된 프로그램에 대해서만 가상 프로세스로 구동할 수 있도록 함으로써, 보다 안전하게 시스템을 관리할 수 있도록 하는 효과가 있다.According to the present invention, only a pre-registered program can be driven as a virtual process, thereby making it possible to more safely manage the system.

본 발명에 따르면 가상 프로세스가 실제 프로세스와 IPC를 수행할 수 없도록 방지함으로써, 가상 프로세스가 악성 코드에 감염되더라도 이것이 실제 프로세스에 전염되지 않도록 하는 효과가 있다.According to the present invention, by preventing the virtual process from performing the IPC with the real process, even if the virtual process is infected with malicious code, it is effective to prevent it from being transmitted to the real process.

본 발명에 따르면 가상 파일 시스템을 제공하고, 가상 프로세스의 데이터를 암호화하여 가상 파일 시스템에 저장하도록 함으로써, 실제 영역에서는 가상 영역에서 작성된 데이터에 접근할 수 없도록 하는 효과가 있다.According to the present invention, by providing a virtual file system and encrypting the data of the virtual process and storing the data in the virtual file system, the data created in the virtual area cannot be accessed in the real area.

이하에서, 본 발명의 실시예를 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings. However, the present invention is not limited or limited by the embodiments. Like reference numerals in the drawings denote like elements.

본 발명에서 가상 영역(Virtual Area)라 함은 실제 컴퓨터 시스템 상에서 논리적 또는 물리적으로 구분되어 있는 영역은 아니지만, 컴퓨터 시스템 내에서 특정 프로세스들만 접근 가능한 시스템 자원, 프로세스 등을 포괄적으로 의미하는 용어이다.In the present invention, the term "virtual area" is not an area that is logically or physically divided on an actual computer system. However, the term "virtual area" refers to a system resource, a process, and the like that are accessible only to specific processes within the computer system.

또한 가상 프로세스(Virtual Process)라 함은 상기 가상 영역(Virtual Area)에 속하는 프로세스로, 상기 가상 영역 내에 있는 시스템 자원 및 다른 가상 프로세스들에 접근이 가능한 프로세스를 의미한다. 이 때, 가상 프로세스는 일반적인 프로세스와 동일한 동작을 하며, 단지 별도의 모듈 등에 의하여 가상 영역 내에 있는 자원 및 프로세스 등에만 접근이 가능하도록 제한된다. 본 발명에서는 가 상 프로세스도 실제 프로세스와 동일한 동작을 수행하고, 단지 가상 프로세스의 자원 요청 등에 대응하여 가상 영역 내의 가상 자원만 사용할 수 있도록 제어한다.In addition, the virtual process refers to a process belonging to the virtual area, and means a process accessible to system resources and other virtual processes in the virtual area. In this case, the virtual process operates in the same manner as the general process, and is limited to access only to resources and processes within the virtual area by a separate module. In the present invention, the virtual process performs the same operation as the actual process, and controls only the virtual resources in the virtual area to be used in response to a resource request of the virtual process.

도 2는 본 발명의 일실시예에 따른 가상화 보안 시스템의 내부 구성을 도시하는 구성도이다. 도면에 도시한 바와 같이, 본 발명의 일실시예에 다른 가상화 보안 시스템은 컴퓨터 시스템에 설치되며, 가상 자원(210), 가상 프로세스 데이터베이스(220), 가상화 에이전트(230), 가상화 엔진(240), 가상화 프로그램 목록 데이터베이스(250) 및 가상 COM 서버(260)를 포함하여 구성될 수 있다. 또한, 상기 구성요소들은 소프트웨어, 하드웨어 또는 소프트웨어 및 하드웨어가 결합된 형태로 구현되는 것이 가능하며, 서로 물리적 또는 논리적으로 연결되어 데이터를 주고 받을 수 있도록 구성될 수 있다.2 is a block diagram showing an internal configuration of a virtualization security system according to an embodiment of the present invention. As shown in the figure, the virtualization security system according to one embodiment of the present invention is installed in a computer system, the virtual resource 210, virtual process database 220, virtualization agent 230, virtualization engine 240, It may be configured to include a virtualization program list database 250 and a virtual COM server 260. In addition, the components may be implemented in software, hardware, or a combination of software and hardware, and may be configured to physically or logically connect with each other to exchange data.

도면에서와 같이 본 발명에 따른 가상화 보안 시스템은 가상 영역(201; Virtual Area)과 실제 영역(Real Area)으로 나눌 수 있는데, 가상 영역(201)에서는 가상 자원(210), 가상화 엔진(240) 및 가상 COM 서버(260)등이 존재하며, 가상 프로세스(203)들이 존재한다. 실제 영역에는 가상 프로세스 데이터베이스(220), 가상화 에이전트(230) 및 가상화 프로그램 목록 데이터베이스(250)가 존재하며, 실제 프로세스(202)들과 실제 자원(204)이 존재한다.As shown in the figure, the virtualization security system according to the present invention may be divided into a virtual area 201 and a real area. In the virtual area 201, a virtual resource 210, a virtualization engine 240, and Virtual COM server 260 and the like, and virtual processes 203 exist. In the real area, there is a virtual process database 220, a virtualization agent 230, and a virtualization program listing database 250, and there are real processes 202 and real resources 204.

또한, 본 발명에 따른 가상화 보안 시스템은 유저모드(User Mode) 및 커널모드(Kernel Mode)로 구분될 수 있는데, 유저모드에서는 가상 프로세스 데이터베이스(220), 가상화 에이전트(230), 가상화 프로그램 목록 데이터베이스(250) 및 가상 COM 서버(260) 등이 동작하며, 실제 프로세스(202)들과 가상 프로세스(203)들이 구 동된다. 또한 커널모드에서는 가상 자원(210) 및 가상화 엔진(240)이 존재하며, 실제 컴퓨터 시스템의 자원(204)도 커널모드에 존재하게 된다. 이하 각각의 구성요소 별로 구체적으로 기술하도록 한다.In addition, the virtualization security system according to the present invention can be divided into a user mode (User Mode) and kernel mode (Kernel Mode), in the user mode virtual process database 220, virtualization agent 230, virtualization program list database ( 250 and the virtual COM server 260 and the like operate, and the real process 202 and the virtual process 203 is driven. In the kernel mode, the virtual resource 210 and the virtualization engine 240 exist, and the resource 204 of the actual computer system also exists in the kernel mode. Hereinafter, each component will be described in detail.

가상 자원(210)은 컴퓨터 운영체제(OS; Operating System)에서 제공하는 실제 자원(204)과 구별되며, 가상 프로세스(Virtual Process) 동작에 필요한 자원을 제공한다. 컴퓨터 시스템에서 사용되는 시스템 자원은 파일 시스템, 레지스트리, 객체 자원 등을 포함할 수 있는데, 이와 같은 시스템 자원은 여러 프로세스가 공유하여 사용하기 때문에 악성 코드가 복사되어 다른 프로세스로의 전염 매개체가 될 가능성이 높다. 따라서, 본원 발명에서는 실제 자원(204)과 구별되는 가상 자원(210)을 구비하고, 가상 프로세스(203)들은 가상 자원(210)만 사용하도록 제어함으로써, 가상 프로세스(203)가 악성 코드 등에 감염되는 경우에도 실제 자원(204)에 악성 코드가 감염되지 않고, 가상 자원(210)만 감염되도록 하여, 추후 가상 영역(201)을 제거하는 것만으로 용이하게 악성 코드를 제거할 수 있는 효과를 얻을 수 있다.The virtual resource 210 is distinguished from an actual resource 204 provided by a computer operating system (OS), and provides a resource necessary for a virtual process operation. System resources used in computer systems can include file systems, registries, and object resources. These system resources are shared and used by multiple processes, which means that malicious code can be copied and spread to other processes. high. Accordingly, in the present invention, the virtual resources 210 are distinguished from the actual resources 204, and the virtual processes 203 are controlled to use only the virtual resources 210, whereby the virtual processes 203 are infected with malicious code or the like. Even in this case, the malicious code is not infected to the actual resource 204, and only the virtual resource 210 is infected, so that the malware can be easily removed later by simply removing the virtual region 201. .

가상 자원(210)은 가상 파일시스템, 가상 레지스트리, 가상 객체 등을 포함하여 구성될 수 있는데, 이 밖에도 가상 프로세스가 동작하면서 사용하기 위한 시스템 자원들이 포함될 수 있다.The virtual resource 210 may be configured to include a virtual file system, a virtual registry, a virtual object, and the like, and may also include system resources for use while the virtual process is operating.

가상 자원(210)에 포함되는 가상 파일 시스템은 실제 자원(204)에 포함되는 실제 파일 시스템에 가상 디스크 이미지 파일 형태로 저장되어 가상화 엔진(240)의 제어에 따라 데이터를 읽고 기록하도록 구성될 수 있다. 이 때, 실제 프로세스(202)로부터의 접근이 불가능하도록, 가상화 엔진(240)은 데이터를 기록할 때에는 암호화 하여 가상 파일 시스템에 기록하고, 데이터를 읽을 때에는 다시 가상 파일 시스템의 데이터를 복호화하여 읽어 들일 수 있다.The virtual file system included in the virtual resource 210 may be stored in the form of a virtual disk image file in the real file system included in the real resource 204 to read and write data under the control of the virtualization engine 240. . At this time, the virtualization engine 240 encrypts and writes the data to the virtual file system so that it cannot be accessed from the actual process 202, and decrypts and reads the data of the virtual file system again when reading the data. Can be.

또한 가상 자원(210)은 가상 COM 서버(260)를 포함하여 구성될 수 있는데, 가상 COM 서버는 가상 프로세스(203)에 COM(Component Object Model) 객체를 제공한다. COM 객체는 프로세스간의 IPC(Inter Process Communication)를 위하여 사용되는데 이와 같이 실제 COM 서버 및 가상 COM 서버를 구분함으로써, 실제 프로세스(202) 및 가상 프로세스(203) 사이의 IPC를 원천적으로 차단하여 프로세스 간의 통신에 의한 악성 코드의 감염을 방지할 수 있는 효과가 있다.In addition, the virtual resource 210 may be configured to include a virtual COM server 260, which provides a Component Object Model (COM) object to the virtual process (203). The COM object is used for inter process communication (IPC) between processes. By separating the real COM server and the virtual COM server in this way, the inter-process communication by blocking the IPC between the real process 202 and the virtual process 203 at source. There is an effect that can prevent the infection of malicious code.

가상 프로세스 데이터베이스(220)는 실행중인 가상 프로세스(203) 목록을 저장한다. 가상 프로세스(203)는 실제로 운영체제에서 볼 때에는 실제 프로세스(202)와 구분되지 않고 동일한 성질을 가지고 있다. 따라서, 이를 별도로 격리하여 가상 영역(201) 내에서만 동작을 수행할 수 있도록 제어하기 위해서는 가상 프로세스(203)에 대한 목록을 별도로 관리해야 한다. 따라서 가상 프로세스 데이터베이스(220)는 가상 프로세스(203)로 구동중인 프로세스들에 대한 정보를 저장한다. 이를 위하여 가상 프로세스 데이터베이스(220)가상 프로세스(203)들을 식별하기 위한 정보가 저장될 수 있는데, 프로세스 식별자인 PID(Process IDentifier)의 목록으로 저장되는 것이 가능하다. 이 밖에도 각각의 가상 프로세스(203)를 식별하기 위한 정보라면 어떤 형태의 변형도 가능하다.The virtual process database 220 stores a list of running virtual processes 203. The virtual process 203 is not distinguished from the real process 202 in the operating system and has the same property. Therefore, in order to control the operation to be performed only in the virtual area 201 by isolating it separately, the list for the virtual process 203 must be separately managed. Therefore, the virtual process database 220 stores information about processes running as the virtual process 203. For this purpose, the information for identifying the virtual processes 203 may be stored in the virtual process database 220. The process ID 220 may be stored as a list of process identifiers (PIDs). In addition, any form of modification is possible as long as information for identifying each virtual process 203 is used.

가상 프로세스 데이터베이스(220)는 오라클, MySQL, DB2 등의 상용 DBMS를 이용하여 구성할 수도 있으나, 이와 같은 형태에 의하여 제한되지는 아니하며, 이 밖에도 데이터를 저장하고 검색할 수 있는 모든 저장 장치 또는 상기 저장장치에 상기 데이터를 저장하고 관리하는 모든 프로그램을 이용하여 구성할 수 있다.The virtual process database 220 may be configured using a commercial DBMS such as Oracle, MySQL, DB2, etc., but is not limited thereto. In addition, the virtual process database 220 may be any storage device capable of storing and retrieving data or the storage. It can be configured using any program that stores and manages the data on the device.

가상화 에이전트(230)는 가상 프로세스(203)를 구동시키고 구동된 가상 프로세스(203)에 대한 정보를 가상 프로세스 데이터베이스(220)에 저장한다. 사용자가 일반적으로 프로그램을 실행시켜서 구동되는 프로세스는 실제 프로세스(202)로 실제 자원(204)을 사용하여 실제 영역에서 구동되게 된다. 이와 구별하여 가상 프로세스(203)를 구동하기 위해서는 구동 역할을 수행하는 별도의 모듈이 필요한데, 가상화 에이전트(230)은 이와 같은 역할을 수행한다.The virtualization agent 230 drives the virtual process 203 and stores information about the driven virtual process 203 in the virtual process database 220. A process that is typically driven by a user executing a program is driven by a real process using the real resource 204 as the real process 202. To distinguish from this, in order to drive the virtual process 203, a separate module that performs a driving role is required, and the virtualization agent 230 performs such a role.

가상화 에이전트(230)는 가상 프로세스(203)로 구동시킬 프로그램을 동작시키고, 상기 프로그램을 구동하는 프로세스의 PID를 상기 가상 프로세스 데이터베이스(220)에 저장함으로써, 상기 구동된 프로세스를 가상 프로세스(203)로 관리하도록 할 수 있다. 이 때, 가상화 에이전트(230)는 스스로 구동시키는 프로세스만을 가상 프로세스(203)로 관리하는 것이 아니라, 다른 프로세스가 구동시키는 프로세스 들 중에서 가상 프로세스(203)가 구동시키는 프로세스들은 모두 가상 프로세스(203)로 관리하기 위하여 상기 가상 프로세스 데이터베이스(220)에 그 PID를 저장하도록 할 수 있다.The virtualization agent 230 operates the program to be driven by the virtual process 203, and stores the PID of the process driving the program in the virtual process database 220, thereby transferring the driven process to the virtual process 203. Can be managed. At this time, the virtualization agent 230 does not manage only the processes that are driven by the virtual process 203, but among the processes driven by other processes, all the processes driven by the virtual process 203 are driven by the virtual process 203. The PID may be stored in the virtual process database 220 for management.

따라서, 가상화 에이전트(230)는 새로 구동되는 프로세스가 있을 때에, 새로 구동되는 프로세스의 부모 프로세스(Parent Process)의 PID를 확인하여, 부모 프로세스의 PID가 상기 가상 프로세스 데이터베이스(220)에 저장되어 있는 경우라 면 가상 프로세스(203)가 다른 프로세스를 생성한 경우이므로, 새로이 구동된 프로세스의 PID 정보도 상기 가상 프로세스 데이터베이스(220)에 저장한다. 이와 같은 가상화 에이전트(230)의 동작에 대해서는 도 4에서 보다 구체적으로 설명하도록 한다.Therefore, when there is a newly started process, the virtualization agent 230 checks the PID of the parent process of the newly started process, and when the PID of the parent process is stored in the virtual process database 220. In this case, since the virtual process 203 generates another process, PID information of the newly driven process is also stored in the virtual process database 220. The operation of the virtualization agent 230 will be described in more detail with reference to FIG. 4.

또한, 가상화 에이전트(230)는 구동되는 가상 프로세스(203)들이 화면에 표시될 때에 가상 프로세스(203)에서 실행되는 프로그램임을 알리는 표시를 부가하도록 할 수 있다. 일례로 가상 프로세스(203)에서 구동되는 프로그램은 프로그램 실행 창의 외부가 붉은색 선으로 표시되도록 구성할 수 있다. 이와 같은 구성을 통하여 사용자가 가상 프로세스(203)에서 구동되는 프로그램과 실제 프로세스(202)에서 구동되는 프로그램을 구분하여 보다 편리하게 사용할 수 있도록 한다.In addition, the virtualization agent 230 may add an indication indicating that the virtual process 203 is a program running in the virtual process 203 when the virtual processes 203 are displayed on the screen. For example, a program driven in the virtual process 203 may be configured such that the outside of the program execution window is displayed with a red line. Through such a configuration, the user can distinguish between the program driven in the virtual process 203 and the program driven in the actual process 202 so that it can be used more conveniently.

가상화 엔진(240)은 가상 프로세스 데이터베이스(220)에 저장된 프로세스들이 실제 자원(204)에 접근하지 못하고 상기 가상 자원(210)만을 이용할 수 있도록 제어한다. 본 발명은 가상 프로세스(203)에 악성 코드가 감염되는 경우에도 실제 영역에 존재하는 실제 자원(204) 및 실제 프로세스(202)에는 악성 코드가 감염되지 않도록 하는 것을 목적으로 한다. 따라서, 가상 프로세스(203)에서 실제 자원(204)에 악성 코드를 전염시키는 것을 막기 위하여 가상 프로세스(203)가 실제 자원(204)에 접근하는 것을 방지한다.The virtualization engine 240 controls the processes stored in the virtual process database 220 to use only the virtual resource 210 without accessing the actual resource 204. The present invention aims to prevent malicious code from being infected by the real resource 204 and the real process 202 existing in the real area even when the malicious code is infected by the virtual process 203. Thus, the virtual process 203 is prevented from accessing the real resource 204 in order to prevent the malicious process from infecting the real resource 204 with malicious code.

가상화 엔진(240)은 가상 프로세스(203)가 가상 자원(204)에 접근하는 것을 방지하기 위하여 모든 프로세스로부터 자원 이용에 관한 요청을 확인하고, 자원을 이용하기 위하여 요청한 프로세스가 상기 가상 프로세스 데이터베이스(220)에 저장되어 있는 프로세스 인지 여부를 확인한다. 만일 가상 프로세스 데이터베이스(220)에 저장된 경우라면 가상 프로세스(203)에 해당되므로, 상기 프로세스로부터의 자원 요청에 대응하여 상기 가상 자원(210)을 이용할 수 있도록 가상 자원(210)을 제공한다. 또한 만일 확인 결과 자원을 요청한 프로세스에 대한 정보가 상기 가상 프로세스 데이터베이스(220)에 저장되어 있지 않은 경우라면 상기 프로세스가 실제 프로세스(202)에 해당하므로 실제 자원(204)을 사용하도록 이를 제공한다. 이와 같은 구성을 통하여, 실제 프로세스(202)와 가상 프로세스(203)는 시스템 자원을 이용하는데 있어서 엄격하게 분리되기 때문에, 가상 프로세스(202)가 악성 코드에 감염되는 경우에도 실제 자원(204)에 악성 코드가 감염되는 것을 방지할 수 있고, 가상 영역(201)은 쉽게 제거하고 재설치가 가능하므로, 실제 자원(204)에 전혀 영향을 주지 않고 악성 코드를 근본적으로 제거하는 것이 가능하게 된다.The virtualization engine 240 confirms a request regarding resource usage from all processes in order to prevent the virtual process 203 from accessing the virtual resource 204, and the requested process for using the resource is the virtual process database 220. Check whether the process is stored in If it is stored in the virtual process database 220 corresponds to the virtual process 203, the virtual resource 210 is provided so that the virtual resource 210 can be used in response to a resource request from the process. In addition, if the information about the process requesting the resource is not stored in the virtual process database 220 as a result of the check, the process corresponds to the real process 202 and thus provides the use of the real resource 204. Through such a configuration, since the real process 202 and the virtual process 203 are strictly separated in using system resources, even when the virtual process 202 is infected with malicious code, the real process 204 is malicious. Since the code can be prevented from being infected and the virtual area 201 can be easily removed and reinstalled, it is possible to fundamentally remove malicious code without affecting the actual resource 204 at all.

이와 같이 가상화 엔진(240)에서 실제 프로세스(202) 및 가상 프로세스(203)의 자원 요청을 확인하여 이용할 수 있는 자원을 구분함으로써, 프로세스 구동에 필요한 자원은 엄격하게 분리되면서도, 프로세스 자신은 정상적으로 자원을 요청하고 사용할 수 있도록 함으로써, 프로세스에서 동작하는 프로그램에 별다른 기능 등이 추가되지 않고도 가상 프로세스(203)를 용이하게 관리할 수 있는 효과가 있다. 따라서, 기존의 프로그램들을 가상 프로세스(203)에서 모두 그대로 동작시킬 수 있어, 호환성이 매우 뛰어나게 된다.In this way, the virtualization engine 240 identifies the resource requests of the real process 202 and the virtual process 203 and distinguishes the available resources, so that the resources required to run the process are strictly separated, but the process itself is normally managed. By making the request and use possible, there is an effect that the virtual process 203 can be easily managed without adding extra functions or the like to a program running in the process. Therefore, all existing programs can be operated as they are in the virtual process 203, so that the compatibility is very excellent.

가상화 엔진(240)은 상술한 바와 같이 가상 프로세스(203)로부터 파일 시 스템에 데이터를 읽고 쓰도록 하는 요청을 수신하여 처리할 수 있는데, 가상 프로세스(203)의 데이터는 가상 파일 시스템에 쓰거나 읽게 된다. 이 때, 실제 프로세스(202) 등에서 가상 파일 시스템에 접근하는 것을 방지하기 위하여, 가상화 엔진(240)은 가상 프로세스(203)의 데이터를 암호화하여 가상 파일 시스템에 기록하고, 데이터를 읽을 때에는 읽은 데이터를 복호화하여 가상 프로세스(203)에 전달하도록 구성될 수 있다. 이를 통하여 가상 프로세스(203)의 실제 자원(204) 접근뿐 아니라, 실제 프로세스(202)의 가상 자원(210) 접근까지 방지할 수 있는 효과를 얻을 수 있다. 이와 같이 가상화 엔진(240)에서 가상 파일 시스템에 데이터를 기록하는 구성은 도 5에 보다 상세히 설명되어 있다.As described above, the virtualization engine 240 may receive and process a request to read and write data from the virtual process 203 to the file system, and the data of the virtual process 203 may be written to or read from the virtual file system. . At this time, in order to prevent the virtual file system from being accessed by the real process 202 or the like, the virtualization engine 240 encrypts the data of the virtual process 203 and writes the data to the virtual file system. May be configured to decrypt and forward to virtual process 203. Through this, not only the access of the virtual resource 204 of the virtual process 203 but also the access of the virtual resource 210 of the real process 202 may be obtained. As described above, the configuration of writing data to the virtual file system in the virtualization engine 240 is described in more detail with reference to FIG. 5.

가상화 엔진(240)은 컴퓨터 시스템(101)에서 구동되는 프로세스에서 IPC를 위하여 COM 서버를 찾는 경우, 상기 프로세스가 가상 프로세스 데이터베이스(220)에 저장되어 있는지 여부를 확인한 뒤, 프로세스가 가상 프로세스 데이터베이스(220)에 저장되어 있는 경우라면 가상 COM 서버의 포트(port)를 상기 프로세스에 알려주고, 그렇지 않은 경우에는 운영체제의 COM 서버 포트를 상기 프로세스에 알려준다. 이를 통하여 상술한 바와 같이 COM 서버를 실제 영역 및 가상 영역(201)에서 각각 구분하여 사용하도록 하여 실제 프로세스(202) 및 가상 프로세스(203) 사이의 IPC를 방지하고, IPC를 통한 악성 코드의 감염을 막을 수 있다. 이와 같이 프로세스에게 COM 서버 포트를 알려주는 구성은 도 6에 보다 상세히 설명되어 있다.When the virtualization engine 240 finds a COM server for IPC in a process running on the computer system 101, the virtualization engine 240 checks whether the process is stored in the virtual process database 220, and then the process is virtual process database 220. If it is stored in), it informs the process of the port of the virtual COM server. Otherwise, it informs the process of the COM server port of the operating system. As a result, as described above, the COM server is separately used in the real area and the virtual area 201 to prevent IPC between the real process 202 and the virtual process 203, and to prevent infection of malicious code through the IPC. You can stop it. This configuration of informing the process of the COM server port is described in more detail in FIG.

또한 가상화 엔진(240)은 컴퓨터 시스템(101)에서 구동하고 있는 프로세스 가 윈도우 핸들 목록 데이터베이스로부터 윈도우 핸들 목록을 검색하고자 하는 경우, 상기 프로세스가 가상 프로세스 데이터베이스(220)에 저장되어 있는지 확인하고, 저장되어 있으면 가상 프로세스들의 윈도우 핸들 목록만을 제공하고, 그렇지 않으면 실제 프로세스들의 윈도우 핸들 목록만을 제공하도록 제어할 수 있다. 이와 같은 구성을 통하여 프로세스가 IPC를 위하여 message, ATOM, DDE 등을 다른 프로세스로 보내고자 하는 경우에, 실제 프로세스(202)는 실제 프로세스(202)로, 가상 프로세스(203)는 가상 프로세스(203)로만 보낼 수 있도록 하여 프로세스간의 통신을 방지하고 악성 코드의 전염을 막을 수 있다. 이와 같은 구성에 대해서는 도 7에 보다 상세히 설명되어 있다.In addition, when the process running on the computer system 101 wants to retrieve the window handle list from the window handle list database, the virtualization engine 240 checks whether the process is stored in the virtual process database 220 and is stored. If so, you can control to provide only the list of window handles of the virtual processes, otherwise provide only the list of window handles of the actual processes. In this configuration, when a process wants to send a message, ATOM, DDE, etc. to another process for IPC, the real process 202 is a real process 202, and the virtual process 203 is a virtual process 203. By sending only the data, you can prevent communication between processes and prevent the spread of malicious code. Such a configuration is described in more detail with reference to FIG. 7.

그리고 가상화 엔진(240)은 컴퓨터에서 구동되는 프로세스가 전역 훅 DLL 목록 데이터베이스로부터 DLL을 검색하는 경우, 상기 프로세스가 가상 프로세스 데이터베이스(220)에 저장되어 있는지 여부를 확인하고, 상기 프로세스가 가상 프로세스 데이터베이스(220)에 저장되어 있는 경우에는 가상 프로세스(203)들이 입력한 DLL들만 제공하고, 그렇지 않은 경우에는 실제 프로세스(202)들이 입력한 DLL만을 제공하도록 제어할 수 있다. 프로세스는 자신의 DLL을 타 프로세스에 삽입함으로써, 타 프로세스와 데이터를 주고 받을 수 있다. 이를 위해서는 자신의 DLL을 전역 훅 DLL 목록 데이터베이스에 저장하고, 타 프로세스에서 이를 확인하여 DLL을 로드하게 된다. 따라서, 실제 프로세스(202) 및 가상 프로세스(203) 사이에 데이터를 주고 받고, 모듈을 설치하는 것을 방지하기 위해서, 본 발명에서는 실제 프로세스(202)에서 DLL 목록을 요구하는 경우에는 실제 프로세스(202)의 DLL 목록만을 제공하고, 가상 프로세스(203)에서 DLL 목록을 요구하는 경우에는 가상 프로세스(203)의 DLL 목록만을 제공하도록 구성한 것이다. 이와 같은 구성은 도 8에 보다 상세하게 설명되어 있다.When the process running on the computer retrieves the DLL from the global hook DLL list database, the virtualization engine 240 checks whether the process is stored in the virtual process database 220, and the process is a virtual process database ( If it is stored in the 220, only the DLLs input by the virtual process (203), otherwise it can be controlled to provide only the DLL input by the actual process (202). A process can exchange data with another process by inserting its DLL into another process. To do this, it saves its own DLL in the global hook DLL list database, and other processes check it and load the DLL. Thus, in order to prevent data from being exchanged between the real process 202 and the virtual process 203 and to install a module, in the present invention, when the real process 202 requires a list of DLLs, the real process 202 is required. If only the DLL list of the virtual process 203 is requested by the list of DLLs, the virtual process 203 is configured to provide only the list of DLLs. Such a configuration is explained in more detail in FIG.

가상화 프로그램 목록 데이터베이스(250)는 가상 프로세스(203)로 구동될 수 있는 프로그램의 목록을 저장한다. 상술한 바와 같이 가상화 에이전트(230)의 구동이 있으면 어떤 프로그램이라도 가상 프로세스(203)로 구동하여 가상 영역(201)에서 실행이 가능하다. 그러나, 보다 안전한 사용을 위하여, 미리 사전에 사용자가 등록해 둔 프로그램만이 가상 프로세스(203)에서 구동되도록 정의할 수 있다.The virtualization program list database 250 stores a list of programs that can be driven by the virtual process 203. As described above, when the virtualization agent 230 is driven, any program may be driven by the virtual process 203 and executed in the virtual area 201. However, for more secure use, it may be defined that only a program registered in advance by the user is run in the virtual process 203.

가상화 프로그램 목록 데이터베이스(250)는 이와 같이 가상 프로세스(203)에서 구동될 수 있는 프로그램 파일이 저장되어 있는 위치 정보를 저장하도록 구성될 수 있다. 가상화 프로그램 목록 데이터베이스(250)는 별도의 데이터베이스로 구성될 수도 있으나, 상기 가상화 에이전트(230)에 포함되어 단순히 실행 가능한 프로그램의 파일이 저장되어 있는 위치 정보만을 목록으로 관리하도록 구성될 수도 있다. 가상화 에이전트(230)는 프로그램의 실행 시 상기 가상화 프로그램 목록 데이터베이스(250)에 저장되어 있는 프로그램인 경우에만 구동시키도록 함으로써, 안전하게 사용자가 등록한 프로그램만 실행할 수 있도록 할 수 있다. 특히 다수의 사용자가 이용하는 컴퓨터의 경우, 특정 사용자가 사용할 수 있는 프로그램의 종류를 제한하는 등의 용도로도 활용이 가능하다.The virtualization program list database 250 may be configured to store location information in which program files that may be driven in the virtual process 203 are stored. The virtualization program list database 250 may be configured as a separate database. However, the virtualization program list database 250 may be configured to manage only the location information that is included in the virtualization agent 230 and simply stores files of executable programs. The virtualization agent 230 may be executed only when the program stored in the virtualization program list database 250 when the program is executed, so that only the program registered by the user may be safely executed. In particular, in the case of a computer used by a plurality of users, it can be used for the purpose of limiting the types of programs that a specific user can use.

도 3은 본 발명의 일실시예에 따른 가상화 보안 시스템에서 등록된 프로그 램들을 가상 프로세스로 구동시키는 방법을 도시하는 도면이다.3 is a diagram illustrating a method of driving registered programs as a virtual process in a virtualization security system according to an embodiment of the present invention.

일반적으로 컴퓨터 시스템(101)은 구동할 수 있는 프로그램들의 목록(310)을 관리하는데, 윈도우 시스템의 경우 "C\Program Files\" 경로 아래에 실행되는 프로그램들의 폴더가 위치하게 된다. 운영 체제는 이와 같은 프로그램 목록(310)에 있는 프로그램들을 구동 모듈(320)을 통하여 구동시켜 프로세스(202)들을 생성하여 각각의 프로그램들이 동작할 수 있도록 한다.In general, the computer system 101 manages a list 310 of programs that can be run. In the case of a window system, a folder of programs to be executed is located under a "C \ Program Files \" path. The operating system drives the programs in the program list 310 through the driving module 320 to generate the processes 202 so that the respective programs can operate.

본 발명에 따른 가상화 보안 시스템은 이와 같은 프로그램 목록(310)에 저장된 프로그램들 중에서 가상 프로세스(203)로 동작할 프로그램들을 가상화 프로그램 목록 데이터베이스(250)에 저장해 두고, 가상화 에이전트(230)에서 사용자의 명령에 따라 상기 저장된 프로그램들을 구동시킨다. 구동된 프로그램은 가상 프로세스(203)로 구동되어, 가상 영역(201) 내에서 동작을 수행하게 되는데, 도면에서와 같이 가상 프로세스(203)가 자식 프로세스를 생성하게 되면 그 자식 프로세스 역시 가상 프로세스(203)로 관리되도록 하여, 가상 프로세스(203) 및 실제 프로세스(202)를 엄격하게 분리할 수 있다.The virtualization security system according to the present invention stores programs to be operated as the virtual process 203 among the programs stored in the program list 310 in the virtualization program list database 250, and the user's command from the virtualization agent 230. The stored programs are driven accordingly. The driven program is driven by the virtual process 203 to perform an operation in the virtual area 201. When the virtual process 203 creates a child process as shown in the figure, the child process is also a virtual process 203. ), The virtual process 203 and the actual process 202 can be strictly separated.

도 4는 본 발명의 일실시예에 따른 가상화 보안 시스템에서 새로 구동되는 프로세스를 확인하여 가상 프로세스를 등록하는 방법의 흐름을 도시하는 흐름도이다.4 is a flowchart illustrating a method of registering a virtual process by checking a newly started process in a virtualization security system according to an embodiment of the present invention.

단계 S401에서는 새로이 프로세스가 구동되면 가상화 에이전트(230)에서 그 구동 여부를 탐지한다. 단계 S402에서는 가상화 에이전트(230)가 새로운 프로세스가 구동된 것을 탐지하면, 새로 구동된 프로세스의 부모 프로세스의 PID(Process IDentifier)를 획득한다.In operation S401, when the process is newly started, the virtualization agent 230 detects whether the process is driven. In operation S402, when the virtualization agent 230 detects that the new process is driven, the virtual agent 230 acquires a PID (Process IDentifier) of the parent process of the newly driven process.

단계 S403에서는 상기 가상화 에이전트(203)가 획득한 상기 구동된 프로세스의 부모 프로세스의 PID를 확인하여 가상 프로세스 데이터베이스(220)에 상기 부모 프로세스의 PID 정보가 존재하는지를 점검한다. 상기 부모 프로세스의 PID가 가상 프로세스 데이터베이스(220)에 존재하는 경우에는 상기 부모 프로세스가 가상 프로세스(203)에 해당되는 경우이므로, 가상 프로세스 데이터베이스(220)에 새로 구동된 프로세스를 입력하여, 새로 구동된 프로세스를 가상 프로세스(203)로 관리하도록 한다(S404).In step S403, the virtualization agent 203 checks the PID of the parent process of the driven process and checks whether the PID information of the parent process exists in the virtual process database 220. When the PID of the parent process exists in the virtual process database 220, since the parent process corresponds to the virtual process 203, a newly driven process is input to the virtual process database 220 and newly driven. The process is managed by the virtual process 203 (S404).

만일, 상기 부모 프로세스의 PID가 상기 가상 프로세스 데이터베이스(220)에 존재하지 않는다면, 상기 부모 프로세스는 실제 프로세스(202)이므로, 새로 구동된 프로세스도 실제 프로세스(202)로 관리되어야 한다. 따라서, 가상 프로세스 데이터베이스에 그 정보를 기록하지 않고 넘어가게 된다.If the PID of the parent process does not exist in the virtual process database 220, since the parent process is the real process 202, the newly started process must also be managed as the real process 202. Therefore, the information is skipped without recording the information in the virtual process database.

이와 같은 절차를 통하여, 새로 구동되는 프로세스들을 가상 프로세스(203)인지, 실제 프로세스(202)인지 모두 구분하여 가상 프로세스(203)인 경우 별도로 관리하도록 구성함으로써, 가상 프로세스(203)를 보다 용이하게 제어할 수 있는 효과를 얻을 수 있다.Through such a procedure, the virtual processes 203 can be more easily controlled by configuring the newly started processes to be managed separately in the case of the virtual process 203, whether the virtual process 203 or the actual process 202 is divided. The effect can be obtained.

도 5는 본 발명의 일실시예에 따른 가상화 보안 시스템에서 가상 파일 시스템에 데이터를 기록하고 쓰는 방법을 도시하는 도면이다.5 is a diagram illustrating a method of writing and writing data to a virtual file system in a virtualization security system according to an embodiment of the present invention.

도면에 도시한 바와 같이, 가상 프로세스(203)에서 파일 시스템에 접근하여 파일을 기록하거나 읽으려고 하는 경우에는 가상화 엔진(240)에서 이를 확인하 여 상기 프로세스가 가상 프로세스(203)인지 먼저 점검하고, 가상 프로세스(203)인 경우에는 가상 파일 시스템(510)에 데이터를 기록하거나 읽도록 제어할 수 있다. 가상화 엔진(240)는 상기 가상 파일 시스템(510)을 실제 파일 시스템에 생성하는데, 가상 디스크 이미지 파일(520) 형태로 상기 가상 파일 시스템(510)을 생성할 수 있다.As shown in the figure, when the virtual process 203 attempts to write or read a file by accessing the file system, the virtualization engine 240 checks this and checks whether the process is the virtual process 203 first, In the case of the virtual process 203, the virtual file system 510 may be controlled to write or read data. The virtualization engine 240 generates the virtual file system 510 in the actual file system, and may generate the virtual file system 510 in the form of a virtual disk image file 520.

따라서, 실제 프로세스(202)에서는 가상 디스크 이미지 파일로만 상기 가상 파일 시스템(510)이 확인되므로, 가상 파일 시스템(510)에 저장되어 있는 데이터들을 확인하는 것이 어렵다. 특히 가상화 엔진(240)에서 가상 프로세스(203)의 데이터를 기록하거나 읽을 때에 데이터를 암호화 및 복호화하여 기록하거나 읽도록 함으로써, 실제 프로세스에 의한 가상 파일 시스템(510)의 접근을 방지하는 것이 가능하다.Therefore, since the virtual file system 510 is identified only as a virtual disk image file in the actual process 202, it is difficult to verify the data stored in the virtual file system 510. In particular, when the virtualization engine 240 records or reads the data of the virtual process 203, the data is encrypted and decrypted so that the virtual file system 510 can be prevented from being accessed by the actual process.

이와 같이 가상 파일 시스템(510)을 실제 파일 시스템의 내부에 구성시키면서도 둘을 분리하여 구성함으로써, 가상 프로세스(203)에서 악성 코드에 감염되어 악성 코드가 가상 파일 시스템(510)에 저장되게 되는 경우라도, 실제 파일 시스템에 영향을 주지 못하는 형태로 저장되기 때문에, 보다 안전하게 시스템을 관리할 수 있다. 또한, 상기 가상 영역(201)이 악성 코드에 감염되어 가상 영역(201)을 제거할 때에 가상 디스크 이미지 파일(520)을 삭제하는 것만으로 악성 코드에 감염된 데이터들을 손쉽게 삭제할 수 있어서, 시스템을 복구하는 것도 용이하게 된다.In this way, even when the virtual file system 510 is configured inside the actual file system and separated, the virtual file system 510 may be infected by the malicious code in the virtual process 203 and the malicious code may be stored in the virtual file system 510. Because it is stored in a form that does not affect the actual file system, the system can be managed more safely. In addition, when the virtual area 201 is infected with malicious code and the virtual area 201 is removed, the data infected with the malicious code can be easily deleted by simply deleting the virtual disk image file 520 to recover the system. It also becomes easy.

도 6은 본 발명의 일실시예에 따른 가상화 보안 시스템에서 프로세스가 COM 서버를 찾는 경우를 도시하는 도면이다.6 is a diagram illustrating a case where a process finds a COM server in a virtualization security system according to an embodiment of the present invention.

일반적으로 프로세스간의 통신(IPC)의 하나로 COM 통신이 사용되는데 이를 위해서는 COM 서버가 있어야 한다. 그러나, 본 발명에서는 가상 프로세스(203) 및 실제 프로세스(202) 사이에 통신이 이루어지게 되면 악성 코드의 전염 가능성이 있으므로 이를 방지한다. 따라서, 실제 COM 서버(610)와 별개로 가상 COM 서버(260)를 구비하고, 프로세스로부터 COM 서버에 대한 요청이 있는 경우 가상화 엔진(240)에서 이를 확인하여, 프로세스가 실제 프로세스(202)인 경우에는 실제 COM 서버의 포트를 제공하여 실제 프로세스(202)들끼리 통신이 이루어질 수 있도록 한다.In general, COM communication is used as an interprocess communication (IPC), which requires a COM server. However, in the present invention, if communication is made between the virtual process 203 and the actual process 202, there is a possibility of transmission of malicious code, thereby preventing it. Therefore, the virtual COM server 260 is provided separately from the actual COM server 610, and if there is a request for the COM server from the process, the virtualization engine 240 checks this, and the process is the actual process 202 Next, a port of a real COM server is provided to enable communication between real processes 202.

또한, 만일 COM 서버를 요청한 프로세스가 가상 프로세스(203)인 경우에는 가상화 엔진(240)에서 가상 COM 서버 포트를 제공하여 가상 COM 서버로 연결되도록 한다. 따라서 가상 프로세스(203)들은 가상 프로세스(203)와 통신이 가능하며, 실제 프로세스(202)와는 COM 통신을 할 수 없다. 따라서, COM 통신을 통하여 악성 코드가 가상 프로세스(203)로부터 실제 프로세스(202)로 전염되는 것을 방지할 수 있는 효과가 있다.In addition, if the process requesting the COM server is a virtual process 203, the virtualization engine 240 may provide a virtual COM server port to connect to the virtual COM server. Thus, the virtual processes 203 can communicate with the virtual process 203 and cannot communicate with the real process 202. Therefore, it is possible to prevent malicious code from being transmitted from the virtual process 203 to the actual process 202 through COM communication.

도 7은 본 발명의 일실시예에 따른 가상화 보안 시스템에서 프로세스가 윈도우 핸들 목록 데이터베이스를 찾는 경우를 도시하는 도면이다.7 is a diagram illustrating a case where a process finds a window handle list database in a virtualization security system according to an embodiment of the present invention.

프로세스가 IPC를 위하여 message, ATOM, DDE 등을 다른 프로세스로 보내고자 하는 경우에, FindWindow, EnumWindow 등의 명령을 이용하여 윈도우 핸들 목록 데이터베이스로부터 윈도우 핸들 목록을 확인하고, 이를 통하여 다른 프로세스와 IPC를 수행하게 된다.When a process wants to send a message, ATOM, or DDE to another process for IPC, it checks the list of window handles from the window handle list database using commands such as FindWindow and EnumWindow, and executes IPC with other processes. Done.

본 발명에서는 이와 같이 프로세스가 윈도우 핸들 목록 데이터베이스(710) 로부터 윈도우 핸들 목록을 확인하는 경우, 가상화 엔진(240)에서 이를 점검하여, 윈도우 핸들 목록을 요구하는 프로세스가 실제 프로세스(202)인 경우에는 실제 프로세스(202)들에 대한 윈도우 핸들 목록을 제공하고, 만일 상기 프로세스가 가상 프로세스(203)인 경우에는 가상 프로세스(203)들에 대한 윈도우 핸들 목록을 제공한다.In the present invention, when the process checks the window handle list from the window handle list database 710, the virtualization engine 240 checks this, and if the process requesting the window handle list is the actual process 202, Provide a list of window handles for the processes 202, and if the process is a virtual process 203, provide a list of window handles for the virtual processes 203.

이와 같은 구성을 통하여 실제 프로세스(202)는 실제 프로세스(202)들에 대한 윈도우 핸들 목록을 획득할 수 있고 가상 프로세스(203)는 가상 프로세스(203)들에 대한 윈도우 핸들 목록을 획득할 수 있어, 실제 프로세스(202)와 가상 프로세스(203) 사이의 IPC를 원천적으로 방지할 수 있는 효과를 얻을 수 있다.This configuration allows the real process 202 to obtain a list of window handles for the real processes 202 and the virtual process 203 to obtain a list of window handles for the virtual processes 203, The effect of fundamentally preventing the IPC between the real process 202 and the virtual process 203 can be obtained.

도 8은 본 발명의 일실시예에 따른 가상화 보안 시스템에서 프로세스가 전역 훅을 수행하는 경우를 도시하는 도면이다.8 is a diagram illustrating a case where a process performs a global hook in a virtualization security system according to an embodiment of the present invention.

프로세스는 자신의 DLL을 다른 프로세스에 삽입하여 동작을 수행하도록 하기 위해서 전역 훅을 수행한다. 전역 훅을 수행하면, 전역 훅 DLL 이름을 운영체제의 전역 훅 DLL 목록 데이터베이스(810)에 저장하게 되고, 모든 프로세스들은 전역 훅 DLL 목록 데이터베이스(810)을 지속적으로 확인하여 해당 DLL을 로드한다. 따라서, 모든 프로세스들이 전역 훅 DLL 목록 데이터베이스(810)을 확인할 때에 실제 프로세스(202)의 경우 실제 프로세스의 DLL만이 확인되고, 가상 프로세스(203)들은 가상 프로세스(203)에서 입력한 DLL만이 확인되어야 실제 프로세스(202) 및 가상 프로세스(203) 사이에서 모듈을 삽입하는 것을 방지할 수 있다.The process executes a global hook to inject its DLL into another process to perform the operation. When performing a global hook, the global hook DLL name is stored in the global hook DLL list database 810 of the operating system, and all processes continuously check the global hook DLL list database 810 and load the corresponding DLL. Therefore, when all processes check the global hook DLL list database 810, only the real process's DLL is identified for the real process 202, and the virtual processes 203 need only verify the DLLs entered by the virtual process 203. Inserting modules between process 202 and virtual process 203 can be prevented.

따라서, 본 발명에서는 가상화 엔진(240)에서 프로세스들의 DLL 목록 확인 요청을 수신하고, 상기 프로세스가 실제 프로세스(202)인지 가상 프로세스(203)인지 여부를 확인하여, 실제 프로세스(202)인 경우에는 전역 훅 DLL 목록 데이터베이스(810)에 기록된 DLL 목록 중에서 실제 프로세스(202)에서 입력한 DLL 목록만을 제공하고, 만일 상기 프로세스가 가상 프로세스(203)인 경우에는 상기 전역 훅 DLL 목록 데이터베이스(810)에 기록된 DLL 목록 중에서 가상 프로세스(203)에서 입력한 DLL 목록만을 제공한다.Accordingly, in the present invention, the virtualization engine 240 receives a request for checking the list of DLLs of the processes and checks whether the process is the real process 202 or the virtual process 203, and if it is the real process 202, globally. Of the list of DLLs recorded in the hook DLL list database 810, only the list of DLLs input by the actual process 202 is provided. If the process is a virtual process 203, the list is recorded in the global hook DLL list database 810. Only the list of DLLs input by the virtual process 203 is provided.

이와 같이 구성함으로써, 가상 프로세스(203)는 언제나 가상 프로세스(203)의 DLL만을 로드할 수 있고, 실제 프로세스(202)는 언제나 실제 프로세스(202)의 DLL만을 로드할 수 있도록 하여 가상 프로세스(203)가 악성 코드에 감염되었을 때, 가상 프로세스(203)가 전역 훅을 통하여 자신의 악성 코드를 실제 프로세스(202)에 삽입하고자 하는 것을 원천적으로 방지할 수 있어 악성 코드로부터 컴퓨터 시스템(101)의 실제 영역을 보호할 수 있는 효과를 얻을 수 있다.By doing so, the virtual process 203 can always load only the DLLs of the virtual process 203, and the real process 202 can always load only the DLLs of the real process 202 so that the virtual process 203 can be loaded. Is infected by malware, the virtual process 203 can prevent the virtual process 203 from attempting to inject its malicious code into the actual process 202 via a global hook, thereby preventing the actual area of the computer system 101 from the malicious code. The effect can be obtained to protect.

도 9는 본 발명의 일실시예에 따른 가상화 보안 방법의 흐름을 도시하는 흐름도이다. 본 발명에 따른 가상화 보안 방법은 도 9의 설명에 의하여만 한정되는 것은 아니고, 상술한 가상화 보안 시스템의 구성이 모두 적용될 수 있으며, 그 밖의 다양한 변형도 가능하다.9 is a flowchart illustrating a flow of a virtualization security method according to an embodiment of the present invention. The virtualization security method according to the present invention is not limited only to the description of FIG. 9, all of the above-described configurations of the virtualization security system may be applied, and various other modifications are possible.

단계 S901에서는 컴퓨터의 운영체제에서 제공하는 실제 자원(204)과 구별되며, 가상 프로세스(203) 동작에 필요한 가상 자원(210)을 설정한다. 컴퓨터 시스템에서 사용되는 시스템 자원은 파일 시스템, 레지스트리, 객체 자원 등을 포함할 수 있는데, 이와 같은 시스템 자원은 여러 프로세스가 공유하여 사용하기 때문 에 악성 코드가 복사되어 다른 프로세스로의 전염 매개체가 될 가능성이 높다. 따라서, 본원 발명에서는 실제 자원(204)과 구별되는 가상 자원(210)을 구비하고, 가상 프로세스(203)들은 가상 자원(210)만 사용하도록 제어함으로써, 가상 프로세스(203)가 악성 코드 등에 감염되는 경우에도 실제 자원(204)에 악성 코드가 감염되지 않고, 가상 자원(210)만 감염되도록 하여, 추후 가상 영역(201)을 제거하는 것만으로 용이하게 악성 코드를 제거할 수 있는 효과를 얻을 수 있다. 가상 자원(210)은 가상 파일시스템, 가상 레지스트리, 가상 객체 등을 포함하여 구성될 수 있는데, 이 밖에도 가상 프로세스가 동작하면서 사용하기 위한 시스템 자원들이 포함될 수 있다.In operation S901, the virtual resource 210 that is distinguished from the actual resource 204 provided by the operating system of the computer is set and is required for the operation of the virtual process 203. System resources used in computer systems can include file systems, registries, and object resources. These system resources are shared and used by multiple processes, which means that malicious code can be copied and spread to other processes. This is high. Accordingly, in the present invention, the virtual resources 210 are distinguished from the actual resources 204, and the virtual processes 203 are controlled to use only the virtual resources 210, whereby the virtual processes 203 are infected with malicious code or the like. Even in this case, the malicious code is not infected to the actual resource 204, and only the virtual resource 210 is infected, so that the malware can be easily removed later by simply removing the virtual region 201. . The virtual resource 210 may be configured to include a virtual file system, a virtual registry, a virtual object, and the like, and may also include system resources for use while the virtual process is operating.

단계 S902에서는 가상 프로세스(203)를 구동한다. 상기 가상 프로세스(203)는 상기 가상화 에이전트(230)를 통하여 구동될 수 있는데, 실제 프로세스 구동은 일반적인 실제 프로세스(202)의 구동과 마찬가지로 구동되며, 가상 프로세스(203)로 관리하기 위하여 가상 프로세스 데이터베이스(220)에 가상 프로세스(203)에 대한 정보를 저장할 수 있다.In step S902, the virtual process 203 is driven. The virtual process 203 may be driven through the virtualization agent 230. The real process drive is driven like a normal real process 202, and is managed by the virtual process database (203) to manage the virtual process 203. Information about the virtual process 203 may be stored at 220.

단계 S903에서는 상술한 바와 같이 구동된 프로세스에 대한 정보를 가상 프로세스 데이터베이스(220)에 저장하여 상기 프로세스를 가상 프로세스(203)로 관리할 수 있도록 한다. 상기 가상 프로세스 데이터베이스(220)에 저장되는 가상 프로세스(203)에 대한 정보는 가상 프로세스(203)들의 PID(Process IDentifier)에 관한 정보일 수 있으며, 이 밖에도 프로세스를 식별할 수 있는 정보라면 어떤 형태의 정보라도 가능하다.In operation S903, the virtual process database 220 may store information about the process driven as described above, so that the process may be managed by the virtual process 203. The information on the virtual process 203 stored in the virtual process database 220 may be information on process IDentifiers (PIDs) of the virtual processes 203. In addition, any information that may identify the process may be used. Information is also possible.

단계 S904에서는 단계 S903에서 가상 프로세스 데이터베이스(220)에 저장한 가상 프로세스(203)들을 제어한다. 상기 가상 프로세스(203)들은 가상 자원(210)만을 사용하여 동작하며, 실제 자원(204)에 접근하거나 실제 프로세스(202)와 통신할 수 없도록 제어될 수 있다. 이를 통하여 가상 프로세스(203)들이 악성 코드에 감염되는 경우라도 실제 자원(204) 또는 실제 프로세스(202)가 이에 감염되는 것을 방지할 수 있으며, 가상 영역(201)을 제거하고 재설치 하는 것만으로 용이하게 악성 코드에 감염된 시스템을 복구할 수 있는 효과를 얻을 수 있다.In step S904, the virtual processes 203 stored in the virtual process database 220 in step S903 are controlled. The virtual processes 203 operate using only the virtual resources 210 and may be controlled such that they cannot access or communicate with the actual resources 204. Through this, even when the virtual process 203 is infected with malicious code, the real resource 204 or the real process 202 can be prevented from being infected, and the virtual area 201 can be easily removed by simply removing and reinstalling the virtual area 201. It can be used to repair a system infected with malicious code.

본 발명의 일실시예에 따른 가상화 보안 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.The virtualization security method according to an embodiment of the present invention may be implemented in the form of program instructions that can be executed by various computer means and recorded in a computer readable medium. The computer readable medium may include program instructions, data files, data structures, etc. alone or in combination. Program instructions recorded on the media may be those specially designed and constructed for the purposes of the present invention, or they may be of the kind well-known and available to those having skill in the computer software arts. Examples of computer-readable recording media include magnetic media such as hard disks, floppy disks, and magnetic tape, optical media such as CD-ROMs, DVDs, and magnetic disks, such as floppy disks. Magneto-optical media, and hardware devices specifically configured to store and execute program instructions, such as ROM, RAM, flash memory, and the like. Examples of program instructions include not only machine code generated by a compiler, but also high-level language code that can be executed by a computer using an interpreter or the like. The hardware device described above may be configured to operate as one or more software modules to perform the operations of the present invention, and vice versa.

이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.As described above, the present invention has been described by way of limited embodiments and drawings, but the present invention is not limited to the above embodiments, and those skilled in the art to which the present invention pertains various modifications and variations from such descriptions. This is possible.

그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.Therefore, the scope of the present invention should not be limited to the described embodiments, but should be determined not only by the claims below but also by the equivalents of the claims.

도 1은 종래의 기술에 따른 악성 코드의 전염 과정을 도시하는 도면이다.1 is a diagram illustrating a process of infecting malicious code according to the related art.

도 2는 본 발명의 일실시예에 따른 가상화 보안 시스템의 내부 구성을 도시하는 구성도이다.2 is a block diagram showing an internal configuration of a virtualization security system according to an embodiment of the present invention.

도 3은 본 발명의 일실시예에 따른 가상화 보안 시스템에서 등록된 프로그램들을 가상 프로세스로 구동시키는 방법을 도시하는 도면이다.3 is a diagram illustrating a method of driving registered programs in a virtual process in a virtualization security system according to an embodiment of the present invention.

도 4는 본 발명의 일실시예에 따른 가상화 보안 시스템에서 새로 구동되는 프로세스를 확인하여 가상 프로세스를 등록하는 방법의 흐름을 도시하는 흐름도이다.4 is a flowchart illustrating a method of registering a virtual process by checking a newly started process in a virtualization security system according to an embodiment of the present invention.

도 5는 본 발명의 일실시예에 따른 가상화 보안 시스템에서 가상 파일 시스템에 데이터를 기록하고 쓰는 방법을 도시하는 도면이다.5 is a diagram illustrating a method of writing and writing data to a virtual file system in a virtualization security system according to an embodiment of the present invention.

도 6은 본 발명의 일실시예에 따른 가상화 보안 시스템에서 프로세스가 COM 서버를 찾는 경우를 도시하는 도면이다.6 is a diagram illustrating a case where a process finds a COM server in a virtualization security system according to an embodiment of the present invention.

도 7은 본 발명의 일실시예에 따른 가상화 보안 시스템에서 프로세스가 윈도우 핸들 목록 데이터베이스를 찾는 경우를 도시하는 도면이다.7 is a diagram illustrating a case where a process finds a window handle list database in a virtualization security system according to an embodiment of the present invention.

도 8은 본 발명의 일실시예에 따른 가상화 보안 시스템에서 프로세스가 전역 훅을 수행하는 경우를 도시하는 도면이다.8 is a diagram illustrating a case where a process performs a global hook in a virtualization security system according to an embodiment of the present invention.

도 9는 본 발명의 일실시예에 따른 가상화 보안 방법의 흐름을 도시하는 흐름도이다.9 is a flowchart illustrating a flow of a virtualization security method according to an embodiment of the present invention.

<도면의 주요 부분에 대한 부호의 설명><Explanation of symbols for the main parts of the drawings>

201: 가상영역 (Virtual Area)201: virtual area

202: 실제 프로세스 (Real Process)202: Real Process

203: 가상 프로세스 (Virtual Process)203: Virtual Process

210: 가상자원 (Virtual Resource)210: virtual resource

220: 가상 프로세스 데이터베이스 (Virtual Process Database)220: Virtual Process Database

230: 가상화 에이전트 (Virtualization Agent)230: Virtualization Agent

240: 가상화 엔진 (Virtualization Engine)240: Virtualization Engine

250: 가상화 프로그램 목록 데이터베이스 (Virtualization Program List Database)250: Virtualization Program List Database

260: 가상 COM 서버 (Virtual COM Server)260: Virtual COM Server

Claims (23)

컴퓨터의 운영체제에서 제공하는 실제 자원(resource)과 구별되며, 가상 프로세스(virtual process) 동작에 필요한 자원을 제공하는 가상 자원;A virtual resource that is distinguished from an actual resource provided by an operating system of a computer and provides a resource required for a virtual process operation; 실행중인 가상 프로세스의 목록을 저장하는 가상 프로세스 데이터베이스;A virtual process database that stores a list of running virtual processes; 가상 프로세스를 구동시키고 상기 구동된 가상 프로세스에 대한 정보를 상기 가상 프로세스 데이터베이스에 저장하는 가상화 에이전트;A virtualization agent that drives a virtual process and stores information about the driven virtual process in the virtual process database; 상기 가상 프로세스 데이터베이스에 저장된 프로세스들이 상기 실제 자원에 접근하지 못하고, 상기 가상 자원만을 이용할 수 있도록 제어하는 가상화 엔진; 및A virtualization engine controlling processes stored in the virtual process database to use only the virtual resource without accessing the real resource; And 상기 가상 프로세스에 COM (Component Object Model) 객체를 제공하는 가상 COM 서버Virtual COM server that provides a Component Object Model (COM) object to the virtual process 를 포함하고,Including, 상기 가상화 엔진은,The virtualization engine, 상기 컴퓨터에서 구동되는 프로세스에서 COM 서버를 찾는 경우 상기 프로세스가 상기 가상 프로세스 데이터베이스에 저장되어 있는지 여부를 확인하여, 상기 가상 프로세스 데이터베이스에 저장되어 있는 경우에는 상기 가상 COM 서버의 포트(port)를 상기 프로세스에 알려주고, 그렇지 않은 경우에는 운영체제의 COM 서버의 포트를 상기 프로세스에 알려주는 것을 특징으로 하는 가상화 보안 시스템.When a process running on the computer finds a COM server, it checks whether the process is stored in the virtual process database, and if the process is stored in the virtual process database, sets a port of the virtual COM server. And otherwise informs the process of the port of the COM server of the operating system. 제1항에 있어서,The method of claim 1, 가상 프로세스로 구동될 수 있는 프로그램의 목록을 저장하는 가상화 프로그램 목록 데이터베이스Virtualization program list database, which stores a list of programs that can be run as virtual processes 를 더 포함하고,More, 상기 가상화 에이전트는The virtualization agent 상기 가상화 프로그램 목록 데이터베이스에 저장되어 있는 가상 프로세스로 구동될 수 있는 프로그램만을 상기 가상 프로세스로 구동시키는 것Driving only a program that can be driven by a virtual process stored in the virtualization program list database, into the virtual process 을 특징으로 하는 가상화 보안 시스템.Virtualization security system characterized by. 제2항에 있어서,The method of claim 2, 상기 가상화 프로그램 목록 데이터베이스는The virtualization program list database 상기 가상 프로세스로 구동될 수 있는 프로그램에 대응하여 상기 프로그램 파일이 저장되어 있는 위치 정보를 저장하는 것Storing location information in which the program file is stored in response to a program that can be driven by the virtual process 을 특징으로 하는 가상화 보안 시스템.Virtualization security system characterized by. 제1항에 있어서,The method of claim 1, 상기 가상화 에이전트는The virtualization agent 상기 컴퓨터에서 새로운 프로세스가 구동되면, 상기 구동된 프로세스의 부모 프로세스(parent process)가 상기 가상 프로세스 데이터베이스에 저장되어 있는지 여부를 확인하고, 상기 부모 프로세스가 상기 가상 프로세스 데이터베이스에 저장되어 있으면, 상기 구동된 새로운 프로세스도 상기 가상 프로세스 데이터베이스에 저장하는 것When a new process is started in the computer, it is checked whether a parent process of the driven process is stored in the virtual process database, and if the parent process is stored in the virtual process database, Storing new processes in the virtual process database 을 특징으로 하는 가상화 보안 시스템.Virtualization security system characterized by. 제1항에 있어서,The method of claim 1, 상기 가상화 엔진은The virtualization engine 상기 컴퓨터에서 구동되는 프로세스의 자원 요청을 확인하고 상기 자원을 요청한 프로세스가 상기 가상 프로세스 데이터베이스에 저장되어 있는지 여부를 확인하여, 상기 가상 프로세스 데이터베이스에 저장되어 있는 경우에는 상기 자원을 요청한 프로세스에게 상기 가상 자원을 제공하고, 그렇지 않은 경우에는 상기 자원을 요청한 프로세스에게 상기 실제 자원을 제공하는 것Check the resource request of the process running on the computer and check whether the process requesting the resource is stored in the virtual process database, and if the process is requested in the virtual process database, the process requesting the resource to the virtual resource Providing the actual resource to the process that requested the resource, 을 특징으로 하는 가상화 보안 시스템.Virtualization security system characterized by. 제1항에 있어서,The method of claim 1, 상기 가상 자원은The virtual resource is 상기 컴퓨터의 파일 시스템에 가상 디스크 이미지 파일 형태로 저장되어 상기 가상화 엔진의 제어에 따라 데이터를 읽고 기록하는 가상 파일 시스템Virtual file system stored in the file system of the computer in the form of a virtual disk image file to read and write data under the control of the virtualization engine 을 포함하는 것을 특징으로 하는 가상화 보안 시스템.Virtualization security system comprising a. 제6항에 있어서,The method of claim 6, 상기 가상화 엔진은The virtualization engine 상기 가상 파일 시스템에 데이터를 기록할 때에는 상기 데이터를 암호화 하여 기록하고, 상기 가상 파일 시스템에서 데이터를 읽을 때에는 상기 읽은 데이터를 복호화하는 것Encrypting the data when recording the data in the virtual file system, and decrypting the read data when reading the data in the virtual file system. 을 특징으로 하는 가상화 보안 시스템.Virtualization security system characterized by. 제1항에 있어서,The method of claim 1, 상기 가상 자원은The virtual resource is 가상 레지스트리를 포함하는 것Containing virtual registries 을 특징으로 하는 가상화 보안 시스템.Virtualization security system characterized by. 삭제delete 제1항에 있어서,The method of claim 1, 상기 가상화 엔진은The virtualization engine 상기 컴퓨터에서 구동되는 프로세스가 윈도우 핸들 목록 데이터베이스로부터 윈도우 핸들 목록을 검색하는 경우, 상기 프로세스가 상기 가상 프로세스 데이터베이스에 저장되어 있는지 여부를 확인하여, 상기 가상 프로세스 데이터베이스에 저장되어 있는 경우에는 상기 가상 프로세스들의 윈도우 핸들 목록을 전달하고, 그 렇지 않은 경우에는 가상 프로세스가 아닌 프로세스들의 윈도우 핸들 목록을 전달하는 것When the process running on the computer retrieves the window handle list from the window handle list database, it is checked whether the process is stored in the virtual process database, and when the process is stored in the virtual process database, Pass a list of window handles, otherwise pass a list of window handles for processes that are not virtual 을 특징으로 하는 가상화 보안 시스템.Virtualization security system characterized by. 제1항에 있어서,The method of claim 1, 상기 가상화 엔진은The virtualization engine 상기 컴퓨터에서 구동되는 프로세스가 전역 훅 DLL 목록 데이터베이스로부터 DLL을 검색하는 경우, 상기 프로세스가 상기 가상 프로세스 데이터베이스에 저장되어 있는지 여부를 확인하여, 상기 가상 프로세스 데이터베이스에 저장되어 있는 경우에는 상기 가상 프로세스에서 입력한 DLL만을 제공하고, 그렇지 않은 경우에는 가상 프로세스가 아닌 프로세스들에서 입력한 DLL만을 전달하는 것When a process running on the computer searches for a DLL from a global hook DLL list database, the process checks whether the process is stored in the virtual process database, and if the process is stored in the virtual process database, inputs from the virtual process. Provide only one DLL, otherwise pass only DLLs entered by non-virtual processes 을 특징으로 하는 가상화 보안 시스템.Virtualization security system characterized by. 컴퓨터의 운영체제에서 제공하는 실제 자원(resource)과 구별되며, 가상 프로세스(virtual process) 동작에 필요한 가상 자원을 설정하는 단계;Setting a virtual resource that is distinguished from an actual resource provided by an operating system of the computer and is required for a virtual process operation; 가상 프로세스를 구동시키는 단계;Running a virtual process; 상기 구동된 가상 프로세스에 대한 정보를 상기 가상 프로세스 데이터베이스에 저장하는 단계; 및Storing information about the driven virtual process in the virtual process database; And 상기 가상 프로세스 데이터베이스에 저장된 프로세스들이 상기 실제 자원에 접근하지 못하고, 상기 가상 자원만을 이용할 수 있도록 제어하는 단계Controlling processes stored in the virtual process database to use only the virtual resource without accessing the real resource 를 포함하고,Including, 상기 제어단계는,The control step, 상기 컴퓨터에서 구동되는 프로세스에서 COM 서버를 찾는 경우 상기 프로세스가 상기 가상 프로세스 데이터베이스에 저장되어 있는지 여부를 확인하는 단계;Determining whether a process is stored in the virtual process database when a COM server is found by a process running on the computer; 상기 가상 프로세스 데이터베이스에 저장되어 있는 경우에는 가상화 COM 서버의 포트(port)를 상기 프로세스에 알려주는 단계; 및Informing the process of a port of a virtualized COM server when the virtual process database is stored in the virtual process database; And 상기 가상 프로세스 데이터베이스에 저장되어 있지 않은 경우에는 COM 서버의 포트를 상기 프로세스에 알려주는 단계Notifying the process of the port of the COM server if it is not stored in the virtual process database 를 포함하는 것을 특징으로 하는 가상화 보안 방법.Virtualization security method comprising a. 제12항에 있어서,The method of claim 12, 가상 프로세스로 구동될 수 있는 프로그램의 목록을 가상화 프로그램 목록 데이터베이스에 저장하는 단계Storing a list of programs that can be run as virtual processes in the virtualization program list database 를 더 포함하고,More, 상기 가상 프로세스를 구동시키는 단계는Driving the virtual process 상기 가상화 프로그램 목록 데이터베이스에 저장되어 있는 가상 프로세스로 구동될 수 있는 프로그램만을 상기 가상 프로세스로 구동시키는 것Driving only a program that can be driven by a virtual process stored in the virtualization program list database, into the virtual process 을 특징으로 하는 가상화 보안 방법.Virtualization security method characterized in that. 제13항에 있어서,The method of claim 13, 상기 가상화 프로그램 목록 데이터베이스는The virtualization program list database 상기 가상 프로세스로 구동될 수 있는 프로그램에 대응하여 상기 프로그램 파일이 저장되어 있는 위치 정보를 저장하는 것Storing location information in which the program file is stored in response to a program that can be driven by the virtual process 을 특징으로 하는 가상화 보안 방법.Virtualization security method characterized in that. 제12항에 있어서,The method of claim 12, 상기 구동된 가상 프로세스에 대한 정보를 저장하는 단계는Storing information about the driven virtual process 상기 컴퓨터에서 새로운 프로세스가 구동되면, 상기 구동된 프로세스의 부 모 프로세스(parent process)가 상기 가상 프로세스 데이터베이스에 저장되어 있는지 여부를 확인하고, 상기 부모 프로세스가 상기 가상 프로세스 데이터베이스에 저장되어 있으면, 상기 구동된 새로운 프로세스도 상기 가상 프로세스 데이터베이스에 저장하는 것When a new process is started in the computer, it is checked whether a parent process of the driven process is stored in the virtual process database, and if the parent process is stored in the virtual process database, the driving Storing new processes in the virtual process database 을 특징으로 하는 가상화 보안 방법.Virtualization security method characterized in that. 제12항에 있어서,The method of claim 12, 상기 제어하는 단계는The controlling step 상기 컴퓨터에서 구동되는 프로세스의 자원 요청을 확인하는 단계;Identifying a resource request of a process running on the computer; 상기 자원을 요청한 프로세스가 상기 가상 프로세스 데이터베이스에 저장되어 있는지 여부를 확인하는 단계;Checking whether the process requesting the resource is stored in the virtual process database; 상기 가상 프로세스 데이터베이스에 저장되어 있는 경우에는 상기 자원을 요청한 프로세스에게 상기 가상 자원을 제공하는 단계; 및Providing the virtual resource to a process requesting the resource, when stored in the virtual process database; And 상기 가상 프로세스 데이터베이스에 저장되어 있지 않은 경우에는 상기 자원을 요청한 프로세스에게 상기 실제 자원을 제공하는 단계Providing the real resource to the process requesting the resource if it is not stored in the virtual process database. 를 포함하는 것을 특징으로 하는 가상화 보안 방법.Virtualization security method comprising a. 제12항에 있어서,The method of claim 12, 상기 가상 자원은The virtual resource is 상기 컴퓨터의 파일 시스템에 가상 디스크 이미지 파일 형태로 저장되어 상기 가상 프로세스의 데이터를 읽고 기록하는 가상 파일 시스템Virtual file system stored in the file system of the computer in the form of a virtual disk image file to read and write data of the virtual process 을 포함하는 것을 특징으로 하는 가상화 보안 방법.Virtualization security method comprising a. 제17항에 있어서,The method of claim 17, 상기 제어하는 단계는The controlling step 상기 가상 파일 시스템에 데이터를 기록할 때에는 상기 데이터를 암호화 하여 기록하고, 상기 가상 파일 시스템에서 데이터를 읽을 때에는 상기 읽은 데이터를 복호화하는 것Encrypting the data when recording the data in the virtual file system, and decrypting the read data when reading the data in the virtual file system. 을 특징으로 하는 가상화 보안 방법.Virtualization security method characterized in that. 제12항에 있어서,The method of claim 12, 상기 가상 자원은The virtual resource is 가상 레지스트리를 포함하는 것Containing virtual registries 을 특징으로 하는 가상화 보안 방법.Virtualization security method characterized in that. 삭제delete 제12항에 있어서,The method of claim 12, 상기 컴퓨터에서 구동되는 프로세스가 윈도우 핸들 목록 데이터베이스로부터 윈도우 핸들 목록을 검색하는 경우, 상기 프로세스가 상기 가상 프로세스 데이터베이스에 저장되어 있는지 여부를 확인하는 단계;When a process running on the computer retrieves a window handle list from a window handle list database, checking whether the process is stored in the virtual process database; 상기 가상 프로세스 데이터베이스에 저장되어 있는 경우에는 상기 가상 프로세스들의 윈도우 핸들 목록을 전달하는 단계; 및Passing a list of window handles of the virtual processes when the virtual process database is stored in the virtual process database; And 상기 가상 프로세스 데이터베이스에 저장되어 있지 않은 경우에는 가상 프로세스가 아닌 프로세스들의 윈도우 핸들 목록을 전달하는 단계If it is not stored in the virtual process database step of passing a list of window handles of processes other than the virtual process 를 더 포함하는 것을 특징으로 하는 가상화 보안 방법.Virtualization security method characterized in that it further comprises. 제12항에 있어서,The method of claim 12, 상기 컴퓨터에서 구동되는 프로세스가 전역 훅 DLL 목록 데이터베이스로부터 DLL을 검색하는 경우, 상기 프로세스가 상기 가상 프로세스 데이터베이스에 저장되어 있는지 여부를 확인하는 단계;When a process running on the computer retrieves a DLL from a global hook DLL list database, checking whether the process is stored in the virtual process database; 상기 가상 프로세스 데이터베이스에 저장되어 있는 경우에는 상기 가상 프 로세스에서 입력한 DLL만을 제공하는 단계; 및Providing only a DLL input by the virtual process, when stored in the virtual process database; And 상기 가상 프로세스 데이터베이스에 저장되어 있지 않은 경우에는 가상 프로세스가 아닌 프로세스들에서 입력한 DLL만을 전달하는 단계If it is not stored in the virtual process database, only delivering DLLs input from processes other than the virtual process 를 더 포함하는 것을 특징으로 하는 가상화 보안 방법.Virtualization security method characterized in that it further comprises. 제12항 내지 제19항, 제21항 및 제22항 중 어느 한 항의 방법을 실행하기 위한 프로그램이 기록되어 있는 것을 특징으로 하는 컴퓨터에서 판독 가능한 기록 매체.A computer-readable recording medium in which a program for executing the method of any one of claims 12 to 19, 21 and 22 is recorded.
KR1020090109139A 2009-11-12 2009-11-12 Virtualization Security System and Methods KR101049916B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020090109139A KR101049916B1 (en) 2009-11-12 2009-11-12 Virtualization Security System and Methods

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090109139A KR101049916B1 (en) 2009-11-12 2009-11-12 Virtualization Security System and Methods

Publications (2)

Publication Number Publication Date
KR20110052194A KR20110052194A (en) 2011-05-18
KR101049916B1 true KR101049916B1 (en) 2011-07-15

Family

ID=44362350

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090109139A KR101049916B1 (en) 2009-11-12 2009-11-12 Virtualization Security System and Methods

Country Status (1)

Country Link
KR (1) KR101049916B1 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150278512A1 (en) * 2014-03-28 2015-10-01 Intel Corporation Virtualization based intra-block workload isolation
KR102130807B1 (en) * 2020-01-29 2020-07-06 주식회사 두두아이티 Apparatus and method for providing cyber security training content

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090048293A (en) * 2008-06-17 2009-05-13 (주)노애드 Apparatus and method of managing system resources of computer and processes
KR20090100614A (en) * 2008-03-20 2009-09-24 삼성전자주식회사 Virtual environment system and operating method of the system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090100614A (en) * 2008-03-20 2009-09-24 삼성전자주식회사 Virtual environment system and operating method of the system
KR20090048293A (en) * 2008-06-17 2009-05-13 (주)노애드 Apparatus and method of managing system resources of computer and processes

Also Published As

Publication number Publication date
KR20110052194A (en) 2011-05-18

Similar Documents

Publication Publication Date Title
US9852001B2 (en) Compliance-based adaptations in managed virtual systems
US9477520B2 (en) Registering and accessing virtual systems for use in a managed system
US10353724B2 (en) Automatic optimization for virtual systems
US9710482B2 (en) Enforcement of compliance policies in managed virtual systems
US9563460B2 (en) Enforcement of compliance policies in managed virtual systems
US8234640B1 (en) Compliance-based adaptations in managed virtual systems
US9697019B1 (en) Adapt a virtual machine to comply with system enforced policies and derive an optimized variant of the adapted virtual machine
US8839246B2 (en) Automatic optimization for virtual systems
US8949826B2 (en) Control and management of virtual systems
US9038062B2 (en) Registering and accessing virtual systems for use in a managed system
US8495750B2 (en) Filesystem management and security system
KR101049916B1 (en) Virtualization Security System and Methods
US20220129593A1 (en) Limited introspection for trusted execution environments

Legal Events

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

Payment date: 20140701

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20151113

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20160620

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee