KR101525398B1 - 네트워크 응용 프로그램 퍼징 시스템 및 방법 - Google Patents

네트워크 응용 프로그램 퍼징 시스템 및 방법 Download PDF

Info

Publication number
KR101525398B1
KR101525398B1 KR1020140065519A KR20140065519A KR101525398B1 KR 101525398 B1 KR101525398 B1 KR 101525398B1 KR 1020140065519 A KR1020140065519 A KR 1020140065519A KR 20140065519 A KR20140065519 A KR 20140065519A KR 101525398 B1 KR101525398 B1 KR 101525398B1
Authority
KR
South Korea
Prior art keywords
packet
purging
rule
unit
program
Prior art date
Application number
KR1020140065519A
Other languages
English (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 한국전자통신연구원
Priority to KR1020140065519A priority Critical patent/KR101525398B1/ko
Priority to US14/561,730 priority patent/US9654490B2/en
Application granted granted Critical
Publication of KR101525398B1 publication Critical patent/KR101525398B1/ko

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
    • 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Debugging And Monitoring (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

네트워크 응용 프로그램에 대한 퍼징을 수행함에 있어 캡쳐된 패킷을 사용함으로써 프로토콜 분석 과정이 필요하지 않고 퍼저 프로그램의 제작 또한 필요하지 않도록 하는 네트워크 응용 프로그램 퍼징 시스템 및 방법을 제시한다. 제시된 시스템은 캡쳐된 패킷으로부터 송신할 패킷을 생성하고 송신할 패킷에 퍼징 규칙을 적용하여 출력하는 퍼징 수행 클라이언트 프로그램부, 및 퍼징 수행 클라이언트 프로그램부로부터의 패킷을 퍼징 대상이 되는 프로그램과 주고받으면서 퍼징 대상이 되는 프로그램의 이벤트 및 비정상 종료를 감시하여 비정상 종료 발생시 보안 취약점 검증을 위해 종료 상황을 분석하는 퍼징 감시자 프로그램부를 포함한다.

Description

네트워크 응용 프로그램 퍼징 시스템 및 방법{System and method for fuzzing network application program}
본 발명은 네트워크 응용 프로그램 퍼징 시스템 및 방법에 관한 것으로, 보다 상세하게는 네트워크 응용 프로그램에 대하여 퍼징 테스트를 수행함에 있어 캡쳐된 패킷을 이용하여 패킷 전송의 도중에 패킷에 임의값을 주입하여 퍼징을 수행하는 시스템 및 방법에 관한 것이다.
퍼징(fuzzing)이란 소프트웨어에 무작위의 데이터를 반복적으로 입력하여 소프트웨어의 조직적인 실패를 유발함으로써 소프트웨어의 보안 취약점을 찾아내는 기법이다.
퍼징 기법은 보안 취약점을 탐지하기 위하여 분석대상 시스템에 대해 다양한 입력값을 전송하는 결함 주입(Fault Injection)에 근거한다.
이러한 퍼징 기법의 주요 이점은 보안 취약점 탐지 과정에 대해 단순, 효율성, 자동화 및 속도 증진에 있으며, 다수의 어플리케이션에 대한 테스트에 유용하게 사용된다.
이와 같은 종래의 기술은 네트워크 응용 프로그램에 대하여 퍼징을 수행함에 있어, 클라이언트와 서버 간의 주고받는 패킷에 대하여 프로토콜이 분석되어야 하고, 그에 따른 별도의 프로그램제작이 필요하다. 이는 많은 인력과 시간이 요구되는 과정이므로 퍼징수행에 필요한 비용으로 간주된다. 또한, 퍼징대상이 되는 네트워크 응용 프로그램의 프로토콜에 대한 상세한 분석서가 없는 상황에서 프로토콜 분석과 프로그램제작에는 더욱 큰 비용이 요구된다.
관련 선행기술로는, MS 윈도우 운영체제에서 동작하는 네트워크 프로그램을 대상으로 동적 링크 라이브러리 주입(Dynamic Linked Library injection; 이하, DLL 주입이라 함)을 통하여 네트워크 프로그램에 소켓 API 후킹 기능을 삽입함으로써, 네트워크 프로그램이 소켓 API 함수를 사용하여 상대편 네트워크 프로그램과의 송수신하는 패킷을 가로챈 다음, 그 패킷 내의 데이터에 다양한 퍼징 데이터 셋을 추가하여 해당 패킷을 조작하거나 비정상적인 패킷으로 만들어 송신함으로써 범용적인 프로토콜뿐만 아니라, 알려지지 않은 프로토콜에 대해서 네트워크 퍼징을 수행하는 내용이, 대한민국 공개특허 제 10-2008-0043209호에 기재되었다.
본 발명은 상기한 종래의 문제점을 해결하기 위해 제안된 것으로, 네트워크 응용 프로그램에 대한 퍼징을 수행함에 있어 캡쳐된 패킷을 사용함으로써 프로토콜 분석 과정이 필요하지 않고 퍼저 프로그램의 제작 또한 필요하지 않도록 하는 네트워크 응용 프로그램 퍼징 시스템 및 방법을 제공함에 그 목적이 있다.
상기와 같은 목적을 달성하기 위하여 본 발명의 바람직한 실시양태에 따른 네트워크 응용 프로그램 퍼징 시스템은, 캡쳐된 패킷으로부터 송신할 패킷을 생성하고, 상기 송신할 패킷에 퍼징 규칙을 적용하여 출력하는 퍼징 수행 클라이언트 프로그램부; 및 상기 퍼징 수행 클라이언트 프로그램부로부터의 패킷을 퍼징 대상이 되는 프로그램에게 제공하고 상기 퍼징 대상이 되는 프로그램의 이벤트 및 비정상 종료를 감시하여 비정상 종료 발생시 보안 취약점 검증을 위해 종료 상황을 분석하는 퍼징 감시자 프로그램부;를 포함한다.
이때, 퍼징 수행 클라이언트 프로그램부는, 상기 퍼징 대상이 되는 프로그램에서 통신하는 내용중에서 캡쳐된 패킷을 저장하는 캡쳐된 패킷 데이터베이스; 상기 캡쳐된 패킷 데이터베이스에 저장된 캡쳐된 패킷을 불러서 송신할 패킷을 생성하는 패킷 생성부; 상기 패킷 생성부에 의해 생성된 패킷에 대해 퍼징변조를 적용하기 위한 퍼징 규칙을 보관하는 퍼징 규칙 데이터베이스; 및 상기 패킷 생성부에 의해 생성된 패킷에 대해 상기 퍼징 규칙 데이터베이스의 퍼징 규칙을 적용하여 출력하는 퍼징 규칙 적용부;를 포함할 수 있다.
이때, 상기 퍼징 규칙 데이터베이스의 퍼징 규칙은 퍼징을 위한 데이터 변조 시에 규칙을 적용할 지의 여부를 결정하는 규칙 적용 조건, 및 상기 생성된 패킷에 대하여 네트워크 프로토콜의 각 필드별로 특정 필드에 임의의 데이터를 삽입 또는 삭제 또는 변조할 수 있게 하는 적용 규칙을 포함할 수 있다.
이때, 상기 규칙 적용 조건은 패킷 순번 및 패킷 데이터 패턴중에서 하나 이상을 포함할 수 있다.
이때, 상기 퍼징 규칙 적용부는 상기 패킷 생성부에서 생성된 패킷에 대하여 상기 퍼징 규칙 데이터베이스에 적용 조건이 존재하는지에 따라 상기 퍼징 규칙을 적용 또는 미적용할 수 있다.
이때, 상기 퍼징 규칙 적용부는 상기 퍼징 규칙을 적용하는 경우 상기 패킷 생성부에서 생성된 패킷을 출력하기 전에 해당 패킷의 단일 또는 복수의 비트 데이터를 변조하여 출력할 수 있다.
이때, 상기 퍼징 규칙 적용부는 상기 퍼징 규칙을 적용하지 않는 경우 상기 패킷 생성부에서 생성된 패킷을 변경없이 그대로 출력할 수 있다.
이때, 상기 퍼징 감시자 프로그램부는, 상기 퍼징 대상이 되는 프로그램에서의 이벤트 및 비정상 종료를 감시하는 상태 감시부; 상태 감시부에 의해 감시된 이벤트를 기록하는 이벤트 기록부; 및 상기 상태 감시부에서 상기 퍼징 대상이 되는 프로그램의 비정상 종료 발생을 감지함에 따라 보안 취약점 검증을 위해 비정상 종료 상황을 분석하는 분석부;를 포함할 수 있다.
이때, 상기 퍼징 수행 클라이언트 프로그램부는 상기 퍼징 대상이 되는 프로그램이 실행된 이후에 퍼징 시작을 수행할 수 있다.
이때, 상기 퍼징 수행 클라이언트 프로그램부는 클라이언트 컴퓨터에 설치될 수 있다.
이때, 상기 퍼징 감시자 프로그램부는 서버 컴퓨터에 설치되어 로컬 프록시 형태로 동작할 수 있다.
한편, 본 발명의 바람직한 실시양태에 따른 네트워크 응용 프로그램 퍼징 방법은, 퍼징 수행 클라이언트 프로그램부가, 캡쳐된 패킷으로부터 송신할 패킷을 생성하는 단계; 상기 퍼징 수행 클라이언트 프로그램부가, 상기 송신할 패킷에 퍼징 규칙을 적용하여 출력하는 단계; 퍼징 감시자 프로그램부가, 상기 퍼징 수행 클라이언트 프로그램부로부터의 패킷을 퍼징 대상이 되는 프로그램에게 제공하고 상기 퍼징 대상이 되는 프로그램의 이벤트 및 비정상 종료를 감시하는 단계; 및 상기 퍼징 감시자 프로그램부가, 상기 퍼징 대상이 되는 프로그램의 비정상 종료를 발견함에 따라 보안 취약점 검증을 위해 종료 상황을 분석하는 단계;를 포함한다.
이러한 구성의 본 발명에 따르면, 기존의 클라이언트와 서버 간에 주고받았던 패킷을 사용함으로써, 프로토콜 분석 과정을 생략할 수 있다. 퍼징 규칙 데이터베이스의 규칙에 따라 패킷에 대해 퍼징 규칙을 적용하여 퍼징을 수행하는 퍼징 수행 클라이언트 프로그램을 사용함으로써 별도의 퍼징 수행 프로그램 제작 과정을 생략할 수 있다.
다시 말해서, 본 발명은 네트워크 응용프로그램에 대한 퍼징을 수행함에 있어 캡쳐된 패킷에 퍼징 규칙을 적용하여 송신하는 방법을 사용함으로써, 퍼징 대상 서버 프로그램과 캡쳐된 패킷이 존재하는 상황에서 퍼징이 가능하며, 종래의 프로토콜 분석과 별도의 프로그램 제작이 필요치 않게 되어 퍼징 수행에 있어 인력과 시간의 효율성을 증대할 수 있다.
도 1은 본 발명의 실시예에 따른 네트워크 응용 프로그램 퍼징 시스템의 구성도이다.
도 2는 도 1에 도시된 퍼징 규칙 데이터베이스의 구성도이다.
도 3은 본 발명의 실시예에 따른 네트워크 응용 프로그램 퍼징 시스템의 제어 흐름도이다.
도 4는 도 1에 도시된 퍼징 수행 클라이언트 프로그램부의 동작 순서도이다.
도 5는 도 1에 도시된 퍼징 감시자 프로그램부의 동작 순서도이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시 예들을 도면에 예시하고 상세하게 설명하고자 한다.
그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가진 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 본 발명을 설명함에 있어 전체적인 이해를 용이하게 하기 위하여 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 실시예에 따른 네트워크 응용 프로그램 퍼징 시스템의 구성도이다.
본 발명의 실시예에 따른 네트워크 응용 프로그램 퍼징 시스템은, 퍼징 수행 클라이언트 프로그램부(16), 퍼징 감시자 프로그램부(40), 및 퍼징 대상 서버 프로그램부(50)를 포함한다.
도 1에서, 캡쳐된 패킷 데이터베이스(12)는 본 발명에 따른 퍼징 방법의 수행 이전에 퍼징 대상 서버 프로그램부(50)에서 통신하는 내용에 대해 패킷을 캡쳐하여 보관한다. 즉, 캡쳐된 패킷 데이터베이스(12)는 캡쳐된 패킷을 저장하고 있는데, 캡쳐된 패킷은 예를 들어 pcap 라이브러리를 사용하여 개발된 tcpdump 또는 Wireshark와 같은 도구를 이용하여 네트워크 송수신 시의 패킷을 캡쳐하여 파일로 저장한 형태이다.
퍼징 규칙 데이터베이스(14)는 캡쳐된 패킷 데이터베이스(12)로부터 불러들여 생성한 패킷에 대해 퍼징변조를 적용하기 위한 퍼징 규칙 데이터셋을 보관한다.
퍼징 수행 클라이언트 프로그램부(16)는 클라이언트 컴퓨터(10)에 설치되고, 퍼징 감시자 프로그램부(40) 및 퍼징 대상 서버 프로그램부(50)는 서버 컴퓨터(30)에 설치된다.
퍼징 수행 클라이언트 프로그램부(16)는 캡쳐된 패킷 데이터베이스(12)로부터 캡쳐된 패킷을 가져와서 송신할 패킷 데이터를 생성한 후, 송신할 패킷 데이터에 적용시킬 적용 조건이 퍼징 규칙 데이터베이스(14)에 존재하는지에 따라 퍼징 규칙을 적용 또는 미적용하여 패킷을 퍼징 감시자 프로그램부(40)에게로 송신한다. 만약, 캡쳐된 패킷이 퍼징 수행 클라이언트 프로그램부(16)를 통하여 전송될 때에 규칙 적용 조건이 적용되지 않을 경우에는 패킷 데이터의 변경없이 저장된 내용 그대로 전송한다.
그에 따라, 퍼징 수행 클라이언트 프로그램부(16)는 패킷 생성부(18) 및 퍼징 규칙 적용부(20)를 포함한다고 볼 수 있다. 패킷 생성부(18)는 캡쳐된 패킷 데이터베이스(12)로부터 캡쳐된 패킷을 가져와서 송신할 패킷 데이터를 생성한다. 퍼징 규칙 적용부(20)는 패킷 생성부(18)에서 생성된 패킷 데이터에 대하여 퍼징 규칙 데이터베이스(14)에 적용조건이 존재하는지에 따라 퍼징 규칙을 적용 또는 미적용한다. 여기서, 퍼징 규칙 적용부(20)는 퍼징 규직을 적용하는 경우 패킷 생성부(18)에서 생성된 패킷을 전송 전에 해당 패킷의 단일 또는 복수의 비트 데이터를 변조하여 출력한다.
퍼징 감시자 프로그램부(40)는 서버 컴퓨터(30)에서 로컬프록시 형태로 동작하여 퍼징 대상 서버 프로그램부(50)와 패킷을 주고받으며 퍼징 대상 서버 프로그램부(50)에서의 이벤트 및 비정상종료를 감시한다.
그에 따라, 퍼징 감시자 프로그램부(40)는 상태 감시부(42), 이벤트 기록부(44), 및 분석부(46)를 포함한다고 볼 수 있다. 상태 감시부(42)는 퍼징 대상 서버 프로그램부(50)와 패킷을 주고받으며, 퍼징 대상 서버 프로그램부(50)에서의 이벤트 및 비정상 종료를 감시한다. 이벤트 기록부(44)는 상태 감시부(42)에 의해 감시된 이벤트를 기록한다. 분석부(46)는 상태 감시부(42)가 퍼징 대상 서버 프로그램부(50)에서의 프로그램의 비정상 종료 발생을 감지함에 따라 보안 취약점 검증을 위해 종료 상황(즉, 프로그램이 비정상으로 종료된 상황)을 분석한다.
퍼징 대상 서버 프로그램부(50)는 분석 대상이 되는 프로그램이라고 할 수 있는 퍼징 대상 서버 프로그램을 갖춘다. 퍼징 대상 서버 프로그램부(50)는 퍼징 감시자 프로그램부(40)로부터의 퍼징 수행 시작 명령에 의해 퍼징 대상 서버 프로그램을 실행한다.
도 1과 같은 구성의 경우, 초기에 클라이언트 컴퓨터(10)에서 퍼징 수행 클라이언트 프로그램부(10)가 실행되고, 서버 컴퓨터(30)에서는 퍼징 감시자 프로그램부(40)가 실행된다.
퍼징대상 서버 프로그램부(50)는 서버 컴퓨터(30)에서 퍼징 감시자 프로그램부(40)에 의해 실행된다.
도 1에서, 퍼징 수행은 퍼징 감시자 프로그램부(40)에 의해 시작되어 퍼징 대상 서버 프로그램부(50)를 실행한 후, 퍼징 수행 클라이언트 프로그램부(16)에 퍼징시작 명령을 전달한다.
그에 따라, 퍼징 수행 클라이언트 프로그램부(16)의 패킷 생성부(18)는 캡쳐된 패킷 데이터베이스(12)로부터 캡쳐된 패킷을 불러들여 패킷을 생성하고, 퍼징 규칙 적용부(20)는 생성된 패킷에 대한 퍼징 규칙을 퍼징 규칙 데이터베이스(14)로부터 검색하여 찾은 후에 찾은 퍼징 규칙을 해당 패킷에 적용하여 퍼징변조된 요청 패킷으로 만든다.
그 후, 퍼징 수행 클라이언트 프로그램부(16)는 퍼징변조된 요청 패킷을 퍼징 감시자 프로그램부(40)에게로 전송한다.
그에 따라, 퍼징 감시자 프로그램부(40)는 수신한 퍼징변조된 요청 패킷을 퍼징 대상 서버 프로그램부(50)에 전달하여 퍼징 대상 서버 프로그램부(50)로부터의 응답을 수신한 후에 그 응답을 퍼징 수행 클라이언트 프로그램부(16)에게 전달한다.
도 2는 도 1에 도시된 퍼징 규칙 데이터베이스(14)의 구성도이다.
퍼징 규칙 데이터베이스(14)에는 퍼징 규칙이 저장되고, 퍼징 규칙은 각각 규칙 적용 조건(13)과 적용 규칙(15)을 포함한다.
규칙 적용 조건(13)은 패킷 순번(13a) 또는 패킷 데이터 패턴(13b)을 포함한다. 규칙 적용 조건(13)은 패킷 순번(13a) 및 패킷 데이터 패턴(13b) 중에서 하나 이상의 조건을 명시하여 퍼징(fuzzing)을 위한 데이터 변조 시에 규칙을 적용할 지의 여부를 결정한다.
적용 규칙(15)은 패킷 데이터에 대하여 네트워크 프로토콜의 각 필드별로 특정 필드에 임의의 데이터를 삽입 또는 삭제 또는 변조할 수 있게 한다.
도 3은 본 발명의 실시예에 따른 네트워크 응용 프로그램 퍼징 시스템의 제어 흐름도이다.
먼저, 퍼징 수행 전에 클라이언트 컴퓨터(10)에는 퍼징 수행 클라이언트 프로그램부(16)가 설치되어 실행되고, 서버 컴퓨터(30)에는 퍼징 감시자 프로그램부(40)가 설치되어 로컬프록시 형태로 실행된다.
퍼징 수행 과정에서의 실행 순서는 다음과 같다.
S10에서, 서버 컴퓨터(30)내의 퍼징 감시자 프로그램부(40)는 퍼징 대상 서버 프로그램부(50)를 실행시킨다.
S12에서, 퍼징 감시자 프로그램부(40)는 클라이언트 컴퓨터(10)에서 동작 중인 퍼징 수행 클라이언트 프로그램부(16)에게로 퍼징 수행 시작명령을 전달한다. 이때, 퍼징 대상 서버 프로그램부(50)의 실행이 퍼징 수행 클라이언트 프로그램부(16)의 퍼징시작보다 우선되게 하여 요청 패킷이 유실되는 상황을 방지한다.
S14에서, 퍼징 시작 명령을 수신한 퍼징 수행 클라이언트 프로그램부(16)는 캡쳐된 패킷 데이터베이스(12)로부터 캡쳐된 패킷을 불러들여 패킷 생성부(18)에서 송신할 패킷을 생성한다.
S16에서, 퍼징 수행 클라이언트 프로그램부(16)는 퍼징 규칙 데이터베이스(14)로부터 적용할 규칙을 검색하여 생성한 패킷에 적용함으로써 퍼징변조된 요청 패킷을 생성한다.
S18에서, 퍼징 수행 클라이언트 프로그램부(16)는 퍼징변조된 요청 패킷을 서버 컴퓨터(30)의 퍼징 감시자 프로그램부(40)에 전달한다.
S20에서, 퍼징 감시자 프로그램부(40)는 수신한 퍼징변조된 요청 패킷을 퍼징 대상 서버 프로그램부(50)에 전달한다.
S22에서, 퍼징 대상 서버 프로그램부(50)는 수신한 퍼징변조된 요청 패킷에 대한 응답 패킷을 퍼징 감시자 프로그램부(40)에 전달한다.
S24에서, 퍼징 감시자 프로그램부(40)는 수신한 응답 패킷을 퍼징 수행 클라이언트 프로그램부(16)에 전달한다.
도 4는 도 1에 도시된 퍼징 수행 클라이언트 프로그램부(16)의 세부적인 동작 순서도이다.
퍼징 수행 클라이언트 프로그램부(16)는 캡쳐된 패킷으로부터 송신할 패킷을 불러와서 퍼징 규칙 데이터베이스(14)에 저장된 퍼징 규칙을 적용하여 퍼징변조된 요청 패킷을 서버 컴퓨터(30)의 퍼징 감시자 프로그램부(40)에 전달한다.
이와 같은 퍼징 수행 클라이언트 프로그램부(16)의 동작에 대해 보다 상세히 설명하면 다음의 동작 순서와 같다.
S30에서, 먼저 퍼징 수행 클라이언트 프로그램부(16)는 캡쳐된 패킷 데이터베이스(12)로부터 송신할 패킷을 불러온다.
S32에서, 퍼징 수행 클라이언트 프로그램부(16)는 패킷 생성부(18)를 통해 송신할 패킷 데이터를 생성한다.
이후, S34에서, 퍼징 수행 클라이언트 프로그램부(16)는 생성한 패킷 데이터의 내용에서 패킷 순번과 패킷 내용에 대한 패턴 매칭으로 퍼징 규칙 데이터베이스(14)에 적용할 퍼징 규칙이 존재하는지를 검색한다.
S36에서, 적용할 퍼징 규칙이 존재하는 경우 퍼징 수행 클라이언트 프로그램부(16)는 퍼징 규칙 적용부(20)를 통해 패킷에 퍼징 규칙을 적용한다. 패킷에 퍼징 규칙이 적용된 것을 퍼징변조된 요청 패킷이라고 할 수 있다.
이후, S38에서, 퍼징 수행 클라이언트 프로그램부(16)는 퍼징변조된 요청 패킷을 서버 컴퓨터(30)의 퍼징 감시자 프로그램부(40)에게로 송신한다.
만약, 캡쳐된 패킷이 퍼징 수행 클라이언트 프로그램부(16)을 통하여 전송될 때에 규칙 적용 조건이 적용되지 않을 경우(S34에서 "No")에는 패킷 데이터의 변경없이 저장된 내용 그대로 전송한다.
도 5는 도 1에 도시된 퍼징 감시자 프로그램부(40)의 세부적인 동작 순서도이다.
먼저, S50에서, 퍼징 감시자 프로그램부(40)는 퍼징 대상 서버 프로그램부(50)를 실행시킨다. 이에 의해, 퍼징 대상 서버 프로그램부(50)는 퍼징 대상 서버 프로그램을 시작한다.
S52에서, 퍼징 감시자 프로그램부(40)는 퍼징 수행 클라이언트 프로그램부(16)에 네트워크 요청으로 퍼징 시작 명령을 전달한다. 그에 따라, 퍼징 수행 클라이언트 프로그램부(16)는 퍼징 수행 클라이언트 프로그램을 시작한다.
S54에서, 퍼징 감시자 프로그램부(40)는 퍼징 수행 클라이언트 프로그램부(16)으로부터 패킷(즉, 퍼징변조된 요청 패킷)을 수신한다.
S56에서, 퍼징 감시자 프로그램부(40)는 퍼징 수행 클라이언트 프로그램부(16)로부터 수신한 패킷(즉, 퍼징변조된 요청 패킷)을 퍼징 대상 서버 프로그램부(50)에 송신한다.
그에 따라, S58에서, 퍼징 대상 서버 프로그램부(50)의 실행중인 퍼징 대상 서버 프로그램의 이벤트를 감시한다.
S58에서의 감시 결과, 퍼징 대상 서버 프로그램의 비정상 종료가 감지되면 이벤트 기록 및 분석을 수행(S60)한 후에, 상술한 단계 S50으로 복귀한다.
한편, S58에서의 감시 결과, 비정상 종료가 아닌 기타 이벤트가 발생하면 이벤트를 기록(S62)한 후에, 상술한 단계 S54로 복귀한다.
이상에서와 같이 도면과 명세서에서 최적의 실시예가 개시되었다. 여기서 특정한 용어들이 사용되었으나, 이는 단지 본 발명을 설명하기 위한 목적에서 사용된 것이지 의미 한정이나 특허청구범위에 기재된 본 발명의 범위를 제한하기 위하여 사용된 것은 아니다. 그러므로, 본 기술 분야의 통상의 지식을 가진자라면 이로부터 다양한 변형 및 균등한 타 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호범위는 첨부된 특허청구범위의 기술적 사상에 의해 정해져야 할 것이다.
10 : 클라이언트 컴퓨터 12 : 캡쳐된 패킷 데이터베이스
14 : 퍼징 규칙 데이터베이스
16 : 퍼징 수행 클라이언트 프로그램부
18 : 패킷 생성부 20 : 퍼징 규칙 적용부
30 : 서버 컴퓨터 40 : 퍼징 감시자 프로그램부
42 : 상태 감시부 44 : 이벤트 기록부
50 : 퍼징 대상 서버 프로그램부

Claims (17)

  1. 퍼징 대상이 되는 프로그램부에서 통신하는 내용중에서 캡쳐된 패킷으로부터 송신할 패킷을 생성하고, 상기 송신할 패킷에 퍼징 규칙을 적용하여 출력하는 퍼징 수행 클라이언트 프로그램부; 및
    상기 퍼징 수행 클라이언트 프로그램부로부터의 패킷을 상기 퍼징 대상이 되는 프로그램부에게 제공하고 상기 퍼징 대상이 되는 프로그램부의 이벤트 및 비정상 종료를 감시하여 비정상 종료 발생시 보안 취약점 검증을 위해 종료 상황을 분석하는 퍼징 감시자 프로그램부;를 포함하고,
    상기 퍼징 수행 클라이언트 프로그램부는 상기 퍼징 대상이 되는 프로그램부에서 통신하는 내용중에서 캡쳐된 패킷을 저장하는 캡쳐된 패킷 데이터베이스; 상기 캡쳐된 패킷 데이터베이스에 저장된 캡쳐된 패킷을 불러서 송신할 패킷을 생성하는 패킷 생성부; 상기 패킷 생성부에 의해 생성된 패킷에 대해 퍼징변조를 적용하기 위한 퍼징 규칙을 보관하는 퍼징 규칙 데이터베이스; 및 상기 패킷 생성부에서 생성된 패킷에 대하여 상기 퍼징 규칙 데이터베이스에 적용 조건이 존재하는지에 따라 상기 퍼징 규칙을 적용 또는 미적용하여 출력하는 퍼징 규칙 적용부;를 포함하고,
    상기 퍼징 규칙 적용부는 상기 퍼징 규칙을 적용하는 경우 상기 패킷 생성부에서 생성된 패킷을 출력하기 전에 해당 패킷의 단일 또는 복수의 비트 데이터를 변조하여 출력하고, 상기 퍼징 규칙을 적용하지 않는 경우 상기 패킷 생성부에서 생성된 패킷을 변경없이 그대로 출력하는 것을 특징으로 하는 네트워크 응용 프로그램 퍼징 시스템.
  2. 삭제
  3. 청구항 1에 있어서,
    상기 퍼징 규칙 데이터베이스의 퍼징 규칙은 퍼징을 위한 데이터 변조 시에 규칙을 적용할 지의 여부를 결정하는 규칙 적용 조건, 및 상기 생성된 패킷에 대하여 네트워크 프로토콜의 각 필드별로 특정 필드에 임의의 데이터를 삽입 또는 삭제 또는 변조할 수 있게 하는 적용 규칙을 포함하는 것을 특징으로 하는 네트워크 응용 프로그램 퍼징 시스템.
  4. 청구항 3에 있어서,
    상기 규칙 적용 조건은 패킷 순번 및 패킷 데이터 패턴중에서 하나 이상을 포함하는 것을 특징으로 하는 네트워크 응용 프로그램 퍼징 시스템.
  5. 삭제
  6. 삭제
  7. 삭제
  8. 청구항 1에 있어서,
    상기 퍼징 감시자 프로그램부는,
    상기 퍼징 대상이 되는 프로그램부에서의 이벤트 및 비정상 종료를 감시하는 상태 감시부;
    상기 상태 감시부에 의해 감시된 이벤트를 기록하는 이벤트 기록부; 및
    상기 상태 감시부에서 상기 퍼징 대상이 되는 프로그램부의 비정상 종료 발생을 감지함에 따라 보안 취약점 검증을 위해 비정상 종료 상황을 분석하는 분석부;를 포함하는 것을 특징으로 하는 네트워크 응용 프로그램 퍼징 시스템.
  9. 청구항 1에 있어서,
    상기 퍼징 수행 클라이언트 프로그램부는 상기 퍼징 대상이 되는 프로그램부가 실행된 이후에 퍼징 시작을 수행하는 것을 특징으로 하는 네트워크 응용 프로그램 퍼징 시스템.
  10. 청구항 1에 있어서,
    상기 퍼징 수행 클라이언트 프로그램부는 클라이언트 컴퓨터에 설치되는 것을 특징으로 하는 네트워크 응용 프로그램 퍼징 시스템.
  11. 청구항 1에 있어서,
    상기 퍼징 감시자 프로그램부는 서버 컴퓨터에 설치되어 로컬 프록시 형태로 동작하는 것을 특징으로 하는 네트워크 응용 프로그램 퍼징 시스템.
  12. 퍼징 수행 클라이언트 프로그램부가, 퍼징 대상이 되는 프로그램부에서 통신하는 내용중에서 캡쳐된 패킷으로부터 송신할 패킷을 생성하는 단계;
    상기 퍼징 수행 클라이언트 프로그램부가, 상기 송신할 패킷에 대하여 적용 조건이 존재하는지에 따라 상기 퍼징 규칙을 적용 또는 미적용하여 출력하는 단계;
    퍼징 감시자 프로그램부가, 상기 퍼징 수행 클라이언트 프로그램부로부터의 패킷을 상기 퍼징 대상이 되는 프로그램부에게 제공하고 상기 퍼징 대상이 되는 프로그램부의 이벤트 및 비정상 종료를 감시하는 단계; 및
    상기 퍼징 감시자 프로그램부가, 상기 퍼징 대상이 되는 프로그램부의 비정상 종료를 발견함에 따라 보안 취약점 검증을 위해 종료 상황을 분석하는 단계;를 포함하고,
    상기 송신할 패킷에 대하여 적용 조건이 존재하는지에 따라 상기 퍼징 규칙을 적용 또는 미적용하여 출력하는 단계는, 상기 퍼징 규칙을 적용하는 경우 상기 송신할 패킷을 출력하기 전에 해당 패킷의 단일 또는 복수의 비트 데이터를 변조하여 출력하고, 상기 퍼징 규칙을 적용하지 않는 경우 상기 송신할 패킷을 변경없이 그대로 출력하는 것을 특징으로 하는 네트워크 응용 프로그램 퍼징 방법.
  13. 청구항 12에 있어서,
    상기 퍼징 규칙은 퍼징을 위한 데이터 변조 시에 규칙을 적용할 지의 여부를 결정하는 규칙 적용 조건, 및 상기 생성된 패킷에 대하여 네트워크 프로토콜의 각 필드별로 특정 필드에 임의의 데이터를 삽입 또는 삭제 또는 변조할 수 있게 하는 적용 규칙을 포함하는 것을 특징으로 하는 네트워크 응용 프로그램 퍼징 방법.
  14. 청구항 13에 있어서,
    상기 규칙 적용 조건은 패킷 순번 및 패킷 데이터 패턴중에서 하나 이상을 포함하는 것을 특징으로 하는 네트워크 응용 프로그램 퍼징 방법.
  15. 삭제
  16. 삭제
  17. 삭제
KR1020140065519A 2014-05-30 2014-05-30 네트워크 응용 프로그램 퍼징 시스템 및 방법 KR101525398B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020140065519A KR101525398B1 (ko) 2014-05-30 2014-05-30 네트워크 응용 프로그램 퍼징 시스템 및 방법
US14/561,730 US9654490B2 (en) 2014-05-30 2014-12-05 System and method for fuzzing network application program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020140065519A KR101525398B1 (ko) 2014-05-30 2014-05-30 네트워크 응용 프로그램 퍼징 시스템 및 방법

Publications (1)

Publication Number Publication Date
KR101525398B1 true KR101525398B1 (ko) 2015-06-09

Family

ID=53503910

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020140065519A KR101525398B1 (ko) 2014-05-30 2014-05-30 네트워크 응용 프로그램 퍼징 시스템 및 방법

Country Status (2)

Country Link
US (1) US9654490B2 (ko)
KR (1) KR101525398B1 (ko)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018139708A1 (ko) * 2017-01-24 2018-08-02 엘지전자 주식회사 차량용 전자 디바이스 해킹 테스트 장치
KR20190051301A (ko) 2017-11-06 2019-05-15 한국전자통신연구원 퍼징 수행 시스템, 퍼징용 실행 흐름 정보 추출 장치 및 방법
KR20190102427A (ko) 2018-02-26 2019-09-04 주식회사 베스티언 Can 기기의 보안/품질을 검증하기 위한 퍼징 시스템 및 그 퍼징 방법
KR20210051794A (ko) 2019-10-31 2021-05-10 한국전자통신연구원 임베디드 기기의 퍼즈 테스팅 자동화 방법 및 이를 위한 장치

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10003466B1 (en) * 2015-09-15 2018-06-19 Amazon Technologies, Inc. Network traffic with credential signatures
US10152596B2 (en) * 2016-01-19 2018-12-11 International Business Machines Corporation Detecting anomalous events through runtime verification of software execution using a behavioral model
US11663338B2 (en) * 2019-05-14 2023-05-30 University Of Florida Research Foundation, Incorporated Automated security analysis of baseband firmware
KR20210067745A (ko) * 2019-11-29 2021-06-08 한국전자통신연구원 단방향 프로토콜 소프트웨어 퍼징을 위한 퍼징 데이터 전송 장치 및 방법
US11398969B2 (en) * 2020-01-22 2022-07-26 Cisco Technology, Inc. Network conversation testing of flow level operations
KR102580364B1 (ko) * 2020-11-24 2023-09-20 한국전자통신연구원 스마트 네트워크 퍼징의 자동화를 위한 퍼징 전처리 장치 및 방법
KR102620821B1 (ko) * 2021-07-21 2024-01-04 한국과학기술원 분산 소프트웨어 정의 네트워크 제어 평면의 보안을 위한 프로토콜 상태 퍼징 방법 및 그 시스템
CN114189382B (zh) * 2021-12-10 2023-03-07 中国电子科技集团公司第十五研究所 一种基于模糊测试的网络协议自动化分析漏洞挖掘装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090054532A (ko) * 2007-11-27 2009-06-01 인하대학교 산학협력단 퍼지로직기반 그리드데이터 전송제어장치 및 전송제어방법
KR20090080741A (ko) * 2008-01-22 2009-07-27 성균관대학교산학협력단 퍼지 로직 기반 비정상 트래픽 제어 시스템 및 그 방법

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6925405B2 (en) * 2002-01-09 2005-08-02 International Business Machines Corporation Adaptive test program generation
US7117484B2 (en) * 2002-04-16 2006-10-03 International Business Machines Corporation Recursive use of model based test generation for middleware validation
JP4426764B2 (ja) * 2003-01-21 2010-03-03 株式会社日立製作所 コンパイラテストプログラムの自動生成方法
US20070203973A1 (en) * 2006-02-28 2007-08-30 Microsoft Corporation Fuzzing Requests And Responses Using A Proxy
US7594142B1 (en) * 2006-06-30 2009-09-22 Microsoft Corporation Architecture for automated detection and analysis of security issues
KR100875997B1 (ko) 2006-11-13 2008-12-24 한국전자통신연구원 윈도우 소켓 응용프로그램 인터페이스 후킹을 이용한네트워크 퍼징 방법
CA2679967C (en) * 2007-03-06 2017-07-25 Core Sdi Incorporated System and method for providing application penetration testing
US7743281B2 (en) * 2007-04-13 2010-06-22 Microsoft Corporation Distributed file fuzzing
US7953674B2 (en) * 2007-05-17 2011-05-31 Microsoft Corporation Fuzzing system and method for exhaustive security fuzzing within an SQL server
US7926114B2 (en) * 2007-05-31 2011-04-12 Microsoft Corporation Testing software applications with schema-based fuzzing
US8336102B2 (en) * 2007-06-01 2012-12-18 Microsoft Corporation Delivering malformed data for fuzz testing to software applications
US8417993B2 (en) * 2007-06-21 2013-04-09 Microsoft Corporation Fuzz testing and attack-surface scoping for URI handlers and pluggable protocols
US8136095B2 (en) * 2007-12-19 2012-03-13 Microsoft Corporation Relations in fuzzing data
US8286133B2 (en) * 2007-12-19 2012-10-09 Microsoft Corporation Fuzzing encoded data
US20090228871A1 (en) * 2008-03-10 2009-09-10 Microsoft Corporation Managing generation of security tests
US8578344B2 (en) * 2010-06-17 2013-11-05 Microsoft Corporation Incremental compositional dynamic test generation
US8862940B2 (en) * 2012-02-14 2014-10-14 Microsoft Corporation Integrated fuzzing
US8819834B2 (en) * 2012-06-19 2014-08-26 Ixia Methods, systems, and computer readable media for automatically generating a fuzzer that implements functional and fuzz testing and testing a network device using the fuzzer

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20090054532A (ko) * 2007-11-27 2009-06-01 인하대학교 산학협력단 퍼지로직기반 그리드데이터 전송제어장치 및 전송제어방법
KR20090080741A (ko) * 2008-01-22 2009-07-27 성균관대학교산학협력단 퍼지 로직 기반 비정상 트래픽 제어 시스템 및 그 방법

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018139708A1 (ko) * 2017-01-24 2018-08-02 엘지전자 주식회사 차량용 전자 디바이스 해킹 테스트 장치
US11284262B2 (en) 2017-01-24 2022-03-22 LG Electronics Inc. and Korea University Research and Business Foundation Apparatus for testing hacking of vehicle electronic device
KR20190051301A (ko) 2017-11-06 2019-05-15 한국전자통신연구원 퍼징 수행 시스템, 퍼징용 실행 흐름 정보 추출 장치 및 방법
KR20190102427A (ko) 2018-02-26 2019-09-04 주식회사 베스티언 Can 기기의 보안/품질을 검증하기 위한 퍼징 시스템 및 그 퍼징 방법
KR20210051794A (ko) 2019-10-31 2021-05-10 한국전자통신연구원 임베디드 기기의 퍼즈 테스팅 자동화 방법 및 이를 위한 장치

Also Published As

Publication number Publication date
US9654490B2 (en) 2017-05-16
US20150350235A1 (en) 2015-12-03

Similar Documents

Publication Publication Date Title
KR101525398B1 (ko) 네트워크 응용 프로그램 퍼징 시스템 및 방법
Tsankov et al. SECFUZZ: Fuzz-testing security protocols
US8006136B2 (en) Automatic grammar based fault detection and isolation
CN107710683B (zh) 弹性即服务
US9639456B2 (en) Network-based testing service and method of testing in a network
US11316748B2 (en) Method and system for generating and managing virtual industrial devices in an industrial network
US20230269266A1 (en) System and method for emulating a multi-stage attack on a node within a target network
Ray et al. Bluetooth low energy devices security testing framework
KR101320680B1 (ko) 소프트웨어의 무결성 검사 장치 및 방법
US10896251B2 (en) Method for authenticating software
KR101458930B1 (ko) 멀티 노드를 이용하는 스마트 단말 퍼징 장치 및 그 방법
Sachidananda et al. PIT: a probe into internet of things by comprehensive security analysis
US7467068B2 (en) Method and apparatus for detecting dependability vulnerabilities
CN117544960B (zh) 一种基于生成的自动化Wi-Fi协议模糊测试方法
Jiang et al. A Survey of Network Protocol Fuzzing: Model, Techniques and Directions
Maule Complex quality of service lifecycle assessment methodology
Tilaro Assessment and testing of industrial devices robustness against cyber security attacks
Thulin Evaluation of the applicability of security testing techniques in continuous integration environments
Heikkilä Optimizing continuous integration testing using dynamic source code analysis
Bagnato et al. Practical experience gained from passive testing of web based systems
CN117453532A (zh) 软件测试方法及计算设备
Mann et al. Correlating user activity with system data for fast detection and diagnosis of system outages
CN115913697A (zh) 一种通用嵌入式系统漏洞检测方法
Mann et al. iTrack: Correlating user activity with system data
CN115720150A (zh) 基于rasp的waf联动防护方法、装置、设备及介质

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20180406

Year of fee payment: 4