KR101014814B1 - How to Monitor Computer Systems With Kernel Watcher and How to Monitor Kernels - Google Patents
How to Monitor Computer Systems With Kernel Watcher and How to Monitor Kernels Download PDFInfo
- Publication number
- KR101014814B1 KR101014814B1 KR1020090066996A KR20090066996A KR101014814B1 KR 101014814 B1 KR101014814 B1 KR 101014814B1 KR 1020090066996 A KR1020090066996 A KR 1020090066996A KR 20090066996 A KR20090066996 A KR 20090066996A KR 101014814 B1 KR101014814 B1 KR 101014814B1
- Authority
- KR
- South Korea
- Prior art keywords
- system service
- code
- service function
- module
- monitoring
- Prior art date
- Legal status (The legal status 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 status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3051—Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Mathematical Physics (AREA)
- Debugging And Monitoring (AREA)
Abstract
커널 감시기가 설치된 컴퓨터 시스템 및 커널 감시 방법이 제공된다. 본 발명에 의한 커널 감시 방법은 커널(kernel) 모드에서 시스템 서비스 함수의 호출을 중계하는 모듈의 코드 중 감시 대상 시스템 서비스 함수를 호출하는 명령어를 포함하는 제 1 코드 영역을 제 1 대체 코드로 교체하되, 상기 제 1 대체 코드는 제 1 후킹(hooking) 모듈로 점프하는 명령어를 포함하고 상기 제 1 코드 영역이 차지하는 바이트(Byte)와 같은 바이트로 구성되는 단계, 사용자 모드에서 실행 중인 프로세스에 의해 상기 감시의 대상인 시스템 서비스 함수가 호출됨으로써 상기 제 1 대체 코드 및 상기 제 1 후킹 모듈이 순차적으로 실행되는 경우, 상기 제 1 후킹 모듈은 상기 시스템 서비스 함수의 정보를 파라미터로 하여 주 감시 모듈을 호출하는 단계, 상기 주 감시 모듈은 상기 프로세스가 호출하는 시스템 서비스 함수에 대한 정보를 감시 하는 단계 및 상기 주 감시 모듈이 상기 제 1 후킹 모듈로 리턴 된 후, 상기 제 1 후킹 모듈은 상기 프로세스에 의해 호출된 시스템 서비스 함수를 호출하기 위한 명령어를 적어도 하나 실행하는 단계를 포함한다.A computer system with a kernel watchdog and a kernel watchdog method are provided. In the kernel monitoring method according to the present invention, a first code region including an instruction for calling a monitored system service function is replaced with a first replacement code among codes of a module relaying a call of a system service function in kernel mode. Wherein the first replacement code comprises an instruction to jump to a first hooking module and consists of bytes, such as bytes occupied by the first code region, the monitoring by a process running in user mode. When the first replacement code and the first hooking module are executed sequentially by calling a system service function that is a target of the first hooking module, calling the main monitoring module by using the information of the system service function as a parameter; The main monitoring module monitors information about a system service function called by the process. And the state monitoring module, said first hooking module after the return to the said first hooking module includes the step of executing at least one command to invoke a system service function is called by the process.
시스템 서비스 핸들러, 운영 체제, 해킹, 모니터링, KiSystemService System Service Handler, Operating System, Hacking, Monitoring, KiSystemService
Description
본 발명은 커널 감시기가 설치된 컴퓨터 시스템 및 커널 감시 방법에 관한 것이다. 더욱더 자세하게는, 운영체제(Operating System; OS)의 커널에 포함된 시스템 서비스 함수 핸들링 모듈 코드 중 시스템 서비스 함수를 호출하는 코드 영역을 감시 모듈로 점프 하게 하는 후킹(hooking) 방법을 사용하여 해킹 모듈이 감시 모듈을 우회(detour)하여 감시를 회피하는 것을 방지하는 커널 감시기가 설치된 컴퓨터 시스템 및 커널 감시 방법에 관한 것이다.The present invention relates to a computer system and kernel monitoring method provided with a kernel monitor. More specifically, the hacking module monitors the hacking module using a hooking method that jumps a code area that calls a system service function among the system service function handling module codes included in the operating system (OS) kernel to the monitoring module. It relates to a computer system with a kernel watchdog installed and a kernel watchdog method which detours a module to prevent evasion.
오늘날 다중 프로세스(process)가 동작하는 범용 운영체제는 PC와 서버 등에 널리 쓰이고 있다. 운영체제는 수 많은 프로세스 혹은 쓰레드(thread)들이 서로간의 실행에 영향을 주지 않으면서 때로는 협동이 가능하도록 한다. 과거에는 사용자가 검증된 프로그램만을 자신이 직접 설치하기 때문에 실행되는 프로세스들을 운영체제가 어느 정도 신뢰할 수 있었다. 그러나 인터넷의 발달로 인하여 사용자가 안전한지 혹은 악의 있는 악성 코드 프로그램인지 구별하기 어려운 각종 프로그램들이 다운로드(download) 되어 실행되는 일이 일상화되었다. 악의 있는 프로그램들은 운영체제가 제공하는 서비스들을 이용하여 다른 프로그램들의 동작정보 등을 감시 및 관찰하며 이 정보들을 인터넷을 통해 외부로 유출시키기도 한다. 시스템 서비스 함수들이 작성된 목적은 운영체제가 하드웨어 자원을 효율적으로 관리하고 응용 프로그램들이 쉽고 안전하게 하드웨어 자원을 사용할 수 있도록 하기 위한 것이다. 그러나 악의 있는 프로그램은 이러한 시스템 서비스 함수를 악용할 수 있는 문제점을 갖는다.Today, general-purpose operating systems running multiple processes are widely used in PCs and servers. Operating systems often allow many processes or threads to collaborate without affecting each other's execution. In the past, the operating system had some confidence in the processes that were run because the user installed only the verified program himself. However, due to the development of the Internet, it has become common to download and execute various programs that are difficult to distinguish whether the user is a safe or malicious malicious code program. Malicious programs use services provided by the operating system to monitor and observe the operation information of other programs, and to leak the information to the outside via the Internet. The purpose of writing system service functions is to allow the operating system to manage hardware resources efficiently and to allow applications to use hardware resources easily and safely. However, malicious programs have the problem of exploiting these system service functions.
운영체제 위에서 실행되는 모든 프로세스들을 완전히 신뢰할 수 없는 상황에서는 운영체제가 제공하는 시스템 서비스 함수를 감시(monitoring)하는 것이 필수적이다. 예를 들어 메모리 읽기 관련 함수를 불법적인 방법을 통해 임의의 프로세스 A가 사용한다면 다른 프로세스의 메모리 영역을 읽을 수 있다. 만일 프로세스 A가 이런 함수를 활용하여 메모리 해킹(hacking)을 시도한다면 인터넷 뱅킹 금융사고를 발생시킬 수도 있다. 따라서 불법적으로 시스템 서비스 함수를 호출하는 경우에 이 호출을 막는 기능이 필요하며 이를 위해서는 우선 어떤 프로세스가 어떤 시스템 서비스 함수를 호출하고자 하는 지를 감시 하는 것이 선행되어야 한다.In situations where all processes running on top of the operating system are not completely reliable, it is essential to monitor the system service functions provided by the operating system. For example, if an arbitrary process A uses a memory read function in an illegal manner, it can read the memory area of another process. If Process A attempts to hack a memory using these functions, it could cause an Internet banking financial crash. Therefore, in the case of illegally calling a system service function, a function is required to prevent the call. To do this, the first step is to monitor which process wants to call a system service function.
종래의 시스템 서비스 함수 감시 기법 중, 시스템 서비스 함수의 테이블에 저장된 시스템 서비스 함수의 주소를 감시 함수의 주소로 교체하고, 시스템 서비스 함수는 감시 함수에서 호출하는 방법이 있었다. 그러나, 이 방법은 시스템 서비스 함수 핸들링 모듈을 수정하여 감시 함수를 경유하지 않고 바로 시스템 서비스 함수를 호출하는 방법에 의해 우회되는 문제점이 있었다.Among the conventional system service function monitoring techniques, there is a method of replacing the address of a system service function stored in a table of system service functions with the address of a monitoring function, and calling the system service function from the monitoring function. However, this method has a problem that the system service function handling module is bypassed by modifying the system service function handling module and immediately calling the system service function without passing through the monitoring function.
종래의 시스템 서비스 함수 감시 기법 중 다른 방법으로, 감시 하고자 하는 시스템 서비스 함수의 프롤로그 코드에 감시 함수로 점프하도록 하는 후킹 코드를 삽입함으로써 감시 하는 방법이 있었다. 그러나, 이 방법 역시 시스템 서비스 함수 핸들링 모듈을 수정하여 복사된 시스템 서비스 함수를 호출하도록 하거나, 상기 후킹 코드 다음의 명령어로 점프하도록 하는 방법에 의해 우회되는 문제점이 있었다.As another method of the conventional system service function monitoring technique, there is a method of monitoring by inserting a hooking code to jump to the monitoring function in the prolog code of the system service function to be monitored. However, this method also has a problem of being bypassed by modifying the system service function handling module to call the copied system service function or to jump to the instruction following the hooking code.
많은 경우 악의적인 프로세스는 시스템 서비스 함수를 감시 하는 기법이 운영체제에 설치되었는지를 탐지하고 설치된 감시 기법을 상기와 같이 우회하는 방법을 시도하게 된다. 따라서 감시 기법은 이러한 우회 기법들을 탐지하거나 방지할 수 있어야 한다. 하지만 기존의 감시 기법들은 악의적인 프로세스들이 시도하는 감시 모듈 우회 방식에 취약점을 가지고 있다.In many cases, a malicious process attempts to detect whether a system service function monitoring method is installed in the operating system and bypass the installed monitoring method as described above. Surveillance techniques should therefore be able to detect or prevent these bypass techniques. However, existing monitoring techniques are vulnerable to the bypass of the monitoring module that malicious processes attempt.
본 발명이 해결하고자 하는 기술적 과제는 시스템 서비스 함수가 호출되기 이전에 시스템 서비스 함수의 호출 시도를 감시 함으로써 해킹 코드의 시스템 서비스 함수 감시 우회를 방지할 수 있는 시스템 서비스 함수 감시 기능을 제공하는 커널 감시기가 설치된 컴퓨터 시스템을 제공하는 것이다.The technical problem to be solved by the present invention is a kernel monitor that provides a system service function monitoring function that can prevent the system service function monitoring bypass of the hacking code by monitoring the attempt to call the system service function before the system service function is called. It is to provide an installed computer system.
본 발명이 해결하고자 하는 다른 기술적 과제는 커널 감시기를 설치하기 이전에 시스템 서비스 함수 핸들링 모듈에 해킹 모듈에 의한 수정이 가해진 경우 원본의 시스템 서비스 함수 핸들링 모듈로 교체한 후 커널 감시기를 설치하도록 하여 해킹 모듈의 감시 우회 시도를 방지하는 시스템 서비스 함수 감시 기능을 제공하는 커널 감시기가 설치된 컴퓨터 시스템 및 커널 감시방법을 제공하는 것이다.Another technical problem to be solved by the present invention is to replace the system service function handling module with the original system service function handling module if the modification is applied to the system service function handling module before installing the kernel watcher to install the kernel watcher hacking module It provides a computer system and kernel monitoring method installed with a kernel watcher that provides a system service function monitoring function to prevent the monitoring bypass attempt.
본 발명이 해결하고자 하는 또 다른 기술적 과제는 감시 하고자 하는 시스템 서비스 함수에 대하여만 함수 호출을 감시 하도록 최적화 할 수 있는 커널 감시기가 설치된 컴퓨터 시스템을 제공하는 것이다.Another technical problem to be solved by the present invention is to provide a computer system with a kernel monitor that can be optimized to monitor function calls for only system service functions to be monitored.
본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 당업자에게 명확하게 이해 될 수 있을 것이다.The technical problems of the present invention are not limited to the above-mentioned technical problems, and other technical problems not mentioned will be clearly understood by those skilled in the art from the following description.
상기 기술적 과제를 달성하기 위한 본 발명의 일 태양에 따른 커널 감시 방법은 커널(kernel) 모드에서 시스템 서비스 함수의 호출을 중계하는 모듈의 코드 중 감시 대상 시스템 서비스 함수를 호출하는 명령어를 포함하는 제 1 코드 영역을 제 1 대체 코드로 교체하되, 상기 제 1 대체 코드는 제 1 후킹(hooking) 모듈로 점프하는 명령어를 포함하고 상기 제 1 코드 영역이 차지하는 바이트(Byte)와 같은 바이트로 구성되는 단계, 사용자 모드에서 실행 중인 프로세스에 의해 상기 감시의 대상인 시스템 서비스 함수가 호출됨으로써 상기 제 1 대체 코드 및 상기 제 1 후킹 모듈이 순차적으로 실행되는 경우, 상기 제 1 후킹 모듈은 상기 시스템 서비스 함수의 정보를 파라미터로 하여 주 감시 모듈을 호출하는 단계, 상기 주 감시 모듈은 상기 프로세스가 호출하는 시스템 서비스 함수에 대한 정보를 감시 하는 단계 및 상기 주 감시 모듈이 상기 제 1 후킹 모듈로 리턴 된 후, 상기 제 1 후킹 모듈은 상기 프로세스에 의해 호출된 시스템 서비스 함수를 호출하기 위한 명령어를 적어도 하나 실행하는 단계를 포함한다.Kernel monitoring method according to an aspect of the present invention for achieving the technical problem is a first including a command to call the monitored system service function of the code of the module relaying the call of the system service function in the kernel (kernel) mode Replacing a code region with a first replacement code, wherein the first replacement code includes an instruction to jump to a first hooking module and comprises a byte equal to a byte occupied by the first code region; When the first replacement code and the first hooking module are executed sequentially by calling a system service function to be monitored by a process running in the user mode, the first hooking module may parameter information of the system service function. Calling the main monitoring module, when the process calls the main monitoring module. Monitoring information about a system service function and after the main monitoring module returns to the first hooking module, the first hooking module executes at least one instruction for calling a system service function called by the process. It includes a step.
상기 기술적 과제를 달성하기 위한 본 발명의 다른 태양에 따른 커널 감시 장치가 설치된 컴퓨터 시스템은 감시 대상 시스템 서비스 함수를 호출하는 명령어를 포함하는 제 1 코드 영역을 교체한 제 1 대체 코드를 포함하되, 상기 제 1 대체 코드는 제 1 후킹 모듈로 점프하는 명령어를 포함하고 상기 제 1 코드 영역이 차지하는 바이트와 같은 바이트로 구성되는 시스템 서비스 함수 핸들러 모듈, 사용자 모드에서 실행 중인 프로세스에 의해 상기 감시 대상 시스템 서비스 함수가 호출됨으로써 상기 제 1 대체 코드에서 점프 되어 실행되며, 상기 시스템 서비스 함수의 정보를 파라미터로 하여 주 감시 모듈을 호출하고, 상기 주 감시 모듈이 리턴 된 후 상기 프로세스에 의해 호출된 시스템 서비스 함수를 호출하기 위한 명령어를 적 어도 하나 실행하는 제 1 후킹 모듈 및 상기 파라미터를 통해 제공 받은 상기 시스템 서비스 함수의 정보를 감시하는 주 감시 모듈을 포함한다.A computer system provided with a kernel monitoring apparatus according to another aspect of the present invention for achieving the above technical problem includes a first replacement code replacing the first code region including instructions for calling a monitored system service function, The first replacement code includes a command to jump to a first hooking module, the system service function handler module comprising a byte equal to a byte occupied by the first code area, and the system service function to be monitored by a process running in user mode. Is executed by jumping from the first replacement code, calling the main monitoring module with the information of the system service function as a parameter, and calling the system service function called by the process after the main monitoring module is returned. The first to execute at least one instruction for And a main monitoring module for monitoring the information of the system service function provided through the hooking module and the parameters.
상기와 같은 본 발명에 따르면, 악의적인 프로세스가 감시 모듈을 우회하여 시스템 서비스 함수를 호출하는 경우에도 상기 프로세스의 시스템 서비스 함수 호출 관련 데이터를 모두 기록할 수 있는 효과가 있다.According to the present invention as described above, even if the malicious process bypasses the monitoring module to call the system service function, there is an effect that can record all the system service function call-related data of the process.
또한, 상기 프로세스의 시스템 서비스 함수 호출 관련 데이터는 악의적인 프로세스가 허용되지 않은 방식으로 시스템 서비스 함수를 호출하는 것을 방지할 수 있는 백신 프로그램의 기초 데이터로 사용될 수 있는 효과가 있다.In addition, the system service function call-related data of the process has an effect that can be used as the basic data of the antivirus program that can prevent the malicious process to call the system service function in an unauthorized manner.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 게시되는 실시 예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시 예들은 본 발명의 게시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.Advantages and features of the present invention, and methods for achieving them will be apparent with reference to the embodiments described below in detail in conjunction with the accompanying drawings. However, the present invention is not limited to the embodiments disclosed below, but can be implemented in various forms. The embodiments of the present invention make the posting of the present invention complete and the general knowledge in the technical field to which the present invention belongs. It is provided to fully convey the scope of the invention to those skilled in the art, and the present invention is defined only by the scope of the claims. Like reference numerals refer to like elements throughout.
이하, 본 발명의 실시예들에 의하여 커널 감시기가 설치된 컴퓨터 시스템을 설명하기 위한 블록도 또는 처리 흐름도에 대한 도면들을 참고하여 본 발명에 대해 설명하도록 한다. 이 때, 처리 흐름도 도면들의 각 블록과 흐름도 도면들의 조합들 은 컴퓨터 프로그램 인스트럭션들에 의해 수행될 수 있음을 이해할 수 있을 것이다. 이들 컴퓨터 프로그램 인스트럭션들은 범용 컴퓨터, 특수용 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서에 탑재될 수 있으므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비의 프로세서를 통해 수행되는 그 인스트럭션들이 흐름도 블록(들)에서 설명된 기능들을 수행하는 수단을 생성하게 된다. 이들 컴퓨터 프로그램 인스트럭션들은 특정 방식으로 기능을 구현하기 위해 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 지향할 수 있는 컴퓨터 이용 가능 또는 컴퓨터 판독 가능 메모리에 저장되는 것도 가능하므로, 그 컴퓨터 이용가능 또는 컴퓨터 판독 가능 메모리에 저장된 인스트럭션들은 흐름도 블록(들)에서 설명된 기능을 수행하는 인스트럭션 수단을 내포하는 제조 품목을 생산하는 것도 가능하다. 컴퓨터 프로그램 인스트럭션들은 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에 탑재 되는 것도 가능하므로, 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비 상에서 일련의 동작 단계들이 수행되어 컴퓨터로 실행되는 프로세스를 생성해서 컴퓨터 또는 기타 프로그램 가능한 데이터 프로세싱 장비를 수행하는 인스트럭션들은 흐름도 블록(들)에서 설명된 기능들을 실행하기 위한 단계들을 제공하는 것도 가능하다.Hereinafter, the present invention will be described with reference to a block diagram or a flowchart illustrating a computer system in which a kernel monitor is installed according to embodiments of the present invention. At this time, it will be understood that each block of the flowchart illustrations and combinations of flowchart illustrations may be performed by computer program instructions. Since these computer program instructions may be mounted on a processor of a general purpose computer, special purpose computer, or other programmable data processing equipment, those instructions executed through the processor of the computer or other programmable data processing equipment may be described in flow chart block (s). It creates a means to perform the functions. These computer program instructions may be stored in a computer usable or computer readable memory that can be directed to a computer or other programmable data processing equipment to implement functionality in a particular manner, and thus the computer usable or computer readable memory. It is also possible for the instructions stored in to produce an article of manufacture containing instruction means for performing the functions described in the flowchart block (s). Computer program instructions may also be mounted on a computer or other programmable data processing equipment, such that a series of operating steps are performed on the computer or other programmable data processing equipment to create a computer-implemented process to generate a computer or other programmable data. Instructions for performing the processing equipment may also provide steps for performing the functions described in the flowchart block (s).
또한, 각 블록은 특정된 논리적 기능(들)을 실행하기 위한 하나 이상의 실행 가능한 인스트럭션들을 포함하는 모듈, 세그먼트 또는 코드의 일부를 나타낼 수 있다. 또, 몇 가지 대체 실행 예들에서는 블록들에서 언급된 기능들이 순서를 벗어나서 발생하는 것도 가능함을 주목해야 한다. 예컨대, 잇달아 도시되어 있는 두 개의 블록들은 사실 실질적으로 동시에 수행되는 것도 가능하고 또는 그 블록들이 때때로 해당하는 기능에 따라 역순으로 수행되는 것도 가능하다.In addition, each block may represent a portion of a module, segment, or code that includes one or more executable instructions for executing a specified logical function (s). It should also be noted that in some alternative implementations, the functions noted in the blocks may occur out of order. For example, the two blocks shown in succession may in fact be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending on the corresponding function.
이 때, '모듈'이라는 용어는 소프트웨어 또는 FPGA(Field Programmable Gate Array) 또는 ASIC(Application Specific Integrated Circuit)과 같은 하드웨어 구성요소를 의미하며, 모듈은 어떤 역할들을 수행한다. 그렇지만 모듈은 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. 모듈은 어드레싱 할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 모듈은 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소 들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다. 구성요소들과 모듈들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 모듈들로 결합되거나 추가적인 구성요소들과 모듈들로 더 분리될 수 있다.In this case, the term 'module' refers to software or a hardware component such as a field programmable gate array (FPGA) or an application specific integrated circuit (ASIC), and a module plays a role. However, modules are not meant to be limited to software or hardware. The module may be configured to be in an addressable storage medium and may be configured to play one or more processors. Thus, as an example, a module may include components such as software components, object-oriented software components, class components, and task components, and processes, functions, properties, procedures, subroutines, and the like. , Segments of program code, drivers, firmware, microcode, circuits, data, databases, data structures, tables, arrays, and variables. The functionality provided within the components and modules may be combined into a smaller number of components and modules or further separated into additional components and modules.
뿐만 아니라, 구성요소들 및 모듈들은 디바이스 또는 보안 멀티미디어카드 내의 하나 또는 그 이상의 CPU(Central Processing Unit)들을 재생시키도록 구현될 수도 있다.In addition, the components and modules may be implemented to reproduce one or more central processing units (CPUs) in a device or secure multimedia card.
먼저, 본 발명의 일 실시예에 따른 커널 감시기가 설치되는 위치를 도 1 및 도 2를 참조하여 설명하기로 한다.First, the location where the kernel monitor according to an embodiment of the present invention is installed will be described with reference to FIGS. 1 and 2.
도 1은 컴퓨터 시스템의 기본적인 구성을 나타낸 개념도이다.1 is a conceptual diagram showing the basic configuration of a computer system.
컴퓨터 시스템은 주기억장치(106)에 로드 되는 명령어 세트를 해석하고 실행하는 CPU(100), 컴퓨터 시스템의 전원이 오프되는 경우에도 데이터를 저장하기 위한 보조기억장치(102), 컴퓨터 시스템의 사용자로부터 신호를 입력 받고 연산결과를 출력하는 입출력장치(104)를 포함할 수 있다.The computer system includes a
도 1에 도시된 바와 같이 컴퓨터 시스템의 주기억장치(106)는 프로세스를 수행하는 명령코드가 원본파일로부터 로드 되어 실행되는 부분으로서 함수의 호출, 분기 등의 프로세스 주기능을 달성하기 위한 영역인 코드영역(160), 코드영역(160)의 명령코드 실행 시 필요한 데이터가 저장되는 부분으로 소스 코드로부터 이미 예상되어 할당되어진 데이터가 저장되는 영역인 데이터영역(162), 힙 영역과 스택 영역을 지칭하는 가변 데이터영역(164)을 포함한다.As shown in FIG. 1, the
본 실시예에 따른 커널 감시기는 상기 컴퓨터 시스템의 구성요소 중 보조기억장치(102), 주기억장치(106)에 설치되고 CPU(100)에서 실행될 수 있다. 보다 자세하게는 커널 감시와 관련된 모듈의 데이터가 보조기억장치(102)에 저장되어 전원이 오프 되더라도 손실되는 일이 없도록 하고, 전원이 온 되는 경우 상기 컴퓨터 시스템에 설치된 운영체제와 함께 주기억장치(106)의 코드 영역(160)에 로드 되어 커널 감시 기능을 수행할 수 있다.The kernel monitor according to the present embodiment may be installed in the
본 실시예에 따른 커널 감시기의 설치 위치를 더욱 상세하게 설명하기 위해, 도 2를 참조하여 운영체제가 로딩 된 후의 코드 영역(160)을 설명하기로 한다. 도 2는 운영체제가 로딩 된 후의 코드 영역의 구성을 나타낸 개념도이다.To describe in more detail the installation location of the kernel monitor according to the present embodiment, the
일반적으로 운영체제는 응용 프로그램의 하드웨어에 대한 접근을 안전하고 효과적으로 수행하기 위해서 시스템 서비스 함수(208)를 제공한다. 제공되는 시스템 서비스 함수의 종류와 개수는 운영제제 마다 다르다. 응용 프로그램이 실행되는 모드를 사용자 모드(user mode)라고 하고 운영체제의 커널(kernel)이 실행되는 모드를 커널 모드(kernel mode)라고 하는데, 시스템 서비스 함수(208)는 커널 모드에서 실행되는 함수이다. 사용자 모드에서 실행되는 프로세스(200)가 필요한 시스템 서비스 함수(208)를 호출하기 위해서는 커널 모드로 전환이 이루어져야 한다. 전환 방법은 시스템 호출 명령어를 제공하는 방법, 예를 들면 인텔 아키텍처의 SYSENTER 명령어를 사용하는 방법과 특정 소프트웨어 인터럽트를 시스템 호출에 사용하는 방법이 있다.In general, an operating system provides system service functions 208 to securely and effectively perform application access to hardware. The type and number of system service functions provided vary by operating system. The mode in which the application runs is called user mode, and the mode in which the kernel of the operating system runs is called kernel mode. The
커널 모드로 전환하는 방법으로 무엇을 사용하던지 간에 커널은 사용자가 요청한 시스템 서비스 함수의 종류와 인자를 알아내야 하며, 이 일을 담당하는 모듈이 시스템 서비스 함수 핸들러 모듈(204)이다. 운영체제는 자신이 제공하는 시스템 서비스 함수가 메모리의 몇 번지에 있는지 저장된 시스템 서비스 함수 테이블(206)을 유지한다. 시스템 서비스 함수 테이블(206)은 시스템 서비스 함수의 인덱스 및 그에 대응하는 시스템 서비스 함수의 주기억장치(160) 내 주소를 포함한다. 사용자 모드에서 실행되는 프로세스(200)는 사용자 모드 라이브러리(library)(202)가 제공하는 함수를 사용하게 되고, 사용자 모드 라이브러리(202)에 존재하는 함수는 상기 시스템 호출 명령어 혹은 인터럽트를 이용하여 커널 모드로 전환한 후 사용자 모드에서 요청한 시스템 서비스 함수를 결정하여 호출해주는 함수, 즉, 시스템 서비스 함수 핸들러 모듈(204)을 실행하게 된다. 운영체제에 따라서 시스템 서비스 함수 테이블(206)은 한 개가 아니라 여러 개가 될 수 있다. 또한 시스템 서비스 테이블은 계층적 구조로 형성될 수도 있다. 그러나 어떤 경우에도 시스템 서비스 함수 핸들러 모듈(204)은 1개 존재한다.Regardless of what you use to switch to kernel mode, the kernel must know the type and arguments of the system service functions you requested, and the module responsible for this task is the system service
시스템 서비스 함수 핸들러 모듈(204)은 예를 들면 마이크로소프트 윈도우의 KiSystemService() 함수일 수 있으며, 시스템 서비스 함수 테이블(206)은 예를 들면 마이크로소프트 윈도우의 경우 SSDT(System Service Descriptor Table)일 수 있다.The system service
본 실시예에 따른 커널 감시기는 시스템 서비스 함수 핸들러 모듈(204)의 일부 코드 영역을 수정하고, 커널 감시에 필요한 모듈을 주기억장치(106)의 코드 영역(160)에 로딩함으로써 CPU(100)에서 실행된다. 본 실시예에 따른 커널 감시기의 전원이 오프 되었을 때를 대비하여 상기 커널 감시에 필요한 모듈 및 시스템 서비스 함수 핸들러 모듈(204)을 보조기억장치(102)에 저장하는 것이 바람직하다.The kernel monitor according to the present embodiment is executed in the
이하, 본 발명의 다른 실시예에 따른 커널 감시기가 설치된 컴퓨터 시스템의 구조 및 동작에 대하여 도 3, 도 4 및 도5를 참조하여 설명하기로 한다.Hereinafter, the structure and operation of a computer system provided with a kernel monitor according to another embodiment of the present invention will be described with reference to FIGS. 3, 4, and 5.
도 3은 본 실시예에 따른 커널 감시기가 설치된 컴퓨터 시스템의 구조도이다.3 is a structural diagram of a computer system provided with a kernel monitor according to the present embodiment.
도 3에 도시된 바와 같이, 본 실시예에 따른 커널 감시기가 설치된 컴퓨터시스템은 주 감시 모듈(210), 하나 이상의 부 감시 모듈(212), 제 1 후킹 모듈(214), 제 2 후킹 모듈(216), 시스템 서비스 함수 핸들러 모듈(218) 및 원본 유지 모듈(220)을 포함할 수 있다. 시스템 서비스 함수 테이블(206) 및 시스템 서비스 함 수(208)는 도 2에서 이미 설명된 바 있고, 운영체제에서 제공하는 모듈이므로 자세한 설명은 생략하기로 한다.As shown in FIG. 3, the computer system in which the kernel monitor is installed according to the present embodiment includes a
원본 유지 모듈(220)은 본 발명의 일 실시예에 따른 커널 감시기를 컴퓨터 시스템에 설치할 때 동작하는 모듈이다. 원본 유지 모듈(220)은 시스템 서비스 함수 핸들러 모듈(218)의 코드 원본을 저장한다. 상기 코드 원본은 운영체제의 종류 및 버전에 따라 상이할 수 있다. 원본 유지 모듈(220)은 상기 커널 감시기를 설치하기 전에 주 기억장치(106)에 로드 되거나 보조기억장치(102)에 저장된 시스템 서비스 함수 핸들러 모듈(218)의 코드와 상기 코드의 원본이 일치하는지 판정하고, 상기 판정의 결과 일치하지 않는 경우 시스템 서비스 함수 핸들러 모듈(218)의 코드를 원본 코드로 교체한다. 원본 유지 모듈(220)의 이러한 동작은 시스템 서비스 함수 자체를 복사하고 시스템 서비스 함수 핸들링 모듈(204)에 후킹 코드를 삽입하여 시스템 서비스 함수 테이블을 참조하지 않고 직접 복사한 시스템 서비스 함수를 호출하도록 하는 해킹 기법을 방지할 수 있도록 한다.The
시스템 서비스 함수 핸들러 모듈(218)은 운영체제가 제공하는 시스템 서비스 함수 핸들러 모듈(204)을 기반으로 감시 대상 시스템 서비스 함수를 호출하는 명령어를 포함하는 제 1 코드 영역이 제 1 대체 코드로 교체되고, 상기 제 1 코드 영역으로 점프하는 명령어를 포함하는 제 2 코드 영역이 제 2 대체 코드로 교체된 것이다. 본 발명의 이해를 돕기 위하여 상기 제 1 코드 영역, 제 2 코드 영역, 제 1 대체 코드 및 제 2 대체 코드에 대하여 도 4 및 도 5를 이용하여 먼저 설명한다.The system service
도 4는 본 발명의 일 실시예에 따른 커널 감시기를 설치하기 전의 시스템 서 비스 함수 핸들러 모듈(204)을 도시한 도면이다. 도 4에 도시된 내용을 이해함에 있어서, 기재된 기계어 및 어셈블리 코드는 이해를 돕기 위해 기재된 것이며, 본 발명의 내용에 부합하는 일 예시로서의 코드에 불과하므로, 본 발명의 내용이 도 4에 기재된 기계어 및 어셈블리 코드에 대한 것으로 한정하여 해석되어서는 안 된다는 점을 이해하여야 한다.4 is a diagram illustrating a system service
본 발명의 일 실시예에 따른 커널 감시기를 설치하기 위하여는 시스템 서비스 함수 핸들러 모듈(204)의 코드 중에서 제 1 대체 코드와 교체될 코드의 영역인 제 1 코드 영역, 제 2 대체 코드와 교체될 코드의 영역인 제 2 코드 영역이 각각 지정되어야 한다. 이하, 제 1 코드 영역 및 제 2 코드 영역을 시스템 서비스 함수 핸들러 모듈(204)의 코드 중에서 지정하는 기준을 설명하기로 한다.In order to install the kernel monitor according to an embodiment of the present invention, the code to be replaced with the first code area and the second replacement code, which are areas of the code to be replaced with the first replacement code, among the codes of the system service
시스템 서비스 함수 핸들러 모듈(204)의 코드에는 사용자 모드에서 실행되는 프로세스에서 호출한 시스템 서비스 함수를 호출하는 내용의 코드가 포함되어 있다. 보다 자세하게는, 시스템 서비스 함수(208)의 인덱스 번호를 사용하여 시스템 서비스 함수 테이블(206)에 등록된 시스템 서비스 함수의 주소를 참조하여 호출하는 내용의 코드가 포함되어 있다. 제 1 코드 영역은 감시의 대상인 시스템 서비스 함수를 상기와 같이 시스템 서비스 함수 테이블(206)에 등록된 시스템 서비스 함수의 주소를 참조하여 호출하는 명령어를 포함한다.The code of the system service
도 4에 도시된 바에 따르면, 제 1 코드 영역은 3개의 기계 명령어로 구성되어 있다. 각각의 기계 명령어의 첫 번째 행은 기계어를 나타내고, 두 번째 행은 기계어에 대한 어셈블리어(assembly language)를 나타낸다. 예를 들어 “FFD3 call ebx”는 기계 명령어 FFD3은 어셈블리어로 “call ebx”를 의미하고, 이는 EBX레지스터에 저장된 주소 값으로 함수 호출을 수행하라는 의미이다. 도 4에 도시된 제 1 코드 영역의 각 열의 기계 명령어는 6바이트, 2바이트, 2바이트 크기를 차지한다.As shown in Fig. 4, the first code area consists of three machine instructions. The first line of each machine instruction represents a machine language, and the second line represents an assembly language for the machine language. For example, “FFD3 call ebx” means the machine instruction FFD3 means “call ebx” in assembly language, which means to make a function call with the address value stored in the EBX register. The machine instructions in each column of the first code area shown in FIG. 4 occupy 6 bytes, 2 bytes, and 2 bytes in size.
한편, 상기 제 1 코드 영역에 포함된 3개의 기계 명령어 중, 3번째 명령어 'call ebx' 만이 시스템 서비스 함수를 호출하는 명령어이다. 그럼에도 불구 하고 'call ebx'에 선행하는 두 개의 명령어를 추가로 제 1 코드 영역으로 지정한 이유는 추후 도 5와 함께 설명하기로 한다.Meanwhile, of the three machine instructions included in the first code area, only the third instruction 'call ebx' is a command for calling a system service function. Nevertheless, the reason why two instructions preceding 'call ebx' are additionally designated as the first code region will be described later with reference to FIG. 5.
상기 제 1 코드 영역은 시스템 서비스 함수(208)에 따라 시스템 서비스 함수 핸들러 모듈(204)의 코드 내의 다른 위치에 존재할 수 있다. 따라서, 감시 하고자 하는 시스템 서비스 함수 개수만큼의 제 1 코드 영역이 지정될 수 있다. 예를 들어 시스템 서비스 함수 1, 3, 5 번을 감시 하고자 하는 경우, 시스템 서비스 함수 테이블(206)에 저장된 시스템 서비스 함수 1, 3, 5 번의 주소를 call 하는 명령어를 포함하는 서로 다른 위치의 3개의 제 1 코드 영역이 지정될 수 있다.The first code region may be in another location within the code of the system service
한편, 상기 제 2 코드 영역은 상기 제 1 코드 영역이 각각 제 1 대체 코드로 교체되는 경우 발생할 수 있는 문제점을 해결하기 위해 지정된다. 상기 문제점은, 예를 들어 시스템 서비스 함수 핸들러 모듈(204)에 포함된 코드 중 상기 제 1 코드 영역으로 점프하는 명령어가 실행된 경우, 점프된 위치가 제 1 대체 코드로 교체된 결과 노 오퍼레이션(NOP) 명령어라면 발생할 수 있다. 상기 제 1 코드 영역으로 점프하는 명령어를 포함하는 일정 영역의 코드를 제 2 코드 영역으로 지정할 수 있다.Meanwhile, the second code area is designated to solve a problem that may occur when the first code area is replaced with the first replacement code, respectively. The problem is that, for example, when an instruction to jump to the first code region among the codes included in the system service
상기 문제점을 해결하기 위해서는 상기 제 2 코드 영역 역시 제 2 대체 코드로 교체되어야 한다. 상기 제 2 코드 영역은 상기 제 1 코드 영역에 대응하여 존재하는 데, 운영체제의 종류에 따라 하나의 제 1 코드 영역에 대하여 한 개 이상의 제 2 코드 영역이 존재할 수도 있고, 대응하는 제 2 코드 영역이 존재하지 않을 수도 있다.In order to solve the problem, the second code area must also be replaced with a second replacement code. The second code area exists in correspondence with the first code area. Depending on the type of operating system, one or more second code areas may exist for one first code area. It may not exist.
도 4에 도시된 바에 의하면 제 2 코드 영역의 2번째 명령어가 제 1 코드 영역의 2번째 명령어, 즉, “rep movs”로 점프할 수 있다. 따라서, 도 4에 도시된 제 2 코드 영역의 명령어 중 두 번째 명령어 만이 제 1 코드 영역으로 점프하는 명령어 임에도 불구하고 선행하는 한 개의 명령어 역시 제 2 코드 영역으로 지정되어 있다. 그 이유는 상기 제 1 코드 영역에서와 같은 것인 것인데, 그 이유 역시 추후 도 5와 함께 설명하기로 한다.As shown in FIG. 4, the second command of the second code area may jump to the second command of the first code area, that is, “rep movs”. Therefore, although only the second instruction among the instructions of the second code region illustrated in FIG. 4 is the instruction jumping to the first code region, one preceding instruction is also designated as the second code region. The reason is the same as in the first code region, which will also be described later with reference to FIG. 5.
이상, 제 1 코드 영역 및 제 2 코드 영역을 시스템 서비스 함수 핸들러 모듈(204)의 코드 중에서 지정하는 기준을 설명하였다. 상기 언급한 바와 같이, 시스템 서비스 함수 핸들러 모듈(204)의 제 1 코드 영역 및 제 2 코드 영역은 본 발명의 일 실시예에 따른 커널 감시기가 설치됨에 따라, 각각 제 1 대체 코드 및 제 2 대체 코드로 교체된다. 또한, 상기 제 1 대체 코드 및 제 2 대체 코드는 각각 제 1 후킹 모듈 및 제 2 후킹 모듈로 점프하는 명령어를 포함한다. 이하, 도 5를 참조하여 상기 제 1 대체 코드 및 상기 제 2 대체 코드에 대해 설명하기로 한다.In the above, the criterion which designates the 1st code area and the 2nd code area among the codes of the system service
도 5는 본 발명의 일 실시예에 따른 커널 감시기가 설치된 상태의 시스템 서비스 함수 핸들러 모듈(218)에 대하여 도시한 도면이다.5 is a diagram illustrating a system service
먼저, 상기 제 1 코드 영역에 대응하는 제 1 대체 코드에 대하여 설명하기로 한다.First, a first replacement code corresponding to the first code area will be described.
제 1 대체 코드는 도 5에 도시된 바와 같이 CPU 사이클만 소모하며 아무 일도 하지 않는 명령어인 3개의 NOP 명령어(0x90)와 제 1 후킹 모듈(214)로 점프하는 코드(0xEAxxxxxxxx0800)로 구성된다. 또한 제 1 후킹 모듈(214)로 점프하는 상기 코드는 시스템 내부에서 안정적으로 점프 명령을 사용하기 위해 다른 코드 세그먼트(segment)까지 점프할 수 있는 FAR점프를 사용하였다. 그 결과 상기 점프 코드는 7 바이트를 차지한다.The first replacement code consists of three NOP instructions (0x90), which are instructions that consume only CPU cycles and do nothing, and a code (0xEAxxxxxxxx0800) that jumps to the first hooking
제 1 대체 코드는 제 1 코드 영역과 같은 바이트 수로 구성되어야 한다는 점은 자명하다. 같은 바이트 수가 아닌 경우, 시스템 서비스 함수 핸들러 모듈(204)의 명령어들의 offset이 변경되면서 시스템 서비스 함수 핸들러 모듈(204)의 기능이 손상될 것이기 때문이다. 그러나, 도 4에 도시된 상기 제 1 코드 영역의 시스템 서비스 함수를 호출하는 명령어가 2 바이트 밖에 안 되는 반면, 상기 점프 코드가 7 바이트라는 점 때문에 제 1 코드 영역은 2 바이트가 아닌 10 바이트로 지정되었다.Obviously, the first replacement code should consist of the same number of bytes as the first code area. If it is not the same number of bytes, because the offset of the instructions of the system service
제 1 코드 영역 및 제 1 대체 코드가 10 바이트로 지정된 이유를 좀더 자세하게 설명하기로 한다. 도 4에 도시된 제 1 코드 영역의 명령어 중 시스템 서비스 함수(208) 호출 명령어는 2 바이트로 구성되는 'call ebx' 하나뿐 이지만, 제 1 대체 코드에 포함되는 제 1 후킹 모듈(214)로의 점프 명령어가 7 바이트를 차지하는 이유로 제 1 코드 영역 역시 최소한 7 바이트로 구성되어야 한다. 또한 'call ebx' 바로 이전 명령어인 'rep movs' 역시 2 바이트에 불과하여 7 바이트에 미치지 못한다. 결국, 'jae offset' 명령어까지 제 1 코드 영역에 포함시키는 방법으로 7 바이트를 넘어설 수 있다. 한편, 제 1 코드 영역이 7 바이트를 3 바이트 초과한 10바이트로 구성됨으로 인해, 제 1 대체 코드에는 3 바이트를 추가할 필요가 생긴다. 상기 추가된 바이트로 인하여 별도의 동작이 있어서는 안되므로 3개의 NOP 명령어를 포함함으로써 3 바이트를 추가할 수 있다.The reason why the first code area and the first replacement code are designated by 10 bytes will be described in more detail. Among the instructions of the first code area shown in FIG. 4, the
정리하면, 상기 제 1 코드 영역이 제 1 후킹 모듈(214)로 점프하는 명령어가 차지하는 바이트보다 많은 바이트로 구성되는 경우, 상기 제 1 코드 영역은 상기 시스템 서비스 함수 호출 명령어보다 선행하거나 후행 하는 명령어를 적어도 하나 포함하고, 상기 제 1 대체 코드는 적어도 하나의 노오퍼레이션(NOP) 명령어를 포함하되, 상기 노오퍼레이션 명령어의 수는 상기 제 1 코드 영역의 바이트 수와 상기 제 1 후킹 모듈로의 점프 명령어 바이트 수의 차이를 노오퍼레이션 명령어가 차지하는 바이트 수로 나눈 것이다. 이때, 상기 제 1 코드 영역에 포함된 시스템 서비스 함수 호출 명령어보다 선행하거나 상기 명령어에 후행 하는 명령어는 제 1 후킹 모듈(214)에서 실행된다.In summary, when the first code area consists of more bytes than the bytes occupied by the instruction jumping to the first hooking
다음으로, 상기 제 2 코드 영역에 대응하는 제 2 대체 코드에 대하여 설명하기로 한다.Next, a second replacement code corresponding to the second code area will be described.
상기 제 1 코드영역이 10 바이트로 구성된 것과 마찬가지의 이유로 제 2 코드 영역 역시 10 바이트로 구성되어 있고, 제 2 대체 코드는 제 2 후킹 모듈로 점프하는 명령어 및 3개의 NOP 명령어를 포함하고 있다.For the same reason that the first code region is composed of 10 bytes, the second code region is also composed of 10 bytes, and the second replacement code includes an instruction to jump to the second hooking module and three NOP instructions.
상기 제 1 코드 영역 및 상기 제 2 코드 영역은 각각 시스템 서비스 함수를 호출하는 명령어와 제 1 코드 영역으로 점프하는 명령어가 가장 마지막 명령어로 구성되어 있으나, 상기 명령어가 상기 제 1 코드 영역 및 상기 제 2 코드 영역의 첫 번째 명령어로 구성될 수도 있고, 중간의 명령어로 구성될 수도 있음을 유의해야 한다.Each of the first code area and the second code area includes a command for calling a system service function and a command for jumping to the first code area, respectively, but the command is the first code area and the second code area. Note that it may consist of the first instruction in the code area, or it may consist of an intermediate instruction.
다음으로, 제 1 후킹 모듈(214)에 대하여 설명하기로 한다. 제 1 후킹 모듈(214)은 사용자 모드의 프로세스가 감시 대상인 시스템 서비스 함수를 호출하는 경우, 제 1 대체코드의 제 1 후킹 모듈(214)로 점프하는 명령어가 실행됨에 의해 실행되게 된다.Next, the first hooking
표 1은 도 4에 도시된 상기 제 1 코드 영역 및 도 5에 도시된 상기 제 1대체 코드에 따른 제 1 후킹 모듈(214)의 명령어 구성 예시이다.Table 1 is an example of an instruction configuration of the first hooking
<표 1: 제 1 후킹 모듈의 명령어 구성 예시><Table 1: Example of Command Structure of First Hooking Module>
제 1 후킹 모듈(214)의 첫 번째 명령어(표 1의 ①)는 상기 제 1 코드 영역의 첫 번째 명령어를 실행하는 것과 같은 결과를 얻기 위한 것이다. 상기 제 1 코드 영역의 첫 번째 명령어는 만일 CPU의 상태비트가 설정되었다면 시스템 서비스 함수 핸들러 모듈(218)의 상기 제 2 코드 영역으로 점프하고 그렇지 않으면 콜 코드의 다음 명령어, 즉, “rep movs”를 실행하게 된다. 따라서 상기 제 1 후킹 모듈의 첫 번째 명령어는 만일 CPU의 상태비트가 설정되었다면 제 2 후킹 모듈(216)로 점프하는 명령어이다.The first instruction (1 in Table 1) of the first hooking
제 1 후킹 모듈(214)의 두 번째에서 네 번째 명령어(표 1의 ②~④)는 주 감시 모듈(210)을 호출하기 위한 것이다. EBX레지스터에는 응용 프로그램이 호출하고자 하는 시스템 서비스 함수의 주소가 저장되어있고 EAX레지스터에는 시스템 서비스 함수 테이블(206)의 인덱스 번호, 즉, 호출하고자 하는 함수 번호를 가지고 있다. 따라서 이 세 개의 명령어를 수행하게 되면 주 감시 모듈(210)을 호출하게 된다. EAX 레지스터 및 EBX 레지스터는 주 감시 모듈(210)의 첫 번째와 두 번째 파라미터로써, 상기 파라미터에는 사용자 모드에서 실행 중인 프로세스가 호출하고자 하는 시스템 서비스 함수(208)의 주소 및 함수 번호가 들어가게 된다.The second to fourth instructions of the first hooking module 214 (2 ~ 4 in Table 1) are for calling the
주 감시 모듈(210)은 전달받은 상기 두 파라미터를 이용하여 시스템서비스 함수 테이블(206)에 등록된 함수 호출인지, 그 외의 테이블에 등록된 함수 호출인지를 구분하는 비교검사를 수행한다. 또한, 주 감시 모듈(210)은 프로세스 식별 정보, 시스템 서비스 함수(208)의 인덱스 및 시스템 서비스 함수(208)의 주소 값을 CPU 내부의 레지스터, 주기억장치(206) 및 보조기억장치(102) 중 적어도 하나에 저장함으로써, 추후 각 프로세스의 시스템 서비스 함수 호출 이력을 관리할 수 있다.The
주 감시 모듈(210)이 포함하는 모든 명령어가 실행 된 경우, 주 감시 모듈(210)은 리턴 값(return value)으로 사용자 모드 프로세스가 요청한 시스템 서비스 함수(208)에 대응되는 부 감시 모듈(210)의 주소 값을 설정 할 수 있다. 예를 들어, CPU(100)가 IA-32(x86) 계열이라면, 상기 리턴 값은 EAX 레지스터에 저장되게 된다.When all the commands included in the
다섯 번째 명령어와 여섯 번째 명령어(표 1의 ⑤~⑥)를 수행하게 되면 EBX 레지스터에 부 감시 모듈(212)의 주소 값이 저장된다. 따라서 일곱 번째 명령어와 여덟 번째 명령어(표 1의 ⑦~⑧)를 수행하면 부 감시 모듈(212)의 호출이 이루어진다.When the fifth instruction and the sixth instruction (⑤ ~ ⑥ in Table 1) are executed, the address value of the
부 감시 모듈(212)은 자신의 파라미터 값을 조사하여 다양한 감시 역할을 수행한 후 대응되는 시스템 서비스 함수(208)를 호출한다.The
아홉 번째 명령어(표 1의 ⑨)는 시스템 서비스 함수 핸들러 모듈(218)의 제 1 코드 영역 다음 명령어로 점프하는 명령어이다.The ninth instruction (9 in Table 1) is the instruction jumping to the instruction following the first code area of the system service
이하, 감시 대상인 시스템 서비스 함수의 호출이 요청되는 경우 제 1 후킹 모듈(214)에 의해 호출되는 주 감시 모듈(210) 및 부 감시 모듈(212)에 대하여 보다 상세한 설명을 하기로 한다. 주 감시 모듈(210)은 사용자 모드의 프로세스가 호출하는 시스템 서비스 함수(208)에 대한 정보를 감시 하기 위한 것이고, 감시 대상인 시스템 서비스 함수와 대응하는 감시 부 함수(212)들은 상기 시스템 서비스 함수(208)가 구체적으로 어떤 파라미터 값을 어떤 식으로 사용하는 지를 관찰하기 위한 것이다.Hereinafter, the
주 감시 모듈(210)은 1개 존재하며 부 감시 모듈(212)들은 감시 하고자 하는 시스템 서비스 함수의 개수에 따라 정해진다. 예를 들면, 주 감시 모듈(210)은 프로세스 A가 호출한 시스템 서비스 함수의 종류가 무엇이고 각 종류의 시스템 서비 스 함수를 몇 번씩 호출 했는지를 감시 할 수 있다.There is one
그런데, 본 커널 감시기가 컴퓨터 시스템에 설치되어 실행된 이후, 다른 프로그램에 의해 시스템 서비스 함수 테이블(206)에 등록된 함수 주소가 변경되었을 경우, 주 감시 모듈(210)에서 수행되는 인덱스와 함수 주소를 이용한 상기 비교검사는 정상적으로 실행되지 않을 것이다. 이 문제를 해결하기 위해, 주 감시 모듈(210)은 호출이 요청된 함수의 주소와 커널 감시 실행 초기에 저장해 놓은 상기 함수의 주소가 다르면, 해킹된 것으로 인지하여 감시 하고자 하는 함수의 주소를 변경된 함수로 갱신함으로써, 이 후 정상적인 감시가 이루어지게 하거나 해킹 가능성을 통지하는 알람 메시지를 게시할 수 있다.However, after the kernel monitor is installed and executed in a computer system, when a function address registered in the system service function table 206 is changed by another program, an index and a function address performed by the
부 감시 모듈(212)은 시스템 서비스 함수(208)를 호출하는 모듈로 시스템 서비스 함수(208)와 1 대 1로 대응하는 모듈일 수 있다. 부 감시 모듈(212)은 제 1 후킹 모듈(214)이 주 감시 모듈(210)의 리턴 값으로 설정된 부 감시 모듈(212)의 주소를 참조하여 호출할 수 있다.The
메모리를 읽는 시스템 서비스 함수(208)를 예로 들어보면, 상기 메모리를읽는 기능의 시스템 서비스 함수(208)와 대응하는 하나의 부 감시 모듈(212)이 존재할 수 있다. 예를 들면, 메모리를 읽는 시스템 서비스 함수(208)가 NtReadVirtualMemory()함수일 때, 부 감시 모듈(212)은 NtReadVirtualMemory() 함수와 원형(prototype)이 같은 함수, 예를 들면, MonitoringNtReadVirtualMemory() 함수로 구성 될 수 있다. 이때, 상기 부 감시 모듈(212)은 NtReadVirtualMemory() 함수로 입력되는 파라미터 값을 NtReadVirtualMemory() 함수의 호출 이전에 조사함 으로써, 프로세스 A에서 읽는 구체적인 메모리 주소들을 알아낼 수 있다.As an example of a
다음으로, 제 2 후킹 모듈(216)에 대하여 설명하기로 한다. 제 2 후킹 모듈(216)은 제 2 대체코드의 제 2 후킹 모듈(216)로 점프하는 명령어가 실행되거나, 제 2 코드 영역으로 점프하는 제 1 후킹 모듈(214)의 명령어가 실행되는 경우 실행되게 된다.Next, the second hooking
표 2는 도 4에 도시된 상기 제 2 코드 영역 및 도 5에 도시된 상기 제 2대체 코드에 따른 제 2 후킹 모듈(216)의 명령어 구성 예시이다.Table 2 is a command configuration example of the second hooking
<표 2: 제 2 후킹 모듈의 명령어 구성 예시><Table 2: Example of Command Configuration of Second Hooking Module>
제 2 후킹 모듈(216)은 제 2 코드 영역에 대응되는 부분과 시스템 서비스함수 핸들러 모듈(218)에 존재하는 제 2 코드 영역 다음 명령어를 수행하기 위한 점프 코드 부분으로 구성된다. 도 4에 도시된 제 2 코드 영역은 제 1 코드 영역으로 점프하는 명령어와 그 이전 명령어의 두 개로 구성된다. 따라서 제 2 코드 영역에 대응되는 부분은 제 1 코드 영역으로 점프하는 명령어와 동일한 결과를 갖도록 제 1 후킹 모듈로 점프(표 2의 ②) 하도록 만들고, 그 이전 명령어(표 2의 ①)는 그대로 사용한다. 제 2 코드 영역 다음 명령어를 수행하기 위한 점프 부분은 시스템 서비스 함수 핸들러 모듈(218)의 제 2 코드 영역 뒤에 위치한 명령어로 점프하도록 코드를 만든다(표 2의 ③).The second hooking
이하, 본 발명의 또 다른 실시예에 따른 커널 감시 방법에 대하여 도 6 및 도 7을 참조하여 설명하기로 한다. 도 6은 본 실시예에 따른 커널 감시 방법의 순서도이다.Hereinafter, a kernel monitoring method according to another embodiment of the present invention will be described with reference to FIGS. 6 and 7. 6 is a flowchart of a kernel monitoring method according to the present embodiment.
먼저, 커널 감시기를 컴퓨터 시스템에 설치한다(S600). 이하, 상기 설치 방법에 대하여 도 7을 참조하여 먼저 설명하기로 한다. 도 7은 본 실시예에 다른 커널 감시기의 설치 방법의 순서도이다.First, the kernel monitor is installed in the computer system (S600). Hereinafter, the installation method will be described first with reference to FIG. 7. 7 is a flowchart of a method of installing a kernel monitor according to the present embodiment.
시스템 서비스 함수 핸들러 모듈의 원본을 저장한다(S700). 상기 원본은 운영체제의 종류 및 버전 별로 상이할 수 있다.The original system service function handler module is stored (S700). The original may be different according to the type and version of the operating system.
상기 커널 감시기의 설치 준비 단계로, 주 기억장치(106)에 로드 되거나 보조기억장치(102)에 저장된 시스템 서비스 함수 핸들러 모듈(218)의 코드와 상기 코드의 원본이 일치하는지 판정하고(S702), 상기 판정의 결과 일치하지 않는 경우 시스템 서비스 함수 핸들러 모듈(218)의 코드를 원본 코드로 교체한다(S704). 원본 일치 판정 단계(S702) 및 원본 코드로 교체하는 단계(S704)는 시스템 서비스 함수 자체를 복사하고 시스템 서비스 함수 핸들링 모듈(204)에 후킹 코드를 삽입하여 시스템 서비스 함수 테이블을 참조하지 않고 직접 복사한 시스템 서비스 함수를 호출하도록 하는 해킹 기법을 방지할 수 있도록 한다.In the preparation step of installing the kernel monitor, it is determined whether the code of the system service
그 다음으로, 시스템 서비스 함수 핸들러 모듈(204)의 제 1 코드 영역을 제 1 대체 코드로 교체하고(S706), 시스템 서비스 함수 핸들러 모듈(204)의 제 2 코드 영역도 제 2 대체 코드로 교체한다(S706). 상기 제 1 코드 영역, 제 2 코드 영역, 제 1 대체 코드, 제 2 대체 코드의 지정 기준 및 포함되는 명령어의 내용은 상기 본 발명의 일 실시예에 따른 커널 감시기가 설치된 컴퓨터 시스템에서 설명한 것과 동일하므로 별도의 설명은 생략하기로 한다.Next, the first code area of the system service
S700 내지 S708 단계를 수행함으로써, 커널 감시기가 설치 되기 전의 시스템 서비스 함수 핸들러 모듈(204)이 커널 감시기가 설치된 컴퓨터 시스템의 시스템 서비스 함수 핸들러 모듈(218)로 변경된다. 상기 교체(S706, S707)는 주기억장치(106), 보조기억장치(102)에 저장된 시스템 서비스 함수 핸들러 모듈(204) 모두에 대하여 수행되는 것이 바람직하다. 특히, 주기억장치(106)에 저장된 시스템 서비스 함수 핸들러 모듈(204)이 교체된 후 변경된 내용을 반영하기 위하여 시스템의 재 부팅을 수행할 수도 있다.By performing steps S700 to S708, the system service
마지막으로, 커널 감시 기능을 위해 시스템 서비스 함수 핸들러 모듈(218)이외에 추가로 필요한 모듈인 제 1 후킹 모듈(214), 제 2 후킹 모듈(216), 주 감시 모듈(210), 하나 이상의 부 감시 모듈(212)을 주기억장치(106)에 로딩하고 보조기억장치(102)에 저장함으로써, 커널 감시기를 컴퓨터 시스템에 설치하는 단계(S600)가 마무리된다.Finally, the first hooking
이하, 사용자 모드에서 실행되는 프로세스가 시스템 서비스 함수를 실제로 호출하는 경우(S602), 커널 모드에서 이를 감시하는 방법을 다시 도 6을 참조하여 설명하기로 한다. 이하, 상기 시스템 서비스 함수는 감시 대상인 시스템 서비스 함수인 것으로 가정한다. 본 실시예에 따른 커널 감시 방법은 운영 체제가 제공하는 모든 시스템 서비스 함수에 대하여 감시되어야 하는 것이 아니고, 하나 이상의 시스템 서비스 함수에 대하여 감시 기능을 제공하도록 커스터마이징(customizing) 될 수 있다는 점을 유의하여야 한다. 사용자 모드에서 실행되는 프로세스가 감시 대상 이 아닌 시스템 서비스 함수를 호출하는 경우에는 본 실시예에 따른 커널 감시 기능이 동작하지 않는다는 점을 유의하여야 한다.Hereinafter, when a process running in user mode actually calls a system service function (S602), a method of monitoring the same in kernel mode will be described with reference to FIG. 6 again. Hereinafter, it is assumed that the system service function is a system service function to be monitored. It should be noted that the kernel monitoring method according to the present embodiment does not have to be monitored for all system service functions provided by the operating system, but can be customized to provide a monitoring function for one or more system service functions. . It should be noted that the kernel monitoring function according to the present embodiment does not operate when a process running in the user mode calls a system service function that is not to be monitored.
시스템 서비스 함수 호출(S602) 시, 운영 체제는 커널 레벨의 시스템 서비스 함수 핸들러 모듈(218)을 실행한다(S604). 그 후, 제 1 코드 영역에 포함된 상기 제 1 대체 코드 및 제 1 후킹 모듈(214)에 포함된 명령어가 순차적으로 실행된다(S606). 제 1 후킹 모듈(214)은 상기 시스템 서비스 함수의 정보를 파라미터로 하여 주 감시 모듈(210)을 호출한다.In a system service function call (S602), the operating system executes a kernel level system service function handler module 218 (S604). Thereafter, the first replacement code included in the first code area and the instructions included in the first hooking
주 감시 모듈(210)은 상기 시스템 서비스 함수에 대한 정보를 감시한다(S610). 상기 감시는 다양한 방법으로 수행 될 수 있다. 예를 들어, 전달받은 상기 두 파라미터를 이용하여 시스템서비스 함수 테이블(206)에 등록된 함수 호출인지, 그 외의 테이블에 등록된 함수 호출인지를 구분하는 비교검사가 수행될 수 있다. 또한, 주 감시 모듈(210)은 프로세스 식별 정보, 시스템 서비스 함수(208)의 인덱스 및 시스템 서비스 함수(208)의 주소 값을 CPU 내부의 레지스터, 주기억장치(206) 및 보조기억장치(102) 중 적어도 하나에 저장함으로써, 추후 각 프로세스의 시스템 서비스 함수 호출 이력을 관리할 수 있다. 상기 감시의 결과는 알람 메시지로 제작되어 게시되거나 추후 열람을 위해 저장될 수 있다.The
또 다른 감시 방법을 예로 들면, 주 감시 모듈(210)은 호출이 요청된 함수의 주소와 커널 감시 실행 초기에 저장해 놓은 상기 함수의 주소가 다르면, 해킹된 것으로 인지하여 감시 하고자 하는 함수의 주소를 변경된 함수로 갱신함으로써, 이 후 정상적인 감시가 이루어지게 하거나 해킹 가능성을 통지하는 알람 메시지를 게 시할 수 있다.As another monitoring method, the
주 감시 모듈(210)이 상기 시스템 서비스 함수에 대응하는 부 감시 모듈(212)의 주소를 리턴 값으로 설정하고 제 1 후킹 모듈(214)로 리턴 되는 경우, 제 1 후킹 모듈(214)은 상기 부 감시 모듈의 주소를 참조하여 상기 시스템 서비스 함수에 대응하는 부 감시 모듈(212)을 호출한다(S612). 부 감시 모듈(212)의 호출(S612) 시 포함되는 파라미터는 사용자 모드에서 실행되는 프로세스가 커널에 시스템 서비스 함수의 호출을 요청하면서 포함시킨 파라미터와 동일한 것이 바람직하다.When the
호출된 부 감시 모듈(212)은 상기 파라미터 정보를 감시한다(S614). 예를 들어, 호출된 시스템 서비스 함수가 주기억장치의 일정 영역을 읽는 시스템 서비스 함수인 경우, 파라미터에 시작 주소 및 읽고자 하는 바이트 수가 포함될 것인바, 상기 정보를 감시할 수 있다. 상기 감시의 결과는 알람 메시지로 제작되어 게시되거나 추후 열람을 위해 저장될 수 있다.The called
부 감시 모듈(212)은 감시 관련 데이터를 모두 처리한 후, 상기 시스템 서비스 함수를 호출한다(S616).After monitoring all the monitoring-related data, the
상기 시스템 서비스 함수에 포함된 명령어가 모두 수행되는 경우, 제 1 후킹 모듈(214)의 부 감시 모듈(212) 호출 관련 명령어의 다음 명령어가 실행된다. 상기 다음 명령어는 상기 제 1 코드 영역의 다음 명령어로 점프하는 명령어인 것이 바람직하다.When all of the instructions included in the system service function are executed, the next instruction of the
이상 첨부된 도면을 참조하여 본 발명의 실시 예들을 설명하였지만, 본 발명 이 속하는 기술분야에서 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시 예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다.Although the embodiments of the present invention have been described above with reference to the accompanying drawings, those skilled in the art to which the present invention pertains may implement the present invention in other specific forms without changing the technical spirit or essential features thereof. I can understand that. Therefore, it should be understood that the embodiments described above are exemplary in all respects and not restrictive.
도 1은 컴퓨터 시스템의 기본적인 구성을 나타낸 개념도이다.1 is a conceptual diagram showing the basic configuration of a computer system.
도 2는 운영체제가 로딩 된 후의 코드 영역의 구성을 나타낸 개념도이다.2 is a conceptual diagram illustrating a configuration of a code region after an operating system is loaded.
도 3은 본 발명의 일 실시예에 따른 커널 감시기가 설치된 컴퓨터 시스템의 구조도이다.3 is a structural diagram of a computer system in which a kernel monitor is installed according to an embodiment of the present invention.
도 4는 본 발명의 일 실시예에 따른 커널 감시기를 설치하기 전의 시스템 서비스 함수 핸들러 모듈을 도시한 도면이다.4 is a diagram illustrating a system service function handler module before installing a kernel monitor according to an embodiment of the present invention.
도 5는 본 발명의 일 실시예에 따른 커널 감시기가 설치된 상태의 시스템 서비스 함수 핸들러 모듈에 대하여 도시한 도면이다.5 is a diagram illustrating a system service function handler module in a state where a kernel monitor is installed according to an embodiment of the present invention.
도 6은 본 실시예에 따른 커널 감시 방법의 순서도이다.6 is a flowchart of a kernel monitoring method according to the present embodiment.
도 7은 본 실시예에 다른 커널 감시기의 설치 방법의 순서도이다.7 is a flowchart of a method of installing a kernel monitor according to the present embodiment.
Claims (16)
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| KR1020090066996A KR101014814B1 (en) | 2009-07-22 | 2009-07-22 | How to Monitor Computer Systems With Kernel Watcher and How to Monitor Kernels |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| KR1020090066996A KR101014814B1 (en) | 2009-07-22 | 2009-07-22 | How to Monitor Computer Systems With Kernel Watcher and How to Monitor Kernels |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| KR20110009548A KR20110009548A (en) | 2011-01-28 |
| KR101014814B1 true KR101014814B1 (en) | 2011-02-14 |
Family
ID=43615225
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| KR1020090066996A Expired - Fee Related KR101014814B1 (en) | 2009-07-22 | 2009-07-22 | How to Monitor Computer Systems With Kernel Watcher and How to Monitor Kernels |
Country Status (1)
| Country | Link |
|---|---|
| KR (1) | KR101014814B1 (en) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2014014200A1 (en) * | 2012-07-20 | 2014-01-23 | 주식회사 안랩 | Computer system, method for shifting address computer system, and method for monitoring system function of computer system |
| KR101527575B1 (en) * | 2012-08-30 | 2015-06-10 | 주식회사 안랩 | Hooking device and method using detour function |
Families Citing this family (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN106155904A (en) * | 2016-06-30 | 2016-11-23 | 浪潮(北京)电子信息产业有限公司 | A kind of direct fault location instrument collocation method and device |
| CN113946522B (en) * | 2021-10-28 | 2025-08-26 | 湖北天融信网络安全技术有限公司 | Memory control method, device, electronic device and storage medium |
| KR102740647B1 (en) * | 2022-06-24 | 2024-12-10 | 주식회사 안랩 | Method for detecting rpc connection |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR20010047670A (en) * | 1999-11-22 | 2001-06-15 | 서평원 | Method for controlling a system call, and for changing kernel dynamically in an UNIX operating system |
| KR20060059759A (en) * | 2004-11-29 | 2006-06-02 | 주식회사 안철수연구소 | How to Prevent Memory Data Manipulation by Computer Applications |
| KR20060088740A (en) * | 2005-02-02 | 2006-08-07 | 엘지전자 주식회사 | Multi-Master Processing Method in Home Gateway and Home Network |
| KR20090067569A (en) * | 2007-12-21 | 2009-06-25 | (주) 세인트 시큐리티 | Windows Kernel Protection System Using Virtualization Technique |
-
2009
- 2009-07-22 KR KR1020090066996A patent/KR101014814B1/en not_active Expired - Fee Related
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR20010047670A (en) * | 1999-11-22 | 2001-06-15 | 서평원 | Method for controlling a system call, and for changing kernel dynamically in an UNIX operating system |
| KR20060059759A (en) * | 2004-11-29 | 2006-06-02 | 주식회사 안철수연구소 | How to Prevent Memory Data Manipulation by Computer Applications |
| KR20060088740A (en) * | 2005-02-02 | 2006-08-07 | 엘지전자 주식회사 | Multi-Master Processing Method in Home Gateway and Home Network |
| KR20090067569A (en) * | 2007-12-21 | 2009-06-25 | (주) 세인트 시큐리티 | Windows Kernel Protection System Using Virtualization Technique |
Cited By (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2014014200A1 (en) * | 2012-07-20 | 2014-01-23 | 주식회사 안랩 | Computer system, method for shifting address computer system, and method for monitoring system function of computer system |
| KR101412200B1 (en) * | 2012-07-20 | 2014-06-27 | 주식회사 안랩 | Computer system, adress redirection method and system function monitoring method for thereof |
| KR101527575B1 (en) * | 2012-08-30 | 2015-06-10 | 주식회사 안랩 | Hooking device and method using detour function |
Also Published As
| Publication number | Publication date |
|---|---|
| KR20110009548A (en) | 2011-01-28 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN105980993B (en) | Data processing apparatus and method | |
| TWI863138B (en) | Apparatus for processor extensions to protect stacks during ring transitions | |
| US8826269B2 (en) | Annotating virtual application processes | |
| KR102206115B1 (en) | Behavioral malware detection using interpreter virtual machine | |
| US8117660B2 (en) | Secure control flows by monitoring control transfers | |
| US8010772B2 (en) | Protected function calling | |
| US10140448B2 (en) | Systems and methods of asynchronous analysis of event notifications for computer security applications | |
| JP6984710B2 (en) | Computer equipment and memory management method | |
| AU2006210698B2 (en) | Intrusion detection for computer programs | |
| KR101740224B1 (en) | Illegal mode change handling | |
| CN112805710B (en) | Data processing device and method | |
| US10380336B2 (en) | Information-processing device, information-processing method, and recording medium that block intrusion of malicious program to kernel | |
| KR20170042602A (en) | Systems And Methods for Exposing A Current Processor Instruction Upon Exiting A Virtual Machine | |
| CN108292272A (en) | Apparatus and method for managing bounded pointers | |
| KR20080028827A (en) | Method, system and machine-readable recording medium for enabling the expansion of a plurality of instruction streams / multiple data streams in a microprocessor | |
| JP7645262B2 (en) | Disable Domain Transition Configuration Parameter | |
| US9536084B1 (en) | Systems and methods for delivering event-filtered introspection notifications | |
| US9596261B1 (en) | Systems and methods for delivering context-specific introspection notifications | |
| KR101014814B1 (en) | How to Monitor Computer Systems With Kernel Watcher and How to Monitor Kernels | |
| KR20160019454A (en) | Security protection of software libraries in a data processing apparatus | |
| CN110709817A (en) | Apparatus and method for controlling changes in instruction set | |
| US9531735B1 (en) | Systems and methods for delivering introspection notifications from a virtual machine | |
| JP7737373B2 (en) | Intermodal Call Branch Instruction | |
| JP2025514826A (en) | Exception return state lock parameter | |
| CN119096231A (en) | Memory Management |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A201 | Request for examination | ||
| PA0109 | Patent application |
St.27 status event code: A-0-1-A10-A12-nap-PA0109 |
|
| PA0201 | Request for examination |
St.27 status event code: A-1-2-D10-D11-exm-PA0201 |
|
| P11-X000 | Amendment of application requested |
St.27 status event code: A-2-2-P10-P11-nap-X000 |
|
| P13-X000 | Application amended |
St.27 status event code: A-2-2-P10-P13-nap-X000 |
|
| D13-X000 | Search requested |
St.27 status event code: A-1-2-D10-D13-srh-X000 |
|
| D14-X000 | Search report completed |
St.27 status event code: A-1-2-D10-D14-srh-X000 |
|
| E701 | Decision to grant or registration of patent right | ||
| PE0701 | Decision of registration |
St.27 status event code: A-1-2-D10-D22-exm-PE0701 |
|
| PG1501 | Laying open of application |
St.27 status event code: A-1-1-Q10-Q12-nap-PG1501 |
|
| GRNT | Written decision to grant | ||
| PR0701 | Registration of establishment |
St.27 status event code: A-2-4-F10-F11-exm-PR0701 |
|
| PR1002 | Payment of registration fee |
St.27 status event code: A-2-2-U10-U11-oth-PR1002 Fee payment year number: 1 |
|
| PG1601 | Publication of registration |
St.27 status event code: A-4-4-Q10-Q13-nap-PG1601 |
|
| P22-X000 | Classification modified |
St.27 status event code: A-4-4-P10-P22-nap-X000 |
|
| FPAY | Annual fee payment |
Payment date: 20140210 Year of fee payment: 4 |
|
| PR1001 | Payment of annual fee |
St.27 status event code: A-4-4-U10-U11-oth-PR1001 Fee payment year number: 4 |
|
| LAPS | Lapse due to unpaid annual fee | ||
| PC1903 | Unpaid annual fee |
St.27 status event code: A-4-4-U10-U13-oth-PC1903 Not in force date: 20150209 Payment event data comment text: Termination Category : DEFAULT_OF_REGISTRATION_FEE |
|
| PC1903 | Unpaid annual fee |
St.27 status event code: N-4-6-H10-H13-oth-PC1903 Ip right cessation event data comment text: Termination Category : DEFAULT_OF_REGISTRATION_FEE Not in force date: 20150209 |
|
| P22-X000 | Classification modified |
St.27 status event code: A-4-4-P10-P22-nap-X000 |
|
| P22-X000 | Classification modified |
St.27 status event code: A-4-4-P10-P22-nap-X000 |