KR20090067569A - Windows kernel protection system using virtualization - Google Patents

Windows kernel protection system using virtualization Download PDF

Info

Publication number
KR20090067569A
KR20090067569A KR1020070135268A KR20070135268A KR20090067569A KR 20090067569 A KR20090067569 A KR 20090067569A KR 1020070135268 A KR1020070135268 A KR 1020070135268A KR 20070135268 A KR20070135268 A KR 20070135268A KR 20090067569 A KR20090067569 A KR 20090067569A
Authority
KR
South Korea
Prior art keywords
kernel
function
api
contents
virtual space
Prior art date
Application number
KR1020070135268A
Other languages
Korean (ko)
Inventor
김기홍
최창훈
고상원
Original Assignee
(주) 세인트 시큐리티
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by (주) 세인트 시큐리티 filed Critical (주) 세인트 시큐리티
Priority to KR1020070135268A priority Critical patent/KR20090067569A/en
Publication of KR20090067569A publication Critical patent/KR20090067569A/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Storage Device Security (AREA)

Abstract

A windows kernel protection system using virtualization is provided to make a security company use original security, thereby providing pre-processing for personal information protection. Original data of various kernel API(Application Program Interface) functions used in a window operating system are assigned to a virtual space so that the kernel is protected from hooking techniques of various malicious programs. A set program calls a kernel API before a change by calling a function newly configured in the virtual space rather than calling a changed kernel API. A hidden code included in the changed code is detoured. Therefore, the hidden code calls an API by a normal method.

Description

가상화 기법을 이용한 윈도우 커널 보호 시스템 {Windows Kernel Protection System using Virtualization}Windows Kernel Protection System using Virtualization

본 발명은 윈도우 시스템이 각종 악성코드, 바이러스로부터 시스템 커널 API 내용이 변경되어 비 정상적인 작동을 하는 것을 방지하고 변경된 커널로부터 커널이 오작동 하는 것을 방지하기위한 윈도우 커널의 가상화를 통한 보호 기술에 대한 내용이다.The present invention relates to a protection technology through the virtualization of the Windows kernel to prevent the Windows system from operating abnormally by changing the contents of the system kernel API from various malicious codes and viruses, and to prevent the kernel from malfunctioning from the changed kernel. .

1. 은닉 기법 기본 작동 방법 이해1. Understand how concealment techniques work

각종 은닉 기법은 아주 다양하지만 가장 기반이 되는 기술은 Hooking 기술이다. Hooking 기술이란 특정 함수나 특정 명령어가 실행됨에 있어서 그 중간에 해당 명령 내용을 가로채서 특정 작업을 한 이후에 원래 실행 함수로 넘겨주게 되어 처리를 하도록 만드는 기술이다. (은닉 기법의 기반이 되는 이 기술은 여러 영역에 걸쳐서 작동이 가능하며 모든 운영체제, 모든 환경에서 가능하도록 되어 있어서 그 변형 기술이 나올 가능성도 아주 높다.)Various concealment techniques are very diverse, but the most basic technique is hooking technique. Hooking technology is a technology that makes a specific function or a specific command executed, intercepts the contents of the command in the middle, and passes it to the original execution function after processing. (This technology, which is the basis of the concealment technique, can operate across multiple domains and is available in all operating systems and in all environments, so it is very likely that the variant will emerge.)

Figure 112007092028417-PAT00001
Figure 112007092028417-PAT00001

그림 1-1 Figure 1-1 WindowsWindows 시스템 기본 구조 System basic structure

이러한 Hooking 기술은 User Mode, Kernel Mode로 크게 나누어 볼 수 있다. User Mode 에서는 API Hooking, Message Hooking 기법 등을 이용하고 있으며 Kernel Mode 에서는 SSDT Hooking, IDT Hooking, IRP Hooking 기법 등을 이용한다.Such hooking technology can be divided into user mode and kernel mode. In User Mode, API Hooking and Message Hooking techniques are used.In Kernel Mode, SSDT Hooking, IDT Hooking and IRP Hooking techniques are used.

그림 1-2 Windows Hooking 위치

Figure 112007092028417-PAT00002
Figure 1-2 Windows Hooking position
Figure 112007092028417-PAT00002

1. API Hooking1. API Hooking

2. IDT Hook2. IDT Hook

3. SYSTENTER Hook3. SYSTENTER Hook

4. SSDT Hook4.SSDT Hook

5. Code Patching5. Code Patching

6. Layered Driver6. Layered Driver

7. Driver Hook7. Driver Hook

기존의 은닉 기법 탐지 방법과 같은 경우는 이러한 Hooking 된 모듈을 찾아서 Hooking 코드만을 복구해 주면 자연스럽게 루트킷을 탐지 및 제거할 수 있게 되었지만 현대에 들어서는 루트킷이 사용하는 Hooking 코드가 복구되면 시스템을 망가지게 해서 탐지를 못 하게 하는 경우도 있어 기존의 방법으로는 복구하기가 힘들어 진 것이 사실이다.In the case of the conventional concealment detection method, if you find the hooked module and recover only the hooking code, the rootkit can be naturally detected and removed. However, when the hooking code used by the rootkit is restored in modern times, the system is broken. In some cases, it is difficult to recover the existing method.

2. 탐지 기법2. Detection Technique

은닉 기법은 일단 시스템에 존재 여부를 탐지하는 것이 가장 중요하다. 탐지를 위해서는 기존에 Hooking 되어 있는 코드를 사용하지 않고 직접 해당 함수를 구현을 해서 탐지를 하는 기법이 있을 수 있겠고 Hooking 된 코드를 복원하여 원래 함수를 호출하는 방법이 있을 수 있다. Hooking 된 코드를 복원하는 방법에는 아래에 언급된 각종 Hooking 기법 탐지에 많이 사용된다.The concealment technique is most important once it is present in the system. For detection, there can be a technique to detect by implementing the function directly without using the existing hooked code, or there can be a method of calling the original function by restoring the hooked code. The method of restoring the hooked code is widely used to detect the various hooking techniques mentioned below.

A. Import Address Table (IAT)A. Import Address Table (IAT)

B. System Service Dispatch Table (SSDT) ◎KeServiceDescriptorTable B. System Service Dispatch Table (SSDT) ◎ KeServiceDescriptorTable

C. Interrupt Descriptor Table (IDT) ◎Per CPUC. Interrupt Descriptor Table (IDT) ◎ Per CPU

D. Drivers◎I/O Request Packet (IRP) handler D. Drivers ◎ I / O Request Packet (IRP) handler

하지만 위의 Hooking 기법들을 바로 복원을 해서 은닉 기법을 탐지하는 방법에는 여러 위험성이 따르게 된다. 시스템의 상황에 따라 범용으로 제작하기가 힘들어지고 실제 제작을 한다고 하더라도 모든 운영체제에 쉽게 적용을 시키기가 쉽지 않다는 것이다. However, there are various risks in detecting the concealment technique by immediately restoring the above hooking techniques. Depending on the situation of the system it is difficult to produce a general purpose, even if the actual production is not easy to apply to all operating systems.

제안하는 방법은 바로 가상화 방법이다. 시스템 커널 드라이버를 하나 만들고 그 드라이버에서 Windows System 에서 사용하는 실제 함수들을 가상 메모리에 Mapping 하고 시스템 Entry 에 연결을 시켜주어 실제 Hooking 함수들을 작동하지 않도록 하는 것이다. 따라서 각종 Hooking 기법을 통해서 프로세스를 숨기거나 파일을 숨기거나 레지스터 값을 숨기거나 기타 내용을 차단한다고 하더라도 시스템에 원래 사용하게 되는 함수나 명령어를 사용하게 되고 전혀 Hooking 되지 않은 원래 함수를 호출하여 올바른 결과를 가지고 올 수 있게 되는 것이다.The proposed method is the virtualization method. Create a system kernel driver and use that driver in Windows The actual functions used in the system are mapped to the virtual memory and linked to the system entry so that the actual hooking functions do not work. Therefore, even if you hide the process, hide the file, hide the register value, or block other contents through various hooking techniques, you will use the function or command that is originally used in the system and call the original function that is not hooked at all to get the correct result. I will be able to bring.

Figure 112007092028417-PAT00003
Figure 112007092028417-PAT00003

그림 2-1 Figure 2-1 WindowsWindows 시스템 기본 상태 System default state

Figure 112007092028417-PAT00004
Figure 112007092028417-PAT00004

그림 2-2 Figure 2-2 루트킷에In the rootkit 의해  due to HookingHooking 되고 있는 상태 Becoming

Figure 112007092028417-PAT00005
Figure 112007092028417-PAT00005

그림 2-3 본 프로젝트 제안 방법 (커널 Figure 2-3 How to Propose This Project (Kernel APIAPI 가상화Virtualization ))

