KR100875997B1 - Network Fuzzing Using Windows Sockets Application Program Hooking - Google Patents

Network Fuzzing Using Windows Sockets Application Program Hooking Download PDF

Info

Publication number
KR100875997B1
KR100875997B1 KR1020070062325A KR20070062325A KR100875997B1 KR 100875997 B1 KR100875997 B1 KR 100875997B1 KR 1020070062325 A KR1020070062325 A KR 1020070062325A KR 20070062325 A KR20070062325 A KR 20070062325A KR 100875997 B1 KR100875997 B1 KR 100875997B1
Authority
KR
South Korea
Prior art keywords
network
module
fuzzing
program
packet
Prior art date
Application number
KR1020070062325A
Other languages
Korean (ko)
Other versions
KR20080043209A (en
Inventor
정계옥
홍순좌
Original Assignee
한국전자통신연구원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국전자통신연구원 filed Critical 한국전자통신연구원
Publication of KR20080043209A publication Critical patent/KR20080043209A/en
Application granted granted Critical
Publication of KR100875997B1 publication Critical patent/KR100875997B1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1433Vulnerability analysis
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/23Pc programming
    • G05B2219/23262DDE direct data exchange, DLL dynamic library linking

Abstract

본 발명은 윈도우 소켓 API(Application Programming Interface) 후킹을 이용한 네트워크 퍼징 시스템 및 그 방법에 관한 것으로, MS 윈도우 운영체제에서 동작하는 네트워크 프로그램을 대상으로 동적 링크 라이브러리 주입(Dynamic Linked Library injection; 이하, DLL 주입이라 함)을 통하여 네트워크 프로그램에 소켓 API 후킹 기능을 삽입함으로써, 네트워크 프로그램이 소켓 API 함수를 사용하여 상대편 네트워크 프로그램과의 송수신하는 패킷을 가로챈 다음, 그 패킷 내의 데이터에 다양한 퍼징 데이터 셋을 추가하여 해당 패킷을 조작하거나 비정상적인 패킷으로 만들어 송신함으로써 범용적인 프로토콜뿐만 아니라, 알려지지 않은 프로토콜에 대해서 네트워크 퍼징을 수행한다.BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a network fuzzing system and a method using a Windows Sockets Application Programming Interface (API) hooking. The present invention relates to a dynamic linked library injection for a network program running on an MS Windows operating system. By inserting the socket API hooking function into the network program, the network program intercepts packets to and from the other network program using the socket API function, and then adds various fuzzing data sets to the data in the packet. By manipulating the packet or sending it as an abnormal packet, network fuzzing is performed not only for the general protocol but also for an unknown protocol.

본 발명에 의하면, 종래의 프로토콜 분석과 퍼저 제작을 거치지 않고, 임의의 프로토콜을 사용하는 네트워크 프로그램을 이용하여, DLL 주입을 통한 소켓 API 후킹으로 네트워크 퍼징을 자유롭게 할 수 있을 뿐만 아니라, 네트워크 퍼징을 수행하기 위해 프로토콜 분석부터 퍼저의 제작까지 많은 인력과 시간이 소모되는 종래의 문제점을 완전 해소할 수 있다.According to the present invention, network fuzzing is not only possible through socket API hooking through DLL injection using a network program using an arbitrary protocol, but also through network fuzzing, without going through conventional protocol analysis and fuzzing. In order to solve the conventional problem that consumes a lot of manpower and time from protocol analysis to the manufacture of the fuzzer.

Description

윈도우 소켓 응용프로그램 인터페이스 후킹을 이용한 네트워크 퍼징 방법{METHOD FOR NETWORK FUZZING APPARATUS USING WINDOWS SOCKET API HOOKING}METHODO FOR NETWORK FUZZING APPARATUS USING WINDOWS SOCKET API HOOKING}

도 1은 본 발명에 따른 윈도우 소켓 응용프로그램 인터페이스 후킹을 이용한 네트워크 퍼징 시스템을 나타낸 블록도.1 is a block diagram illustrating a network fuzzing system using a window socket application program hooking in accordance with the present invention.

도 2는 본 발명에 따른 윈도우 소켓 응용프로그램 인터페이스 후킹을 이용한 네트워크 퍼징 방법을 나타낸 플로차트.2 is a flow chart illustrating a network fuzzing method using window socket application program hooking in accordance with the present invention.

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

10: DLL 파일 모듈 12: 네트워크 프로그램 모듈10: DLL file module 12: network program module

12a: 소켓 API 14: 메인 프로그램 모듈12a: Socket API 14: main program module

14a: 패킷 핸들러 16: 데이터베이스 모듈14a: packet handler 16: database module

20: 네트워크 프로그램 모듈 20a: 소켓 API20: network program module 20a: socket API

본 발명은 네트워크 퍼징(Fuzzing)에 관한 것이며, 더욱 상세히는 윈도우 소 켓 응용프로그램 인터페이스(Application Programming Interface; 이하, API라 함) 후킹을 이용한 네트워크 퍼징 방법에 관한 것이다.The present invention relates to network fuzzing, and more particularly, to a network fuzzing method using a Windows Socket Application Programming Interface (API) hooking.

퍼징(Fuzzing)은 특정 대상으로부터 취약점을 찾기 위해서, 다양한 입력을 만들어내어 특정 대상에게 주입하는 기법이다.Fuzzing is a technique for generating various inputs and injecting them into a particular target to find vulnerabilities from that particular target.

네트워크 퍼징은 네트워크로 연결된 프로그램이 사용하는 특정 프로토콜을 겨냥하여 모든 종류의 비정상적인 패킷들을 생성하여 주입하거나, 특정 프로토콜의 통신 순서를 교란함으로써 임의의 네트워크 프로그램에서 취약점을 찾는 보편화된 방법 중의 하나로서, 네트워크상의 프로토콜을 흉내 내어 다양한 패킷들을 네트워크 프로그램으로 전송하여 취약점이 존재하는 것을 테스트한다.Network fuzzing is one of the most common ways to find vulnerabilities in any network program by generating and injecting all kinds of abnormal packets targeting specific protocols used by networked programs, or by disrupting the communication order of specific protocols. It mimics the protocol on the network and sends various packets to the network program to test for the presence of the vulnerability.

네트워크 퍼징을 위해서는 네트워크 프로그램이 사용하는 프로토콜을 준수하는 퍼저(Fuzzer)라고 하는 별도의 프로그램을 제작하여야만 한다.Network fuzzing requires the creation of a separate program called a fuzzer that adheres to the protocol used by the network program.

일반적으로 네트워크 퍼징을 수행하는 퍼저들은 퍼징 작업을 위해, 먼저 목표가 되는 프로토콜을 사용하는 프로그램에 대해서, 프로토콜 분석을 선행한다. 즉, 프로토콜의 개략적인 통신 순서와 패킷구성 등에 대해 조사하여 그에 알맞은 네트워크 퍼징 순서 또는 패킷을 생성하는 과정을 거친다. 이 과정을 바탕으로 프로토콜에 적절한 퍼저를 생성하게 되는데, 프로토콜 분석에서부터 퍼저 제작까지의 과정이 실제 네트워크 퍼징을 하는 것보다 많은 노력과 시간을 소비하게 되어 있다.In general, fuzzers that perform network fuzzing prioritize protocol analysis for a program that uses the target protocol for fuzzing. That is, a rough communication order and packet configuration of the protocol are examined, and a network fuzzing order or packet is generated accordingly. Based on this process, a suitable fuzzer is generated for the protocol, and the process from protocol analysis to fuzzer production takes more effort and time than actual network fuzzing.

현재 다양한 종류의 네트워크 퍼저들이 존재하고 있지만, 이들이 사용하는 방법은 기존에 잘 알려진 프로토콜을 그대로 에뮬레이트하는 것으로, 이미 분석된 프로토콜을 조작해서 사용할 수 있도록 만들어 놓은 것이 대부분이다.There are many different types of network fuzzers, but the method they use is to emulate well-known protocols, and most of them are designed to manipulate the already analyzed protocols.

또한, 알려지지 않은 프로토콜에 대한 퍼징 작업을 수행하려고 하면, 먼저 프로토콜 분석을 선행하여, 프로토콜에 대한 통신 순서와 패킷 구조 등을 모두 새로이 작성해야만 한다.In addition, when attempting to purge an unknown protocol, the protocol analysis must be performed first, and the communication order and packet structure for the protocol must be newly created.

다른 한편, 네트워크 퍼저 프레임 워크 형태의 퍼저 제작 도구들이 역시 많이 알려져 있으며, 그러한 제작 도구들은 새로운 프로토콜에 대한 퍼징을 위해, 정형화된 패킷 송수신 기법을 제공하고 있지만, 전적으로 프로토콜 분석은 사용자의 몫이고, 패킷 구조의 생성 또한 사용자에게 전부 의존한다. 결국 현재 출시되어 있는 네트워크 퍼저들은 잘 알려진 프로토콜에 대해서만 퍼징 작업을 수행할 수 있다. 알려지지 않은 프로토콜에 대한 퍼징 작업은 반드시 새로운 형태의 퍼저가 제작되어져야만 가능하다.On the other hand, many fuzzing tools in the form of a network fuzzer framework are also known, and they provide a standardized packet transmission and reception technique for fuzzing for new protocols, but protocol analysis is entirely up to the user. The creation of the structure also depends entirely on the user. As a result, currently available network fuzzers can only purge on well-known protocols. Fuzzing of unknown protocols is only possible when new types of fuzzers are produced.

본 발명은 상기한 종래의 문제점을 해결하기 위한 것으로서, 본 발명의 목적은 본 발명은 MS 윈도우 운영체제에서 동작하는 네트워크 프로그램을 대상으로 동적 링크 라이브러리 주입(Dynamic Linked Library injection; 이하, DLL 주입이라 함)을 통하여 네트워크 프로그램에 소켓 API 후킹 기능을 삽입함으로써, 네트워크 프로그램이 소켓 API 함수를 사용하여 상대편 네트워크 프로그램과의 송수신하는 패킷을 가로챈 다음, 그 패킷 내의 데이터에 다양한 퍼징 데이터 셋을 추가하여 해 당 패킷을 조작하거나 비정상적인 패킷으로 만들어 송신함으로써 범용적인 프로토콜뿐만 아니라, 알려지지 않은 프로토콜에 대해서 네트워크 퍼징을 수행하는 윈도우 소켓 API 후킹을 이용한 네트워크 퍼징 방법을 제공하는 것이다.SUMMARY OF THE INVENTION The present invention has been made to solve the above-mentioned conventional problems, and an object of the present invention is a dynamic linked library injection (hereinafter referred to as a DLL injection) for a network program running on an MS Windows operating system. By inserting the socket API hooking function into the network program through the network program, the network program uses the socket API function to intercept packets to and from the other network program, and then adds various fuzzing data sets to the data in the packet. It provides a network fuzzing method using the Windows Socket API hooking that performs network fuzzing for unknown protocols as well as general protocols by manipulating or sending them as abnormal packets.

상기와 같은 본 발명의 목적을 달성하기 위하여 본 발명에 따른 윈도우 소켓 API 후킹을 이용한 네트워크 퍼징 방법은, 패킷 핸들러 모듈을 내장한 메인프로그램 모듈, DLL 파일 모듈 및 데이터베이스 모듈을 포함하는 윈도우 소켓 API 후킹을 이용한 네트워크 퍼징 시스템에 있어서, 윈도우즈 운영체제에서 네트워크 프로그램이 실행되면, 상기 메인프로그램 모듈이 상기 네트워크 프로그램에 상기 DLL 파일 모듈을 주입하는 제1 단계와; 상기 DLL 파일 모듈이 상기 메인프로그램 모듈의 명령에 따라 상기 네트워크 프로그램의 소켓 API를 후킹하는 제2 단계와; 상기 데이터베이스 모듈이 상기 네트워크 프로그램의 송수신 패킷들을 데이터베이스로 저장하고 분석하는 제3 단계를 포함하는 것을 특징으로 한다.In order to achieve the above object of the present invention, a network fuzzing method using the window socket API hooking according to the present invention includes a window socket API hooking including a main program module, a DLL file module, and a database module in which a packet handler module is embedded. A network fuzzing system, comprising: a first step of injecting the DLL file module into the network program when the network program is executed in a Windows operating system; Hooking, by the DLL file module, a socket API of the network program according to a command of the main program module; And a third step of the database module storing and analyzing the transmission and reception packets of the network program in a database.

일례로, 상기 DLL 파일 모듈의 주입은 CreateRemoteThread() 함수를 이용한 DLL 주입법으로 수행된다.In one example, the injection of the DLL file module is performed by a DLL injection method using the CreateRemoteThread () function.

상기 DLL 파일 모듈은 상기 네트워크 프로그램의 송수신 패킷들을 차단하거나 또는 각 필드별로 분해하여 특정 필드에 임의의 데이터를 삽입, 변조하여 외부로 송신하는 것을 특징으로 한다.The DLL file module may block transmission / reception packets of the network program or decompose the data into fields to insert arbitrary data in a specific field, and transmit the data to the outside.

바람직하게, 상기 데이터베이스 모듈은 상기 특정 필드에 삽입가능한 퍼징 데이터 셋을 생성하여 보관하고 있다.Preferably, the database module generates and stores a set of fuzzable data that can be inserted into the specific field.

사용자가 판단하는 적정한 수준의 패킷들이 수집되면, 상기 메인프로그램 모듈이 상기 패킷 핸들러 모듈을 통해 비정상적인 패킷들을 생성한 후 외부로 송신함으로써 퍼징 대상 네트워크 프로그램에 문제점이 존재하는지를 판단하는 제4 단계를 더 포함한다.If packets of the appropriate level determined by the user are collected, the main program module may further generate abnormal packets through the packet handler module and then transmit them to the outside to determine whether there is a problem in the purging target network program. do.

상기 제4 단계는, 상기 데이터베이스 모듈이 내부에 저장하고 있던 퍼징 데이터 셋과 분석된 패킷의 데이터 영역에 관한 정보를 상기 메인프로그램 모듈내의 패킷 핸들러 모듈에 전달하는 과정과, 상기 패킷 핸들러 모듈이 상기 퍼징 데이터 셋을 상기 분석된 패킷의 데이터 영역에 적절하게 삽입하는 과정과, 상기 메인프로그램 모듈이 상기 분석된 패킷을 상기 DLL 파일 모듈로 전달하여 정상적인 소켓 API를 통하여 외부로 송신하도록 하는 과정을 포함하여 수행된다.The fourth step may include transferring information about a fuzzing data set stored in the database module and a data region of the analyzed packet to a packet handler module in the main program module, and the packet handler module purging the data. And inserting a data set into the data region of the analyzed packet as appropriate, and transmitting the analyzed packet to the DLL file module by the main program module to transmit to the outside through a normal socket API. do.

이하, 본 발명의 실시예를 첨부한 도면을 참조하여 더욱 상세하게 설명한다.Hereinafter, embodiments of the present invention will be described in more detail with reference to the accompanying drawings.

먼저, 본 발명의 실시예를 구체적으로 설명하기에 앞서, 본 발명에 적용되는 DLL 주입과 API 후킹에 관하여 설명하면 다음과 같다.First, before describing the embodiment of the present invention in detail, the DLL injection and API hooking applied to the present invention will be described.

DLL 주입은 MS 윈도우 운영체제에서 동작하는 프로그램에 임의의 동적 라이브러리 파일을 주입시키는 것으로, 프로그램에 특정한 기능을 추가하고자 할 때 사용하는 기법이다.DLL injection is a technique used to inject arbitrary dynamic library files into a program running on the MS Windows operating system.

API 후킹은 MS 윈도우 운영체제에서 정의된 특정 라이브러리 함수들을 사용자가 원하는 방식으로 바꾸고자 할 때 사용되는 기법으로, 어떤 응용프로그램에서 API가 호출되는 것을 가로채서 별도로 개발한 프로그램의 함수가 실행되도록 하는 메커니즘을 말한다. 어떤 윈도우즈용 응용프로그램을 개발하기 위해서 여러 종류의 언어나 도구들을 사용할 수 있다. Visual Basic, Visual C++, Delphi, C++ Builder, Power Builder 등 수많은 언어와 도구들이 존재한다. 이런 도구들을 사용해 작성된 응용프로그램들에서 어떤 작업을 수행하기 위해서 사용하는 방법은 서로 다를지라도 그 내부로 들어가 보면 결국에는 윈도우즈 운영체제에서 제공하는 API를 호출하게 된다. 예를 들어 화면에 문자열을 출력하려고 한다면 MFC(Microsoft foundation class)에서는 CDC::DrawText를 사용하고, Delphi에서는 TCanvas::TextOut을 사용한다. 개발도구마다 사용하는 형식은 이렇게 다르지만 결국에는 윈도우즈 운영체제가 제공하는 TextOutA/W API를 호출한다. TextOutA/W API는 gdi32.dll에 구현되어 있는 함수이고, 윈도우즈 운영체제가 제공하는 API이다. 윈도우즈는 기본적으로 3개의 DLL(kernel32.dll, user32.dll, gdi32.dll)에서 대부분의 API를 구현하여 제공하고, 응용프로그램은 실행 중에 자신의 프로세스 주소 공간으로 이들 DLL을 매핑한 후 사용한다.API hooking is a technique used to change certain library functions defined in the MS Windows operating system in a way that a user wants. It is a mechanism that intercepts an API call in an application and executes a function of a separately developed program. Say. You can use many different languages or tools to develop any Windows application. Many languages and tools exist, including Visual Basic, Visual C ++, Delphi, C ++ Builder, and Power Builder. Although the methods used to perform certain tasks in applications written using these tools are different, when you go inside, you will eventually call APIs provided by the Windows operating system. For example, if you want to print a string to the screen, you use CDC :: DrawText in MFC (Microsoft foundation class) and TCanvas :: TextOut in Delphi. Each development tool uses a different format, but in the end, it calls the TextOutA / W API provided by the Windows operating system. The TextOutA / W API is a function implemented in gdi32.dll and is an API provided by the Windows operating system. Windows basically provides most of the APIs in three DLLs (kernel32.dll, user32.dll, and gdi32.dll), and the application maps these DLLs to their process address space during execution.

API 후킹은 이렇게 사용되어 지는 DLL 내부의 API 함수를 가로채는 것을 지칭한다. 후킹되는 대상은 반드시 윈도우즈의 API일 필요는 없고, 단지 DLL에서 구현하여 제공하는 함수이면 API 후킹이 가능하다.API hooking refers to the interception of API functions inside a DLL that is used in this way. The object to be hooked does not necessarily need to be a Windows API. API hooking is possible only if the function is implemented by providing a DLL.

API 후킹은 어떤 언어로 개발된 프로그램에도 적용될 수 있으며 디버깅이나 버그 추척 작업, 모니터링 작업 등에 사용할 수 있으며, 소스 코드가 없는 프로그램에 기능을 추가하기 위한 용도로도 사용할 수 있다.API hooking can be applied to programs developed in any language, and can be used for debugging, bug tracking, monitoring, and for adding functions to programs without source code.

API 후킹을 하기 위해서는 크게 세 가지 방법, 즉 레지스트리(Registry)를 이용하는 방법, 시스템 전역 윈도우즈 후크(System-wide Windows Hooks)를 이용하는 방법, 그리고 'CreateRemoteThread()' 함수를 이용한 DLL 주입(injection) 방법이다.There are three main ways of hooking APIs: using the Registry, using System-wide Windows Hooks, and injecting DLLs using the 'CreateRemoteThread ()' function. .

상기 레지스트리(Registry)를 이용하여 API 후킹을 하는 것은 극히 제한된 경우에만 가능하다. 이 방법은 USER32.DLL을 사용하는 애플리케이션에 대해서만 적용할 수 있다. 왜냐하면 USER32는 특정한 레지스트리 키의 값을 읽어 DllMain 안에서 이들 DLL에 대해 'LoadLibrary()' 함수를 호출하기 때문이다. 다른 제약은 이 메카니즘이 NT와 2K 운영체제에 대해서만 지원된다는 것이다. 게다가 API 후킹을 활성화하고 비활성화하기 위해서는 윈도우즈 운영체제를 리부팅해야 하며, 모든 응용프로그램에 대해서 API 후킹을 수행하므로, 오버헤드가 발생할 수 있다.API hooking using the Registry is only possible in very limited cases. This method is only applicable to applications that use USER32.DLL. This is because USER32 reads the value of a specific registry key and calls the 'LoadLibrary ()' function on these DLLs in DllMain. Another limitation is that this mechanism is only supported for NT and 2K operating systems. In addition, enabling and disabling API hooking requires a reboot of the Windows operating system, and API hooking for all applications can result in overhead.

상기 시스템 전역 윈도우즈 후크(System-wide Windows Hooks)를 이용하는 방법은 목표로 하는 프로세스에 DLL을 침투시키는 매우 인기가 있는 기술이다. MSDN(MicroSoft Developer Network)에 자세히 설명되어 있듯이, 후크는 시스템 상의 메시지 처리 메커니즘을 가로채는 것이다. 응용프로그램은 사용자 정의 필터 함수를 설치하여 시스템에서의 메시지 교환을 감시하고 특정한 종류의 메시지가 목표로 하는 윈도우에 도달하기 전에 처리할 수 있다. 여기서 말하는 윈도우즈 후크는 API 후크와 전혀 다른 용어로서 MSDN에서 설명하고 있는 메시지 후크를 뜻한다. 상기 시스템 전역 윈도우즈 후크를 이용하는 방법은 레지스트리 메커니즘과 달리 후크 서버가 DLL이 더 이상 필요 없다고 결정하여, 'UnhookWindowsHookEx()' 함수를 호출하게 되면 DLL을 언로드할 수 있다. 그러나, 윈도우즈 후크는 시스템이 수행하여야 하는 메시지의 처리 과정을 증가시키므로 전체 시스템의 성능을 확연하게 저하시키는 단점을 가진다. 또한 시스템 전역 후크를 디버그하는 것은 많은 노력을 필요로 한다.The use of the system-wide Windows hooks is a very popular technique for infiltrating DLLs into the target process. As detailed in the Microsoft Developer Network (MSDN), hooks are an interception of message handling mechanisms on a system. Applications can install custom filter functions to monitor message exchanges in the system and to process certain types of messages before they reach the target window. Windows hooks here are completely different terms from API hooks, meaning the message hooks described in MSDN. Unlike the registry mechanism, the method of using the system-wide Windows hook is that the hook server determines that the DLL is no longer needed, and when the 'UnhookWindowsHookEx ()' function is called, the DLL can be unloaded. However, the window hook increases the processing of the message that the system should perform, which has the disadvantage of significantly deteriorating the performance of the entire system. Debugging system-wide hooks also requires a lot of effort.

상기 'CreateRemoteThread()' 함수를 이용한 DLL 주입(injection) 방법은 가장 보편화된 방법으로 리모트 쓰레드를 이용하여 DLL을 침투시키는 것이다. 이 방법은 제프리 릿쳐(Jeffrey Ritcher)의 아이디어이며, 그가 쓴 문서인 "Load Your 32-bit DLL into Another Process's Address Space Using INJLIB"에 잘 설명되어 있다. 어떤 프로세스도 LoadLibrary() API를 호출하여 DLL을 동적으로 로드할 수 있다. 문제는 어떻게 프로세스의 쓰레드에 대해 전혀 접근을 하지 못하면서 외부의 프로세스가 적절하게 'LoadLibrary()' 함수를 호출하도록 만드는가 하는 것이다. 해답은 하나의 리모트 쓰레드를 생성하는 'CreateRemoteThread()' 함수이다. 여기서 약간의 속임수가 필요하다. 쓰레드 함수의 원형을 보면, 이 함수의 포인터가 매개변수(LPTHREAD_START_ROUTINE)로 'CreateRemoteThread()' 함수에 넘겨진다: The DLL injection method using the 'CreateRemoteThread ()' function is the most common method of infiltrating a DLL using a remote thread. This method is the idea of Jeffrey Ritcher and is best described in his article "Load Your 32-bit DLL into Another Process's Address Space Using INJLIB." Any process can load the DLL dynamically by calling the LoadLibrary () API. The question is how to make the external process call the 'LoadLibrary ()' function appropriately without accessing the thread of the process at all. The answer is 'CreateRemoteThread ()', which creates a single remote thread. Here is a little trick. In the prototype of the thread function, a pointer to this function is passed as a parameter (LPTHREAD_START_ROUTINE) to the 'CreateRemoteThread ()' function:

DWORD WINAPI ThreadProc(LPVOID lpParameter);DWORD WINAPI ThreadProc (LPVOID lpParameter);

그리고, 여기 LoadLibrary API의 원형이 있다.And here is the prototype of the LoadLibrary API.

이 두 함수들은 동일한 형태를 지닌다. 이 함수들은 같은 호출 규약 WINAPI를 사용하고, 하나의 매개변수를 받아 동일한 크기의 값을 반환한다. 이러한 일치점들은 'LoadLibrary()' 함수를 쓰레드 함수로 사용하여 리모트 쓰레드가 생성된 후에 실행시킬 수가 있다는 힌트를 준다.These two functions have the same form. These functions use the same calling convention WINAPI, take a single parameter and return a value of the same size. These matches give you a hint that you can use the 'LoadLibrary ()' function as a thread function to run after the remote thread is created.

hThread = ::CreateRemoteThread(hProcessForHooking, NULL, 0, hThread = :: CreateRemoteThread (hProcessForHooking, NULL, 0,

pfnLoadLibrary, "C:\\MyHook.dll", 0, NULL);pfnLoadLibrary, "C: \\ MyHook.dll", 0, NULL);

쓰레드 함수의 매개변수로 DLL의 전체 경로명을 지정하고 LPVOID로 형변환한다. 리모트 쓰레드가 시작할 때 DLL의 이름이 쓰레드 함수(LoadLibrary)의 매개변수로 넘겨진다.Specify the full path name of the DLL as a parameter to the thread function and cast to LPVOID. When the remote thread starts, the name of the DLL is passed as a parameter to the thread function (LoadLibrary).

다시 부연 설명하면, 'CreateRemoteThread'라는 함수는 다른 프로세스에 쓰레드를 생성하는 함수인데, 이 함수는 쓰레드 생성시 초기화를 위한 콜백 함수인 ThreadProc의 주소를 매개변수로 받는다. 그런데 이 콜백 함수의 원형이 LoadLibrary와 매우 유사하고 ThreadProc는 생성시 단 한번 실행되므로 ThreadProc에 LoadLibrary의 주소를 넘겨 주면, 결국 목표로 하는 프로세스가 LoadLibrary를 호출하여 프로세스의 주소 공간에 DLL을 로드하게 된다는 것이다.In other words, 'CreateRemoteThread' is a function that creates a thread in another process, which takes the address of ThreadProc, a callback function for initialization, as a parameter. However, since the prototype of this callback function is very similar to LoadLibrary, and ThreadProc executes only once when created, passing the LoadLibrary address to ThreadProc will eventually cause the target process to call LoadLibrary to load the DLL into the process's address space. .

본 발명에서는 이와 같은 두 가지 기법을 사용하여, 특정 프로그램에 주입하고자 하는 DLL 파일 내부에 소켓 API 함수들의 추가적인 기능을 첨부하여 네트워크 패킷을 생성/차단/수정하는 네트워크 퍼징을 수행할 수 있게 된다.In the present invention, using these two techniques, it is possible to perform network fuzzing by generating / blocking / modifying network packets by attaching additional functions of socket API functions to a DLL file to be injected into a specific program.

도 1은 본 발명에 따른 윈도우 소켓 응용프로그램 인터페이스 후킹을 이용한 네트워크 퍼징 시스템을 나타낸 블록도이다.1 is a block diagram illustrating a network fuzzing system using a window socket application program hooking according to the present invention.

도 1을 참조하면, DLL 파일 모듈(10)은, 예컨대 'CreateRemoteThread()' 함수를 이용한 DLL 주입(injection) 방법으로 내부에 별도로 정의된 소켓 함수들을 가지고 윈도우즈 운영체제에서 동작하는 네트워크 프로그램에 소켓 API 후킹 기능 을 내장한 DLL 파일을 주입하여 서로 다른 네트워크 프로그램 모듈(12,20)의 소켓 API(12a,20a)들이 송수신하는 패킷들을 후킹하여 하기의 메인프로그램 모듈(14)로 보내주거나, 하기의 메인프로그램 모듈(14)이 원하는 특정 패킷을 서로 다른 네트워크 프로그램 모듈(12,20)의 소켓 API(12a,20a)들을 통해 외부로 송신하고, 하기의 메인프로그램 모듈(14)에 의해 정의된 규칙에 따라 서로 다른 네트워크 프로그램 모듈(12,20)의 소켓 API(12a,20a)들이 송수신하는 패킷들을 차단하거나 송수신되는 패킷들을 각 필드별로 분해하여 특정 필드에 임의의 데이터를 삽입, 변조하여 외부로 송신한다.Referring to FIG. 1, the DLL file module 10 hooks a socket API to a network program that runs on a Windows operating system with socket functions defined separately therein, for example, by a DLL injection method using a 'CreateRemoteThread ()' function. By injecting the DLL file with the built-in function, the packets transmitted and received by the socket APIs 12a and 20a of the different network program modules 12 and 20 are hooked and sent to the following main program module 14, or the following main program The module 14 transmits the desired specific packets to the outside through the socket APIs 12a and 20a of the different network program modules 12 and 20, and to each other according to the rules defined by the main program module 14 below. The socket APIs 12a and 20a of the other network program modules 12 and 20 block packets transmitted and received, or decompose packets transmitted and received for each field. Data is inserted and modulated and transmitted to the outside.

메인 프로그램 모듈(14)은 DLL 파일 모듈(10)을 경유하여 현재 윈도우즈 운영체제에서 상기 서로 다른 네트워크 프로그램 모듈(12,20)에 의해 동작 중인 네트워크 프로그램 목록을 수집하여 보여주고 DLL 파일 모듈(10)을 제어하여 사용자가 선택한 네트워크 프로그램에 DLL 파일을 주입시키게 하는 로더 역할을 수행하고, 네트워크 퍼징을 위해 상기 DLL 파일 모듈(10)이 후킹하여 보내준 송수신 네트워크 프로그램의 패킷을 보고 수정하거나, 특정 규칙에 의해 자동적으로 패킷을 수정하거나, 별도로 지정된 규칙으로 상기 DLL 파일 모듈(10)이 패킷을 차단하거나 송수신되는 패킷들을 각 필드별로 분해하여 특정 필드에 임의의 데이터를 삽입하여 변조할 수 있게 하며, 지정된 패킷을 전송하는 기능도 구비하는 패킷 핸들러(14a)를 내장하고 있다.The main program module 14 collects and displays a list of network programs operated by the different network program modules 12 and 20 in the current Windows operating system via the DLL file module 10 and displays the DLL file module 10. Controls the loader to inject DLL files into the network program selected by the user, and to view and modify the packets of the send / receive network program sent and hooked by the DLL file module 10 for network fuzzing, or automatically by a specific rule. By modifying the packet, or by separately specified rule, the DLL file module 10 blocks the packet or decomposes the transmitted / received packet into each field so that arbitrary data can be inserted into a specific field and modulated. The packet handler 14a which also has the function of doing so is incorporated.

데이터베이스 모듈(16)은 메인프로그램 모듈(14)이 수집하는 송수신 네트워크 프로그램의 패킷을 데이터베이스로 저장하고 패킷 분석을 수행하며, 네트워크 퍼징을 위해 패킷 내의 각 필드에 삽입 가능한 퍼징 데이터 셋을 생성하여 보관하고, 보관된 퍼징 데이터 셋은 사용자에 의해 정의된 내용이 수록되며, 사용자가 정한 규칙에 따라 메인프로그램 모듈(14)이 다루는 패킷의 각 필드에 차례대로 삽입된다.The database module 16 stores the packets of the transmit / receive network program collected by the main program module 14 into a database and performs packet analysis, and generates and stores a set of fuzzing data that can be inserted into each field in the packet for network fuzzing. The stored fuzzing data set contains contents defined by the user and is sequentially inserted into each field of the packet handled by the main program module 14 according to a rule set by the user.

데이터베이스 모듈(16)은 메인프로그램 모듈(14)이 자동화된 네트워크 퍼징을 수행하는 경우, 패킷의 각 필드에 삽입되는 퍼징 데이터 셋을 차례대로 메인프로그램 모듈(14) 내의 패킷 핸들러(14a)에 전달해 준다.When the main program module 14 performs automated network fuzzing, the database module 16 sequentially passes the set of fuzzing data inserted into each field of the packet to the packet handler 14a in the main program module 14. .

상기와 같이 구성되는 본 발명에 따른 윈도우 소켓 API 후킹을 이용한 네트워크 퍼징 시스템은 도 2에 나타낸 방법에 의해 다음과 같이 작동한다.The network fuzzing system using the window socket API hooking according to the present invention configured as described above operates as follows by the method shown in FIG.

도 2를 참조하면, 윈도우즈 운영체제에서 본 발명에 따른 네트워크 퍼징 시스템에 포함된 네트워크 프로그램 모듈(12)에 의해 동작하는 네트워크 프로그램과 네트워크로 연결되어 정해진 프로토콜로 통신하는 상대편 네트워크 프로그램 모듈(20)에 의해 동작하는 네트워크 프로그램이 존재한다.Referring to FIG. 2, a network program operated by a network program module 12 included in a network fuzzing system according to the present invention in a Windows operating system is connected by a network program module 20 connected to a network and communicating with a predetermined protocol. There is a working network program.

여기서, 네트워크 퍼징의 대상은 이 두 네트워크 프로그램이 사용하는 프로토콜이지만, 실제 대상은 상기한 상대편 네트워크 프로그램이다.Here, the target of network fuzzing is the protocol used by these two network programs, but the actual target is the above-mentioned network program.

두 네트워크 프로그램이 P2P 또는 메신저 프로그램 등과 같이 동일한 인터페이스를 가지고 동일한 역할을 할 수도 있고, 아니면 각기 서버와 클라이언트 역할 을 수행하는 별도의 인터페이스를 가진 프로그램일 수도 있다.The two network programs may play the same role with the same interface, such as P2P or messenger program, or they may be programs with separate interfaces that play the role of server and client, respectively.

참고로, 본 발명에 따라 윈도우 소켓 API 후킹을 이용한 네트워크 퍼징 방법에서는 이러한 프로그램 역할에 전혀 구애받지 않으며, 단순히 네트워크 퍼징의 대상을 선정하면 된다.For reference, according to the present invention, the network fuzzing method using the Windows socket API hooking is not limited to such a program role, and simply selects a target of network fuzzing.

상기와 같이 본 발명에 따른 네트워크 퍼징 시스템에 포함된 네트워크 프로그램 모듈(12)에 의해 동작하는 네트워크 프로그램과 네트워크로 연결되어 정해진 프로토콜로 통신하는 상대편 네트워크 프로그램 모듈(20)에 의해 동작하는 네트워크 프로그램이 존재할 때, 먼저 상기 본 발명에 따른 네트워크 프로그램 모듈은 윈도우즈 운영체제에서 동작하는 상대편 네트워크 프로그램, 즉 퍼징 대상 네트워크 프로그램이 동작한 후에 자신의 네트워크 프로그램을 실행한다(S10).As described above, there is a network program operated by the network program module 20 connected to the network program operated by the network program module 12 included in the network fuzzing system according to the present invention and communicating with a predetermined protocol. At this time, the network program module according to the present invention first executes its own network program after the other network program, ie, the fuzzing target network program, which operates in the Windows operating system (S10).

이어서, 상기 메인프로그램 모듈(14)은 상기 DLL 파일 모듈(10)을 제어하여 본 발명에 따른 네트워크 프로그램 모듈에 의해 실행된 네트워크 프로그램을 찾아서 윈도우 소켓 API 후킹 기능을 내장한 DLL 파일을 주입한다(S20).Subsequently, the main program module 14 controls the DLL file module 10 to find a network program executed by the network program module according to the present invention, and injects a DLL file having a Windows socket API hooking function (S20). ).

이때부터, 상기 DLL 파일 모듈(10)은 본 발명에 따른 네트워크 프로그램 모듈(12)에 의해 실행된 네트워크 프로그램이 사용하는 소켓 API 함수, 예컨대 Winsock 1.1 함수(send, sendto, recv, recvfrom)와 Winsock 2 함수(WSASend, WSASendto, WSARecv, WSARecvFrom) 등을 후킹하여, 별도로 정의된 소켓 함수들로 대체한다(S30). 별도로 정의된 소켓 함수들은 메인프로그램 모듈의 명령에 따라 상기 본 발명에 따른 네트워크 프로그램 모듈(12)에 의해 실행된 네트워크 프로그램 이 송수신하는 패킷들을 허용/수정/차단할 수 있다.At this time, the DLL file module 10 is a socket API function used by the network program executed by the network program module 12 according to the present invention, for example, Winsock 1.1 functions (send, sendto, recv, recvfrom) and Winsock 2. Hook the functions (WSASend, WSASendto, WSARecv, WSARecvFrom) and the like, and replace them with socket functions defined separately (S30). The separately defined socket functions may allow / modify / block packets transmitted and received by the network program executed by the network program module 12 according to the present invention according to the command of the main program module.

상기와 같이 소켓 API 후킹이 수행되면, 네트워크 퍼징을 수행하기 전에, 메인프로그램 모듈(14)의 명령에 따라 DLL 파일 모듈은 단순히 송수신되는 네트워크 프로그램의 패킷을 중간에 임시 저장하고, 이 패킷들을 메인프로그램 모듈(14) 내의 패킷 핸들러(14a)에 전달하며, 이에 따라서 패킷 핸들러(14a)는 이렇게 수집된 패킷을 데이터베이스 모듈(16)로 보내어 데이터베이스로 저장하고 분석되어 퍼징 데이터 셋을 생성하게 만든다(S40).When the socket API hooking is performed as described above, before performing network fuzzing, the DLL file module simply stores packets of the network program to be transmitted and received in the middle according to the instructions of the main program module 14, and stores these packets in the main program. The packet handler 14a in the module 14 is transmitted to the packet handler 14a. Accordingly, the packet handler 14a sends the collected packets to the database module 16, stores them in a database, and analyzes them to generate a purging data set (S40). .

상기 데이터베이스에 저장되는 송수신 네트워크 프로그램에 대하여 사용자가 판단하는 적정한 수준의 프로토콜 패킷이 수집되어 분석되고 난 후부터, 상기 본 발명에 따른 네트워크 프로그램 모듈(12)에 의해 실행된 네트워크 프로그램이 송수신하는 패킷들과는 별도로, 메인프로그램 모듈(14)은 패킷 핸들러(14a)를 이용하여 비정상적인 패킷들을 강제로 송신하여 비정상적인 패킷을 수신하는 퍼징 대상 네트워크 프로그램에 문제점이 존재하는지를 판단하게 한다(S50).After the appropriate level of protocol packets determined by the user are collected and analyzed for the transmission / reception network program stored in the database, separately from the packets transmitted and received by the network program executed by the network program module 12 according to the present invention. The main program module 14 forcibly transmits abnormal packets using the packet handler 14a to determine whether there is a problem in the fuzzing target network program that receives the abnormal packets (S50).

비정상적인 패킷의 송신과정은 다음과 같이 진행된다.Abnormal packet transmission proceeds as follows.

데이터베이스 모듈(16)은 내부에 저장하고 있던 퍼징 데이터 셋과 분석된 패킷의 데이터 영역에 관한 정보를 메인프로그램 모듈(14) 내의 패킷 핸들러(14a)에 전달하여 자동화된 네트워크 퍼징을 수행하며, 패킷 핸들러(14a)는 퍼징 데이터 셋을 분석된 패킷의 데이터 영역에 적절하게 삽입한다. 그러면 메인프로그램 모듈(14)은 그 패킷을 DLL 파일 모듈(10)이 가져가 정상적인 소켓 API(12a,20a)를 통하여 외부로 송신하게 만든다. 이때, 상기 데이터베이스 모듈(16)은 패킷의 각 필 드에 삽입되는 퍼징 데이터 셋을 차례대로 메인프로그램 모듈(14) 내의 패킷 핸들러(14a)에 전달한다.The database module 16 delivers the information about the purging data set and the data area of the analyzed packet to the packet handler 14a in the main program module 14 to perform automated network fuzzing. 14a appropriately inserts the purging data set into the data area of the analyzed packet. The main program module 14 then causes the DLL file module 10 to take the packet and transmit it to the outside via the normal socket APIs 12a and 20a. At this time, the database module 16 transfers the fuzzing data set inserted into each field of the packet to the packet handler 14a in the main program module 14 in order.

상기 상대편, 즉 퍼징 대상 네트워크 프로그램이 강제 송신된 패킷에 대해서 응답을 하게 되면, 그에 대한 통제도 역시 DLL 파일 모듈(10)을 제어하는 메인프로그램 모듈(14)에 의해서 가능하다. 메인프로그램 모듈(14) 내의 패킷 핸들러(14a)는 모든 송수신되는 패킷들을 허용/수정/차단할 수 있다.When the other party, i.e., the fuzzing target network program, responds to the forcibly sent packet, control thereof is also possible by the main program module 14 controlling the DLL file module 10. The packet handler 14a in the main program module 14 may allow / modify / block all transmitted and received packets.

이상에서 설명한 본 발명에 따른 윈도우 소켓 API 후킹을 이용한 네트워크 퍼징 시스템 및 그 방법은 상기한 실시예에 따른 서비스에 한정되지 않고, 이하의 특허청구범위에서 청구하는 본 발명의 요지를 벗어남이 없이 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 누구든지 다양하게 변경하여 실시할 수 있는 범위까지 본 발명의 기술적 정신이 있다고 할 것이다.The network fuzzing system and the method using the window socket API hooking according to the present invention described above are not limited to the service according to the above embodiment, and the present invention without departing from the gist of the present invention as claimed in the following claims. Anyone with ordinary knowledge in this field will have the technical spirit of the present invention to the extent that it can be variously modified and implemented.

상술한 바와 같은 본 발명에 따른 윈도우 소켓 API 후킹을 이용한 네트워크 퍼징 시스템 및 그 방법에 의하면, 종래의 프로토콜 분석과 퍼저 제작을 거치지 않고, 임의의 프로토콜을 사용하는 네트워크 프로그램을 이용하여, DLL 주입을 통한 소켓 API 후킹으로 네트워크 퍼징을 자유롭게 할 수 있다.According to the network fuzzing system and the method using the Windows socket API hooking according to the present invention as described above, through a DLL injection using a network program using any protocol, without going through the conventional protocol analysis and fuzz production Socket API hooking frees network fuzzing.

또한, 네트워크 퍼징을 수행하기 위해 프로토콜 분석부터 퍼저의 제작까지 많은 인력과 시간이 소모되는 종래의 문제점을 완전 해소할 수 있다.In addition, it is possible to completely solve the conventional problem that requires a lot of manpower and time from the protocol analysis to the manufacture of the fuser to perform the network purging.

Claims (6)

패킷 핸들러 모듈을 내장한 메인프로그램 모듈, DLL 파일 모듈 및 데이터베이스 모듈을 포함하는 윈도우 소켓 API 후킹을 이용한 네트워크 퍼징 시스템에 있어서,In the network fuzzing system using the Windows socket API hooking, including the main program module, DLL file module and database module with a built-in packet handler module, 윈도우즈 운영체제에서 네트워크 프로그램이 실행되면, 상기 메인프로그램 모듈이 상기 네트워크 프로그램에 상기 DLL 파일 모듈을 주입하는 제1 단계와;A first step of injecting the DLL file module into the network program by the main program module when a network program is executed in a Windows operating system; 상기 DLL 파일 모듈이 상기 메인프로그램 모듈의 명령에 따라 상기 네트워크 프로그램의 소켓 API를 후킹하는 제2 단계와;Hooking, by the DLL file module, a socket API of the network program according to a command of the main program module; 특정 필드에 삽입가능한 퍼징 데이터 셋을 생성하여 보관하고 있는 데이터베이스 모듈이 상기 네트워크 프로그램의 송수신 패킷들을 데이터베이스로 저장하고 분석하는 제3 단계를 포함하는 것을 특징으로 하는 윈도우 소켓 API 후킹을 이용한 네트워크 퍼징 방법.And a third step of the database module generating and storing a set of fuzzable data insertable in a specific field and storing and analyzing the transmitted and received packets of the network program into a database. 제1항에 있어서,The method of claim 1, 상기 DLL 파일 모듈의 주입은 CreateRemoteThread() 함수를 이용한 DLL 주입법으로 수행되는 것을 특징으로 하는 윈도우 소켓 API 후킹을 이용한 네트워크 퍼징 방법.Injection of the DLL file module is a network fusing method using the Windows Socket API hooking, characterized in that performed by the DLL injection method using the CreateRemoteThread () function. 제1항에 있어서,The method of claim 1, 상기 DLL 파일 모듈은 상기 네트워크 프로그램의 송수신 패킷들을 차단하거 나 또는 각 필드별로 분해하여 특정 필드에 임의의 데이터를 삽입, 변조하여 외부로 송신하는 것을 특징으로 하는 윈도우 소켓 API 후킹을 이용한 네트워크 퍼징 방법.The DLL file module is a method of network fuzzing using the Windows Sockets API hooking, which blocks or transmits and receives packets of the network program, or decomposes each field to insert and modulate arbitrary data in a specific field and transmit the data externally. 삭제delete 제1항에 있어서,The method of claim 1, 사용자가 판단하는 적정한 수준의 패킷들이 수집되면, 상기 메인프로그램 모듈이 상기 패킷 핸들러 모듈을 통해 비정상적인 패킷들을 생성한 후 외부로 송신함으로써 퍼징 대상 네트워크 프로그램에 문제점이 존재하는지를 판단하는 제4 단계를 더 포함하는 것을 특징으로 하는 윈도우 소켓 API 후킹을 이용한 네트워크 퍼징 방법.If packets of the appropriate level determined by the user are collected, the main program module may further generate abnormal packets through the packet handler module and then transmit them to the outside to determine whether there is a problem in the purging target network program. Network fuzzing method using the Windows Sockets API hooking, characterized in that. 제5항에 있어서,The method of claim 5, 상기 제4 단계는,The fourth step, 상기 데이터베이스 모듈이 내부에 저장하고 있던 퍼징 데이터 셋과 분석된 패킷의 데이터 영역에 관한 정보를 상기 메인프로그램 모듈내의 패킷 핸들러 모듈 에 전달하는 과정과,Passing information about a purging data set stored in the database module and a data region of the analyzed packet to a packet handler module in the main program module; 상기 패킷 핸들러 모듈이 상기 퍼징 데이터 셋을 상기 분석된 패킷의 데이터 영역에 적절하게 삽입하는 과정과,The packet handler module properly inserting the fuzzing data set into a data region of the analyzed packet; 상기 메인프로그램 모듈이 상기 분석된 패킷을 상기 DLL 파일 모듈로 전달하여 정상적인 소켓 API를 통하여 외부로 송신하도록 하는 과정을 포함하는 것을 특징으로 하는 윈도우 소켓 API 후킹을 이용한 네트워크 퍼징 방법.And the main program module forwarding the analyzed packet to the DLL file module to transmit to the outside through a normal socket API.
KR1020070062325A 2006-11-13 2007-06-25 Network Fuzzing Using Windows Sockets Application Program Hooking KR100875997B1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20060111858 2006-11-13
KR1020060111858 2006-11-13

Publications (2)

Publication Number Publication Date
KR20080043209A KR20080043209A (en) 2008-05-16
KR100875997B1 true KR100875997B1 (en) 2008-12-24

Family

ID=39661712

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020070062325A KR100875997B1 (en) 2006-11-13 2007-06-25 Network Fuzzing Using Windows Sockets Application Program Hooking

Country Status (1)

Country Link
KR (1) KR100875997B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190102427A (en) 2018-02-26 2019-09-04 주식회사 베스티언 Fuzzing system for verifying security/quality of can device and fuzzing method thereof

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101671795B1 (en) 2010-01-18 2016-11-03 삼성전자주식회사 Computer system and method for preventing dynamic link library injection attack
CN102693383A (en) * 2012-05-17 2012-09-26 西安交大捷普网络科技有限公司 Webpage tamper proofing method realized by windows driver layer
CN103957214A (en) * 2014-05-06 2014-07-30 重庆邮电大学 Computer network data package grabbing method for teaching
KR101525398B1 (en) 2014-05-30 2015-06-09 한국전자통신연구원 System and method for fuzzing network application program
CN106201633B (en) * 2016-07-29 2018-02-27 腾讯科技(深圳)有限公司 A kind of method and device for injecting dll file
CN106485826A (en) * 2016-10-17 2017-03-08 山东浪潮商用系统有限公司 A kind of tax handling service hall Zero queuing system compatibility method
KR101895836B1 (en) * 2016-11-28 2018-09-06 (주) 세인트 시큐리티 Method for Treating and Deleting Malware Having Self-Protection Function
KR101887077B1 (en) 2017-01-24 2018-09-10 엘지전자 주식회사 Hacking test apparatus for vehicle electric device

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10269105A (en) 1997-01-27 1998-10-09 N T T Data Tsushin Kk Trace system, resource release omission detection system, and recording medium
KR100391932B1 (en) 2002-11-22 2003-07-16 Fasoo Com Co Ltd Method for protecting digital data through real-time system api controller without modifying application program

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10269105A (en) 1997-01-27 1998-10-09 N T T Data Tsushin Kk Trace system, resource release omission detection system, and recording medium
KR100391932B1 (en) 2002-11-22 2003-07-16 Fasoo Com Co Ltd Method for protecting digital data through real-time system api controller without modifying application program

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190102427A (en) 2018-02-26 2019-09-04 주식회사 베스티언 Fuzzing system for verifying security/quality of can device and fuzzing method thereof

Also Published As

Publication number Publication date
KR20080043209A (en) 2008-05-16

Similar Documents

Publication Publication Date Title
KR100875997B1 (en) Network Fuzzing Using Windows Sockets Application Program Hooking
Mantz et al. Internalblue-bluetooth binary patching and experimentation framework
US7694022B2 (en) Method and system for filtering communications to prevent exploitation of a software vulnerability
KR102419574B1 (en) Systems and methods for correcting memory corruption in computer applications
CA2691666C (en) System and method for simulating computer network attacks
US8893222B2 (en) Security system and method for the android operating system
US7761618B2 (en) Using a USB host controller security extension for controlling changes in and auditing USB topology
US7523308B2 (en) Method and system for dynamic system protection
US7591010B2 (en) Method and system for separating rules of a security policy from detection criteria
US20120246630A1 (en) System and Method for Automating Installation and Updating of Third Party Software
WO2003093990A2 (en) Automated installation of an application
CN105631312B (en) The processing method and system of rogue program
CN104252594B (en) virus detection method and device
Van Ginkel et al. A server-side JavaScript security architecture for secure integration of third-party libraries
WO2003093959A2 (en) Secure transmission and installation of an application
US20050108650A1 (en) Server visualization and control
US20050241000A1 (en) Security hole diagnostic system
KR101458930B1 (en) Apparatus and method for smart terminal fuzzing using multi node
CN115859280A (en) Memory horse detection method, device, equipment and storage medium
CN112929365B (en) Remote command detection method and device and electronic equipment
CN113079048A (en) Data acquisition method and device, computer equipment and storage medium
CN113194105B (en) Network security protection method and device for vehicle-mounted equipment, electronic equipment and medium
CN114915495B (en) Message encryption and decryption method supporting multi-algorithm switching
Bytes et al. Post-exploitation and persistence techniques against programmable logic controller
CN112291275B (en) Command interaction implementation method for CVE vulnerability penetration utilization

Legal Events

Date Code Title Description
A201 Request for 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: 20121011

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20130930

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20140916

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20161216

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee