KR101005593B1 - Method and apparatus for providing computer security service using hook - Google Patents
Method and apparatus for providing computer security service using hook Download PDFInfo
- Publication number
- KR101005593B1 KR101005593B1 KR1020090033432A KR20090033432A KR101005593B1 KR 101005593 B1 KR101005593 B1 KR 101005593B1 KR 1020090033432 A KR1020090033432 A KR 1020090033432A KR 20090033432 A KR20090033432 A KR 20090033432A KR 101005593 B1 KR101005593 B1 KR 101005593B1
- Authority
- KR
- South Korea
- Prior art keywords
- input message
- hook
- message
- time information
- virtual input
- Prior art date
Links
- 238000000034 method Methods 0.000 title claims abstract description 63
- 238000012544 monitoring process Methods 0.000 claims abstract description 10
- 238000001514 detection method Methods 0.000 claims description 31
- 210000004940 nucleus Anatomy 0.000 claims description 13
- 230000008859 change Effects 0.000 claims description 11
- 238000001914 filtration Methods 0.000 claims description 11
- 210000002231 macronucleus Anatomy 0.000 claims description 11
- 230000000903 blocking effect Effects 0.000 description 12
- 230000008569 process Effects 0.000 description 10
- 239000008186 active pharmaceutical agent Substances 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 238000011900 installation process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 239000002184 metal Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000007103 stamina Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/554—Detecting local intrusion or implementing counter-measures involving event detection and direct action
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/52—Monitoring 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- User Interface Of Digital Computer (AREA)
- Computer And Data Communications (AREA)
- Storage Device Security (AREA)
Abstract
입력 메시지에 가상 입력 메시지 플래그의 유무 판단 또는 커널 레벨에서의 시간 정보를 이용하여 해킹 시도를 탐지할 수 있는 본 발명의 일 실시예에 따른 훅을 이용한 컴퓨터 보안 서비스 제공 방법은 운영체제(Operating System)로부터 수신되는 입력 메시지를 훅(Hook)을 이용하여 모니터링하는 단계; 상기 입력 메시지에 가상 입력 메시지 플래그가 포함되어 있는지 여부를 판단하는 단계; 및 판단결과를 이용하여 매크로 핵(Macro Hack) 발생 여부를 탐지하는 단계를 포함한다.
메시지, 훅, 핵, 해킹
The method for providing a computer security service using a hook according to an embodiment of the present invention, which detects a hacking attempt by using a virtual input message flag or inputting time information at a kernel level in an input message, may be performed from an operating system. Monitoring a received input message using a hook; Determining whether a virtual input message flag is included in the input message; And detecting whether a macro hack is generated using the determination result.
Message, hook, hack, hack
Description
본 발명은 컴퓨터 보안에 관한 것으로서 보다 상세하게는 훅을 이용한 컴퓨터 보안에 관한 것이다.The present invention relates to computer security, and more particularly to computer security using a hook.
통신기술의 발달 및 초고속 인터넷 보급의 대중화로 인해 기존의 오프라인에서 수행되던 많은 업무들이 온라인을 통해 수행되고 있으며, 최근에는 온라인 상에서 수행될 수 있는 업무 분야가 확대되어 게임 서비스 제공도 온라인을 이용해서 수행되고 있다.Due to the development of communication technology and the popularization of high speed internet, many tasks that were performed offline have been performed online. Recently, the field of work that can be performed online has been expanded to provide game service using online. It is becoming.
특히, 온라인 게임 서비스 제공의 증가가 급증함에 따라 다양한 게임 해킹(핵) 시도가 발생되고 있다. 이러한 게임 핵 중 대표적인 유형으로는 매크로 핵(Macro Hack)과 스피드 팩(Speed Hack)이 있다.In particular, as the increase in the provision of online game services has soared, various game hacking (nuclear) attempts have occurred. Representative types of these game hacks are the Macro Hack and the Speed Hack.
매크로 핵이란 자동으로 마우스의 입력을 게임에게 전달하여 사용자 없이도 자동으로 게임 실행이 가능하게 하는 오토 마우스(Auto Mouse)의 발전된 행태로써, 프로그램을 짜듯이 원하는 키보드나 마우스의 입력을 만들어 놓고 자동으로 그 입력을 게임에게 전달하여 반복 실행하도록 하는 것을 의미한다.Macro Hack is an advanced behavior of Auto Mouse, which automatically delivers mouse input to the game and enables the game to run automatically without the user. This means passing the input to the game so that it can run repeatedly.
또한, 스피드 핵이란 컴퓨터의 시간 관련 정보를 변경하여 컴퓨터의 시간이 실제 시간보다 빨라지거나 혹은 느려지도록 함으로써 게임 프로그램의 반응 속도를 변경시키는 것을 의미한다. 이러한 스피드 핵을 사용하게 되면, 게임 내에서 캐릭터의 움직임이나 공격속도 등이 수배 내지 수백 배 빨라지며, 클라이언트로부터 서버로 전송되는 패킷의 속도도 함께 빨라진다.In addition, speed hacking means changing the response time of a game program by changing the time-related information of the computer so that the time of the computer becomes faster or slower than the actual time. Using this speed hack, the character's movement or attack speed in the game is several to hundreds of times faster, and the packet sent from the client to the server is also faster.
이러한 게임 해킹은 일반적인 해킹과 달리 게임 프로세스의 메모리를 조작하여 캐릭터의 능력치나 체력 등과 같은 특정 데이터를 바꾸는 것이기 때문에 사용자간의 밸런스가 붕괴됨은 물론, 게임 서버로의 가중한 부하 등과 같은 심각한 문제를 일으킬 수 있기 때문에, 이러한 다양한 게임 해킹을 방지하기 위한 게임 보안에 대한 인식과 개념에 대한 관심이 증가하고 있다.Unlike general hacking, such game hacking manipulates the memory of the game process to change specific data such as the character's stats and stamina, so that the balance between users may be broken and serious problems such as a heavy load on the game server may occur. Therefore, there is increasing interest in the concept and concept of game security for preventing such various game hacking.
일 예로, 매크로 핵으로 악의적인 사용자가 가상 입력을 발생시키는 것을 방지하기 위해 가상 입력 발생에 이용되는 API의 후킹을 통해 해당 API의 호출을 차단하는 방식이 제안된 바 있다.For example, in order to prevent a malicious user from generating a virtual input by a macro hack, a method of blocking a call of the API through hooking an API used for generating a virtual input has been proposed.
그러나, 상술한 방법의 경우 가상 입력 발생에 이용되는 모든 API에 제어용 Dll을 인젝션 하여야 하므로 메모리 및 CPU 사용량이 증가하게 되어 컴퓨터의 속도가 저하되며, 각각의 API에 대한 후킹을 수행함에 있어서 충돌이 발생할 수 있다는 문제점이 있다.However, in the above-described method, since the control DLLs must be injected into all APIs used for generating virtual inputs, memory and CPU usage are increased, and the speed of the computer is reduced, and collisions may occur when performing hooking for each API. There is a problem that can be.
또한, 기존의 방법은 커널 레벨에서의 가상 입력 드라이버를 이용한 매크로 핵 시도는 차단할 수 없다는 문제점이 있다. In addition, the conventional method has a problem that it cannot block the macro hack attempt using a virtual input driver at the kernel level.
한편, 스피드 핵의 경우에는 도 1에 도시된 바와 같은 시간 관련 API들을 후 킹함으로써 수행되기 때문에, 이러한 스피드 핵을 방지하기 위해 시간 관련 API들의 후킹 여부를 판단하여 시간 관련 API가 후킹된 것으로 판단되면 스피드 핵인 것으로 판단하는 방법이 제시된 바 있지만, 시간 관련 API가 후킹 되었는지 여부를 판단하는 것이 용이하지 않다는 문제점이 있다.On the other hand, in the case of the speed hack is performed by hooking the time-related APIs as shown in Figure 1, if it is determined that the time-related API is hooked by determining whether the time-related APIs are hooked to prevent such speed hacking Although a method of determining that it is a speed hack has been proposed, there is a problem that it is not easy to determine whether a time-related API is hooked.
본 발명은 상술한 문제점을 해결하기 위한 것으로서, 입력 메시지에 가상 입력 메시지 플래그의 유무 판단 또는 커널 레벨에서의 시간 정보를 이용하여 해킹 시도를 탐지할 수 있는 훅을 이용한 컴퓨터 보안 서비스 제공 방법 및 장치를 제공하는 것을 기술적 과제로 한다.The present invention has been made in view of the above-described problem, and a method and apparatus for providing a computer security service using a hook capable of detecting a hacking attempt by using a time information at a kernel level or determining a virtual input message flag in an input message. It is technical problem to provide.
또한, 본 발명은 자체적으로 발생시킨 가상 입력 메시지를 이용하여 입력 메시지의 변경 여부를 판단할 수 있는 훅을 이용한 컴퓨터 보안 서비스 제공 방법 및 장치를 제공하는 것을 다른 기술적 과제로 한다. Another object of the present invention is to provide a method and apparatus for providing a computer security service using a hook that can determine whether an input message is changed using a virtual input message generated by itself.
또한, 본 발명은 훅을 시스템 메시지 큐에 설치함으로써 컴퓨터의 부하를 경감시킬 수 있는 훅을 이용한 컴퓨터 보안 서비스 제공 방법 및 장치를 제공하는 것을 또 다른 기술적 과제로 한다.Another object of the present invention is to provide a method and apparatus for providing a computer security service using a hook that can reduce the load of a computer by installing a hook in a system message queue.
또한, 본 발명은 입력 메시지로부터 획득되는 커널 레벨에서의 시간과 시간 관련 API로부터 획득되는 유저 레벨에서의 시간의 차이를 이용하여 해킹 시도를 탐지할 수 있는 훅을 이용한 컴퓨터 보안 서비스 제공 방법 및 장치를 제공하는 것을 또 다른 기술적 과제로 한다.The present invention also provides a method and apparatus for providing a computer security service using a hook that can detect a hacking attempt by using a difference between a time at the kernel level obtained from an input message and a time at a user level obtained from a time-related API. It is another technical problem to provide.
상술한 목적을 달성하기 위한 본 발명의 일 측면에 따른 훅을 이용한 컴퓨터 보안 서비스 제공 방법은 운영체제(Operating System)로부터 수신되는 입력 메시지를 훅(Hook)을 이용하여 모니터링하는 단계; 상기 입력 메시지에 가상 입력 메시지 플래그가 포함되어 있는지 여부를 판단하는 단계; 및 판단결과를 이용하여 매크로 핵(Macro Hack) 발생 여부를 탐지하는 단계를 포함한다.Computer security service providing method using a hook according to an aspect of the present invention for achieving the above object comprises the steps of monitoring the input message received from the operating system (Operating System) using a hook (Hook); Determining whether a virtual input message flag is included in the input message; And detecting whether a macro hack is generated using the determination result.
일 실시예에 있어서, 매크로 핵 발생 여부 탐지 단계에서, 상기 입력 메시지에 상기 가상 입력 메시지 플래그가 포함 되어 있으면 상기 입력 메시지를 제1 타입의 가상 입력 메시지로 판단하고, 매크로 핵이 발생된 것으로 결정하는 것을 특징으로 한다.According to an embodiment, in the detecting of the macro hacking occurrence, if the virtual input message flag is included in the input message, the input message is determined as a virtual input message of a first type, and the macro hack is determined to be generated. It is characterized by.
이때, 상기 제1 타입의 가상 입력 메시지는 유저 레벨 윈도우 API(Application Programming Interface)를 이용하여 발생된 가상 입력 메시지인 것을 특징으로 한다.In this case, the first type of virtual input message may be a virtual input message generated using a user level window API (Application Programming Interface).
또한, 매크로 핵이 발생된 것으로 탐지되면, 상기 입력 메시지를 필터링하는 단계를 더 포함할 수 있다.The method may further include filtering the input message when it is detected that the macro hack is generated.
일 실시예에 있어서, 상기 훅은 키보드 로우 레벨 훅 또는 마우스 로우 레벨 훅을 포함하는 것을 특징으로 한다.In one embodiment, the hook is characterized in that it comprises a keyboard low level hook or a mouse low level hook.
한편, 훅은 모든 메시지들이 임시로 저장되는 시스템 메시지 큐에 설치되는 것을 특징으로 한다.On the other hand, the hook is characterized in that installed in the system message queue where all the messages are temporarily stored.
한편, 가상 입력을 발생시켜 상기 운영체제로 제공하는 단계; 및 상기 가상 입력을 기초로 생성된 제1 입력 메시지를 상기 훅을 통해 모니터링함으로써 상기 제1 입력 메시지의 변경 여부를 판단하는 단계를 더 포함할 수 있다.On the other hand, generating a virtual input to provide to the operating system; And determining whether to change the first input message by monitoring the first input message generated based on the virtual input through the hook.
이때, 상기 제1 입력 메시지 변경 여부 판단 단계에서, 상기 제1 입력 메시지에 상기 가상 입력 메시지 플래그가 포함되어 있지 않은 경우 상기 제1 입력 메 시지가 변경된 것으로 판단하는 것을 특징으로 한다.In this case, in the determining whether the first input message is changed, when the virtual input message flag is not included in the first input message, the first input message is determined to be changed.
일 실시예에 있어서, 상기 입력 메시지를 이용하여 커널 레벨에서의 제1 시간 정보를 생성하는 단계; 및 상기 제1 시간 정보가 각 입력 메시지 별로 동일한 경우 상기 입력 메시지를 제2 타입의 가상 입력 메시지로 판단하고, 매크로 핵이 발생된 것으로 결정하는 단계를 더 포함할 수 있다.In one embodiment, generating first time information at a kernel level using the input message; And when the first time information is the same for each input message, determining the input message as a virtual input message of a second type, and determining that a macro hack is generated.
이때, 상기 제2 타입의 가상 입력 메시지는 커널 레벨에서 가상 입력 드라이버를 이용하여 발생된 것임을 특징으로 하고, 상기 제1 시간 정보는 상기 입력 메시지로부터 획득되는 키 다운 시간과 키 업 시간의 차이값인 것을 특징으로 한다.In this case, the virtual input message of the second type is generated using a virtual input driver at a kernel level, and the first time information is a difference value between a key down time and a key up time obtained from the input message. It is characterized by.
한편, 상기 입력 메시지로부터 획득되는 커널 레벨에서의 제1 시간 정보와 시간 관련 API로부터 획득되는 유저 레벨에서의 제2 시간정보를 이용하여 스피드 핵 발생 여부를 탐지하는 단계를 더 포함할 수 있다.The method may further include detecting whether a speed hack is generated using first time information at a kernel level obtained from the input message and second time information at a user level obtained from a time-related API.
이때, 제1 시간 정보는 커널 레벨에서의 키 다운 시간과 키 업 시간의 차이값이고, 제2 시간 정보는 시간 관련 API를 이용해서 산출된 유저 레벨에서 키 다운 시간과 키 업 시간의 차이값인 것을 특징으로 한다.In this case, the first time information is a difference value between the key down time and the key up time at the kernel level, and the second time information is a difference value between the key down time and the key up time at the user level calculated using a time-related API. It is characterized by.
또한, 상기 스피드 핵 발생 여부를 탐지하는 단계에서, 상기 제1 시간 정보와 상기 제2 시간 정보의 차이가 임계치 이상인 경우 상기 스피드 핵이 발생된 것으로 결정하는 것을 특징으로 한다.In the detecting of whether the speed nucleus is generated, the speed nucleus may be determined to be generated when a difference between the first time information and the second time information is greater than or equal to a threshold value.
상술한 목적을 달성하기 위한 본 발명의 일 측면에 따른 훅을 이용한 컴퓨터 보안 서비스 제공 장치는 훅을 이용하여 운영체제로부터 수신되는 입력 메시지를 모니터링하는 훅 관리 모듈; 상기 입력 메시지에 가상 입력 메시지 플래그가 포함 되어 있는지 여부의 판단을 통해 매크로 핵 발생 여부를 탐지하는 매크로 핵 탐지 모듈; 및 매크로 핵이 발생된 것으로 탐지되면, 상기 입력 메시지를 필터링하는 필터링 모듈을 포함한다.Device for providing a computer security service using a hook according to an aspect of the present invention for achieving the above object comprises a hook management module for monitoring an input message received from the operating system using a hook; A macro nucleus detection module that detects whether or not a macro nucleus is generated by determining whether a virtual input message flag is included in the input message; And a filtering module for filtering the input message if it is detected that a macro hack has been generated.
본 발명에 따르면, 입력 메시지에 가상 입력 메시지 플래그가 존재하는지 여부의 판단을 통해 유저 레벨에서 시도되는 매크로 핵을 탐지하거나 커널 레벨에서의 시간 정보를 이용하여 커널 레벨에서 시도되는 매크로 핵을 탐지할 수 있어 컴퓨터 보안의 구현이 용이하다는 효과가 있다.According to the present invention, the macro hack attempted at the user level can be detected by determining whether a virtual input message flag exists in the input message, or the macro hack attempted at the kernel level can be detected using time information at the kernel level. This has the effect of easy implementation of computer security.
또한, 본 발명은 자체적으로 발생시킨 가상 입력 메시지를 이용하여 입력 메시지의 변경 여부를 판단할 수 있으므로, 입력 메시지에 포함되어 있는 가상 입력 메시지 플래그를 삭제함으로써 매크로 핵의 시도를 은닉하려는 시도를 원천적으로 봉쇄할 수 있다는 효과가 있다. In addition, the present invention can determine whether or not to change the input message by using the virtual input message generated by itself, the original attempt to conceal the attempt of the macro hack by deleting the virtual input message flag included in the input message. There is an effect that can be blocked.
또한, 본 발명은 훅을 시스템 메시지 큐에 설치함으로써 컴퓨터의 부하를 경감시킬 수 있다는 효과가 있다.In addition, the present invention has the effect that the load on the computer can be reduced by installing the hook in the system message queue.
또한, 본 발명은 입력 메시지로부터 획득되는 커널 레벨에서의 시간과 시간 관련 API로부터 획득되는 유저 레벨에서의 시간의 차이만을 이용하여 스피드 핵의 시도를 탐지할 수 있어 스피드 핵 탐지의 구현이 용이하다는 효과가 있다.In addition, the present invention can easily detect the speed hack attempt using only the difference between the time at the kernel level obtained from the input message and the time at the user level obtained from the time-related API. There is.
본 발명에 대해 설명하기에 앞서 본 발명에서 사용되는 입력 메시지와 훅에 대해 간략히 설명하기로 한다.Prior to describing the present invention, an input message and a hook used in the present invention will be briefly described.
먼저, 입력 메시지란 키보드나 마우스 등과 같은 입력 장치에 의해 발생되는 실제 입력, API(Application Programming Interface)나 장치 드라이버를 이용하여 소프트웨어적으로 발생되는 가상 입력, 가상 입력 드라이버를 이용하여 발생되는 가상 입력을 기초로 하여 운영체제(Operating System)에 의해 생성되는 메시지를 의미한다. 운영체제에 의해 생성된 입력 메시지는 시스템 메시지 큐에 임시로 저장되었다가 각 프로세스 별로 분류되어 각 프로세스 별 스레드 메시지 큐로 할당된다. 일 실시예에 있어서, 상술한 입력 메시지는 윈도우 입력 메시지일 수 있는데, 이하에서는 설명의 편의를 위해 입력 메시지가 윈도우 입력 메시지인 것으로 가정하여 설명하지만, 이는 하나의 예일 뿐 입력 메시지가 윈도우 입력 메시지로 한정되지는 않을 것이다.First, an input message refers to actual input generated by an input device such as a keyboard or a mouse, virtual input generated by software using an API (application programming interface) or a device driver, and virtual input generated using a virtual input driver. It means a message generated by the operating system based on the basis. Input messages generated by the operating system are temporarily stored in the system message queue, classified by process, and assigned to the thread message queue of each process. In an embodiment, the above-described input message may be a window input message. Hereinafter, for convenience of description, it is assumed that the input message is a window input message. However, this is just one example. It will not be limited.
다음으로, 훅(Hook)이란 입력 메시지의 트래픽을 모니터링 하기 위해 어플리케이션에서 설치할 수 있는 시스템 메시지 핸들링 메커니즘을 의미한다. 이러한 훅을 이용하여 운영체제로부터 전달되는 윈도우 입력 메시지의 내용을 확인할 수 있다. 일 실시예에 있어서 이러한 훅은 윈도우 메시지를 후킹하기 위한 윈도우 메시지 훅일 수 있는데, 이하에서는 설명의 편의를 위해 훅이 윈도우 메시지 훅인 것으로 가정하여 설명하지만, 이는 하나의 예일 뿐 훅이 윈도우 메시지 훅으로 한정되지는 않을 것이다.Next, a hook is a system message handling mechanism that can be installed by an application to monitor the traffic of an input message. You can use this hook to check the contents of a Windows input message from the operating system. In one embodiment, the hook may be a window message hook for hooking a window message. Hereinafter, for convenience of explanation, the hook is assumed to be a window message hook. However, this hook is only one example and the hook is limited to a window message hook. It won't be.
이하 첨부된 도면을 참조하여 본 발명의 실시예에 대해 상세히 설명한다.Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings.
도 2는 본 발명의 일 실시예에 따른 컴퓨터 보안 서비스 제공 장치를 컴퓨터 시스템에 적용한 도면이다. 본 발명의 일 실시예에 따른 컴퓨터 보안 서비스 제공 장치(300)는 컴퓨터 시스템(302)과 연동함으로써 악의적인 사용자가 게임에서 이득을 취하기 위해 시도하는 매크로 핵(Macro Hack)이나 스피드 핵(Speed Hack)을 탐지하고, 매크로 핵이나 스피드 핵을 차단하는 역할을 수행한다.2 is a diagram illustrating a computer security service providing apparatus according to an embodiment of the present invention applied to a computer system. The
이러한 컴퓨터 보안 서비스 제공 장치(300)는 도시된 바와 같이 윈도우 메시지 훅 관리 모듈(310), 매크로 핵 탐지 모듈(320), 및 필터링 모듈(330)을 포함한다.The computer security
먼저, 윈도우 메시지 훅 관리 모듈(310)은 윈도우 메시지 훅(Hook)을 설치(Install)하고, 설치된 윈도우 메시지 훅을 이용하여 운영체제(340)로부터 수신되는 윈도우 입력 메시지를 모니터링한다.First, the window message
이때, 윈도우 메시지 훅 관리 모듈(310)은 운영체제(340)로부터 전달되는 모든 윈도우 메시지들이 임시로 저장되는 시스템 메시지 큐(350)에 윈도우 메시지 훅을 설치할 수 있다. 본 발명에서 윈도우 메시지 훅 관리 모듈(310)이 윈도우 메시지 훅을 시스템 메시지 큐(350)에 설치하는 것은, 각 프로세스 별 윈도우 메시지들이 임시로 저장되는 스레드 메시지 큐(360)에 윈도우 메시지 훅을 설치하게 되면, 각 스레드 메시지 큐(360)별로 윈도우 메시지 훅을 모두 설치해야 하기 때문에, 시스템의 부하가 가중될 수 있기 때문이다.In this case, the window message
일 실시예에 있어서, 윈도우 메시지 훅 관리 모듈(310)에 의해 설치되는 윈도우 메시지 훅은 키보드 로우 레벨 메시지 훅 또는 마우스 로우 레벨 메시지 훅을 포함할 수 있다.In one embodiment, the window message hook installed by the window message
상술한 윈도우 메시지 훅 관리 모듈(310)은 아래와 같은 함수를 호출함으로 써 윈도우 메시지 훅을 설치할 수 있다.The window message
HHOOK SetWIndowsHookEx[Int IdHook, HOOKLPROC Ipfn, HINSTANCE hMod, DWORD dwThreadId]HHOOK SetWIndowsHookEx [Int IdHook , HOOKLPROC Ipfn , HINSTANCE hMod , DWORD dwThreadId ]
여기서, IdHook는 설치할 윈도우 메시지 훅 타입을 의미하는 것으로서, 일 실시예에 있어서 훅 타입은 상술한 바와 같이 키보드 로우 레벨 메시지 훅 또는 마우스 로우 레벨 메시지 훅이 있을 수 있다. 훅 타입이 키보드 로우 레벨 메시지 훅인 경우 훅 타입은 "WH_KEYBOARD_LL"로 설정되고, 훅 타입이 마우스 로우 레벨 메시지 훅인 경우 훅 타입은 "WH_MOUSE_LL"로 설정될 수 있다.Here, IdHook refers to a window message hook type to be installed. In one embodiment, the hook type may include a keyboard low level message hook or a mouse low level message hook as described above. When the hook type is a keyboard low level message hook, the hook type may be set to "WH_KEYBOARD_LL", and when the hook type is a mouse low level message hook, the hook type may be set to "WH_MOUSE_LL".
다음으로, Ipfn은 윈도우 메시지 훅 관리 모듈(310)의 포인터를 의미하며, hMod는 윈도우 메시지 훅 관리 모듈(310)을 가지고 있는 DLL의 핸들을 의미한다. 또한, dwThreadId는 윈도우 메시지 훅 관리 모듈(310)과 관련된 스레드 메시지 큐의 식별자를 의미하는 것으로서, 그 값이 0으로 설정되어 있는 경우 해당 윈도우 메시지 훅 관리 모듈(310)은 시스템에 존재하는 모든 스레드 메시지 큐와 관련된 윈도우 메시지 훅 관리 모듈(310)이라는 것을 나타낸다.Next, Ipfn means a pointer of the window message
다음으로, 매크로 핵 탐지 모듈(320)은 윈도우 입력 메시지 훅 관리 모듈(310)의해 모니터링된 윈도우 입력 메시지에 가상 입력 메시지 플래그가 포함되어 있는지 여부를 판단함으로써 매크로 핵이 시도되는지 여부를 탐지한다.Next, the macro
여기서, 가상 입력 메시지 플래그란 유저 레벨에서 윈도우 API를 이용해서 가상 입력이 발생 되면 운영체제(340)가 가상 입력을 기초로 윈도우 입력 메시지를 생성할 때 윈도우 입력 메시지에 삽입하는 플래그를 의미한다.Here, the virtual input message flag refers to a flag that is inserted into the window input message when the
따라서, 매크로 핵 탐지 모듈(320)은 모니터링된 윈도우 입력 메시지에 가상 입력 메시지 플래그가 포함되어 있는지 여부를 판단함으로써 해당 윈도우 입력 메시지가 가상 입력 메시지인지 여부를 판단할 수 있다.Accordingly, the macro
판단 결과, 윈도우 입력 메시지에 가상 입력 메시지 플래그가 포함되어 있는 경우, 매크로 핵 탐지 모듈(320)은 해당 윈도우 입력 메시지를 가상 입력 메시지인 것으로 결정하고, 악의적인 사용자에 의해 매크로 핵이 시도되고 있는 것으로 판단한다. As a result, when the window input message includes the virtual input message flag, the macro
한편, 매크로 핵 탐지 모듈(320)에 의해 가상 입력 메시지가 아닌 것으로 판단된 윈도우 입력 메시지는 시스템 메시지 큐(350)로부터 스레드 메시지 큐(360)에 할당된 후 메시지 처리부(410)에 의해 처리된다. Meanwhile, the window input message determined as not the virtual input message by the macro
필터링 모듈(330)은 매크로 핵 탐지 모듈(320)에 의해 매크로 핵이 시도되는 것으로 판단되면, 해당 윈도우 입력 메시지를 필터링 함으로써 해당 윈도우 입력 메시지가 시스템 메시지 큐(350)에서 스레드 메시지 큐(370)로 할당되지 못하도록 한다.If the
이와 같이 본 발명은, 악의적인 사용자가 매크로 핵을 시도하기 위해 윈도우 API를 이용하여 가상 입력을 발생 시킨 경우, 해당 가상 입력에 기초하여 생성된 윈도우 입력 메시지에 가상 입력 메시지 플래그가 존재하는지 여부를 판단함으로써 매크로 핵 시도를 탐지할 수 있고, 매크로 핵 시도가 탐지되면 해당 윈도우 입력 메시지를 필터링 함으로써 매크로 핵 시도를 차단하게 된다.As described above, when a malicious user generates a virtual input using a window API to attempt a macro hack, the present invention determines whether a virtual input message flag exists in a window input message generated based on the virtual input. By detecting a macro hack attempt, if a macro hack attempt is detected, the macro hack attempt is blocked by filtering the corresponding window input message.
상술한 실시예에 있어서 매크로 핵 탐지 모듈(320)은 윈도우 입력 메시지에 가상 입력 메시지 플래그가 포함되어 있는지 여부의 판단을 통해 매크로 핵을 탐지하는 것으로 기재하였다.In the above-described embodiment, the macro
그러나, 윈도우 메시지 훅 관리 모듈(310)이 시스템 메시지 큐(350)에 윈도우 메시지 훅을 설치한 후 악의적인 사용자가 시스템 메시지 큐(350)에 다시 윈도우 메시지 훅을 설치하는 경우, 악의적인 사용자가 윈도우 메시지 훅 관리 모듈(310)보다 먼저 윈도우 입력 메시지를 모니터링할 수 있어 악의적인 사용자가 윈도우 입력 메시지에서 가상 입력 메시지 플래그를 삭제할 수 있게 된다.However, if the malicious user installs the window message hook again in the
이러한 경우 윈도우 메시지 훅 관리 모듈(310)에 의해 모니터링되는 윈도우 입력 메시지가 가상 입력 메시지라 하더라도 이미 악의적인 사용자에 의해 윈도우 입력 메시지에서 가상 입력 메시지 플래그가 삭제되어 있기 때문에, 매크로 탐지 모듈(320)은 해당 윈도우 입력 메시지를 가상 입력 메시지로 판단하지 않게 되고 따라서 매크로 핵이 시도되지 않은 것으로 판단하게 된다.In this case, even if the window input message monitored by the window message
이를 방지하기 위해 본 발명에 따른 컴퓨터 보안 서비스 제공 장치(300)는 가상 입력 발생 모듈(370)과 변경 판단 모듈(380)을 더 포함할 수 있다.In order to prevent this, the apparatus for providing a computer security service according to the present invention may further include a virtual
가상 입력 발생 모듈(370)은 자체적으로 가상 입력을 발생시켜 운영체제(340) 및 후술할 변경 판단 모듈(380)로 제공하는 역할을 수행한다. 일 실시예에 있어서, 가상 입력 발생 모듈(370)은 가상 입력을 발생시킴에 있어서, 가상 입력이 컴퓨터 시스템에 영향을 미치지 않도록 하기 이해 "OxFF"와 같이 아무런 의미를 가지지 않는 값을 이용하여 가상 입력을 발생시킬 수 있다.The virtual
이후, 운영체제(340)는 가상 입력 발생 모듈(370)에 의해 생성된 가상 입력 을 기초로 윈도우 입력 메시지를 생성할 때, 일반적인 윈도우 입력 메시지와 같이 윈도우 입력 메시지에 가상 입력 메시지 플래그를 삽입한다.Subsequently, when the
변경 판단 모듈(380)은, 운영체제(340)로부터 전달되는 윈도우 입력 메시지들 중 가상 입력 발생 모듈(370)에 의한 가상 입력에 기초하여 생성된 윈도우 입력 메시지에 가상 입력 메시지 플래그가 포함되어 있는지 여부를 판단한다. 판단결과, 해당 윈도우 입력 메시지에 가상 입력 메시지 플래그가 포함되어 있지 않은 경우 해당 윈도우 입력 메시지가 변경된 것으로 판단한다.The
즉, 자체적으로 발생시킨 가상 입력을 기초로 생성된 윈도우 입력 메시지는 가상 입력 메시지이므로 가상 입력 메시지 플래그가 포함되어 있어야 함에도 불구하고, 해당 가상 입력을 기초로 생성된 윈도우 입력 메시지에 가상 입력 메시지 플래그가 포함되어 있지 않다는 것은 사용자가 인위적으로 윈도우 입력 메시지에서 가상 입력 메시지 플래그를 삭제하였다는 것을 의미하고, 이는 악의적인 사용자가 윈도우 메시지 훅을 이용하여 윈도우 입력 메시지를 변경하였음을 의미한다.That is, although the window input message generated based on the virtual input generated by itself is a virtual input message, the virtual input message flag is included in the window input message generated based on the virtual input even though the virtual input message flag must be included. Not included means that the user artificially deleted the virtual input message flag from the window input message, which means that the malicious user altered the window input message using the window message hook.
한편, 상술한 실시예에 있어서는 컴퓨터 보안 서비스 제공 장치(300)가 윈도우 API를 통해 발생된 가상 입력을 이용하여 시도되는 매크로 핵을 차단하는 것으로 기재하였다. 그러나, 매크로 핵은 윈도우 API를 통해 발생된 가상 입력뿐만 아니라 커널 레벨에서 가상 입력 드라이버를 이용하여 생성된 가상 입력을 이용하여 시도될 수도 있다. 이러한 경우에는 상술한 바와 같이 윈도우 입력 메시지에 가상 입력 메시지 플래그가 포함되어 있는지 여부로 매크로 핵을 탐지할 수 없다.Meanwhile, in the above-described embodiment, it has been described that the computer security
따라서, 본 발명은 커널 레벨에서 가상 입력 드라이버로 발생시킨 가상 입력 을 이용하여 시도되는 매크로 핵을 차단하기 위해 도시된 바와 같이 시간 정보 생성 모듈(390)을 더 포함할 수 있다.Accordingly, the present invention may further include a time
시간 정보 생성 모듈(390)은 윈도우 메시지 훅 관리 모듈(310)에 의해 모니터링된 윈도우 입력 메시지를 이용하여 커널 레벨에서의 제1 시간 정보를 생성한다. 일 실시예에 있어서, 시간 정보 생성 모듈(390)은 윈도우 입력 메시지로부터 획득되는 커널 레벨에서의 키 다운 발생 시간과 키 업 발생 시간 간의 차이값을 이용하여 제1 시간 정보를 산출할 수 있다.The time
이러한 실시예에 의하는 경우, 매크로 핵 탐지 모듈(320)은 시간 정보 생성 모듈(390)에 의해 생성된 제1 시간 정보가 각 윈도우 입력 메시지 별로 동일한지 여부를 판단한다. 판단결과, 제1 시간 정보가 윈도우 입력 메시지 별로 동일한 경우, 매크로 핵 탐지 모듈(320)은 해당 윈도우 입력 메시지를 커널 레벨에서의 가상 입력 메시지로 판단하고, 매크로 핵이 발생된 것으로 결정한다.According to this embodiment, the macro
여기서, 매크로 핵 탐지 모듈(320)이 제1 시간 정보가 각 윈도우 입력 메시지 별로 동일한 경우 해당 윈도우 입력 메시지를 가상 입력 메시지로 판단하는 것은, 가상 입력 드라이버를 이용하여 기계적으로 발생되는 가상 입력의 경우 키다운 발생 시간과 키업 발생 시간의 차이값인 제1 시간 정보가 모든 윈도우 입력 메시지에 있어서 동일할 가능성이 높기 때문이다.Here, when the first time information is the same for each window input message, the macro
한편, 상술한 실시예에 있어서는 컴퓨터 보안 서비스 제공 장치(300)가 가상 입력을 이용하여 시도되는 매크로 핵을 탐지하는 것으로 기재하였지만, 스피드 핵 탐지 모듈(400)을 더 포함함으로써 시간 관련 API의 후킹을 이용한 스피드 핵 시도 도 탐지할 수 있다.Meanwhile, in the above-described embodiment, the computer security
스피드 핵 탐지를 위해, 상술한 시간 정보 생성 모듈(390)은 윈도우 입력 메시지로부터 획득되는 커널 레벨에서의 제1 시간 정보뿐만 아니라, 시간 관련 API로부터 획득되는 유저 레벨에서의 제2 시간정보를 생성한다. 여기서, 시간 관련 API는 GetTickCount, SetTimer, timeGetTime 등을 포함할 수 있으며, 제2 시간 정보는 시간 관련 API로부터 획득되는 유저 레벨에서의 키 다운 발생 시간과 키 업 발생 시간 간의 차이값을 이용하여 생성될 수 있다.For speed nuclear detection, the time
스피드 핵 탐지 모듈(400)은 상술한 시간 정보 생성 모듈(390)에 의해 생성된 제1 시간 정보 및 제2 시간정보를 이용하여 스피드 핵 발생 여부를 탐지한다. 구체적으로, 스피드 핵 탐지 모듈(400)은 제1 시간 정보와 제2 시간 정보의 차이가 임계치 이상인 경우 스피드 핵이 발생된 것으로 판단한다. 즉, 제1 시간 정보와 제2 시간 정보가 임계치 이상 차이가 나는 것은 악의적인 사용자가 유저 레벨에서 시간 관련 API를 이용하여 시간을 변경하였다는 것을 의미하므로 스피드 핵이 발생된 것으로 판단하게 되는 것이다.The speed
이하에서는 도 3 내지 도 5를 참조하여 본 발명에 따른 훅을 이용한 컴퓨터 보안 서비스 제공 방법에 대해 설명하기로 한다.Hereinafter, a method of providing a computer security service using a hook according to the present invention will be described with reference to FIGS. 3 to 5.
도 3은 본 발명의 제1 실시예에 따라 윈도우 메시지 훅을 이용하여 매크로 핵을 차단하는 방법을 보여주는 플로우차트이다. 도 3에 도시된 매크로 핵 차단 방법은 악의적인 사용자가 유저 레벨에서 윈도우 API를 이용하여 발생시킨 가상 입력을 이용하여 시도되는 매크로 핵을 차단하는 방법을 보여준다.3 is a flowchart showing a method of blocking a macro hack using a window message hook according to the first embodiment of the present invention. The macro hack blocking method shown in FIG. 3 shows a method of blocking a macro hack attempted by using a virtual input generated by a malicious user using the Windows API at the user level.
도시된 바와 같이, 먼저 윈도우 메시지 훅을 설치한다(S400). 일 실시예에 있어서, 윈도우 메시지 훅은 모든 윈도우 메시지들이 임시로 저장되는 시스템 메시지 큐에 설치할 수 있으며, 이때 설치되는 윈도우 메시지 훅은 키보드 로우 레벨 메시지 훅 또는 마우스 로우 레벨 메시지 훅을 포함할 수 있다.As shown, first install the window message hook (S400). In one embodiment, the window message hook may be installed in a system message queue in which all window messages are temporarily stored, and the installed window message hook may include a keyboard low level message hook or a mouse low level message hook.
이후, 윈도우 메시지 훅이 정상적으로 설치되었는지 여부를 판단하여(S405), 정상적으로 설치된 경우, 설치된 윈도우 메시지 훅을 이용하여 운영체제로부터 수신되는 윈도우 입력 메시지를 모니터링한다(S410).Thereafter, it is determined whether the window message hook is normally installed (S405), and if normally installed, the window input message received from the operating system is monitored using the installed window message hook (S410).
다음으로, 모니터링되는 윈도우 입력 메시지에 가상 입력 메시지 플래그가 포함되어 있는지 여부를 판단한다(S420).Next, it is determined whether the virtual input message flag is included in the monitored window input message (S420).
판단결과, 윈도우 입력 메시지에 가상 입력 메시지 플래그가 포함 되어 있으면 해당 윈도우 입력 메시지를 가상 입력 메시지로 판단함으로써 매크로 핵이 발생된 것으로 결정하고, 해당 윈도우 입력 메시지를 필터링한다(S430).As a result of determination, if the virtual input message flag is included in the window input message, it is determined that the macro hack is generated by determining the corresponding window input message as the virtual input message (S430).
S420에서 윈도우 입력 메시지에 가상 입력 메시지 플래그가 포함되어 있지 않으면 해당 윈도우 입력 메시지는 가상 입력 메시지가 아닌 것으로 판단하고, 해당 윈도우 메시지를 메시지 루프에 따라서 처리한다(S440).If the virtual input message flag is not included in the window input message in S420, the corresponding window input message is determined not to be a virtual input message, and the corresponding window message is processed according to the message loop (S440).
한편, 상술한 도 3에는 도시하지 않았지만, 악의적인 사용자가 윈도우 메시지 훅 설치 이후에 다시 윈도우 메시지 훅을 설치하는 경우, 악의적인 사용자가 먼저 윈도우 입력 메시지를 모니터링하고, 악의적인 사용자가 윈도우 입력 메시지에서 가상 입력 메시지 플래그를 삭제함으로써 매크로 핵을 은닉할 수 있다.On the other hand, although not shown in Figure 3 above, when the malicious user installs the window message hook again after the installation of the window message hook, the malicious user first monitors the window input message, the malicious user in the window input message By deleting the virtual input message flag, the macro hack can be concealed.
이를 방지하기 위해 본 발명은 상술한 윈도우 메시지 훅 설치 과정 이후에, 자체적으로 가상 입력을 발생시켜 운영체제로 제공하는 과정(미도시)과, 자체적으로 발생된 가상 입력을 기초로 생성된 윈도우 입력 메시지를 모니터링함으로써 윈도우 입력 메시지의 변경 여부를 판단하는 과정(미도시)을 더 포함할 수 있다.In order to prevent this, the present invention provides a process (not shown) for generating a virtual input by itself and providing it to the operating system after the above-described window message hook installation process, and a window input message generated based on the generated virtual input. The method may further include determining whether the window input message is changed by monitoring (not shown).
이때, 윈도우 입력 메시지 변경 여부 판단시, 자체적으로 발생된 가상 입력에 기초하여 생성된 윈도우 입력 메시지에 가상 입력 메시지 플래그가 포함되어 있지 않은 경우 해당 윈도우 입력 메시지가 변경된 것으로 판단할 수 있다.In this case, when determining whether to change the window input message, if the virtual input message flag is not included in the window input message generated based on the generated virtual input, the corresponding window input message may be determined to be changed.
도 4는 본 발명의 제2 실시예에 따라 훅을 이용하여 매크로 핵을 차단하는 방법을 보여주는 플로우차트이다. 도 4에 도시된 매크로 핵 차단 방법은 악의적인 사용자가 커널 레벨에서 가상 입력 드라이버를 이용하여 발생시킨 가상 입력을 이용하여 시도되는 매크로 핵을 차단하는 방법을 보여준다.4 is a flowchart showing a method of blocking a macro nucleus using a hook according to a second embodiment of the present invention. The macro hack blocking method shown in FIG. 4 shows a method of blocking a macro hack attempted using a virtual input generated by a malicious user using a virtual input driver at the kernel level.
도시된 바와 같이, 먼저 윈도우 메시지 훅을 설치한다(S500). 제1 실시예에서와 같이 윈도우 메시지 훅은 모든 윈도우 메시지들이 임시로 저장되는 시스템 메시지 큐에 설치할 수 있으며, 이때 설치되는 윈도우 메시지 훅은 키보드 로우 레벨 메시지 훅 또는 마우스 로우 레벨 메시지 훅일 수 있다.As shown, first install the window message hook (S500). As in the first embodiment, the window message hook may be installed in a system message queue where all window messages are temporarily stored, and the installed window message hook may be a keyboard low level message hook or a mouse low level message hook.
이후, 윈도우 메시지 훅이 정상적으로 설치되었는지 여부를 판단하여(S505), 정상적으로 설치된 경우, 설치된 윈도우 메시지 훅을 이용하여 운영체제로부터 수신되는 윈도우 입력 메시지를 모니터링한다(S510).Thereafter, it is determined whether the window message hook is normally installed (S505), and if normally installed, the window input message received from the operating system is monitored using the installed window message hook (S510).
다음으로, 모니터링된 윈도우 입력 메시지를 이용하여 커널 레벨에서의 제1 시간 정보를 생성한다(S520). 일 실시예에 있어서, 제1 시간 정보는 윈도우 입력 메시지로부터 획득되는 키 다운 시간과 키 업 시간의 차이값을 이용하여 생성할 수 있다.Next, the first time information at the kernel level is generated using the monitored window input message (S520). In an embodiment, the first time information may be generated using a difference value between the key down time and the key up time obtained from the window input message.
이후, 각 윈도우 입력 메시지 별로 S520에서 생성된 제1 시간 정보가 동일한지 여부를 판단한다(S530).Thereafter, it is determined whether the first time information generated in S520 is the same for each window input message (S530).
판단결과, 각 윈도우 입력 메시지 별로 제1 시간 정보가 동일한 경우 해당 윈도우 입력 메시지를 가상 입력 메시지로 판단함으로써 매크로 핵이 발생된 것으로 결정하고, 해당 윈도우 입력 메시지를 필터링한다(S540).As a result of the determination, when the first time information is the same for each window input message, it is determined that the macro hack is generated by determining the corresponding window input message as a virtual input message (S540).
S530의 판단결과 각 윈도우 입력 메시지 별로 제1 시간 정보가 동일하지 않은 경우 해당 윈도우 입력 메시지를 가상 입력 메시지가 아닌 것으로 판단하고, 해당 윈도우 메시지를 메시지 루프에 따라서 처리한다(S550).If the first time information for each window input message is not the same as the determination result of S530, it is determined that the corresponding window input message is not a virtual input message, and the corresponding window message is processed according to the message loop (S550).
한편, 제2 실시예에 있어서도, 제1 실시예에서와 동일하게 악의적인 사용자가 윈도우 입력 메시지에서 가상 입력 메시지 플래그를 삭제함으로써 매크로 핵을 은닉하려는 시도를 방지하기 위해 상술한 윈도우 메시지 훅 설치 과정 이후에, 자체적으로 가상 입력을 발생시켜 운영체제로 제공하는 과정(미도시)과, 자체적으로 발생된 가상 입력을 기초로 생성된 윈도우 입력 메시지를 윈도우 메시지 훅을 통해 모니터링함으로써 윈도우 입력 메시지의 변경 여부를 판단하는 과정(미도시)을 더 포함할 수 있다. 이에 대한 설명은 이미 구체적으로 설명하였으므로 상세한 설명은 생략하기로 한다.On the other hand, also in the second embodiment, the same as in the first embodiment, after the above-described window message hook installation process for preventing a malicious user from attempting to conceal the macro hack by deleting the virtual input message flag from the window input message. Determining whether the window input message has been changed by monitoring the window input message generated by the virtual input by itself and providing the operating system to the operating system (not shown), and by monitoring the window input message generated based on the virtual input generated by itself. It may further include a process (not shown). Since this has been described in detail already, the detailed description will be omitted.
상술한 실시예에 있어서는 유저 레벨에서의 윈도우 API를 이용한 매크로 핵 탐지와 커널 레벨에서의 가상 입력 드라이버를 이용한 매크로 핵 탐지가 별개의 과정을 수행되는 것으로 기재하였지만, 변형된 실시예에 있어서는 하나로 통합되어 수행될 수도 있을 것이다.In the above-described embodiment, macro nucleus detection using the Windows API at the user level and macro nucleus detection using the virtual input driver at the kernel level are described as being performed separately. It may be performed.
즉, 유저 레벨에서의 윈도우 API를 이용한 매크로 핵 탐지 과정을 수행한 후 커널 레벨에서의 가상 입력 드라이버를 이용한 매크로 핵 탐지 과정을 수행하거나, 커널 레벨에서의 가상 입력 드라이버를 이용한 매크로 핵 탐지 과정을 수행한 후 유저 레벨에서의 윈도우 API를 이용한 매크로 핵 탐지 과정을 수행할 수 있을 것이다.That is, after performing the macro nuclear detection process using the Windows API at the user level, the macro nuclear detection process using the virtual input driver at the kernel level or the macro nuclear detection process using the virtual input driver at the kernel level is performed. You can then perform a macro hacking process using the Windows API at the user level.
도 5는 본 발명의 제3 실시예에 따라 훅을 이용하여 스피드 핵을 차단하는 방법을 보여주는 플로우차트이다.5 is a flowchart showing a method of blocking a speed hack using a hook according to a third embodiment of the present invention.
도시된 바와 같이, 먼저 윈도우 메시지 훅을 설치한다(S600). 제1 실시예에서와 같이 윈도우 메시지 훅은 모든 윈도우 메시지들이 임시로 저장되는 시스템 메시지 큐에 설치할 수 있으며, 이때 설치되는 윈도우 메시지 훅은 키보드 로우 레벨 메시지 훅 또는 마우스 로우 레벨 메시지 훅일 수 있다.As shown, first install the window message hook (S600). As in the first embodiment, the window message hook may be installed in a system message queue where all window messages are temporarily stored, and the installed window message hook may be a keyboard low level message hook or a mouse low level message hook.
이후, 윈도우 메시지 훅이 정상적으로 설치되었는지 여부를 판단하여(S605), 정상적으로 설치된 경우, 설치된 윈도우 메시지 훅을 이용하여 운영체제로부터 수신되는 윈도우 입력 메시지를 모니터링한다(S610).Subsequently, it is determined whether the window message hook is normally installed (S605), and if normally installed, the window input message received from the operating system is monitored using the installed window message hook (S610).
다음으로, 모니터링된 윈도우 입력 메시지를 이용하여 커널 레벨에서의 제1 시간 정보를 생성하고, 시간 관련 API를 이용하여 유저 레벨에서의 제2 시간 정보를 생성한다(S620).Next, the first time information at the kernel level is generated using the monitored window input message, and the second time information at the user level is generated using the time-related API (S620).
일 실시예에 있어서, 제1 시간 정보는 윈도우 입력 메시지로부터 획득되는 키 다운 발생 시간과 키 업 발생 시간의 차이값을 이용하여 생성할 수 있고, 제2 시간 정보는 시간 관련 API를 이용하여 획득되는 키 다운 발생 시간과 키 업 발생 시간의 차이값을 이용하여 생성할 수 있다.In one embodiment, the first time information may be generated using a difference between a key down occurrence time and a key up occurrence time obtained from a window input message, and the second time information may be obtained using a time related API. The difference between the key down occurrence time and the key up occurrence time can be generated.
이후, 제1 시간 정보와 제2 시간 정보의 차이값을 산출하고(S630), 산출된 차이값이 임계치 이상인지 여부를 판단한다(S640).Thereafter, a difference value between the first time information and the second time information is calculated (S630), and it is determined whether the calculated difference value is greater than or equal to a threshold value (S640).
판단결과, 산출된 차이값이 임계치 이상인 경우 스피드 핵이 시도된 것으로 판단하여 해당 윈도우 입력 메시지를 필터링하고(S650), 산출된 차이값이 임계치 미만인 경우 해당 윈도우 입력 메시지를 메시지 루프에 따라서 처리한다(S660).As a result, if the calculated difference value is greater than or equal to the threshold value, it is determined that the speed hack is attempted, and the corresponding window input message is filtered (S650). If the calculated difference value is less than the threshold value, the corresponding window input message is processed according to the message loop ( S660).
상술한 컴퓨터 보안 서비스 제공 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터로 판독 가능한 기록 매체에 기록될 수 있다. 이때, 컴퓨터로 판독 가능한 기록매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 한편, 기록매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다.The computer security service providing method described above may be embodied in the form of program instructions that can be executed by various computer means and recorded in a computer-readable recording medium. In this case, the computer-readable recording medium may include program instructions, data files, data structures, and the like, alone or in combination. On the other hand, the program instructions recorded on the recording medium may be those specially designed and configured for the present invention or may be available to those skilled in the art of computer software.
컴퓨터로 판독 가능한 기록매체에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(Magnetic Media), CD-ROM, DVD와 같은 광기록 매체(Optical Media), 플롭티컬 디스크(Floptical Disk)와 같은 자기-광 매체(Magneto-Optical Media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 한편, 이러한 기록매체는 프로그램 명령, 데이터 구조 등을 지정하는 신호를 전송하는 반송파를 포함하는 광 또는 금속선, 도파관 등의 전송 매체일 수도 있다.The computer-readable recording medium includes a magnetic recording medium such as a magnetic medium such as a hard disk, a floppy disk and a magnetic tape, an optical medium such as a CD-ROM and a DVD, a magnetic disk such as a floppy disk, A magneto-optical media, and a hardware device specifically configured to store and execute program instructions such as ROM, RAM, flash memory, and the like. The recording medium may be a transmission medium such as an optical or metal wire, a waveguide, or the like including a carrier wave for transmitting a signal specifying a program command, a data structure, or the like.
또한, 프로그램 명령에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상술한 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.In addition, 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.
한편, 본 발명이 속하는 기술분야의 당업자는 상술한 본 발명이 그 기술적 사상이나 필수적 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다.On the other hand, those skilled in the art will understand that the present invention described above can be implemented in other specific forms without changing the technical spirit or essential features.
그러므로, 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 등가 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.Therefore, it is to be understood that the embodiments described above are exemplary in all respects and not restrictive. The scope of the present invention is shown by the following claims rather than the detailed description, and all changes or modifications derived from the meaning and scope of the claims and their equivalent concepts should be construed as being included in the scope of the present invention. do.
도 1은 종래기술에 따른 스피드 핵 차단 방법을 보여주는 도면.1 is a view showing a speed nuclear blocking method according to the prior art.
도 2는 본 발명의 일 실시예에 따른 컴퓨터 보안 서비스 제공 장치의 개략적인 블록도.2 is a schematic block diagram of an apparatus for providing a computer security service according to an embodiment of the present invention.
도 3은 본 발명의 제1 실시예에 따른 매크로 핵 차단 방법을 보여주는 플로우차트.3 is a flowchart showing a macronuclear blocking method according to the first embodiment of the present invention.
도 4는 본 발명의 제2 실시예에 따른 매크로 핵 차단 방법을 보여주는 플로우차트.4 is a flowchart showing a macronuclear blocking method according to a second embodiment of the present invention.
도 5는 본 발명의 제3 실시예에 따른 스피드 핵 차단 방법을 보여주는 플로우차트.5 is a flowchart showing a speed nucleus blocking method according to a third embodiment of the present invention.
<도면의 주요부분에 대한 부호의 설명><Description of the symbols for the main parts of the drawings>
310: 윈도우 메시지 훅 관리 모듈 320: 매크로 핵 탐지 모듈310: window message hook management module 320: macro nuclear detection module
330: 필터링 모듈 370: 가상 입력 발생 모듈330: filtering module 370: virtual input generation module
380: 변경 판단 모듈 390: 시간 정보 생성 모듈380: change determination module 390: time information generation module
400: 스피드 핵 탐지 모듈400: speed nuclear detection module
Claims (26)
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020090033432A KR101005593B1 (en) | 2009-04-17 | 2009-04-17 | Method and apparatus for providing computer security service using hook |
PCT/KR2010/002421 WO2010120157A2 (en) | 2009-04-17 | 2010-04-19 | Method for providing computer security services using a hook, and apparatus and computer readable recording medium for same |
JP2012505829A JP5580878B2 (en) | 2009-04-17 | 2010-04-19 | Method and apparatus for providing computer security service using hook, and computer-readable recording medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020090033432A KR101005593B1 (en) | 2009-04-17 | 2009-04-17 | Method and apparatus for providing computer security service using hook |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20100114969A KR20100114969A (en) | 2010-10-27 |
KR101005593B1 true KR101005593B1 (en) | 2011-01-05 |
Family
ID=42983031
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020090033432A KR101005593B1 (en) | 2009-04-17 | 2009-04-17 | Method and apparatus for providing computer security service using hook |
Country Status (3)
Country | Link |
---|---|
JP (1) | JP5580878B2 (en) |
KR (1) | KR101005593B1 (en) |
WO (1) | WO2010120157A2 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101421633B1 (en) | 2013-04-02 | 2014-07-23 | 주식회사 잉카인터넷 | Speed Hack Detection System and Method |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101434094B1 (en) * | 2013-03-18 | 2014-08-26 | 한양대학교 에리카산학협력단 | Blocking harmful application by intent monitoring in android platform |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20040042731A (en) * | 2002-11-15 | 2004-05-20 | 엘지엔시스(주) | File and registry monitoring method for host system |
US6813713B2 (en) | 2000-10-19 | 2004-11-02 | Nec Electronics Corporation | Data processing apparatus capable of dealing with illegal external input in an operative state and preventing useless power consumption in a stopped state |
KR20060059795A (en) * | 2004-11-29 | 2006-06-02 | 주식회사 안철수연구소 | How to Detect Internal Time Changes in Computer Systems |
KR100685672B1 (en) | 2004-11-29 | 2007-02-23 | 주식회사 안철수연구소 | How to prevent automatic input by computer program |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100483700B1 (en) * | 2003-12-03 | 2005-04-19 | 주식회사 잉카인터넷 | Method to cut off an illegal process access and manipulation for the security of online game client by real-time |
KR100959638B1 (en) * | 2004-03-09 | 2010-05-26 | 주식회사 하우리 | Recording medium recording keyboard hacking blocking method and program |
KR100710032B1 (en) * | 2005-02-23 | 2007-04-25 | 제이알소프트 주식회사 | Method and system for preventing hacking of keyboard input information of Internet Explorer user through secure input filter driver and keyboard security input BH in Windows operating system |
WO2007037640A1 (en) * | 2005-09-28 | 2007-04-05 | Ahn Lab, Inc. | Method for detecting modification of internal time in computer system |
-
2009
- 2009-04-17 KR KR1020090033432A patent/KR101005593B1/en active IP Right Grant
-
2010
- 2010-04-19 JP JP2012505829A patent/JP5580878B2/en active Active
- 2010-04-19 WO PCT/KR2010/002421 patent/WO2010120157A2/en active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6813713B2 (en) | 2000-10-19 | 2004-11-02 | Nec Electronics Corporation | Data processing apparatus capable of dealing with illegal external input in an operative state and preventing useless power consumption in a stopped state |
KR20040042731A (en) * | 2002-11-15 | 2004-05-20 | 엘지엔시스(주) | File and registry monitoring method for host system |
KR20060059795A (en) * | 2004-11-29 | 2006-06-02 | 주식회사 안철수연구소 | How to Detect Internal Time Changes in Computer Systems |
KR100685672B1 (en) | 2004-11-29 | 2007-02-23 | 주식회사 안철수연구소 | How to prevent automatic input by computer program |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101421633B1 (en) | 2013-04-02 | 2014-07-23 | 주식회사 잉카인터넷 | Speed Hack Detection System and Method |
Also Published As
Publication number | Publication date |
---|---|
JP2012524325A (en) | 2012-10-11 |
KR20100114969A (en) | 2010-10-27 |
JP5580878B2 (en) | 2014-08-27 |
WO2010120157A2 (en) | 2010-10-21 |
WO2010120157A3 (en) | 2011-01-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20150101055A1 (en) | Method, system and terminal device for scanning virus | |
EP3205072A1 (en) | Differential dependency tracking for attack forensics | |
JP2014142960A (en) | Method and system of preventing browser-based fraud | |
US20070275694A1 (en) | Controlling Communications Performed by an Information Processing Apparatus | |
EP3107025A1 (en) | Log analysis device, unauthorized access auditing system, log analysis program, and log analysis method | |
JP6518297B2 (en) | System and method for performing an antivirus scan of a web page | |
CN106155746B (en) | A kind of installation file processing method and processing device, server | |
KR101005593B1 (en) | Method and apparatus for providing computer security service using hook | |
JP6351827B2 (en) | Virus scanning method and virus scanning apparatus | |
CN112948831B (en) | Application risk identification method and device | |
US8490195B1 (en) | Method and apparatus for behavioral detection of malware in a computer system | |
CN115118782B (en) | Data control method, device, electronic equipment and computer readable storage medium | |
WO2020165789A1 (en) | Monitoring process on iot device | |
US20240236144A9 (en) | Method and apparatus for identifying malicious mining behavior, and device and storage medium | |
CN111290840B (en) | Method, device, equipment and computer readable medium for calling associated application | |
CN115934378A (en) | Service data processing method and device, electronic equipment and storage medium | |
CN108471635B (en) | Method and apparatus for connecting wireless access points | |
US20130254893A1 (en) | Apparatus and method for removing malicious code | |
CN117455660B (en) | Financial real-time safety detection system, method, equipment and storage medium | |
CN111371675A (en) | Intelligent addressing method, device, equipment and storage medium thereof | |
US20190356748A1 (en) | Service Worker Push Violation Enforcement | |
CN114756298B (en) | Program instance management method and device, computer storage medium and electronic equipment | |
CN116827694B (en) | Data security detection method and system | |
CN110633566A (en) | Intrusion detection method, device, terminal equipment and medium | |
JP2005234849A (en) | Monitoring device, monitoring method and program |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
PA0109 | Patent application |
Patent event code: PA01091R01D Comment text: Patent Application Patent event date: 20090417 |
|
PA0201 | Request for examination | ||
N231 | Notification of change of applicant | ||
PN2301 | Change of applicant |
Patent event date: 20090522 Comment text: Notification of Change of Applicant Patent event code: PN23011R01D |
|
PG1501 | Laying open of application | ||
E701 | Decision to grant or registration of patent right | ||
PE0701 | Decision of registration |
Patent event code: PE07011S01D Comment text: Decision to Grant Registration Patent event date: 20101218 |
|
GRNT | Written decision to grant | ||
PR0701 | Registration of establishment |
Comment text: Registration of Establishment Patent event date: 20101227 Patent event code: PR07011E01D |
|
PR1002 | Payment of registration fee |
Payment date: 20101228 End annual number: 3 Start annual number: 1 |
|
PG1601 | Publication of registration | ||
FPAY | Annual fee payment |
Payment date: 20130926 Year of fee payment: 4 |
|
PR1001 | Payment of annual fee |
Payment date: 20130926 Start annual number: 4 End annual number: 4 |
|
FPAY | Annual fee payment |
Payment date: 20140925 Year of fee payment: 5 |
|
PR1001 | Payment of annual fee |
Payment date: 20140925 Start annual number: 5 End annual number: 5 |
|
FPAY | Annual fee payment |
Payment date: 20151127 Year of fee payment: 6 |
|
PR1001 | Payment of annual fee |
Payment date: 20151127 Start annual number: 6 End annual number: 6 |
|
FPAY | Annual fee payment |
Payment date: 20161013 Year of fee payment: 7 |
|
PR1001 | Payment of annual fee |
Payment date: 20161013 Start annual number: 7 End annual number: 7 |
|
FPAY | Annual fee payment |
Payment date: 20171012 Year of fee payment: 8 |
|
PR1001 | Payment of annual fee |
Payment date: 20171012 Start annual number: 8 End annual number: 8 |
|
FPAY | Annual fee payment |
Payment date: 20191010 Year of fee payment: 10 |
|
PR1001 | Payment of annual fee |
Payment date: 20191010 Start annual number: 10 End annual number: 10 |
|
PR1001 | Payment of annual fee |
Payment date: 20201022 Start annual number: 11 End annual number: 11 |
|
PR1001 | Payment of annual fee |
Payment date: 20211012 Start annual number: 12 End annual number: 12 |
|
PR1001 | Payment of annual fee |
Payment date: 20220922 Start annual number: 13 End annual number: 13 |
|
PR1001 | Payment of annual fee |
Payment date: 20230925 Start annual number: 14 End annual number: 14 |
|
PR1001 | Payment of annual fee |