실제 테스트 결과 CPU 타입이나 환경에 크게 영향을 받지 않고 사용하는 운영체제 별로 Mapping 되는 함수에 대해서만 미리 정의를 해주게 되면 반 영구적으로 사용할 수 있는 기법이 되는 것이다. 또한 새로운 Hooking 기법이 나온다고 하더라도 해당 Hooking 에 사용하는 함수나 종류만 판별하게 되면 가상 공간에 해당 내용을 Mapping 해주고 System Entry 만 연결해주면 되는 방법이니 신종 기법에 대한 대응도 상당히 빠르게 진행할 수 있다.As a result of actual test, if you define only functions that are mapped for each operating system without being influenced by CPU type or environment, it becomes a technique that can be used semi-permanently. In addition, even if a new hooking method is introduced, if only the function or type used for the corresponding hooking is determined, mapping the contents to the virtual space and connecting only the system entry can be done quickly.

3. 제거 기법3. Removal Techniques

위의 방법을 통해 은닉 기법이 탐지가 가능해지면 제거 또한 쉽게 가능해진다. 일단 해당 루트킷 프로그램이 작동을 하고 있으면 프로세스 작동을 중단시킨다. 프로세스를 중단을 시키는 것은 위의 탐지 과정을 통해서 우리가 사용하는 모듈은 Hooking 되지 않은 실제 함수를 호출을 해주는 것이기 때문에 프로그램 작동 중단 방지 등의 Hooking 코드로 막아놓은 것을 우회하여 프로그램을 중단시킬 수 있다. 그와 동시에 해당 프로세스가 작동하면서 보호되고 있었던 은닉 기법의 주된 파일을 찾아내고 지울 수 있도록 원래 함수를 호출하여 주면 쉽게 제거가 가능해진다. 혹 해당 파일이 다른 시스템 모듈이나 파일에 자신의 프로세스를 걸고 있어도 프로세스가 작동이 중단이 되면 걸어 놓은 링크들이 다 풀리기 때문에 마찬가지로 제거가 가능해진다.If the concealment technique can be detected by the above method, it can be easily removed. Once the rootkit program is running, the process stops working. In order to interrupt the process, the module used by us through the above detection process calls the actual function that is not hooked. Therefore, we can stop the program by bypassing the blocking by hooking code such as preventing the program from stopping. At the same time, it can be easily removed by calling the original function to find and delete the main file of the hidden technique that was protected while the process was running. Even if the file hangs its own process on another system module or file, if the process stops working, the links that it hangs are released and can be removed as well.

루트킷 실행 프로그램은 사용자에 의해 실행되고 있지 않은 한 일반적인 백신프로그램들에 의해 탐지될 수 있다. 그러나 이 프로그램들이 프로세스로서 시스템에서 실행되고 있는 동안에는 스스로를 감추기 때문에 탐지될 수 없다. 즉, 일반적인 OS에 대한 system call로써는 이들에 대한 존재 여부를 알아낼 수 없다. 이는 결국 루트킷이 실행되고 있는 OS자체는 이미 루트킷에 의해 오염된 시스템이기 때문에 그 위에서 실행되는 백신프로그램도 믿을 수 없는 결과를 낳게 되는 것이다. 현재 보안 프로그램 중에서 루트킷을 탐지할 수 있는 프로그램이 몇몇 존재하는 것은 단지 루트킷들이 자신을 OS레벨 아래에서 숨기는 능력을 완전히 구현하지 못했다.Rootkit executable programs can be detected by common antivirus programs as long as they are not run by the user. However, they cannot be detected because they hide themselves while they are running on the system as a process. In other words, the system call to the general OS can not determine whether they exist. In the end, the OS running the rootkit itself is already contaminated by the rootkit, so even the antivirus program running on it will have unbelievable results. Some of the current security programs that can detect rootkits do not fully implement the ability of rootkits to hide themselves below the OS level.

Figure 112007092028417-PAT00006
Figure 112007092028417-PAT00006

1. 연구사례 1 Scanning on not-running file systemCase Study 1 Scanning on not-running file system

현실적으로 루트킷을 탐지하는 가장 기초적인 방법은 루트킷이 실행되는 시스템을 Boot하지 않고 다른 (루트킷에 감염되지 않은) 시스템에 파일 시스템만을 연결해서 루트킷을 찾아내는 방법이다. 실행되고 있지 않은 루트킷 프로그램은 그 자신을 보호할 수 있는 능력을 발휘할 수 없기 때문에 백신프로그램들에 의해서 탐지될 수 있다.In reality, the most basic way to detect a rootkit is to find the rootkit by connecting only the file system to another (non-rootkit-infected) system without booting the system on which the rootkit runs. Rootkit programs that are not running can be detected by antivirus programs because they do not have the ability to protect themselves.

- 장점: 루트킷의 방해를 받지 않고 루트킷을 디스크상에서 직접 탐지할 수 있다.Advantages: Rootkits can be detected directly on disk without being interrupted by rootkits.

- 한계: 시스템을 내린 상태에서만 검색할 수 있다. - Limit: You can search only in the state made the system.

Figure 112007092028417-PAT00007
Figure 112007092028417-PAT00007

그림 2.1-1Figure 2.1-1

2. 연구사례 2 Stealth Detector2. Case Study 2 Stealth Detector

시스템이 돌아가고 있는 상태에서 루트킷이 탐지자로부터 자신을 보호하기 위해서 자신을 스캔도중에 숨긴다면 이를 탐지하기 위한 방법 중 하나로, 루트킷 탐지기를 루트킷이 알아채지 못하도록 하는 방법이 있다. 루트킷이 자신을 임시적으로 시스 템에서 unload하려 할 때 백신소프트웨어가 이를 fingerprint detection으로 찾아낸다. 하지만 이를 구현하는 것은 새로운 버전의 루트킷이 이를 counter-attack할 여지를 남긴다. 루트킷은 Kernel레벨의 권한을 가지고 있으므로 루트킷코드가 백신소프트웨어의 프로세스를 강제 종료하거나 detect를 알아내고 이를 방지할 수 있다.If the rootkit hides itself while scanning the system to protect itself from the detector while the system is running, one way to detect it is to prevent the rootkit from being noticed by the rootkit detector. When a rootkit attempts to unload itself from the system temporarily, antivirus software finds it with fingerprint detection. However, implementing this leaves room for a new version of the rootkit to counter-attack it. Rootkits have kernel-level privileges that allow rootkit code to kill or prevent detectable antivirus software processes.

- 장점: 시스템이 돌아가는 상태에서 검색을 시도할 수 있다.Advantage: You can try searching while the system is running.

- 한계: 루트킷의 counter-attack을 받을 수 있다. - Limit: You can get the counter-attack of rootkits.

F-Secure Blacklight, AVG Anti-Rootkit 등의 루트킷 탐지 소프트웨어가 이와 같은 방법을 통해서 루트킷을 탐지한다.Rootkit detection software such as F-Secure Blacklight and AVG Anti-Rootkit detects rootkits in this way.

2. 3. 연구사례 3 ◎Cross Checking2. 3. Case Study 3 ◎ Cross Checking

Sysinternals사의 RootkitRevealer는 OS위에 실제로 올려진 프로세스의 형태와 디스크에서 읽어진 형태를 비교하여 루트킷 여부를 판단한다. 이는 루트킷이 스스로를 숨겨서 OS로부터의 응답을 조작된 형태로 백신프로그램에 전달하는 것을 디스크에서 읽혀진 결과와 비교하여 알아내도록 하는 방법이다. 그러나 최근의 루트킷들은 이러한 탐지 프로그램들의 목록을 가지고 이러한 탐지 프로그램들이 탐지를 시도할 경우는 자신을 숨기지 않도록 하는 메커니즘을 사용하여 탐지에서 벗어나고 있다.Sysinternals' RootkitRevealer compares the type of process actually loaded on the OS with the type read from disk to determine whether it is a rootkit. This is a way for the rootkit to hide itself so that the response from the OS is delivered to the antivirus program in a malformed form compared to the result read from disk. Recent rootkits, however, have a list of these detection programs, and use a mechanism to prevent them from hiding themselves when they attempt to detect them.

- 장점: 시스템이 돌아가는 상태에서 검색을 시도할 수 있다.Advantage: You can try searching while the system is running.

- 한계: 탐지기를 알고 있는 루트킷은 탐지가 불가능하다. - Limit: rootkit detector that knows it is impossible to detect.

4. 연구사례 4 Fingerprinting4. Case Study 4 Fingerprinting

실제로 루트킷이 시스템에 설치되기 전에 루트킷의 침입을 사전에 알아내기 위해서 시스템의 integrity를 모니터링 하는 방법이 사용될 수 있다. 처음 안전한 시스템이 설치되고 난 후의 fingerprint를 기록하고, Kernel 파일에 변화가 있을 때마다 시스템의 integrity를 체크한다. 이를 구현하기 위해 cryptographic hash function 사용되어, 모든 Kernel 파일의 bit가 fingerprint형태로 저장된다. 이 fingerprint의 변화를 일정한 간격으로 계산하여 비교하고 변화를 탐지해낸다. In fact, monitoring the integrity of the system can be used to proactively identify rootkit intrusions before they are installed on the system. It records the fingerprint after the first secure system is installed, and checks the integrity of the system whenever there is a change in the kernel file. To implement this, a cryptographic hash function is used, where all bits of the kernel file are stored in fingerprint form. The fingerprint changes are calculated at regular intervals, compared, and detected.

- 장점: 사전에 루트킷의 탐지를 방지하여 루트킷의 진입 자체를 막는다.Advantages: Prevents rootkits from entering itself by preventing rootkit detection in advance.

한계: 시스템의 fingerprint를 계산하고 비교하는 것은 상당한 시스템 프로세스파워를 요구하고 필요한 시스템 Kernel의 확장 또는 변경을 불가능하게 한다.Limitations: Computing and comparing system fingerprints requires significant system process power and makes it impossible to expand or modify the required system kernel.

1. 탐지 기법1. Detection Technique

은닉 기법은 일단 시스템에 존재 여부를 탐지하는 것이 가장 중요하다. 탐지를 위해서는 기존에 Hooking 되어 있는 코드를 사용하지 않고 직접 해당 함수를 구현을 해서 탐지를 하는 기법이 있을 수 있겠고 Hooking 된 코드를 복원하여 원래 함수를 호출하는 방법이 있을 수 있다. Hooking 된 코드를 복원하는 방법에는 아래에 언급된 각종 Hooking 기법 탐지에 많이 사용된다.The concealment technique is most important once it is present in the system. For detection, there can be a technique to detect by implementing the function directly without using the existing hooked code, or there can be a method of calling the original function by restoring the hooked code. The method of restoring the hooked code is widely used to detect the various hooking techniques mentioned below.

A.A. Import Address Table (IAT)Import Address Table (IAT)

B. System Service Dispatch Table (SSDT) KeServiceDescriptorTable B. System Service Dispatch Table (SSDT) KeServiceDescriptorTable

C. Interrupt Descriptor Table (IDT) Per CPUC. Interrupt Descriptor Table (IDT) Per CPU

D. Drivers◎I/O Request Packet (IRP) handler D. Drivers ◎ I / O Request Packet (IRP) handler

하지만 위의 Hooking 기법들을 바로 복원을 해서 은닉 기법을 탐지하는 방법에는 여러 위험성이 따르게 된다. 시스템의 상황에 따라 범용으로 제작하기가 힘들어지고 실제 제작을 한다고 하더라도 모든 운영체제에 쉽게 적용을 시키기가 쉽지 않다는 것이다. However, there are various risks in detecting the concealment technique by immediately restoring the above hooking techniques. Depending on the situation of the system it is difficult to produce a general purpose, even if the actual production is not easy to apply to all operating systems.

제안하는 방법은 바로 가상화 방법이다. 시스템 커널 드라이버를 하나 만들고 그 드라이버에서 Windows System 에서 사용하는 실제 함수들을 가상 메모리에 Mapping 을 하고 시스템 Entry 에 연결을 시켜주어 실제 Hooking 함수들을 작동하지 않도록 하는 것이다. 따라서 각종 Hooking 기법을 통해서 프로세스를 숨기거나 파일을 숨 기거나 레지스터 값을 숨기거나 기타 내용을 차단한다고 하더라도 시스템에 원래 사용하게 되는 함수나 명령어를 사용하게 되고 전혀 Hooking 되지 않은 원래 함수를 호출하여 올바른 결과를 가지고 올 수 있게 되는 것이다.The proposed method is the virtualization method. It creates a system kernel driver and maps the actual functions used by the Windows System to virtual memory and connects them to the system entry so that the actual hooking functions do not work. Therefore, even if you hide a process, hide a file, hide a register value, or block other contents through various hooking techniques, you will use the function or command that was originally used in the system and call the original function that is not hooked at all. Will be able to bring.

Figure 112007092028417-PAT00008
Figure 112007092028417-PAT00008

그림 1-1 Windows 시스템 기본 상태Figure 1-1 Windows System Default Status

Figure 112007092028417-PAT00009
Figure 112007092028417-PAT00009

그림 1-2 루트킷에 의해 Hooking 되고 있는 상태Figure 1-2 Hooking by Rootkit

Figure 112007092028417-PAT00010
Figure 112007092028417-PAT00010

그림 1-3 본 프로젝트 제안 방법 (커널 API 가상화)Figure 1-3 This Project Proposal Method (Kernel API Virtualization)

실제 테스트 결과 CPU 타입이나 환경에 크게 영향을 받지 않고 사용하는 운영체제 별로 Mapping 되는 함수에 대해서만 미리 정의를 해주게 되면 반 영구적으로 사용할 수 있는 기법이 되는 것이다. 또한 새로운 Hooking 기법이 나온다고 하더라도 해당 Hooking 에 사용하는 함수나 종류만 판별하게 되면 가상 공간에 해당 내용을 Mapping 해주고 System Entry 만 연결해주면 되는 방법이니 신종 기법에 대한 대응 도 상당히 빠르게 진행할 수 있다.As a result of actual test, if you define only functions that are mapped for each operating system without being influenced by CPU type or environment, it becomes a technique that can be used semi-permanently. In addition, even if a new hooking method is introduced, it is possible to map the contents to the virtual space and connect only the system entry if the function or type used for the hooking is determined.

2. 제거 기법2. Removal Techniques

위의 방법을 통해 은닉 기법이 탐지가 가능해지면 제거 또한 쉽게 가능해진다. 일단 해당 루트킷 프로그램이 작동을 하고 있으면 프로세스 작동을 중단시킨다. 프로세스를 중단을 시키는 것은 위의 탐지 과정을 통해서 우리가 사용하는 모듈은 Hooking 되지 않은 실제 함수를 호출을 해주는 것이기 때문에 프로그램 작동 중단 방지 등의 Hooking 코드로 막아놓은 것을 우회하여 프로그램을 중단시킬 수 있다. 그와 동시에 해당 프로세스가 작동하면서 보호되고 있었던 은닉 기법의 주된 파일을 찾아내고 지울 수 있도록 원래 함수를 호출하여 주면 쉽게 제거가 가능해진다. 혹 해당 파일이 다른 시스템 모듈이나 파일에 자신의 프로세스를 걸고 있어도 프로세스가 작동이 중단이 되면 걸어 놓은 링크들이 다 풀리기 때문에 마찬가지로 제거가 가능해진다.If the concealment technique can be detected by the above method, it can be easily removed. Once the rootkit program is running, the process stops working. In order to interrupt the process, the module used by us through the above detection process calls the actual function that is not hooked. Therefore, we can stop the program by bypassing the blocking by hooking code such as preventing the program from stopping. At the same time, it can be easily removed by calling the original function to find and delete the main file of the hidden technique that was protected while the process was running. Even if the file hangs its own process on another system module or file, if the process stops working, the links that it hangs are released and can be removed as well.

기존의 해결방법에 대한 발전된 형태의 개발이나 고안이 아닌, 현재까지의 Hacking 기술을 보완하던 방법과 달리, 다른 개념의 해결방안을 찾아 고안하고 개발하였다고 할 수 있다. 이에, 국내외적으로 상당한 부분의 점유율을 나타내고 있는 윈도우[Windows] 사용자에게 자신의 컴퓨터 및 정보등 가치를 돈으로 환산할 수 없는 것들에 대한 보호와 함께, 안정적인 컴퓨터 사용을 할 수 있게 해준다는 점에서 큰 효과를 거둘 수 있을 것으로 보이며, 각 보안업체에는 현재까지의 바이러스 및 해킹기술이 개발되고나서의 사후관리가 아닌, 원천적인 보안을 사용하게 됨으로 써, 각 개인의 정보보호를 위해 사전처리를 해 줄 수 있다는 것이 그 무엇보다 큰 효과라고 할 수 있겠다.Unlike the existing methods of complementing the hacking technology, rather than the development or design of the existing solutions, it can be said that they have found and devised other solutions. In this regard, it enables Windows users, who have a significant share of both domestic and international markets, to protect their computers and information that cannot be converted into money and to enable stable computer use. It seems to be able to make a big effect, and each security company will use the original security rather than follow-up after the virus and hacking technology has been developed so far, so that it can be pre-processed to protect each individual's information. It can be said that the greater effect than anything else.

본 발명의 실시를 위해서는 사용자는 일반적으로 윈도우(Windows) 운영체제를 사용하는 시스템을 구성해야 한다. 이와 같은 경우 각종 악성코드나 바이러스의 은닉 코드로 인해서 커널(Kernel) 내부에서 사용하는 각종 API들이 순수 커널 API 상태가 아닌 각종 악성코드로 인해 변경된 내용이 로딩 되게 된다. 이 때 본 발명에 의해서 개발된 프로그램을 이용하면 본 발명에서 설정한 프로그램은 변경된 커널 API를 호출 하는 것이 아니라 가상 공간에 새롭게 구성된 함수를 호출하게 하여 변경되기 이전의 순수 커널 API 를 호출 하도록 유도한다.In order to implement the present invention, a user generally needs to configure a system using a Windows operating system. In this case, various APIs used inside the kernel due to various malicious codes or hidden codes of viruses are loaded with the changed contents due to various malicious codes instead of pure kernel API states. At this time, if the program developed by the present invention is used, the program set in the present invention does not call the changed kernel API, but calls a newly configured function in the virtual space to induce a pure kernel API before the change.

그 결과로 변경 코드 내부에 들어 있는 은닉 코드는 우회하게 되고 정상적인 방법으로 API를 호출하기 때문에 은닉기법을 사용하는 각종 악성코드, 바이러스들이 무력화 되어 윈도우 커널 시스템을 보호 하게 되는 것이다.As a result, the hidden code inside the modified code is bypassed and calls the API in the normal way, so that various malicious codes and viruses using the hidden technique are incapacitated to protect the Windows kernel system.

Claims (4)

윈도우 운영체제에서 사용하는 각종 커널 API 함수의 오리지널 데이터를 가상 공간에 할당하여 각종 악성 프로그램의 후킹[Hooking] 기법으로부터 커널[Kernel]을 보호하는 방법How to protect kernel from hooking technique of malicious program by allocating original data of various kernel API functions used in Windows operating system to virtual space 제 1 항에 있어 변경되지 않는 순수 커널 API 함수를 가상 공간(메모리)에 할당을 해주기 위해서 커널 API 가 어셈블리 형태로 구현된 시스템 파일에서 필요로 하는 함수 내용을 추출하는 단계; 추출된 함수 내용을 커널 메모리 상에 다시 배치하여 새로 배치된 함수 주소로 호출 되도록 변경하는 단계; 순수 커널 API 호출이 완료된 이후 다시 시스템상에 할당된 (가상 공간이 아닌 실제 공간에 할당된) 함수로 연결해 주는 단계로 나누어 전체적인 시스템 커널 API의 흐름에 문제가 생기지 않도록 하여 커널을 보호하는 방법The method of claim 1, further comprising: extracting function contents required from a system file in which the kernel API is implemented in an assembly form in order to allocate an unchanged pure kernel API function to a virtual space (memory); Relocating the extracted function contents to kernel memory so as to be called with a newly placed function address; After the pure kernel API call is completed, connect the function to the function allocated on the system (not the virtual space, but the real space). 제 2항에 있어 가상 공간에 할당된 순수 커널 API 로 호출을 하기 위해서 일반 유저 레벨에서 할당된 API 함수와 커널 레벨에서 할당된 API 함수의 연결 테이블 내용을 수정하여 새로 생성된(가상 공간에 새로 할당된) 순수 커널 API 함수 주소로 수정을 하여 원하는 작업을 할 수 있도록 변경하는 방법According to claim 2, in order to make a call to the pure kernel API allocated to the virtual space, a newly created (new allocation to the virtual space) by modifying the contents of the association table of the API function allocated at the general user level and the API function allocated at the kernel level. Modified to a pure kernel API function address to make it work as desired 제 2 항에 있어 순수 커널 API를 알아내기 위해서 파일 내용에 Export 되는 함수 내용을 시스템 파일 자체를 분석하여 커널 내용 변경 여부를 판단하여 변경된 커널 API 에 대해서만 가상화 기법을 적용하여 보호하도록 하는 방법The method of claim 2, wherein the method exports the contents of the function to the file contents to analyze the system file itself to determine whether the kernel contents have changed, and to apply the virtualization method only to the changed kernel API.
KR1020070135268A 2007-12-21 2007-12-21 Windows kernel protection system using virtualization KR20090067569A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020070135268A KR20090067569A (en) 2007-12-21 2007-12-21 Windows kernel protection system using virtualization

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020070135268A KR20090067569A (en) 2007-12-21 2007-12-21 Windows kernel protection system using virtualization

Publications (1)

Publication Number Publication Date
KR20090067569A true KR20090067569A (en) 2009-06-25

Family

ID=40995272

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070135268A KR20090067569A (en) 2007-12-21 2007-12-21 Windows kernel protection system using virtualization

Country Status (1)

Country Link
KR (1) KR20090067569A (en)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101014814B1 (en) * 2009-07-22 2011-02-14 주식회사 즐게임 Kernel monitoring module installed computer system and kernel monitoring method thereof
KR101217668B1 (en) * 2011-05-12 2013-01-02 주식회사 안랩 Malicious program hooking prevention apparatus and method
KR101320739B1 (en) * 2012-02-22 2013-10-21 주식회사 팬택 System for securing of memory of the portable terminal
WO2016003095A1 (en) 2014-07-01 2016-01-07 오길식 Led lamp tightly supported on lamp unit by insertion of power socket
KR101589649B1 (en) * 2015-01-19 2016-01-28 한국인터넷진흥원 System and method for analysing large-scale malignant code
KR20160067520A (en) 2014-12-04 2016-06-14 오병오 LED lamp for industrial lighting
CN106096455A (en) * 2016-08-08 2016-11-09 王波 A kind of main frame kernel data reduction protection method
KR20160138523A (en) * 2015-03-18 2016-12-05 바이두 온라인 네트웍 테크놀러지 (베이징) 캄파니 리미티드 Method and apparatus for determining behavior information corresponding to a dangerous file
WO2019009601A1 (en) * 2017-07-04 2019-01-10 주식회사 수산아이앤티 Device and method for protecting web sources

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101014814B1 (en) * 2009-07-22 2011-02-14 주식회사 즐게임 Kernel monitoring module installed computer system and kernel monitoring method thereof
KR101217668B1 (en) * 2011-05-12 2013-01-02 주식회사 안랩 Malicious program hooking prevention apparatus and method
KR101320739B1 (en) * 2012-02-22 2013-10-21 주식회사 팬택 System for securing of memory of the portable terminal
WO2016003095A1 (en) 2014-07-01 2016-01-07 오길식 Led lamp tightly supported on lamp unit by insertion of power socket
KR20160067520A (en) 2014-12-04 2016-06-14 오병오 LED lamp for industrial lighting
KR101589649B1 (en) * 2015-01-19 2016-01-28 한국인터넷진흥원 System and method for analysing large-scale malignant code
KR20160138523A (en) * 2015-03-18 2016-12-05 바이두 온라인 네트웍 테크놀러지 (베이징) 캄파니 리미티드 Method and apparatus for determining behavior information corresponding to a dangerous file
CN106096455A (en) * 2016-08-08 2016-11-09 王波 A kind of main frame kernel data reduction protection method
WO2019009601A1 (en) * 2017-07-04 2019-01-10 주식회사 수산아이앤티 Device and method for protecting web sources

Similar Documents

Publication Publication Date Title
KR102296754B1 (en) secure storage device
EP3123311B1 (en) Malicious code protection for computer systems based on process modification
JP6116697B2 (en) Method, program, system, and machine-readable storage medium for protecting electronic devices
KR101946982B1 (en) Process Evaluation for Malware Detection in Virtual Machines
Payne et al. Lares: An architecture for secure active monitoring using virtualization
CN107066311B (en) Kernel data access control method and system
RU2703156C2 (en) Computer security systems and methods using asynchronous introspection exceptions
KR20090067569A (en) Windows kernel protection system using virtualization
US8549648B2 (en) Systems and methods for identifying hidden processes
US8434151B1 (en) Detecting malicious software
US8904537B2 (en) Malware detection
JP5607752B2 (en) Method and system for protecting an operating system from unauthorized changes
US20160232347A1 (en) Mitigating malware code injections using stack unwinding
US7607173B1 (en) Method and apparatus for preventing rootkit installation
JP2018524756A (en) System and method for tracking malicious behavior across multiple software entities
JP2015212979A (en) System and method for virtual machine monitor based anti-malware security
JP6370098B2 (en) Information processing apparatus, information processing monitoring method, program, and recording medium
US10114948B2 (en) Hypervisor-based buffer overflow detection and prevention
Jin et al. A guest-transparent file integrity monitoring method in virtualization environment
KR101064164B1 (en) Kernel integrity inspection and the recovery method on linux kernel based smart platform
US9202053B1 (en) MBR infection detection using emulation
KR100954356B1 (en) Detection system for malicious program considering code protection method and method thereof
WO2018129916A1 (en) Sandbox testing method, sandbox system and sandbox device
KR20170060815A (en) A Electronic Device And Method For Protecting The Kernel Space of the Memory
JP5955475B1 (en) Program, information processing apparatus, and information processing method

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E601 Decision to refuse application