KR101097590B1 - Method for defending against dll injection without hooking - Google Patents

Method for defending against dll injection without hooking Download PDF

Info

Publication number
KR101097590B1
KR101097590B1 KR1020110070238A KR20110070238A KR101097590B1 KR 101097590 B1 KR101097590 B1 KR 101097590B1 KR 1020110070238 A KR1020110070238 A KR 1020110070238A KR 20110070238 A KR20110070238 A KR 20110070238A KR 101097590 B1 KR101097590 B1 KR 101097590B1
Authority
KR
South Korea
Prior art keywords
thread
kernel mode
kernel
injection
dll
Prior art date
Application number
KR1020110070238A
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 KR1020110070238A priority Critical patent/KR101097590B1/en
Application granted granted Critical
Publication of KR101097590B1 publication Critical patent/KR101097590B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

Abstract

PURPOSE: A DLL injection blocking method is provided to establish a safe user environment by safely blocking a DLL injection in a 32 bit and 64 bit OS over Windows 2000. CONSTITUTION: A kernel mode controller installs a thread generating monitor to an OS(Operating System)(S21). The OS informs a thread generation to a kernel mode thread monitor by monitoring thread generation from an attack process which perform an DLL(Dynamic Link Library) injection(S32). The kernel mode thread monitor request the analysis of the thread in which the thread is included by transmitting thread information to the kernel mode process analyzer(S34). The kernel mode process analyzer analyzes and processes a virtual memory of a general process which is a target for an injection.

Description

동적 링크 라이브러리 인젝션 방어 방법{Method for Defending Against DLL Injection without Hooking}Dynamic Link Library Injection Defense Method {Method for Defending Against DLL Injection without Hooking}

본 발명은 동적 링크 라이브러리(Dynamic Linking Library, DLL) 인젝션 방어 방법에 관한 것으로, 더욱 상세하게는 원격 쓰레드 생성을 통해 다른 프로세스에 동적 링크 라이브러리 인젝션을 수행하는 악성코드들을 커널 후킹(Kernel Hooking) 없이 모든 운영체제(OS)에서 방어하기 위한 동적 링크 라이브러리 인젝션을 무력화하는 방법에 관한 것이다.
The present invention relates to a dynamic linking library (DLL) injection defense method, and more particularly, to all malicious code that performs dynamic link library injection to another process through remote thread creation without kernel hooking A method of disabling dynamic link library injection for defense in the operating system (OS).

일반적으로 악성코드(Malicious Code) 또는 맬웨어(Malware)는 악의적인 목적을 위해 작성된 실행 가능한 코드로 컴퓨터에 악영향을 끼칠 수 있는 모든 소프트웨어의 총칭이고 자기 복제 능력과 감염 대상 유무에 따라 바이러스, 웜, 트로이목마 등으로 분류된다.In general, malware or malware is executable code written for malicious purposes and is the collective name for all software that can adversely affect a computer. Viruses, worms, and Trojans depend on their ability to replicate and to be infected. Horses are classified.

악성코드들은 정상 프로세스에 침투하기 위한 방법 중 하나로 원격 쓰레드(Remote Thread) 생성을 통한 악성코드 동적 링크 라이브러리(이하 'DLL' 이라 함)를 인젝션(Injection)하는 기법을 주로 사용한다. DLL은 마이크로소프트 윈도우즈(Microsoft Windows)에서 구현된 DLL이다.Malicious code is a method of injecting the dynamic link library (hereinafter referred to as 'DLL') through the creation of a remote thread as one of methods for infiltrating a normal process. DLL is a DLL implemented in Microsoft Windows.

현재 대다수의 보안 솔루션(Solution)들이 이를 방어하기 위해 윈도우 운영체제 커널(Window Operating System) SSDT(System Service Dispatch Table, Kiservice Table에 있는 후킹할 함수 주소부분을 임의로 만든 주소로 바꾸는 것) 후킹(Hooking)을 통해 방어하고 있다. 그러나 이 방법은 32bit Windows 운영체제에서만 가능하며 64bit Windows 운영체제에서는 운영체제에 내장된 패치가드(Patch Guard)로 인하여 SSDT 후킹이 불가능하여 적용이 불가능하다. 따라서 64bit 운영체제에서는 커널 레벨에서의 보호가 이뤄지지 않고 있다. 또한 32bit 운영체제에서도 다수의 보안 솔루션들의 후킹 경쟁으로 인한 충돌이 빈번한 실정이다.Currently, most security solutions use the Windows Operating System (SSD) System Service Dispatch Table (SSDT) to change the address of the function address to be hooked into the Kiservice Table. Defending through. However, this method is only available on 32-bit Windows operating systems. On 64-bit Windows operating systems, SSDT hooking is not possible due to the built-in patch guard. As a result, kernel-level protection is not achieved on 64-bit operating systems. In addition, many 32-bit operating systems frequently encounter collisions due to hooking competition among security solutions.

원격 쓰레드 생성을 통해 DLL 인젝션하기 위해서는 반드시 대상 프로세스 가상 메모리 공간에 인젝션할 DLL의 경로를 기록 후 원격 쓰레드를 생성하고, 스레드의 시작함수를 kernel32.dll의 LoadLibrary(xx)류의 함수로 하여 이미 기록한 DLL의 경로를 파라미터로 전달한다. 이 과정이 진행되면 쓰레드 커널 오브젝트가 생성되게 되며, 해당 DLL을 대상 프로세스로 로드하게 된다.In order to inject DLL through remote thread creation, make sure to record the path of DLL to be injected into the target process virtual memory space, and then create a remote thread and write the thread's start function as a function of LoadLibrary (xx) of kernel32.dll Pass the path of the DLL as a parameter. This process creates a threaded kernel object and loads the DLL into the target process.

Windows 운영체제는 커널 레벨에서 쓰레드 생성을 감지하는 방법을 제공하고 있고, 원격 쓰레드 생성을 통한 DLL 인젝션이 발생하면 이 시점을 확인할 수 있다. 그러나 감지만 가능할 뿐 해당 쓰레드 생성을 차단 또는 조작하는 것은 제공되지 않는다.The Windows operating system provides a way to detect thread creation at the kernel level, and you can see when a DLL injection through remote thread creation occurs. However, only detection is possible, and no blocking or manipulation of the thread creation is provided.

또한, 종래에 원격 쓰레드 생성을 통한 DLL 인젝션의 동작원리와 방어원리는 도 1의 흐름도와 같다.In addition, the operation principle and defense principle of the DLL injection through the remote thread generation in the prior art is the same as the flowchart of FIG.

먼저, 원격 쓰레드 생성을 통한 DLL 인젝션은 다음의 절차를 통해 이루어진다. 침투할 대상 프로세스 핸들을 획득하고(S1), 획득된 침투할 대상 프로세스의 가상 메모리 공간에 kernel32.dll의 LoadLibrary(xx) 함수 주소를 기록한다(S2). 같은 플랫폼의 응용프로그램의 경우에는 kernel32.dll은 같은 가상 메모리 주소를 가지는 것을 이용한다. 그리고 인젝션할 DLL의 전체 경로 문자열을 대상 프로세스 가상 메모리 공간에 기록한다(S3). 운영체제에 따라 CreateRemoteThread 또는 NtCreateThreadEx API를 이용하여 원격 쓰레드 생성을 요청하며, 쓰레드 시작 주소를 상기 (S2)에서 기록한 LoadLibrary(xx) 함수 주소로 전달하고 파라미터로 상기 (S3)에서 기록한 인젝션할 DLL의 전체 경로 문자열 주소를 전달한다(S4).First, DLL injection by creating a remote thread is performed using the following procedure. Acquire a target process handle to be penetrated (S1), and load the LoadLibrary (xx) function address of kernel32.dll into the obtained virtual memory space of the target process to be penetrated (S2). For applications on the same platform, kernel32.dll uses the same virtual memory address. The full path string of the DLL to be injected is recorded in the target process virtual memory space (S3). Requests to create a remote thread by using the CreateRemoteThread or NtCreateThreadEx API depending on the operating system, passing the thread start address to the LoadLibrary (xx) function address recorded in (S2) above, and using the parameter as the full path of the DLL to inject recorded in the above (S3). Pass the string address (S4).

또한, 윈도우즈 커널은 쓰레드 커널 오브젝트를 생성한 후에 (S4)에서 전달된 시작 주소와 파라미터로 해당 쓰레드를 구동시킨다(S5-S7).Also, after creating the thread kernel object, the Windows kernel starts the thread with the start address and the parameter passed in (S4) (S5-S7).

상기 원격 쓰레드 생성을 통한 DLL 인젝션에 대한 통상의 보안 솔루션들의 원격 쓰레드 DLL 인젝션 방어는 도 2의 흐름도와 같다.Remote thread DLL injection defense of conventional security solutions for DLL injection via the remote thread creation is shown in the flowchart of FIG.

즉 많은 보안 솔루션들이 커널 내부에 존재하는 API 요청을 처리하기 위한 SSDT라고 불리는 서비스 함수 테이블의 함수들을 후킹하여 API 요청을 감시 및 차단한다(S8).That is, many security solutions monitor and block API requests by hooking functions of a service function table called SSDT for processing API requests existing in the kernel (S8).

그러나 종래 SSDT 후킹을 통한 DLL 인젝션 방어 기법은 다음의 몇 가지 문제점이 있었다. 비슷한 성격의 보안 솔루션들이 한 PC에 존재할 경우에 SSDT 후킹 및 언후킹 경쟁으로 인한 충돌이 빈번하게 발생되어 블루스크린(Blue Screen) 같은 현상이 발생된다. 또한, 실제 DLL 인젝션을 위한 원격 쓰레드 생성 여부를 확인 없이 무조건 차단한다. 또한, 64bit Windows 운영체제에서는 패치가드(Patch Guard)로 인해 SSDT 후킹을 사용할 수 없다. 따라서 64bit Windows 운영체제에서는 방어가 이뤄지지 않고 있는 실정이다.
However, the conventional DLL injection defense technique using SSDT hooking has some problems. When security solutions of similar nature exist on a PC, conflicts frequently occur due to SSDT hooking and unhooking competition, such as a blue screen. It also blocks unconditionally whether or not a remote thread is created for actual DLL injection. In addition, SSDT hooking is not available due to Patch Guard on 64-bit Windows operating systems. Therefore, the defense is not achieved in the 64-bit Windows operating system.

본 발명은 상기 문제를 해결하기 위한 것으로, 원격 쓰레드 생성을 통해 다른 프로세스에 DLL 인젝션을 수행하는 악성코드들을 커널 후킹 없이 모든 컴퓨터 운영체제에서 DLL 인젝션을 무력화시켜 방어할 수 있도록 하기 위한 것이 목적이다.
SUMMARY OF THE INVENTION The present invention has been made to solve the above problem, and an object of the present invention is to enable malicious defense of DLL injection in all computer operating systems without kernel hooking of malicious codes that perform DLL injection to other processes through remote thread creation.

본 발명은 상기 목적을 달성하기 위하여, 동적 링크 라이브러리(DLL) 인젝션 방어 방법에 있어서, (a) 사용자모드 제어기의 제어로 커널모드 제어기를 설치하고, 커널모드 제어기에서 컴퓨터 운영체제에 쓰레드 생성 감시기를 설치하는 단계; (b) 상기 운영체제는 외부의 DLL 인젝션을 수행하는 공격 프로세스로부터 쓰레드 생성을 감시하여 쓰레드 생성을 커널모드 쓰레드감시기로 통보하는 단계; (c) 상기 커널모드 쓰레드감시기는 통보받은 쓰레드 정보를 커널모드 프로세스분석기에 쓰레드가 속한 프로세스의 분석을 요청하는 단계; (d) 상기 커널모드 프로세스분석기는 인젝션의 대상이 되는 일반 프로세스의 가상메모리를 분석하고 처리하는 단계; (e) 상기 커널모드 프로세스분석기는 분석하고 처리한 결과를 커널모드 쓰레드감시기 및 커널모드 제어기를 거쳐 사용자모드 제어기로 전송하는 단계를 포함하여 이루어진 것이다.In order to achieve the above object, the present invention provides a dynamic link library (DLL) injection defense method, comprising: (a) installing a kernel mode controller under the control of a user mode controller, and installing a thread generation monitor in a computer operating system in the kernel mode controller; Doing; (b) monitoring, by the operating system, the thread creation from an attack process that performs external DLL injection, and notifying the thread generation to the kernel mode thread watcher; (c) the kernel mode thread monitor requesting an analysis of a process to which a thread belongs to a kernel mode process analyzer from the notified thread information; (d) the kernel mode process analyzer analyzing and processing the virtual memory of the general process targeted for injection; (e) The kernel mode process analyzer includes analyzing and processing the result of the kernel mode thread monitoring and the kernel mode controller and transmitting the result to the user mode controller.

또한, 본 발명에서, 상기 커널모드 프로세스분석기는 커널모드 쓰레드감시기의 쓰레드가 속한 해당하는 인젝션 대상이 되는 일반 프로세스의 가상메모리 공간으로 커널 스택을 부착하고, 프로세스에 로드된 DLL들을 분석하여 LoadLibrary 주소를 분석하며, 프로세스에 속한 쓰레드들의 시작주소와 인자를 분석하여 시작주소가 LoadLibrary인지를 판단한 후에 쓰레드의 파라미터 메모리를 변조하고, 처리 결과를 커널모드 쓰레드감시기에 전송하며, 프로세스의 가상메모리에 커널 스택을 해제하는 것을 더 포함할 수 있다.Also, in the present invention, the kernel mode process analyzer attaches a kernel stack to a virtual memory space of a general process that is an injection target to which a thread of a kernel mode thread monitor belongs, and analyzes DLLs loaded in a process to determine a LoadLibrary address. After analyzing the start address and arguments of the threads belonging to the process to determine whether the start address is LoadLibrary, it modifies the thread's parameter memory, sends the processing result to the kernel mode thread monitor, and loads the kernel stack into the process's virtual memory. It may further comprise the release.

또한, 본 발명에서, 상기 쓰레드의 파라미터 메모리의 변조는 해당 메모리를 0으로 초기화하거나 무의미한 값으로 변경할 수 있다.In addition, in the present invention, the modulation of the parameter memory of the thread may be initialized to zero or changed to a meaningless value.

또한, 본 발명에서, 상기 운영체제는 32bit 및 64bit의 Windows 운영체제를 포함할 수 있다.
In the present invention, the operating system may include 32-bit and 64-bit Windows operating systems.

본 발명은 상기 해결 수단에 의하여, 컴퓨터 시스템에 64bit Windows 운영체제가 점차 보급되고 있고, 이에 따른 64bit 악성코드도 증가하는 현 추세에서 Windows 2000 이상의 32bit 및 64bit 운영체제에서 안전하게 DLL 인젝션을 방어함으로써 보다 안전한 사용자 환경을 구축할 수 있고, 종래와 같이 후킹을 사용하지 않으므로 후킹 경쟁으로 인한 충돌 가능성이 없어 안전하고 효율적인 보안의 구현이 가능하다. 또한, 본 발명은 시스템에서 실행 중인 모든 프로세스를 보호할 수도 있으며 선별적인 프로세스들만 보호하는 것도 가능하므로 시스템 전체에 영향을 주지 않고 보안 솔루션들이 스스로를 보호하기 위한 자체 보호 등의 기법에 응용될 수 있다.
According to the present invention, a 64-bit Windows operating system is gradually being spread to computer systems by the above-mentioned solutions, and accordingly, 64-bit malicious code is also increasing, thereby safer user environment by protecting DLL injection in 32-bit and 64-bit operating systems. Since it is possible to build a system and does not use hooking as in the related art, there is no possibility of collision due to a hooking competition, thereby enabling safe and efficient security. In addition, the present invention can protect all processes running in the system, and can also protect only selective processes, so that security solutions can be applied to techniques such as self-protection to protect themselves without affecting the entire system. .

도 1은 종래 원격 쓰레드 생성을 통한 DLL 인젝션의 동작원리를 나타낸 흐름도이다.
도 2는 종래 원격 쓰레드 생성을 통한 DLL 인젝션의 방어원리를 나타낸 흐름도이다.
도 3은 본 발명에 따른 동적 링크 라이브러리 인젝션 방어를 위한 전체적인 흐름을 나타낸 것이다.
도 4는 본 발명에 따른 동적 링크 라이브러리 인젝션 방어를 위한 해당 구성의 세부적인 흐름을 나타낸 것이다.
도 5는 본 발명의 실시예로, 도 5a는 DLL 인젝션이 이루어지기 전의 정상적인 메모장 프로세스 DLL 목록을 나타낸 것이고, 도 5b는 DLL 인젝터로 DLL 인젝션이 성공한 것을 나타낸 것이며, 도 5c는 DLL 인젝션이 이뤄진 메모장 프로세스 DLL 목록을 나타낸 것이고, 도 5d는 보안 커널 드라이버가 동작 중인 환경에서 DLL 인젝션이 실패한 것을 나타낸 것이며, 도 5e는 보안 커널 드라이버에서 DLL 인젝션 차단 사실을 보안 프로그램에 전달한 것을 나타낸 것이다.
1 is a flowchart illustrating the operation principle of a DLL injection through a conventional remote thread creation.
2 is a flowchart illustrating a defense principle of DLL injection through a conventional remote thread creation.
Figure 3 illustrates the overall flow for dynamic link library injection defense in accordance with the present invention.
Figure 4 shows the detailed flow of the configuration for the dynamic link library injection defense in accordance with the present invention.
Figure 5 is an embodiment of the present invention, Figure 5a shows a list of normal notepad process DLL before the DLL injection is made, Figure 5b shows a successful DLL injection with a DLL injector, Figure 5c is a notepad with a DLL injection Figure 5d shows a list of process DLLs, Figure 5d shows that the DLL injection failed in the environment in which the secure kernel driver is running, Figure 5e shows the fact that the DLL injection blocking in the secure kernel driver to the security program.

이하, 본 발명에 따른 동적 링크 라이브러리 인젝션 방어 방법에 관하여 첨부된 도면을 참조하여 상세하게 설명한다.Hereinafter, a dynamic link library injection defense method according to the present invention will be described in detail with reference to the accompanying drawings.

먼저, 본 발명의 DLL 인젝션 방어 방법에 관한 원리는 다음과 같다.First, the principle of the DLL injection defense method of the present invention is as follows.

커널모드에서 쓰레드 커널 오브젝트 생성에 관한 통지 콜백을 등록한 후에 모니터링을 수행한다. 이는 PsSetCreateThreadNotifyRoutine 커널 API(Application Programming Interface, 운영체제와 프로그램 사이의 통신에 사용되는 언어나 메시지 형식)로 가능하다. 이때, 악성코드에 의해 원격 쓰레드 생성을 통한 DLL 인젝션이 발생하면, 상기 등록한 콜백에서 생성된 쓰레드 커널 오브젝트가 속한 프로세스 ID 및 쓰레드 ID와 생성 여부를 확인할 수 있다. 상기 콜백이 호출되는 시점의 Context는 쓰레드 생성을 요청한 프로세스의 Context이며, 요청한 프로세스 ID와 실제 쓰레드 커널 오브젝트가 생성된 프로세스 ID를 비교하면 1차적으로 원격 쓰레드 생성 여부를 확인할 수 있다.Monitoring is performed after registering a notification callback about creating a thread kernel object in kernel mode. This is possible with the PsSetCreateThreadNotifyRoutine kernel API (Application Programming Interface, the language or message format used to communicate between the operating system and the program). At this time, when the DLL injection through the remote thread generation by the malicious code occurs, it is possible to check the process ID and thread ID belonging to the thread kernel object generated by the registered callback and whether or not it is created. The context at the time the callback is called is the context of the process that requested the creation of the thread. By comparing the requested process ID with the process ID where the actual thread kernel object was created, it is possible to check whether the remote thread is created first.

상기 원격 쓰레드로 판별이 되면, 실제 DLL 인젝션을 위한 원격 쓰레드 생성인지 확인하기 위한 작업이 필요하다. 이를 위해서는 해당 쓰레드의 실제 시작함수 주소(User Space)를 분석하고, 이 함수 주소가 대상 프로세스에 로드된 LoadLibrary(xx)류의 함수 주소인지를 판별해야 한다.If it is determined that the remote thread, it is necessary to check whether the remote thread generation for the actual DLL injection. To do this, we need to analyze the actual start function address (User Space) of the thread and determine if the function address is a function address of LoadLibrary (xx) class loaded in the target process.

또한, 해당 쓰레드의 실제 시작함수 주소를 분석하기 위해서는 우선 해당 쓰레드 커널 오브젝트가 생성된 프로세스 커널 오브젝트와 쓰레드 커널 오브젝트를 획득해야 한다. 커널에서 제공하는 API로 대상 프로세스 ID와 매칭되는 프로세스 커널 오브젝트를 획득한다. 상기 획득한 프로세스 커널 오브젝트의 가상 메모리 주소 공간으로 현재 스택을 적용한다. 해당 프로세스에 로드된 LoadLibrary(xx)류의 함수 주소를 획득하기 위해 해당 프로세스 커널 오브젝트에서 프로세스 환경 변수 정보(PEB)를 획득한다. PEB 정보에서 해당 프로세스 가상 메모리에 로드된 DLL들의 PE 정보를 분석하여 LoadLibrary(xx) 함수가 존재하는 kernel32.dll(또는 ntdll.dll)의 가상 메모리상의 시작 주소를 획득한다. 상기 획득한 kernel32.dll(또는 ntdll.dll)의 시작 주소를 기준으로 환경 변수 정보(PEB)를 분석하여 export table에 포함된 LoadLibrary(xx) 함수 주소를 획득한다.In addition, in order to analyze the actual start function address of the thread, first, the process kernel object and the thread kernel object from which the thread kernel object is created must be obtained. The API provided by the kernel obtains a process kernel object matching the target process ID. Apply the current stack to the virtual memory address space of the obtained process kernel object. In order to obtain the function address of LoadLibrary (xx) type loaded in the process, process environment variable information (PEB) is obtained from the process kernel object. The PEB information analyzes the PE information of the DLLs loaded in the process virtual memory to obtain the start address of the kernel32.dll (or ntdll.dll) in which the LoadLibrary (xx) function exists. Environment variable information (PEB) is analyzed based on the obtained start address of kernel32.dll (or ntdll.dll) to obtain a LoadLibrary (xx) function address included in an export table.

그리고 쓰레드 커널 오브젝트의 실제 시작함수 주소를 분석한다. 그러나 커널에서 제공하는 API로는 이 시점에서 쓰레드 커널 오브젝트를 획득할 수 없다. 이유는 이 시점에는 아직 쓰레드 커널 오브젝트 생성이 완료되지 않았기 때문에 커널에서 관리하는 CID 테이블에 해당 정보가 등록되어 있지 않기 때문이다. 상기 대상 쓰레드 커널 오브젝트를 획득하기 위해서는 문서화되지 않은 프로세스 커널 오브젝트를 분석하여 실제 쓰레드 커널 오브젝트를 획득해야 하며 다음과 같은 과정을 거친다.It then analyzes the actual start function address of the thread kernel object. However, the API provided by the kernel cannot obtain thread kernel objects at this point. This is because the thread kernel object creation has not been completed at this point, so the information is not registered in the kernel-managed CID table. In order to obtain the target thread kernel object, an undocumented process kernel object must be analyzed to obtain an actual thread kernel object, and the following process is performed.

첫째, 커널 API를 이용해 대상 프로세스 ID와 매칭되는 프로세스 커널 오브젝트 획득하고, 둘째, 해당 프로세스 커널 오브젝트 구조체를 분석하여 쓰레드 커널 오브젝트 리스트 시작 지점을 획득하며, 셋째, 쓰레드 커널 오브젝트 리스트를 순회하며 실제 쓰레드 커널 오브젝트 획득한다. 예를 들어, 아래의 Windows 7 64bit 운영체제에서 사용하는 프로세스 커널 오브젝트 구조의 일부분을 참조하면, 프로세스 커널 오브젝트의 시작 위치로부터 0x30 바이트 뒤에 쓰레드 커널 오브젝트들의 리스트 시작지점이 존재한다.First, obtain the process kernel object matching the target process ID by using the kernel API. Second, obtain the starting point of the thread kernel object list by analyzing the process kernel object structure. Third, the actual thread kernel is traversed through the thread kernel object list. Acquire an object. For example, if you refer to the following part of the process kernel object structure used by the Windows 7 64-bit operating system, there is a list start point of the thread kernel objects 0x30 bytes after the start of the process kernel object.

(프로세스 커널 오브젝트 구조)(Process Kernel Object Structure)

[0: kd> dt nt!_KPROCESS[0: kd> dt nt! _KPROCESS

+0x000 Header : _DISPATCHER_HEADER+ 0x000 Header: _DISPATCHER_HEADER

+0x018 ProfileListHead : _LIST_ENTRY+ 0x018 ProfileListHead: _LIST_ENTRY

+0x028 DirectoryTableBase : Uint8B+ 0x028 DirectoryTableBase: Uint8B

+0x030 ThreadListHead : _LIST_ENTRY+ 0x030 ThreadListHead: _LIST_ENTRY

+0x040 ProcessLock : Uint8B+ 0x040 ProcessLock: Uint8B

+0x048 Affinity : _KAFFINITY_EX+ 0x048 Affinity: _KAFFINITY_EX

…]… ]

그리고 쓰레드의 실제 시작함수 주소와 쓰레드에 전달되는 파라미터는 문서화되지 않은 쓰레드 커널 오브젝트 정보를 쓰레드 커널 오브젝트 구조에 저장된 쓰레드 스택 정보 위치를 확인한 후에 해당 정보를 분석하여 실제 쓰레드 시작함수 주소와 파라미터 주소를 분석하여 획득한다.The actual start function address of the thread and the parameters passed to the thread are analyzed using the undocumented thread kernel object information and the location of the thread stack information stored in the thread kernel object structure. Obtain by

상기 획득한 LoadLibrary(xx) 함수 주소와 쓰레드 커널 오브젝트의 실제 시작함수 주소를 비교하여 같을 경우에는 DLL 인젝션이 이뤄지고 있음을 확인할 수 있다. 상기 DLL 인젝션으로 판단된 경우에 상기 획득한 쓰레드 커널 오브젝트의 파라미터 메모리에 인젝션될 DLL의 전체 경로가 존재하게 되며, 이 메모리를 초기화한다. 이렇게 되면 LoadLibrary(xx) 함수는 로드할 DLL의 경로가 없으므로 자연스럽게 실패하게 되어 인젝션은 이루어지지 않게 된다.When the LoadLibrary (xx) function address obtained is compared with the actual start function address of the thread kernel object, the DLL injection is performed. When it is determined that the DLL injection is made, the full path of the DLL to be injected is present in the parameter memory of the obtained thread kernel object, and the memory is initialized. This causes the LoadLibrary (xx) function to fail naturally because there is no path to the DLL to load and no injection occurs.

본 발명은 상기 DLL 인젝션 방어방법의 구체적인 실시예를 도 3 및 도 4를 참조하여 설명한다.The present invention will be described with reference to FIGS. 3 and 4 in a specific embodiment of the DLL injection defense method.

도 3에서, 사용자모드 제어기(10)는 커널모드에 커널모드 제어기(11)를 설치하고(S11), 커널모드 제어기(11)는 컴퓨터 운영체제(20)에 쓰레드 생성을 감시하는 감시기를 설치한다(S12). 상기 운영체제(20)는 외부의 DLL 인젝션을 수행하는 공격 프로세스(21)로부터 쓰레드 생성을 감시하여 쓰레드 생성을 커널모드 쓰레드감시기(12)로 통보한다(S13).In FIG. 3, the user mode controller 10 installs the kernel mode controller 11 in the kernel mode (S11), and the kernel mode controller 11 installs a monitor that monitors thread generation in the computer operating system 20 ( S12). The operating system 20 monitors thread generation from the attack process 21 that performs external DLL injection and notifies the thread generation to the kernel mode thread monitor 12 (S13).

그리고 커널모드 쓰레드감시기(12)는 통보받은 쓰레드 정보를 커널모드 프로세스분석기(13)에 쓰레드가 속한 프로세스의 분석을 요청한다(S14). 상기 커널모드 프로세스분석기(13)는 인젝션 대상, 즉 보호하기 위한 대상이 되는 일반 프로세스(22)의 가상메모리를 분석하고 처리한다(S15). 커널모드 프로세스분석기(13)는 분석하고 처리한 결과를 커널모드 쓰레드감시기(12) 및 커널모드 제어기(11)를 거쳐 사용자모드 제어기(10)로 전송한다(S16~S18).The kernel mode thread monitor 12 requests the kernel mode process analyzer 13 to analyze the process to which the thread belongs to the notified thread information (S14). The kernel mode process analyzer 13 analyzes and processes the virtual memory of the injection process, that is, the general process 22 to be protected (S15). The kernel mode process analyzer 13 transmits the analyzed and processed result to the user mode controller 10 through the kernel mode thread monitor 12 and the kernel mode controller 11 (S16 to S18).

또한, 도 4에서, 상기 커널모드 제어기(11)의 작동에 따른 흐름은 사용자모드 제어기(10)의 제어로 운영체제(20)에 쓰레드 생성을 감시하는 감시기를 설치하고(S21), 인젝션 대상이 되는 일반 프로세스(22)의 보호 여부의 판단(S22), 즉 보호 중지가 아닌 경우에 쓰레드 생성감시기로부터 DLL 인젝션의 차단중지를 대기하며(S23), 쓰레드 생성감시기로부터 DLL 인젝션 방어를 위한 제어기에 차단정보를 전송한다(S24). 상기 보호 여부의 판단, 즉 보호 중지 때에는 운영체제에서 쓰레드 생성감시기를 제거한다(S25).In addition, in FIG. 4, the flow according to the operation of the kernel mode controller 11 is installed in the operating system 20 under the control of the user mode controller 10 to monitor the thread generation (S21), which is an injection target. Determination of whether or not the general process 22 is protected (S22), that is, if the protection is not stopped waiting for the blocking of the DLL injection from the thread creation monitoring (S23), blocking information to the controller for the DLL injection defense from the thread creation monitoring Transmit (S24). The determination of whether the protection is performed, that is, when the protection is stopped, the thread generation monitoring is removed from the operating system (S25).

또한, 커널모드 쓰레드감시기(12)의 작동에 따른 흐름은 인젝션 대상이 되는 일반 프로세스(22)의 보호 여부의 판단(S31), 즉 커널모드 쓰레드 감시기는 보호 중지가 아닌 경우에 운영체제(20)로부터 DLL 인젝션에 따른 쓰레드 생성에 관한 통지를 대기한다(S32). 이때, 운영체제로부터 쓰레드가 생성된 경우에는 생성된 쓰레드를 소유한 프로세스를 획득하고(S33), 커널모드 프로세스분석기(13)에 DLL 인젝션 분석 및 처리를 요청한다(S34). 상기 커널모드 프로세스분석기(13)로부터 분석 및 처리 결과의 수신을 대기하고(S35), 해당하는 분석 및 처리 결과를 DLL 인젝션 방어처리 결과를 커널모드 제어기(11)에 전송한다(S36).In addition, the flow according to the operation of the kernel mode thread monitor 12 determines whether or not the general process 22 to be injected is protected (S31), that is, the kernel mode thread watcher from the operating system 20 when the protection is not stopped. Wait for a notification regarding thread creation according to DLL injection (S32). In this case, when a thread is generated from the operating system, a process that owns the generated thread is acquired (S33), and a DLL injection analysis and processing is requested to the kernel mode process analyzer 13 (S34). The kernel mode process analyzer 13 waits for the analysis and processing result to be received (S35), and transmits the corresponding analysis and processing result to the DLL injection defense processing result to the kernel mode controller 11 (S36).

또한, 커널모드 프로세스분석기(13)의 작동에 따른 흐름은 쓰레드감시기로부터 처리 요청을 대기하고(S41), 커널모드 쓰레드감시기의 쓰레드가 속한 해당하는 인젝션 대상이 되는 일반 프로세스(22)의 가상메모리 공간으로 커널 스택을 부착한다(S42). 그리고 상기 프로세스에 로드된 DLL들을 분석하여 LoadLibrary 주소를 분석하고(S43), 프로세스에 속한 쓰레드들의 시작주소와 인자를 분석하며(S44), 분석 결과로 시작주소가 LoadLibrary인지를 판단한 후(S45), 쓰레드의 파라미터 메모리를 변조한다(S46). 쓰레드의 파라미터 메모리의 변조는 해당 메모리를 0으로 초기화하거나 무의미한 값으로 변경시킨다. 그리고 처리 결과를 커널모드 쓰레드감시기(12)에 전송하며(S47), 프로세스의 가상메모리에 커널 스택을 해제한다(S48).In addition, the flow according to the operation of the kernel mode process analyzer 13 waits for a processing request from the thread monitor (S41), and the virtual memory space of the general process 22 that is the target of injection corresponding to the thread of the kernel mode thread monitor. Attach the kernel stack (S42). After analyzing the DLLs loaded in the process, the LoadLibrary address is analyzed (S43), the start address and the arguments of the threads belonging to the process are analyzed (S44), and after determining whether the start address is LoadLibrary (S45), The parameter memory of the thread is modulated (S46). Modulation of a thread's parameter memory initializes it to zero or changes it to a meaningless value. The processing result is transmitted to the kernel mode thread monitor 12 (S47), and the kernel stack is released to the virtual memory of the process (S48).

다음으로, 본 발명의 DLL 인젝션 방어를 위하여 보안 커널 드라이버와 샘플 프로그램을 이용하여 실제 방어가 이뤄지는 과정을 실시예로 설명한다. 본 발명에서 사용된 대상 운영체제는 Windows 7 64bit이고, 그 이외의 운영체제에도 적용될 수 있다. 또한, Windows 2000 이상의 32bit 및 64bit 운영체제도 포함될 수 있다. 샘플 프로그램은 본 발명의 적용을 위한 보안 커널 드라이버와, 보안 커널 드라이버와 통신하며 DLL 인젝션 차단을 시작 또는 중지하는 보안 프로그램과, DLL 인젝션을 수행하는 인젝션 프로그램이 포함된다.Next, the process of actual defense is achieved by using a secure kernel driver and a sample program to protect the DLL injection of the present invention by way of example. The target operating system used in the present invention is Windows 7 64bit, it can be applied to other operating systems. It can also include 32-bit and 64-bit operating systems on Windows 2000 and above. The sample program includes a security kernel driver for applying the present invention, a security program that communicates with the security kernel driver and starts or stops DLL injection blocking, and an injection program that performs DLL injection.

도 5a는 보안 프로그램이 없는 Windows 7 64bit PC에서 DLL 인젝션을 수행한 상태를 나타낸 메모장 프로세스 DLL 목록이다. 여기서 침투 대상에 사용될 프로세스로 메모장을 실행한 후 해당 프로세스에 로드된 DLL 목록을 확인한 것이다. 현재 정상적인 DLL들만 로드되어 있음을 알 수 있다.5A is a list of Notepad process DLLs showing the state of DLL injection performed on a Windows 7 64bit PC without a security program. Here, we ran Notepad as the process to be used for the penetration target and checked the list of DLLs loaded in the process. You can see that only normal DLLs are currently loaded.

그리고 도 5b에서, 상기 메모장에 DLL 인젝터를 이용하여 DLL 인젝션을 수행한 후 DLL 목록을 확인한 화면이다. DLL 인젝터에서 성공적으로 인젝션되었음을 알리고 있고, 도 5c에서, 메모장 프로세스 가상메모리에 'knhookdll.dll'이라는 DLL이 인젝션 되었음을 알 수 있다.In FIG. 5B, the DLL list is checked after performing DLL injection using the DLL injector in the notepad. The DLL injector indicates that the injection was successful, and in FIG. 5C, it can be seen that the DLL 'knhookdll.dll' is injected into the notepad process virtual memory.

또한, 도 5d에서, 보안 드라이버를 이용하여 시스템 전체 프로세스들에 대한 DLL 인젝션 방어를 시작한 후에 상기 사용된 DLL 인젝터를 이용하여 깨끗한 메모장 프로세스에 다시 DLL 인젝션을 시도한 결과이다. 도 5e에서, DLL 인젝터가 DLL 인젝션을 실패했음을 알리고 있고, 보안 드라이버와 통신하는 보안 프로그램에서 DLL 인젝션 차단 결과를 알려주고 있다.In addition, in FIG. 5D, after initiating DLL injection protection for system-wide processes using a security driver, DLL injection is again performed to a clean notepad process using the used DLL injector. In FIG. 5E, the DLL injector indicates that the DLL injection has failed, and the security program communicating with the security driver informs the DLL injection blocking result.

따라서 본 발명의 원격 쓰레드 DLL 인젝션을 차단하는 방법은 운영체제 버전별로 상이한 문서화되지 않은 커널 오브젝트 정보를 분석하고, 프로세스 커널 오브젝트 분석을 통한 쓰레드 커널 오브젝트 리스트 획득하며, 프로세스 커널 오브젝트 분석을 통한 프로세스 환경 변수 블록(PEB)을 획득하고, PEB 분석을 통한 프로세스 가상 메모리에 로드된 DLL들의 PE의 정보를 분석하며, 쓰레드 커널 오브젝트 리스트 분석을 통한 쓰레드 커널 오브젝트 획득하고, 쓰레드 커널 오브젝트 분석을 통한 쓰레드의 실제 시작함수 주소와 전달되는 파라미터 획득하며, 획득한 프로세스와 쓰레드 오브젝트의 정보들을 분석한 후 대상 프로세스의 가상 메모리에서 쓰레드 파라미터 초기화하는 것이다.Therefore, the method for blocking the remote thread DLL injection of the present invention analyzes undocumented kernel object information different for each operating system version, obtains a thread kernel object list through process kernel object analysis, and process environment variable block through process kernel object analysis. Obtain PEB, analyze PE information of DLLs loaded in process virtual memory through PEB analysis, obtain thread kernel object through thread kernel object list analysis, and actually start the thread through thread kernel object analysis. It acquires the address and parameters to be passed, analyzes the obtained process and thread object information, and initializes the thread parameters in the virtual memory of the target process.

이와 같이 본 발명의 DLL 인젝션 방어 방법은 커널모드에서 쓰레드 생성이 감지되는 시점에서 대상 프로세스 커널 오브젝트와 쓰레드 커널 오브젝트를 분석하여 DLL 인젝션을 위한 원격 쓰레드 생성 여부를 분석하고, 실제 쓰레드가 동작할 함수 주소를 분석하여 DLL 인젝션 여부를 확인 후 대상 프로세스 가상 메모리에서 인젝션될 DLL 경로 메모리를 초기화하면 LoadLibrary(xx)류의 함수는 실패하게 되며, 결과적으로 DLL 인젝션을 방어할 수 있다. 또한 이 기술은 어떠한 커널 후킹도 필요하지 않으므로 Windows 2000 이상의 32bit 뿐만 아니라 64bit Windows 운영체제에서 적용이 가능한 것이다.As described above, the DLL injection defense method of the present invention analyzes a target process kernel object and a thread kernel object when a thread generation is detected in kernel mode, analyzes whether a remote thread is generated for DLL injection, and a function address at which an actual thread operates. If the DLL path memory to be injected from the target process virtual memory is initialized after analyzing the DLL injection, the LoadLibrary (xx) -type function fails, and as a result, the DLL injection can be defended. In addition, the technology does not require any kernel hooking, so it can be applied to not only 32-bit Windows 2000 but also 64-bit Windows operating systems.

이상의 설명에서 본 발명은 특정의 실시 예와 관련하여 도시 및 설명하였지만, 특허청구범위에 의해 나타난 발명의 사상 및 영역으로부터 벗어나지 않는 한도 내에서 다양한 개조 및 변화가 가능하다는 것을 이 기술분야에서 통상의 지식을 가진 자라면 누구나 쉽게 알 수 있을 것이다.
While the invention has been shown and described with respect to the specific embodiments thereof, it will be understood by those skilled in the art that various changes and modifications may be made without departing from the spirit and scope of the invention as defined by the appended claims. Anyone who has it will know it easily.

10: 사용자모드 제어기 11: 커널모드 제어기 12: 커널모드 쓰레드감시기 13: 커널모드 프로세스분석기 20: 운영체제 21: DLL 인젝션을 수행하는 공격 프로세스 22: 인젝션 대상 일반 프로세스10: User Mode Controller 11: Kernel Mode Controller 12: Kernel Mode Thread Monitoring 13: Kernel Mode Process Analyzer 20: Operating System 21: Attack Process Performing DLL Injection 22: Common Target Process for Injection

Claims (4)

동적 링크 라이브러리(DLL) 인젝션 방어 방법에 있어서,
(a) 사용자모드 제어기의 제어로 커널모드 제어기를 설치하고, 커널모드 제어기에서 컴퓨터 운영체제에 쓰레드 생성 감시기를 설치하는 단계;
(b) 상기 운영체제는 외부의 DLL 인젝션을 수행하는 공격 프로세스로부터 쓰레드 생성을 감시하여 쓰레드 생성을 커널모드 쓰레드감시기로 통보하는 단계;
(c) 상기 커널모드 쓰레드감시기는 통보받은 쓰레드 정보를 커널모드 프로세스분석기에 쓰레드가 속한 프로세스의 분석을 요청하는 단계;
(d) 상기 커널모드 프로세스분석기는 인젝션의 대상이 되는 일반 프로세스의 가상메모리를 분석하고 처리하는 단계;
(e) 상기 커널모드 프로세스분석기는 분석하고 처리한 결과를 커널모드 쓰레드감시기 및 커널모드 제어기를 거쳐 사용자모드 제어기로 전송하는 단계;를 포함하고,
상기 커널모드 프로세스분석기는 커널모드 쓰레드감시기의 쓰레드가 속한 해당하는 인젝션 대상이 되는 일반 프로세스의 가상메모리 공간으로 커널 스택을 부착하고, 프로세스에 로드된 DLL들을 분석하여 LoadLibrary 주소를 분석하며, 프로세스에 속한 쓰레드들의 시작주소와 인자를 분석하여 시작주소가 LoadLibrary인지를 판단한 후에 쓰레드의 파라미터 메모리를 변조하고, 처리 결과를 커널모드 쓰레드감시기에 전송하며, 프로세스의 가상메모리에 커널 스택을 해제하는 동적 링크 라이브러리(DLL) 인젝션 방어 방법.
In the dynamic link library (DLL) injection defense method,
(a) installing a kernel mode controller under the control of the user mode controller and installing a thread generation monitor in the computer operating system in the kernel mode controller;
(b) monitoring, by the operating system, the thread creation from an attack process that performs external DLL injection, and notifying the thread generation to the kernel mode thread watcher;
(c) the kernel mode thread monitor requesting an analysis of a process to which a thread belongs to a kernel mode process analyzer from the notified thread information;
(d) the kernel mode process analyzer analyzing and processing the virtual memory of the general process targeted for injection;
(e) the kernel mode process analyzer transmitting the analyzed and processed result to a user mode controller via a kernel mode thread monitor and a kernel mode controller;
The kernel mode process analyzer attaches the kernel stack to the virtual memory space of the general process that is the target of injection corresponding to the thread of the kernel mode thread monitor, analyzes the DLLs loaded in the process, analyzes the LoadLibrary address, and belongs to the process. A dynamic link library that analyzes the starting address and arguments of the threads to determine whether the starting address is LoadLibrary, modifies the thread's parameter memory, sends the processing result to the kernel mode thread watcher, and frees the kernel stack in the process's virtual memory. DLL) Injection Defense Method.
삭제delete 제1항에 있어서, 상기 쓰레드의 파라미터 메모리의 변조는 해당 메모리를 0으로 초기화하거나 무의미한 값으로 변경하는 동적 링크 라이브러리(DLL) 인젝션 방어 방법.
The method of claim 1, wherein the modulation of the parameter memory of the thread initializes the memory to zero or changes it to a meaningless value.
제1항에 있어서, 상기 운영체제는 32bit 및 64bit의 Windows 운영체제를 포함하는 동적 링크 라이브러리(DLL) 인젝션 방어 방법.The method of claim 1, wherein the operating system comprises 32-bit and 64-bit Windows operating systems.
KR1020110070238A 2011-07-15 2011-07-15 Method for defending against dll injection without hooking KR101097590B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020110070238A KR101097590B1 (en) 2011-07-15 2011-07-15 Method for defending against dll injection without hooking

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110070238A KR101097590B1 (en) 2011-07-15 2011-07-15 Method for defending against dll injection without hooking

Publications (1)

Publication Number Publication Date
KR101097590B1 true KR101097590B1 (en) 2011-12-22

Family

ID=45506788

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110070238A KR101097590B1 (en) 2011-07-15 2011-07-15 Method for defending against dll injection without hooking

Country Status (1)

Country Link
KR (1) KR101097590B1 (en)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101175951B1 (en) * 2012-02-16 2012-08-22 이니텍(주) Method for preventing web injection attack
KR101421630B1 (en) 2013-01-28 2014-07-22 주식회사 잉카인터넷 system and method for detecting code-injected malicious code
WO2014172182A1 (en) * 2013-04-19 2014-10-23 Crowdstrike, Inc. Executable component injection utilizing hotpatch mechanisms
CN108830590A (en) * 2018-05-28 2018-11-16 银盒达信息技术(深圳)有限公司 The acquisition device and terminal device of a kind of acquisition methods of information, information
CN108875359A (en) * 2018-04-25 2018-11-23 厦门市美亚柏科信息股份有限公司 A kind of method of process monitoring, storage medium

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100925401B1 (en) * 2008-02-14 2009-11-09 주식회사 안철수연구소 Detecting system for malicious behavior based on kernel mode and method thereof

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100925401B1 (en) * 2008-02-14 2009-11-09 주식회사 안철수연구소 Detecting system for malicious behavior based on kernel mode and method thereof

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101175951B1 (en) * 2012-02-16 2012-08-22 이니텍(주) Method for preventing web injection attack
KR101421630B1 (en) 2013-01-28 2014-07-22 주식회사 잉카인터넷 system and method for detecting code-injected malicious code
WO2014172182A1 (en) * 2013-04-19 2014-10-23 Crowdstrike, Inc. Executable component injection utilizing hotpatch mechanisms
US9158914B2 (en) 2013-04-19 2015-10-13 Crowdstrike, Inc. Executable component injection utilizing hotpatch mechanisms
CN108875359A (en) * 2018-04-25 2018-11-23 厦门市美亚柏科信息股份有限公司 A kind of method of process monitoring, storage medium
CN108875359B (en) * 2018-04-25 2020-07-07 厦门市美亚柏科信息股份有限公司 Process monitoring method and storage medium
CN108830590A (en) * 2018-05-28 2018-11-16 银盒达信息技术(深圳)有限公司 The acquisition device and terminal device of a kind of acquisition methods of information, information

Similar Documents

Publication Publication Date Title
US10599841B2 (en) System and method for reverse command shell detection
RU2522019C1 (en) System and method of detecting threat in code executed by virtual machine
RU2571723C2 (en) System and method of reducing load on operating system when executing antivirus application
US7571482B2 (en) Automated rootkit detector
US8042186B1 (en) System and method for detection of complex malware
US8627478B2 (en) Method and apparatus for inspecting non-portable executable files
JP6388485B2 (en) Malware discovery method and system
US8272059B2 (en) System and method for identification and blocking of malicious code for web browser script engines
US20100306851A1 (en) Method and apparatus for preventing a vulnerability of a web browser from being exploited
US8904537B2 (en) Malware detection
US10148689B2 (en) Method and apparatus for monitoring malicious link injection into website source code
US8214900B1 (en) Method and apparatus for monitoring a computer to detect operating system process manipulation
EP3462358B1 (en) System and method for detection of malicious code in the address space of processes
US20150213260A1 (en) Device and method for detecting vulnerability attack in program
US20130067576A1 (en) Restoration of file damage caused by malware
US8347380B1 (en) Protecting users from accidentally disclosing personal information in an insecure environment
KR101097590B1 (en) Method for defending against dll injection without hooking
JP2014509421A (en) Security measures for extended USB protocol stack of USB host system
KR101086203B1 (en) A proactive system against malicious processes by investigating the process behaviors and the method thereof
US9754105B1 (en) Preventing the successful exploitation of software application vulnerability for malicious purposes
US8646076B1 (en) Method and apparatus for detecting malicious shell codes using debugging events
KR100954356B1 (en) Detection system for malicious program considering code protection method and method thereof
WO2022133499A1 (en) Runtime memory protection (rmp) engine
CN115544503A (en) File-free attack detection method, device, equipment and storage medium
US8788845B1 (en) Data access security

Legal Events

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

Payment date: 20141211

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20151127

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee