KR102011603B1 - 탐지 규칙 검증을 위한 패킷 생성 방법 및 장치 - Google Patents

탐지 규칙 검증을 위한 패킷 생성 방법 및 장치 Download PDF

Info

Publication number
KR102011603B1
KR102011603B1 KR1020180086038A KR20180086038A KR102011603B1 KR 102011603 B1 KR102011603 B1 KR 102011603B1 KR 1020180086038 A KR1020180086038 A KR 1020180086038A KR 20180086038 A KR20180086038 A KR 20180086038A KR 102011603 B1 KR102011603 B1 KR 102011603B1
Authority
KR
South Korea
Prior art keywords
detection rule
packet
detection
option
payload
Prior art date
Application number
KR1020180086038A
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 KR1020180086038A priority Critical patent/KR102011603B1/ko
Application granted granted Critical
Publication of KR102011603B1 publication Critical patent/KR102011603B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/12Network monitoring probes
    • H04L61/2007
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/50Address allocation
    • H04L61/5007Internet protocol [IP] addresses
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

본 발명은 네트워크 환경에서 침입 탐지를 위한 탐지 규칙을 검증하는데 사용되는 패킷 생성 방법 및 장치에 관한 것이다. 이를 위한 본 발명의 네트워크 침입 탐지 기법에서 이용되는 탐지 규칙들을 검증하기 위한 패킷 생성 방법은 데이터베이스에서 탐지 규칙을 호출하는 단계; 호출된 탐지 규칙 중 정책 헤더에 대응하는 탐지 규칙에 따라, 헤더 데이터를 무작위로 생성하는 단계; 호출된 탐지 규칙 중 정책 옵션에 대응하는 탐지 규칙에 따라, 페이로드를 무작위로 생성하는 단계; 및 생성된 헤더 데이터 및 페이로드를 결합하여 패킷을 생성하는 단계를 포함하는 것을 특징으로 한다.

Description

탐지 규칙 검증을 위한 패킷 생성 방법 및 장치{PACKET GENERATING METHOD AND APPARATUS FOR VERIFYING DETECTION RULES}
본 발명은 탐지 규칙 검증을 위한 패킷 생성 방법 및 장치에 관한 것이고, 보다 상세하게 네트워크 환경에서 침입 탐지를 위한 탐지 규칙을 검증하는데 사용되는 패킷 생성 방법 및 장치에 관한 것이다.
최근, P2P(Peer-to-Peer) 응용서비스, 이메일 등을 통해 비정상 트래픽을 발생시키는 웜, 바이러스, 백도어, 랜섬웨어 등이 인터넷에 다량으로 유포되고 있으며, 이들의 공격기법 또한 고도화되고 다양화되어 가는 추세이다. 이들 공격기법은 정보통신망의 안전성 및 신뢰성을 위협하고 있어서, 공격에 대한 발생 징후를 사전에 탐지하여 대응할 수 있는 방안의 필요성이 대두되고 있다.
정보통신망의 이상 징후를 탐지하는 기법 중에는 탐지 규칙(예를 들어, 정책) 기반의 네트워크 침입 탐지 기법이 있다. 여기서, 탐지 규칙은 단순한 문자열 패턴부터 문자열의 규칙을 정의한 정규표현식, 그리고 서비스의 특성을 반영하여 페이로드 내 문자열의 검출 양상을 반영한 스노트(Snort) 또는 야라(Yara) 등으로 다양하게 구성될 수 있다. 탐지 규칙 기반의 네트워크 침입 탐지 기법은 네트워크를 통해 유입되는 패킷을 수집하고, 탐지 규칙에 해당하는 패턴이 패킷에 존재하는지 확인함으로써 이루어진다.
일반적으로 네트워크 침입 탐지 시스템은 수 개 내지 수천 개의 탐지 규칙을 가지고 있는데, 이들 탐지 규칙 중에는 신뢰성이 떨어지는(예를 들어, 비정상 패킷을 탐지하지 못하는) 규칙이 존재할 수 있다. 따라서, 탐지 규칙의 검증이 중요하며, 탐지 규칙의 유효성을 효율적으로 검증할 수 있는 방법이 요구된다.
한국등록특허 제0937217호
본 발명은 네트워크 침입탐지 시스템에서 탐지 규칙의 유효성을 효율적으로 검증할 수 있고, 탐지 규칙의 신뢰도를 높일 수 있는 탐지 규칙 검증을 위한 패킷 생성 방법 및 장치를 제공하는데 그 목적이 있다.
상기와 같은 과제를 해결하기 위한 본 발명의 네트워크 침입 탐지 기법에서 이용되는 탐지 규칙들을 검증하기 위한 패킷 생성 방법은 데이터베이스에서 탐지 규칙을 호출하는 단계; 호출된 탐지 규칙 중 정책 헤더에 대응하는 탐지 규칙에 따라, 헤더 데이터를 무작위로 생성하는 단계; 호출된 탐지 규칙 중 정책 옵션에 대응하는 탐지 규칙에 따라, 페이로드를 무작위로 생성하는 단계; 및 생성된 헤더 데이터 및 페이로드를 결합하여 패킷을 생성하는 단계를 포함하는 것을 특징으로 한다.
또한, 헤더 데이터를 무작위로 생성하는 단계는 랜덤 시드(random seed)를 통해 패킷의 헤더 데이터를 생성하는 단계이고, 페이로드를 무작위로 생성하는 단계는, 랜덤 시드를 통해 패킷의 페이로드를 생성하는 단계일 수 있다. 또한, 헤더 데이터를 무작위로 생성하는 단계는 탐지 규칙의 정책 헤더를 확인하는 단계; 탐지 규칙에서 특정 IP 주소가 지정되지 않은 경우 지정되지 않은 IP 주소를 무작위로 생성하는 단계와 탐지 규칙에서 포트 번호가 지정되지 않은 경우 지정되지 않은 포트 번호를 무작위로 생성하는 단계 중 적어도 하나의 단계를 포함할 수 있다.
또한, 페이로드를 무작위로 생성하는 단계는 탐지 규칙의 정책 옵션을 확인하는 단계; 탐지 규칙에서 정규표현식에 대한 옵션 및 문자열 검색에 대한 옵션 중 적어도 하나의 옵션의 존재 여부를 확인하는 단계; 및 정규표현식에 대한 옵션 및 문자열 검색에 대한 옵션 중 존재하는 적어도 하나의 옵션을 고려하여 문자열을 무작위로 생성하는 단계를 포함할 수 있다.
또한, 페이로드를 무작위로 생성하는 단계는 포트 번호가 1024 미만인 경우 문자열을 포트 번호에 대응하는 서비스 템플릿에 적용하는 단계를 더 포함하고, 서비스 템플릿은 잘 알려진(Well-Known) 포트의 페이로드 정보를 템플릿화한 것을 나타낼 수 있다.
또한, 패킷 생성 방법은 생성된 패킷이 호출된 탐지 규칙에 대응되는 지 확인하는 단계; 및 생성된 패킷이 호출된 탐지 규칙에 대응되지 않고, 실패 횟수가 사전 설정된 임계 횟수를 초과하는 경우, 호출된 탐지 규칙 및 생성된 패킷 중 적어도 하나에 대한 실패 정보를 저장하는 단계를 더 포함할 수 있고, 실패 횟수는 생성된 패킷이 호출된 탐지 규칙에 대응되지 않은 횟수를 나타낸다.
또한, 패킷 생성 방법은 하나의 탐지 규칙 단위로 반복 수행될 수 있다.
상기와 같은 과제를 해결하기 위한 본 발명의 일 실시예에 따른 패킷 생성 장치는 상술한 방법을 수행하는 제어부를 포함할 수 있다.
본 발명의 일 실시예에 따른 패킷 생성 방법 및 장치는 네트워크 침입 탐지 시스템에서 페이로드를 구성하는 탐지 규칙의 옵션 정보를 역분석하는 모듈을 제공함으로써 탐지 규칙의 유효성을 효율적으로 검증할 수 있다.
또한, 본 발명의 일 실시예에 따른 패킷 생성 방법 및 장치는 탐지 규칙에 대응하는 범위 내에서 헤더 데이터와 페이로드를 무작위로 생성할 수 있고, 이는 동일한 탐지 규칙에 대해 여러 경우의 수를 적용한 한계 테스트에도 적용 가능하다.
또한, 본 발명의 일 실시예에 따른 패킷 생성 방법 및 장치는 잘 알려진 포트를 이용하여 서비스 템플릿을 적용함으로써 실제 네트워크 침입 탐지 상황과 유사한 환경에서 탐지 규칙의 검증이 가능하다.
도 1은 본 발명의 일 실시예에 따른 탐지 규칙 검증을 위한 패킷 생성 장치에 대한 개념도이다.
도 2는 본 발명의 일 실시예에 따른 패킷 생성 장치에 대한 블록도이다.
도 3은 본 발명의 일 실시예에 따른 패킷 생성부에 대한 블록도이다.
도 4는 본 발명의 일 실시예에 따른 탐지 규칙 검증을 위한 패킷 생성 방법에 대한 흐름도이다.
도 5는 본 발명의 일 실시예에 따른 패킷을 생성하는 단계에 대한 흐름도이다.
도 6은 본 발명의 일 실시예에 따른 헤더 데이터를 생성하는 단계에 대한 흐름도이다.
도 7은 본 발명의 일 실시예에 따른 페이로드를 생성하는 단계에 대한 흐름도이다.
본 발명을 첨부된 도면을 참조하여 상세히 설명하면 다음과 같다. 여기서, 반복되는 설명, 본 발명의 요지를 불필요하게 흐릴 수 있는 공지 기능, 및 구성에 대한 상세한 설명은 생략한다. 본 발명의 실시형태는 당 업계에서 평균적인 지식을 가진 자에게 본 발명을 보다 완전하게 설명하기 위해서 제공되는 것이다. 따라서, 도면에서의 요소들의 형상 및 크기 등은 보다 명확한 설명을 위해 과장될 수 있다.
도 1은 본 발명의 일 실시예에 따른 패킷 생성 장치(100)에 대한 개념도이다. 일 실시예에서, 패킷 생성 장치(100)는 복수의 클라이언트(1a, 1b), 서버(2) 및 보안 장치(10)를 포함하는 네트워크 침입탐지 시스템에 적용될 수 있다. 패킷 생성 장치(100)는 보안 장치(10)의 내부에 장착되거나 소프트웨어의 형태로 설치될 수 있고, 별도의 장치 형태로 보안 장치(10)에 직접 연결될 수도 있다. 본 발명의 일 실시예에 따른 패킷 생성 장치(100)의 이해를 돕기 위해, 네트워크 침입탐지 시스템의 개념을 먼저 설명한다. 또한, 도 1에서 클라이언트의 개수는 2개인 것으로 도시되었으나, 이는 예시일 뿐이고 실제 환경에 따라 다양한 수의 클라이언트들이 포함될 수 있다.
보안 장치(10)는 복수의 클라이언트(1a, 1b)로부터 송신된 패킷들을 수신하고, 이를 분석함으로써 비정상 트래픽(또는 패킷)을 탐지하는 기능을 한다. 보안 장치(10)는 데이터베이스(20)에 저장된 탐지 규칙 리스트를 이용하여, 복수의 클라이언트(1a, 1b)로부터 송신된 패킷(또는 패킷에 포함된 페이로드)들을 분석하고 비정상 패킷을 탐지할 수 있다
예를 들어, 복수의 클라이언트(1a, 1b) 중 제1 클라이언트(1a)가 비정상 패킷을 송신하는 상황을 가정한다. 보안 장치(10)는 복수의 클라이언트(1a, 1b)가 송신한 패킷들을 분석함으로써 탐지 규칙 리스트에 저장된 복수의 탐지 규칙(예를 들어, 시그니처)에 대응하는 패킷이 있는지 판단할 수 있다. 판단 결과 탐지 규칙 리스트에 저장된 탐지 규칙들에 대응하는 패킷들이 존재하지 않으면, 보안 장치(10)는 수신한 패킷들을 서버(2)로 전달한다. 판단 결과, 탐지 규칙 리스트에 저장된 탐지 규칙들에 대응하는 패킷이 존재하는 경우, 보안 장치(10)는 탐지 규칙에 대응하는 패킷을 차단하고, 차단한 패킷을 제외한 나머지 패킷(예를 들어, 정상 패킷)들만 서버(2)로 전달할 수 있다. 따라서, 보안 장치(10)는 제1 클라이언트(1a)에서 송신한 비정상 패킷들을 차단하고, 정상 패킷들만을 서버(2)에 전달할 수 있다.
탐지 규칙을 기반으로 한 네트워크 침입 탐지 방법은 공격 방식으로 파악하고 있는 탐지 규칙을 패킷에 적용시킴으로써 이루어지므로 탐지율이 높은 장점이 있다. 탐지 규칙은 보안 장치(10)에 의해 자동으로 생성되거나 관리자에 의해 생성될 수 있다. 즉, 탐지 규칙은 보안 장치(10)의 오류로 인해, 또는 관리자의 실수로 인해 잘못 생성되어, 올바르지 않은 형식을 갖거나 비정상 패킷이 유입되더라도 이를 정상적으로 탐지해내지 못하는 상황도 있을 수 있다. 따라서, 네트워크 침입 탐지 시스템에서 각 탐지 규칙의 유효성의 검증이 필수적이고, 탐지 규칙의 유효성 검증을 위해서는 탐지 규칙에 대응하는 패킷이 필요하다. 다만, 탐지 규칙은 수십 개 내지 수천 개가 데이터베이스(20)에 저장되고, 수십 내지 수천 개의 탐지 규칙에 대응하는 패킷들을 관리자가 직접 생성하는 것은 현실적으로 쉽지 않다.
본 발명의 일 실시예에 따른 패킷 생성 장치(100)는 상술한 문제점을 해소하기 위한 것으로, 데이터베이스(20)에 저장된 탐지 규칙들에 대응하는 패킷들을 자동으로 생성할 수 있다. 본 발명의 일 실시예에 따른 패킷 장치(100)의 동작은 도 2를 참조로 상세히 설명된다.
도 2는 본 발명의 일 실시예에 따른 패킷 생성 장치(100)에 대한 블록도이다. 본 발명의 일 실시예에 따른 패킷 생성 장치(100)는 정책 호출부(110), 패킷 생성부(120), 검증부(130), 로그 생성부(140) 및 판단부(150)를 포함할 수 있다. 여기서, 패킷 생성 장치(100)에 포함된 각 구성은 본 발명의 이해를 돕기 위해 기능별로 구분한 것이고, 패킷 생성 장치(100)는 하나의 제어부 또는 소프트웨어의 형태로 구현될 수 있다. 또한, 패킷 생성 장치(100)는 단일 코어 또는 다중 코어로 이루어진 CPU, MPU 등과 같은 처리 장치를 통해 구현될 수도 있다.
데이터베이스(20)는 탐지 규칙 리스트를 저장한다. 탐지 규칙 리스트는 복수의 탐지 규칙들을 포함하며, 데이터베이스(20)는 수 개 내지 수천 개(또는 그 이상)의 탐지 규칙들을 저장할 수 있다. 탐지 규칙은 공격 패턴에 대해 보안 장치(10)가 판독 가능한 표현 방식(예를 들어, 스노트, 야라 등)으로 정의될 수 있고, 공격 패턴은 프로토콜, IP 주소, 포트 번호, 문자열, 문자열의 길이, 서비스 템플릿, 기타 패턴 등 중 적어도 하나에 대한 것일 수 있다. 또한, 탐지 규칙은 정규표현식 문법을 이용하거나 이용하지 않는 정책 또는 시그니처로 구성될 수 있다. 즉, 본 발명은 스노트, 야라는 물론, 다양한 문법, 라이브러리로 정의된 탐지 규칙들에 적용될 수 있다.
또한, 데이터베이스(20)에는 복수의 서비스 템플릿들이 저장된다. 여기서, 서비스 템플릿은 잘 알려진(Well-Known) 포트(예를 들어, 포트 번호가 1024 미만인 포트)에 대한 페이로드를 템플릿화한 정보를 나타낸다.
정규표현식은 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용되는 형식 언어로서, 다양한 검색 엔진, 문서 편집기 등을 포함하는 대부분의 어플리케이션 상에서 주로 텍스트 패턴 매칭에 활용되고 있다. 또한, 스노트는 IP 주소, 포트 번호, 프로토콜 및 기타 옵션으로 스노트 옵션을 구성하여 패턴 매칭을 수행함으로써 네트워크 침입을 탐지하는 오픈소스 라이브러리이다. 스노트 정책은 두 개의 부분(이하, 정책 헤더 및 정책 옵션)으로 구분되는데, 정책 헤더는 액션(Action), 프로토콜, 송신자(Source) IP 주소, 송신자 포트 번호, 수신자 IP 주소, 수신자 포트 번호의 순서로 구성된다. 정책 옵션은 페이로드 부분을 검사하기 위한 옵션들과 탐지 규칙의 이름 또는 식별자 등을 정의할 수 있는 옵션들을 포함한다. 스노트 정책은 'pcre' 옵션을 통하여 정규표현식을 지원하며 'content' 옵션으로 고정 문자열 매칭을 지원한다. 또한 'depth', 'distance', 'offset' 등의 옵션으로 문자열이 존재하는 위치를 지정하여 매칭하도록 한다. 스노트를 예로 들면, 탐지 규칙은 여러 조건(옵션)의 조합으로 표현될 수 있다.
도 2에서, 제1 탐지 규칙(dr1) 내지 제n 탐지 규칙(drn)은 스노트 정책의 형태를 갖는 것으로 도시되었으나 이는 예시일 뿐이고 각 탐지 규칙은 스노트 정책은 물론 공격 패턴을 나타내는 다양한 형식으로 정의될 수 있다. 또한, 도 2에서 제1 탐지 규칙(dr1)은 "alert tcp any any -> any any (content: "abc"; content: "def"; distance: 5; dsize: 10; nocase;)"이고, 제2 탐지 규칙(dr2)은 "alert tcp any any -> any any (msg: "TEST RULE"; content: "GET"; pcre: "/^\x48\x6f\x73\x74\x20/"; sid: 1;)"인 것으로 도시되었으나, 이는 예시일 뿐이고, 각 탐지 규칙은 보안 장치(10)의 설정에 따라 다양하게 변경될 수 있다.
정책 호출부(110)는 데이터베이스(20)에 저장된 복수의 탐지 규칙들 중 적어도 하나의 탐지 규칙을 선택하고 호출한다. 정책 호출부(110)를 통해 이루어지는 탐지 규칙 호출은 순차적 또는 무작위로 이루어질 수 있다.
패킷 생성부(120)는 정책 호출부(110)를 통해 호출한 탐지 규칙을 분석하고, 탐지 규칙에 대응하는 패킷을 생성한다. 구체적으로, 패킷 생성부(120)는 탐지 규칙을 분석하고, 탐지 규칙에 대응하는 헤더 데이터 및 페이로드를 생성하고, 생성한 헤더 데이터 및 페이로드를 결합함으로써 패킷을 생성한다. 여기서, 패킷 생성부(120)는 탐지 규칙에 대응하는 범위 내에서 헤더 데이터 및 페이로드를 무작위로 생성함으로써 패킷을 생성할 수 있다. 예를 들어, 패킷 생성부(120)는 랜덤 시드(random seed)를 통해 헤더 데이터 및 페이로드를 무작위로 생성함으로써 패킷을 생성할 수 있다.
정규표현식이 특정한 구조로 문자열의 종류 또는 길이가 변화하는 문자열의 집합을 축약된 문법으로 표현하였다면, 다시 정규표현식을 문자열로 변환할 때 페이로드는 수십 내지 수천 가지의 경우의 수로 표현될 수 있다. 패킷 생성부(120)는 헤더 데이터 및 페이로드를 탐지 규칙에 대응하는 범위 내에서 무작위로 선택할 수 있고, 이는 정규표현식을 문자열로 변환하는 과정에서 경우의 수 중 하나를 대표하며, 동일한 정규식을 변환하더라도 매번 새로운 문자열의 페이로드를 생성할 수 있다. 예를 들어, 's{n,}'와 같은 정규표현식 문법을 사용할 때, 패킷 생성부(120)는 정규표현식 문법을 분석하고, 정규표현식 문법에 대응하는 오토마타를 이용하여 정규표현식 문법에 대응하는 문자열을 생성할 수 있다. 또한, 패킷 생성부(120)는 정규표현식 문법을 이용하여 문자열을 생성할 때, 랜덤 시드를 이용하므로, 문자 's'가 n회이상 반복되는 문자열 중 하나를 무작위로 페이로드로 반환할 수 있다. 따라서, 일 실시예에 따른 패킷 생성부(120)는 정규표현식을 만족하는 최소 조건이 아닌 충분 조건의 탐지 페이로드를 생성할 수 있다.
또한, 탐지 규칙은 정책 헤더와 정책 옵션으로 구분될 수 있다. 패킷 생성부(120)는 탐지 규칙의 정책 헤더(예를 들어, 제1 탐지 규칙의 "alert tcp any any" 및 제2 탐지 규칙의 "alert tcp any any")에 따라 패킷의 헤더 데이터를 구성하고, 탐지 규칙의 정책 옵션(예를 들어, 제1 탐지 규칙의 "any any (msg: "TEST RULE"; content: "GET "; pcre: "/^\x48\x6f\x73\x74\x20/"; sid: 1;)" 및 제2 탐지 규칙의 "any any (content: "abc"; content: "def"; distance: 5; dsize: 10; nocase;)")에 따라 패킷의 페이로드를 구성할 수 있다. 패킷 생성부(120)를 통해 이루어지는 패킷 생성 방법은 아래에서 도 3을 참조로 상세히 설명한다.
검증부(130)는 패킷 생성부(120)를 통해 생성한 패킷을 검증한다. 예를 들어, 검증부(130)는 패킷 생성부(120)를 통해 생성한 패킷이 정책 호출부(110)를 통해 호출한 탐지 규칙에 매칭하는지 검증한다. 검증 결과, 생성한 패킷이 탐지 규칙에 매칭하는 경우 생성한 패킷을 데이터베이스(20)(또는 별도의 저장부)에 저장한다. 그렇지 않은 경우, 검증부(130)는 패킷 생성부(120)를 통해 생성한 패킷이 정책 호출부(110)를 통해 호출한 탐지 규칙에 대응하지 않는 횟수를 나타내는 실패 횟수를 증가시킨다. 그 후, 패킷 생성의 실패 횟수와 임계 횟수를 비교한다. 패킷 생성의 실패 횟수가 임계 횟수 이하인 경우 검증부(130)는 패킷 생성부(120)에 패킷 생성을 요청함으로써, 새로운 패킷을 생성할 수 있다. 패킷 생성의 실패 횟수가 임계 횟수를 초과하는 경우, 검증부(130)는 로그 생성부(140)를 통해 실패 정보를 기록한다.
판단부(150)는 데이터베이스(20) 내에 다른 탐지 규칙이 존재하는지 판단한다. 판단 결과, 데이터베이스(20) 내에 다른 탐지 규칙이 존재하는 경우, 패킷이 생성되지 않은 탐지 규칙들 중 하나의 탐지 규칙을 선택하고, 상술한 과정이 재수행 되도록 패킷 생성부(120)를 제어할 수 있다.
본 발명의 일 실시예에 따른 패킷 생성 장치(100)는 상술한 구성들을 통해 네트워크 침입 탐지를 위한 탐지 규칙의 검증을 위한 패킷을 생성할 수 있다. 탐지 검증을 위해서는 탐지 규칙(예를 들어, 정책)에 매치되는 패킷이 필수적이다. 여기서, 탐지 규칙은 적게는 수 개, 많게는 수천 개가 존재할 수 있는데, 사용자가 각 탐지 규칙을 확인하고 탐지 규칙에 해당하는 모든 페이로드들을 생성하는 것은 현실적으로 불가능하다. 반면, 본 발명의 일 실시예에 따른 패킷 생성 장치(100)는 각 탐지 규칙에 대응하는 패킷들을 자동으로 생성할 수 있으므로, 탐지 규칙의 유효성을 검증하는 시간을 단축시킬 수 있다.
또한, 본 발명의 일 실시예에 따른 패킷 생성 장치(100)는 랜덤 시드를 이용함으로써, 동일한 탐지 규칙을 이용하여 패킷을 생성하더라도 매번 새로운 문자열의 페이로드를 생성할 수 있다.
도 3은 본 발명의 일 실시예에 따른 패킷 생성부(120)에 대한 블록도이다. 본 발명의 일 실시예에 따른 패킷 생성부(120)는 헤더 데이터 생성 모듈(121), 페이로드 생성 모듈(122) 및 패킷 결합 모듈(123)을 포함할 수 있다. 여기서, 패킷 생성부(120)에 포함된 각 구성은 본 발명의 이해를 돕기 위해 기능별로 구분한 것이고, 패킷 생성부(120)는 하나의 제어부 또는 소프트웨어의 형태로 구현될 수 있다. 또한, 패킷 생성부(120)는 단일 코어 또는 다중 코어로 이루어진 CPU, MPU 등과 같은 처리 장치를 통해 구현될 수도 있다.
헤더 데이터 생성 모듈(121)은 탐지 규칙의 정책 헤더를 확인하고, 탐지 규칙을 기초로 탐지 규칙에 대응하는 헤더 데이터를 생성한다. 앞서 설명한 것처럼, 탐지 규칙은 정책 헤더와 정책 옵션으로 구분될 수 있다. 정책 헤더는 패킷의 헤더 부분에 대한 탐지 규칙을 나타내고, 정책 옵션은 패킷의 페이로드 부분에 대한 탐지 규칙을 나타낸다. 따라서, 헤더 데이터 생성 모듈(121)은 정책 호출부(110)를 통해 호출된 탐지 규칙 중 정책 헤더를 먼저 확인한다.
앞서 설명한 바와 같이, 탐지 규칙의 정책 헤더는 액션, 프로토콜, 송신자 IP 주소, 송신자 포트 번호, 수신자 IP 주소, 수신자 포트 번호의 순서로 구성될 수 있다. 따라서, 헤더 데이터 생성 모듈(121)은 탐지 규칙의 정책 헤더를 통해 탐지 규칙에 해당하는 액션, 프로토콜, 송신자 IP 주소, 송신자 포트 번호, 수신자 IP 주소 및 수신자 포트 번호 중 적어도 하나를 확인할 수 있다. 여기서, 액션 부분(예를 들어, alert, log, pass, activate, dynamic 등)은 패킷 처리 방식을 나타내고, 수신자 IP 주소 및 수신자 포트 번호는 보안 장치(10)가 보호할 서버의 IP 주소 및 포트 번호에 대응하므로, 생성될 패킷에 고려되어야 하는 것은 아니다. 따라서, 헤더 데이터 생성 모듈(121)은 액션 부분과 수신자의 IP 주소 및 포트 번호를 제외한, 프로토콜, 송신자 IP 주소 및 송신자 포트 번호 중 적어도 하나를 확인하고, 확인 결과에 따라 헤더 데이터를 생성할 수 있다. 헤더 데이터 생성 모듈(121)을 통해 이루어지는 동작은 다음과 같다.
먼저, 헤더 데이터 생성 모듈(121)은 탐지 규칙에 포함된 프로토콜 부분(예를 들어, TCP, UDP, IP, ICMP 등)을 확인하고, 확인 결과에 따라 패킷의 헤더 데이터에서 프로토콜 영역을 구성할 수 있다. 예를 들어, 헤더 데이터 생성 모듈(121)은 탐지 규칙의 프로토콜 부분이 TCP로 지정되어있는지 확인할 수 있고, TCP로 지정된 경우 탐지 규칙에 따라 플래그(flag)(예를 들어, SYN, ACK, RST, FIN, PSH, URG 등)를 설정할 수 있다. 탐지 규칙의 프로토콜 부분이 TCP가 아닌 UDP 등으로 지정된 경우 헤더 데이터 생성 모듈(121)은 지정된 프로토콜에 따라 헤더 데이터의 프로토콜 영역을 설정할 수 있다. 탐지 규칙의 프토로콜 부분에 어떠한 프로토콜도 지정되지 않은 경우, 헤더 데이터 생성 모듈(121)은 복수의 프로토콜 중 어느 하나의 프로토콜을 무작위로 선택하고, 선택한 프로토콜로 헤더 데이터의 프로토콜 영역을 설정할 수 있다.
또한, 헤더 데이터 생성 모듈(121)은 탐지 규칙에 포함된 IP 주소 부분(예를 들어, 송신자 IP 주소)을 확인하고, 확인 결과에 따라 생성할 패킷의 헤더 데이터 중 IP 주소 영역을 구성할 수 있다. 예를 들어, 헤더 데이터 생성 모듈(121)은 탐지 규칙의 IP 주소 부분이 특정 IP 주소로 지정되어있는지 확인할 수 있고, 특정 IP 주소로 지정된 경우 지정된 IP 주소를 헤더 데이터의 IP 주소 영역에 설정할 수 있다. 그렇지 않은 경우, 헤더 데이터 생성 모듈(121)은 IP 주소를 무작위로 설정할 수 있다. IP 주소의 무작위 설정은 랜덤 시드를 통해 이루어질 수 있다.
또한, 헤더 데이터 생성 모듈(121)은 탐지 규칙에 포함된 포트 번호(예를 들어, 송신자 포트 번호)를 확인하고, 확인 결과에 따라 생성할 패킷의 헤더 데이터 중 포트 번호 영역을 구성할 수 있다. 예를 들어, 헤더 데이터 생성 모듈(121)은 탐지 규칙의 포트 번호 부분이 특정 포트 번호로 지정되어있는지 확인할 수 있고, 특정 포트 번호로 지정된 경우 지정된 포트 번호를 헤더 데이터 중 포트 번호 영역에 설정할 수 있다. 그렇지 않은 경우, 헤더 데이터 생성 모듈(121)은 포트 번호를 무작위로 설정할 수 있다. 일 실시예에서, 포트 번호의 무작위 설정은 랜덤 시드를 통해 이루어질 수 있다.
페이로드 생성 모듈(122)은 탐지 규칙의 정책 옵션(예를 들어, 정책 옵션)을 확인하고, 탐지 규칙을 기초로 탐지 규칙에 대응하는 페이로드를 생성한다. 이를 위해, 페이로드 생성 모듈(122)은 정책 호출부(110)를 통해 호출된 탐지 규칙 중 정책 옵션을 확인한다. 탐지 규칙의 정책 옵션은 페이로드 부분을 검사하기 위한 옵션들과 탐지 규칙의 이름 또는 식별자 등을 정의할 수 있는 옵션들을 포함하며, 탐지 규칙의 정책 옵션은 예를 들어, 'pcre', 'content', 'uricontent', 'dsize', 'depth', 'distance', 'offset' 등과 같은 옵션을 포함할 수 있다. 따라서, 페이로드 생성 모듈(122)은 탐지 규칙의 정책 옵션을 확인을 통해, 길이 옵션(예를 들어, 'dsize' 옵션), 정규표현식 옵션(예를 들어, 'pcre' 옵션) 존재 여부, 문자열 검색 옵션(예를 들어, 'content', 'uricontent' 옵션 등) 존재 여부, 확인된 서비스 템플릿(예를 들어, 포트 번호를 이용한 판단)의 존재 여부 등을 확인하고, 확인 결과를 이용하여 페이로드를 생성할 수 있다. 페이로드 생성 모듈(122)을 통해 이루어지는 동작은 다음과 같다.
먼저, 페이로드 생성 모듈(122)은 페이로드의 길이와 관련된 옵션을 확인함으로써 페이로드의 길이를 설정할 수 있다. 페이로드 생성 모듈(122)은 페이로드의 길이와 관련된 옵션이 존재하지 않는 경우, 네트워크 환경에서 일반적으로 송수신되는 페이로드의 길이로 페이로드의 길이를 설정할 수 있다. 다른 실시예에서, 페이로드 생성 모듈(122)은 무작위 길이로 페이로드의 길이를 설정할 수 있다.
또한, 페이로드 생성 모듈(122)은 헤더 데이터 생성부(121)를 통해 설정된 포트 번호를 기초로, 생성할 패킷이 어떤 서비스를 사용하는 패킷인지를 설정한다. 상술한 바와 같이, 헤더 데이터 생성부(121)는 탐지 규칙의 정책 헤더를 확인함으로써 헤더 데이터에 지정된 또는 임의의 포트 번호를 설정할 수 있다. 포트 번호가 지정된 경우 페이로드 생성 모듈(122)은 지정된 포트 번호에 대한 서비스 템플릿을 확인할 수 있다. 포트 번호가 지정되지 않은 경우, 페이로드 생성 모듈(122)은 무작위로 생성된 포트 번호에 대한 서비스 템플릿을 확인할 수 있다. 물론, 포트 번호가 지정되지 않은 경우, 페이로드 생성 모듈(122)은 서비스 템플릿에 대한 확인 과정을 생략할 수도 있다. 또한, 스노트는 'uricontent'와 같이 프로토콜의 특정 필드에서의 탐지를 지시하는 옵션이 있다. 따라서, 페이로드 생성 모듈(122)은 포트가 명시되지 않은 경우에도 옵션 설정을 참고하여 서비스 템플릿을 적용할 수 있다.
또한, 페이로드 생성 모듈(122)은 탐지 규칙의 정책 옵션에 정규표현식에 대한 옵션(예를 들어, 'pcre' 옵션)이 존재하는지 확인할 수 있다. 상술한 바와 같이, 스노트 정책은 'pcre' 옵션을 통해 정규표현식을 지원할 수 있다. 페이로드 생성 모듈(122)은 정규표현식에 대한 옵션(예를 들어, 'pcre' 옵션)이 존재하는 경우, 'pcre' 옵션에 대응하는 문자열을 생성할 수 있다. 일 실시예에서, 페이로드 생성 모듈(122)은 'pcre' 옵션이 존재하는 경우, 시드를 생성하고, 오토마타를 이용하여 문자열을 생성할 수 있다. 정규표현식에 맞게 설계된 오토마타는 특정 정규표현식을 만나면 문자열을 출력하도록 되어있는데, 이 과정에서 앞에서 생성된 시드를 사용하여 무작위로 문자열을 생성할 수 있다.
또한, 페이로드 생성 모듈(122)은 탐지 규칙의 정책 옵션에 문자열 검색 옵션(예를 들어, 'content' 옵션, 'uricontent' 옵션 등)이 존재하는지 확인할 수 있다. 문자열 검색 옵션을 검증하기 위해서는 페이로드에 문자열 검색 옵션에 해당하는 문자열을 페이로드에 삽입해야 한다. 따라서, 페이로드 생성 모듈(122)은 문자열 검색 옵션의 존재 여부를 확인하고, 문자열 검색 옵션이 존재하는 경우 그 옵션에 해당하는 문자열을 페이로드에 추가할 수 있다. 또한, 페이로드 생성 모듈(122)은 문자열을 생성할 때, 'offset', 'distance', 'nocase' 등의 지원 옵션을 더 고려할 수 있다.
또한, 페이로드 생성 모듈(122)은 확인된 서비스 템플릿이 존재하는지 확인하고, 확인된 서비스 템플릿이 존재하는 경우 이를 페이로드에 적용할 수 있다. 알려진 바와 같이, 포트 번호가 1024 미만인 포트는 잘 알려진 포트로 특정되고, 잘 알려진 포트로 특정된 서비스 템플릿은 표준 규격의 프로토콜로 명시되어 있다. 예를 들어, 포트 번호 20 및 21은 각각 FTP 데이터 프로토콜 및 FTP 제어 프로토콜을 의미하고, 포트 번호 23은 텔넷(telnet) 프로토콜을 의미하며, 포트 번호 53은 DNS(Domain Name Service) 프로토콜을 의미한다. 헤더 데이터 생성부(121)를 통해 설정된 포트 번호가 잘 알려진 포트인 경우, 페이로드 생성 모듈(122)은 포트 번호에 대응하는 서비스 템플릿에 따라 패킷을 구성할 수 있다. 구체적으로, 페이로드 생성 모듈(122)은 확인된 서비스 템플릿이 존재하는 경우, 상술한 과정을 거쳐 생성된 문자열을 잘 알려진 포트에 대응하는 서비스 템플릿 내에 삽입함으로써 페이로드를 재정의 할 수 있다.
패킷 결합 모듈(123)은 헤더 데이터 생성 모듈(121)과 페이로드 생성 모듈(122)을 통해 생성된 헤더 데이터와 페이로드를 결합함으로써 패킷을 생성한다. 패킷 결합 모듈(123)을 통해 생성된 패킷은 검증부(130)로 전달된다.
이제, 제1 탐지 규칙(dr1)이 정책 호출부(110)를 통해 호출되었고, 제1 탐지 규칙(dr1)이 "alert tcp any any -> any any (content: "abc"; content: "def"; distance: 5; dsize: 10; nocase;)"인 상황을 가정하여 패킷 생성부(120)의 동작 방법을 설명한다. 제1 탐지 규칙(dr1)은 "alert tcp any any"와 "any any (content: "abc"; content: "def"; distance: 5; dsize: 10; nocase;)"으로 구분될 수 있다.
헤더 데이터 생성 모듈(121)은 제1 탐지 규칙(dr1)의 정책 헤더("alert tcp any any")을 확인하고 헤더 데이터를 생성할 수 있다. 제1 탐지 규칙(dr1)은 액션 부분은 'alert'를 나타내고, 프로토콜은 'TCP'를 나타내며, IP 주소와 포트 번호는 지정되지 않았음을 나타낸다. 따라서, 헤더 데이터 생성 모듈(121)은 제1 탐지 규칙(dr1)에 대응하는 패킷을 생성할 때, 프로토콜은 TCP로 지정하되, IP 주소와 포트 번호는 무작위로 설정할 수 있다.
페이로드 생성 모듈(122)은 먼저, 제1 탐지 규칙(dr1)의 정책 옵션("any any (content: "abc"; content: "def"; distance: 5; dsize: 10; nocase;)")을 확인하고, 길이 옵션의 존재 여부를 확인한다. 이 예시에서, dsize 옵션은 문자열의 길이를 나타내고, dsize의 값이 10으로 설정되었으므로, 페이로드 생성 모듈(122)은 문자열의 길이를 10 바이트로 설정한다.
그 후, 페이로드 생성 모듈(122)은 포트 번호 및 pcre 옵션의 존재 여부를 확인한다. 본 예시에서 포트 번호 및 pcre 옵션은 없는 것으로 가정하므로, 페이로드 생성 모듈(122)은 다음 과정인 문자열 검색 옵션의 존재 여부를 확인한다. 이 예시에서 content 옵션은 문자열 검색 옵션을 나타내므로 페이로드 생성 모듈(122)은 문자열 "abc"와 문자열 "def"를 포함하는 10 글자의 문자열을 생성할 수 있다. 여기서 문자열 "abc"와 문자열 "def"를 제외한 나머지 4개의 문자는 무작위로 설정될 수 있다.
또한, 위의 예시에서 distance 옵션은 첫 번째 문자열이 탐지된 후 5번째 문자열 위치에 두 번째 content 문자열이 오는 것을 의미한다. 따라서 문자열 "abc"를 포함한 4 글자가 맨 앞에 위치하게 되고(xabc 또는 abcx), 그 뒤에 문자열 " def"가 위치한다(xabcdefxxx 또는 abcxdefxxx).
또한, 위의 예시에서 nocase 옵션은 대소문자를 구분하지 않는 옵션이므로, 페이로드 생성 모듈(122)은 제1 탐지 규칙(dr1)의 정책 옵션에 대응하는 다양한 문자열들(예를 들어, xabcdefxxx, Xabcdefxxx, XAbcdefxxx, XaBcdefxxX, abcxdefxxx, AbCxDeFxXx 등) 중 하나를 출력함으로써 페이로드를 생성할 수 있다.
패킷 결합 모듈(123)을 통해 패킷이 결합되고, 검증부(130)를 통해 검증이 완료되면 패킷 생성 장치(100)는 다음 탐지 규칙을 선택할 수 있다.
제2 탐지 규칙(dr2)은 "alert tcp any any -> any any (msg: "TEST RULE"; content: "GET"; pcre: "/^\x48\x6f\x73\x74\x20/"; sid: 1;)"인 것으로 가정한다. 제2 탐지 규칙(dr2)에서 msg 옵션은 경고 시 출력할 메시지를 나타내고, sid 옵션은 스노트 정책을 구분하는 식별자를 나타낸다. 제2 탐지 규칙(dr2)을 이용하면, 위의 ASCII 코드에 대응하는 문자열 "attack"을 포함하는 모든 문자열 중 하나의 문자열을 포함하는 페이로드가 생성될 수 있다.
위의 설명에서는 패킷 생성부(120)가 스노트 정책에 대응하는 패킷을 생성하는 것만으로 설명되었다. 다만 이는 예시일 뿐이고, 패킷 생성부(120)는 탐지 규칙이 정규표현식을 표현할 수 있는 또는 그렇지 않은 다른 문법 또는 라이브러리로 이루어질 때에도 패킷을 생성할 수 있다.
예를 들어, @test.com 서비스를 이용하는 이메일을 표현하는 정규표현식은 다음과 같다.
/^[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@test.com$/i
문자 '^'는 문자열의 시작위치를 의미하며 첫 글자가 숫자 또는 문자로 시작한다. 문자는 대소문자 모두 가능하다. 그 다음 괄호 안의 문자가 0 이상 반복될 수 있다. 두 번째 문자부터는 '-' 또는 '_' 또는 '.' 문자가 포함되거나 그렇지 않을 수 있다. 두 번째 문자부터는 숫자 또는 문자가 포함된다. 문자는 대소문자 모두 가능하다. 패킷 생성부(120)는 상술한 내용에 대해 랜덤 시드를 적용하여 문자를 생성할 수 있다. 최종적으로는 a344ifT-3g@test.com과 같은 메일 주소를 정규표현식에 대응하는 탐지 문자열로 생성할 수 있다.
이처럼 본 발명의 일 실시예에 따른 패킷 생성 장치(100)는 탐지 규칙의 표현 형식에 관계 없이, 탐지 규칙에 대응하는 패킷을 생성할 수 있다. 또한, 패킷 생성 장치(100)는 탐지 규칙에 대응하는 범위 내에서 헤더 데이터 및 페이로드를 무작위로 생성하므로 매번 다른 패킷을 생성할 수 있고, 그에 따라 보다 신뢰성 있는 탐지 검증이 가능하다.
도 4는 본 발명의 일 실시예에 따른 탐지 규칙 검증을 위한 패킷 생성 방법에 대한 흐름도이다. 본 발명의 일 실시예에 따른 패킷 생성 방법은 네트워크 침입 탐지 기법에서 이용되는 탐지 규칙들을 검증하기 위해 사용될 수 있다. 본 발명의 일 실시예에 따른 패킷 생성 방법은 패킷 생성 장치(100) 또는 보안 장치(10) 또는 단일 코어 또는 다중 코어로 이루어진 CPU, MPU 등과 같은 처리 장치에 의해 동작될 수 있다. 다른 실시예에서 본 발명의 일 실시예에 따른 패킷 생성 방법은 소프트웨어의 형태로 구현될 수 있다. 이하에서는 위에서 설명된 사항과 중복되는 부분은 생략하여 그 설명이 이루어진다.
S110 단계는 탐지 규칙을 호출하는 단계이다. 데이터베이스(20)는 복수의 탐지 규칙들을 저장할 수 있고, S110 단계는 복수의 탐지 규칙들 중 하나의 탐지 규칙을 호출할 수 있다. 상술한 바와 같이, 탐지 규칙은 정규표현식을 지원하는 스노트 정책, 야라 등으로 표현될 수 있다. 정규표현식 및 스노트 정책의 정의 및 예시는 위에서 상세히 설명하였으므로, 중복되는 설명을 생략한다. 또한 앞서 설명한 것처럼, 탐지 규칙은 스노트 정책, 야라 외에도 다양한 문법 또는 라이브러리로 표현될 수 있고, 본 발명의 일 실시예에 따른 패킷 생성 방법은 탐지 규칙의 특정 표현 방식에 제한되지 않고 적용될 수 있다.
S120 단계는 S110 단계를 통해 호출한 탐지 규칙에 대응하는 패킷을 생성하는 단계이다. 구체적으로, S120 단계는 호출한 탐지 규칙에 대응하는 헤더 데이터 및 페이로드를 포함하는 패킷을 생성하는 단계이다. S120 단계는 S110 단계를 통해 호출한 탐지 규칙에 대응하는 범위 내에서 헤더 데이터 및 페이로드를 무작위로 생성함으로써 이루어질 수 있고, 무작위 생성은 랜덤 시드를 이용하여 이루어질 수 있다.
S130 단계는 S120 단계에서 생성한 패킷을 검증하는 단계이다. 예를 들어, S130 단계는 S120 단계에서 생성한 패킷이 S110 단계에서 호출한 탐지 규칙에 매칭하는지 검증함으로써 이루어질 수 있다.
S140 단계는 검증 결과, 패킷이 정상적으로 생성되었는지 판단하는 단계이다. 판단 결과, 패킷이 정상적으로 생성된 경우 S170 단계가 수행된다. 그렇지 않은 경우 실패 횟수를 증가시킨 후 S150 단계가 수행된다. 여기서, 실패 횟수는 S120 단계를 통해 생성된 패킷이 S110 단계에서 호출된 탐지 규칙에 대응되지 않은 횟수를 나타낸다.
S150 단계는 패킷 생성의 실패 횟수와 임계 횟수(예를 들어, 1회, 2회 등)를 비교하는 단계이다. 판단 결과 실패 횟수가 임계 횟수를 초과하는 경우, S160 단계를 통해 실패 정보를 기록하는 과정이 수행된다. 그렇지 않은 경우, S120 단계 내지 S140 단계가 재수행되어 S110 단계를 통해 호출한 탐지 규칙에 대해 새로운 패킷이 더 생성될 수 있다.
예를 들어, 하나의 탐지 규칙에 대해 한 번의 패킷 생성이 이루어졌고, S140 단계를 통한 판단 결과 패킷이 비정상인 것으로 판단된 상황을 가정한다. 또한, 임계 횟수는 1인 상황을 가정한다. 이 경우, S140 단계는 실패 횟수를 0에서 1로 증가시킬 수 있고, S150 단계는 실패 횟수와 임계 횟수를 비교한다. 이 예시에서 실패 횟수는 임계 횟수를 초과하지 않았으므로 S120 단계를 통한 패킷 생성 과정 및 S130 단계를 통한 패킷 검증 과정이 이루어진다. S120 단계는 랜덤 시드를 이용하여 패킷을 생성하므로, S120 단계를 통해 생성한 패킷은 이전 과정에서 생성한 패킷과 다를 수 있다. 그 후, S140 단계를 통하여, 재생성된 패킷의 정상 여부 확인이 이루어진다. 재생성된 패킷이 정상인 경우 S170 단계가 수행될 수 있는 한편, 그렇지 않은 경우 실패 횟수의 증가(예를 들어, 1에서 2로 증가)가 이루어지고 S150 단계가 수행된다. 이 예시에서 실패 횟수는 2이고 임계 횟수는 1로 가정하므로, S160 단계를 통해 실패 정보를 기록하는 과정이 이루어진다.
S170 단계는 정상적으로 생성된 패킷을 데이터베이스(20) 또는 별도의 저장부에 저장하는 단계이다.
S180 단계는 데이터베이스(20) 내에 다른 탐지 규칙이 존재하는지 판단하는 단계이다. 판단 결과, 데이터베이스(20) 내에 다른 탐지 규칙이 존재하는 경우, 데이터베이스(20)에 저장된 탐지 규칙들 중 다른 탐지 규칙을 선택하고, 선택한 탐지 규칙을 이용하여 S110 단계 내지 S170 단계가 재수행된다. 그렇지 않은 경우 모든 과정은 종료된다. S180 단계를 통해 본 발명의 일 실시예에 따른 패킷 생성 방법은 하나의 탐지 규칙 단위로 반복 수행될 수 있고, 모든 탐지 규칙에 대응하는 패킷들을 생성할 수 있다. 또한, 위의 설명에서는 하나의 탐지 규칙 당 하나의 패킷을 생성 및 저장하는 것으로 설명하였으나, 이는 예시일 뿐이고 다른 실시예에서 하나의 탐지 규칙당 복수의 패킷을 생성할 수도 있다.
도 5는 본 발명의 일 실시예에 따른 패킷을 생성하는 단계에 대한 흐름도이다.
S121 단계 및 S122 단계는 S110 단계를 통해 호출한 탐지 규칙에 대응하는 헤더 데이터와 페이로드를 생성하는 단계이다. S123 단계는 S121 단계 및 S122 단계를 통해 생성한 헤더 데이터와 페이로드를 결합함으로써 페이로드를 생성하는 단계이다.
앞서 설명한 것처럼 탐지 규칙은 크게 정책 헤더와 정책 옵션으로 구분될 수 있다. S121 단계는 탐지 규칙의 정책 헤더를 이용하여 이루어지고, S122 단계는 탐지 규칙의 정책 옵션을 이용하여 이루어질 수 있다. S121 단계는 도 6을 참조로, S122 단계는 도 7을 참조로 더 상세히 설명한다.
도 6은 본 발명의 일 실시예에 따른 헤더 데이터를 생성하는 단계에 대한 흐름도이다. 이하에서는 위에서 설명된 사항과 중복되는 부분은 생략하여 그 설명이 이루어진다.
S210 단계는 탐지 규칙의 정책 헤더를 확인하는 단계이다. 구체적으로, S210 단계는 탐지 규칙의 정책 헤더 중 프로토콜, 송신자 IP 주소 및 송신자 포트 번호 중 적어도 하나를 확인함으로써 이루어진다.
S220 단계는 헤더 데이터 중 프로토콜 영역을 설정하는 단계이다. S220 단계 는 S221 단계 내지 S223 단계를 포함할 수 있다.
S221 단계는 탐지 규칙에서 프로토콜 부분을 확인하고, 확인 결과에 따라 헤더 데이터 중 프로토콜 영역을 설정하는 단계이다. 또한, S221 단계는 탐지 규칙에 프로토콜이 특정 프로토콜로 지정되지 않은 경우, 무작위로 선택된 프로토콜을 헤더 데이터 중 프로토콜 영역에 설정할 수 있다.
S222 단계는 S221 단계를 통해 설정된 프로토콜이 TCP 프로토콜인지 확인하는 단계이다. S222 단계를 통한 판단 결과, 설정된 프로토콜이 TCP 프로토콜인 경우 S223 단계가 수행되고, 그렇지 않은 경우 S230 단계가 수행된다. S223 단계는 헤더 데이터 중 프로토콜 영역에 플래그(예를 들어, SYN, ACK, RST, FIN, PSH, URG 등)를 더 설정하는 단계이다.
S230 단계는 헤더 데이터 중 IP 주소 영역을 설정하는 단계이다. S230 단계는 S231 단계 내지 S233 단계를 포함할 수 있다.
S231 단계는 탐지 규칙에 포함된 IP 주소 부분(예를 들어, 송신자의 IP 주소)를 확인하고, IP 주소 부분에 특정 IP 주소가 지정되어있는지 판단하는 단계이다. 판단 결과, 탐지 규칙의 IP 주소 부분에 특정 IP 주소가 지정된 것으로 판단되면 S232 단계가 수행되고, 그렇지 않은 경우 S233 단계가 수행된다.
S232 단계는 탐지 규칙에 지정된 IP 주소를 헤더 데이터의 IP 주소 영역에 설정하는 단계이다. 또한, 탐지 규칙의 IP 주소 부분은 정규표현식을 통해 IP 주소 중 일부만 지정될(예를 들어, xxx.xxx.134.145 등) 수도 있다. 이 경우, S232 단계는 송신자의 IP 주소 중 지정된 부분을 제외한 나머지 부분을 랜덤 시드를 통해 무작위로 생성하고, 생성한 IP 주소를 헤더 데이터의 IP 주소 영역에 설정할 수 있다.
S233 단계는 랜덤 시드를 이용하여 무작위로 IP 주소를 생성하고, 무작위로 생성된 IP 주소를 헤더 데이터의 IP 주소 영역에 설정하는 단계이다.
S240 단계는 헤더 데이터 중 포트 번호 영역을 설정하는 단계이다. S240 단계는 S241 단계 내지 S243 단계를 포함할 수 있다.
S241 단계는 탐지 규칙에 포함된 포트 번호 부분(예를 들어, 송신자의 포트 번호)를 확인하고, 포트 번호 부분에 특정 포트 번호가 지정되어있는지 판단하는 단계이다. 판단 결과, 탐지 규칙의 포트 번호 부분에 특정 포트 번호가 지정된 것으로 판단되면 S242 단계가 수행되고, 그렇지 않은 경우 S243 단계가 수행된다.
S242 단계는 탐지 규칙에 지정된 포트 번호를 헤더 데이터의 포트 번호 영역에 설정하는 단계이고, S243 단계는 랜덤 시드를 이용하여 무작위로 포트 번호를 생성하고, 무작위로 생성된 포트 번호를 헤더 데이터의 포트 번호 영역에 설정하는 단계이다.
도 7은 본 발명의 일 실시예에 따른 페이로드를 생성하는 단계에 대한 흐름도이다. 이하에서는 위에서 설명된 사항과 중복되는 부분은 생략하여 그 설명이 이루어진다.
S310 단계는 탐지 규칙의 정책 옵션을 확인하는 단계이다.
S320 단계는 페이로드에 포함된 문자열 데이터의 길이를 설정하기 위한 단계이다. S320 단계는 S321 단계 및 S322 단계를 포함할 수 있다.
S321 단계는 탐지 규칙의 정책 옵션에서 길이 옵션이 존재하는지 판단하는 단계이다. 예를 들어, 탐지 규칙이 스노트 정책으로 구성될 때, S321 단계는 탐지 규칙 중 size와 같은 옵션이 존재하는지 판단함으로써 이루어질 수 있다. 판단 결과 길이 옵션이 존재하는 것으로 판단되면 S322 단계가 수행된다. 그렇지 않은 경우, S330 단계가 수행된다.
S322 단계는 길이 옵션에 따라 문자열 데이터의 길이를 설정하는 단계이다. 위의 설명에서 길이 옵션이 존재하지 않을 경우 S330 단계가 수행되는 것으로 설명되었으나, 이는 예시일 뿐이고 무작위 길이, 또는 네트워크 환경에서 일반적으로 송수신되는 페이로드의 길이로 페이로드의 길이를 설정하는 과정이 수행될 수 있다.
S330 단계는 S121 단계를 통해 포트 번호의 지정 여부에 따라, 포트 번호에 대응하는 서비스를 확인하는 단계이다. 이를 위해, S330 단계는 포트 번호의 지정 여부를 판단하는 S331 단계와, 포트 번호에 대응하는 서비스를 확인하는 S332 단계를 포함할 수 있다. 상술한 바와 같이 포트 번호가 1024 미만인 포트는 잘 알려진 포트로 특정되고, 잘 알려진 포트로 특정된 서비스 템플릿은 표준 규격의 프로토콜로 명시되어 있다. S330 단계는 S360 단계에서 이루어지는 서비스 템플릿의 적용을 위해 수행될 수 있다.
S340 단계 및 S350 단계는 문자열을 생성하기 위한 단계로서, S340 단계는 정규표현식을 고려하여 문자열을 생성하는 단계이고, S350 단계는 문자열 검색 옵션을 고려하여 문자열을 생성하는 단계이다. 이를 위해, S340 단계는 S341 단계 내지 S343 단계를 포함하고, S350 단계는 S351 단계 내지 S352 단계를 포함한다.
S341 단계는 탐지 규칙의 정책 옵션에 정규표현식에 대한 옵션이 존재하는지 판단하는 단계이다. 예를 들어, S341 단계는 탐지 규칙이 스노트 정책에 따라 정의된 경우, 탐지 규칙 내에 pcre 옵션이 존재하는지 판단함으로써 이루어질 수 있다. S341 단계를 통한 판단 결과 탐지 규칙의 정책 옵션에 정규표현식에 대한 옵션이 존재하는 것으로 판단된 경우, S342 단계가 수행된다. 그렇지 않은 경우 S350 단계가 수행된다.
S342 단계 및 S343 단계는 시드를 생성하고 오토마타를 이용하여 정규표현식에 대응하는 문자열을 생성하는 단계이다. 상술한 바와 같이, 정규표현식에 맞게 설계된 오토마타는 특정 정규표현식을 만나면 문자열을 출력하도록 되어있는데, 이 과정에서 S342 단계를 통해 생성된 시드를 사용하여 무작위로 문자열을 생성할 수 있다.
S351 단계는 탐지 규칙의 정책 옵션에 문자열 검색에 대한 옵션이 존재하는지 판단하는 단계이다. 예를 들어, 탐지 규칙이 스노트 정책에 따라 정의된 경우, S351 단계는 탐지 규칙 내에 'content' 옵션 또는 'uricontent' 옵션이 존재하는지 판단함으로써 이루어질 수 있다. S351 단계를 통한 판단 결과 탐지 규칙의 정책 옵션에 문자열 검색에 대한 옵션이 존재하는 것으로 판단된 경우, S352 단계가 수행된다. 그렇지 않은 경우 S360 단계가 수행된다.
S352 단계는 문자열 검색 옵션에 해당하는 문자열을 생성하는 단계이다.
위의 설명에서는 S340 단계 및 S350 단계가 순차적으로 수행되는 것으로 설명되었다. 다만 이는 예시일 뿐이고 S340 단계 및 S350 단계는 역순으로 또는 병렬로 함께 고려되어 수행될 수 있다.
S360 단계는 S330 단계를 통해 확인된 서비스 템플릿에 문자열을 적용하는 단계이다. 이를 위해, S360 단계는 S361 단계 및 S362 단계를 포함한다.
S361 단계는 S330 단계를 통해 확인된 서비스 템플릿(예를 들어, 포트 번호가 1024 미만인 프로토콜에 대응하는 서비스 템플릿)이 존재하는지 판단하는 단계이다. 판단 결과, 서비스 템플릿이 존재하는 것으로 판단된 경우, S362 단계를 통해 S310 단계 내지 S350 단계를 거쳐 생성된 문자열을 서비스 템플릿에 적용하는 단계가 수행된다. 그렇지 않은 경우, S370 단계가 수행된다.
S370 단계는 S310 단계 내지 S360 단계를 거쳐 도출 및 생성된 문자열 데이터의 길이, 문자열 및 서비스 템플릿을 고려하여 페이로드를 생성하는 단계이다. 예를 들어, S370 단계는 문자열 데이터의 길이에 대응하게 페이로드를 생성하고, 생성한 문자열을 제외한 나머지 문자는 무작위 처리함으로써 페이로드를 생성할 수 있다. 이에 대한 사항은 위에서 상세히 설명하였으므로, 중복되는 설명을 생략한다.
본 발명에 따른 상기 예시적인 방법들은 프로세서에 의해 실행되는 프로그램 명령들, 소프트웨어 모듈, 마이크로코드, 컴퓨터(정보 처리 기능을 갖는 장치를 모두 포함함)로 읽을 수 있는 기록 매체에 기록된 컴퓨터 프로그램 제품, 애플리케이션, 논리 회로들, 주문형 반도체, 또는 펌웨어 등 다양한 방식으로 구현될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록 매체의 예로는 ROM, RAM, CD, DVD, 자기 테이프, 하드 디스크, 플로피 디스크, 하드 디스크, 광데이터 저장 장치 등이 있으며, 이에 제한되는 것은 아니다. 또한, 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어, 분산방식으로 컴퓨터가 읽을 수 있는 코드가 저장되고 실행될 수 있다.
이상의 설명은 본 발명을 예시적으로 설명한 것에 불과하며, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 의해 본 발명의 기술적 사상에서 벗어나지 않는 범위에서 다양한 변형이 가능할 것이다.
100: 패킷 생성 장치 110: 정책 호출부
120: 패킷 생성부 130: 검증부
140: 로그 생성부 150: 판단부

Claims (8)

  1. 네트워크 침입 탐지 기법에서 이용되는 탐지 규칙들을 검증하기 위한 패킷 생성 방법으로서,
    데이터베이스에서 탐지 규칙을 호출하는 단계;
    상기 호출된 탐지 규칙 중 정책 헤더에 대응하는 탐지 규칙을 기반으로 랜덤 시드(random seed)를 이용하여 헤더 데이터를 생성하는 단계;
    상기 호출된 탐지 규칙 중 정책 옵션에 대응하는 탐지 규칙에 정규표현식에 대한 옵션 및 문자열 검색에 대한 옵션이 적어도 하나 이상 존재하는지 여부를 확인하는 단계;
    상기 옵션의 존재 여부에 따라 생성된 문자열을 포함하는 페이로드를 무작위로 생성하는 단계;
    상기 생성된 헤더 데이터 및 페이로드를 결합하여 패킷을 생성하는 단계; 및
    상기 생성된 패킷이 상기 탐지 규칙에 대응하는지 확인하는 단계를 포함하는 것을 특징으로 하되,
    상기 정책 옵션에 대응하는 탐지 규칙에 정규표현식에 대한 옵션이 존재하는 경우, 상기 랜덤 시드 및 오토마타를 이용하여 상기 정규표현식에 대응하는 문자열을 생성하고,
    상기 정책 옵션에 대응하는 탐지 규칙에 문자열 검색에 대한 옵션이 존재하는 경우, 상기 문자열 검색에 대한 옵션에 대응되는 문자열을 생성하는 패킷 생성 방법.
  2. 삭제
  3. 제1항에 있어서,
    상기 헤더 데이터를 생성하는 단계는,
    상기 탐지 규칙의 정책 헤더를 확인하는 단계;
    상기 탐지 규칙에서 IP 주소 또는 포트 번호의 지정 여부를 확인하는 단계; 및
    상기 탐지 규칙에서 특정 IP 주소가 지정되지 않은 경우 지정되지 않은 IP 주소를 무작위로 생성하는 단계와 상기 탐지 규칙에서 포트 번호가 지정되지 않은 경우 지정되지 않은 포트 번호를 무작위로 생성하는 단계 중 적어도 하나의 단계를 포함하는 것을 특징으로 하는 패킷 생성 방법.
  4. 삭제
  5. 제1항에 있어서,
    상기 페이로드를 무작위로 생성하는 단계는,
    포트 번호가 1024 미만인 경우, 상기 문자열을 상기 포트 번호에 대응하는 서비스 템플릿에 적용하는 단계를 더 포함하고, 상기 서비스 템플릿은 잘 알려진(Well-Known) 포트의 페이로드 정보를 템플릿화한 것을 나타내는 것을 특징으로 하는 패킷 생성 방법.
  6. 제1항에 있어서,
    상기 패킷 생성 방법은,
    상기 생성된 패킷이 상기 호출된 탐지 규칙에 대응되지 않고, 실패 횟수가 사전 설정된 임계 횟수를 초과하는 경우, 상기 호출된 탐지 규칙 및 상기 생성된 패킷 중 적어도 하나에 대한 실패 정보를 저장하는 단계를 더 포함하고, 상기 실패 횟수는 상기 생성된 패킷이 상기 호출된 탐지 규칙에 대응되지 않은 횟수를 나타내는 것을 특징으로 하는, 패킷 생성 방법.
  7. 제1항에 있어서,
    상기 패킷 생성 방법은 하나의 탐지 규칙 단위로 반복 수행되는 것을 특징으로 하는 패킷 생성 방법.
  8. 제1항, 제3항 및 제5항 내지 제7항 중 어느 한 항에 따른 방법을 수행하는 제어부를 포함하는 패킷 생성 장치.
KR1020180086038A 2018-07-24 2018-07-24 탐지 규칙 검증을 위한 패킷 생성 방법 및 장치 KR102011603B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180086038A KR102011603B1 (ko) 2018-07-24 2018-07-24 탐지 규칙 검증을 위한 패킷 생성 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180086038A KR102011603B1 (ko) 2018-07-24 2018-07-24 탐지 규칙 검증을 위한 패킷 생성 방법 및 장치

Publications (1)

Publication Number Publication Date
KR102011603B1 true KR102011603B1 (ko) 2019-08-16

Family

ID=67806632

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180086038A KR102011603B1 (ko) 2018-07-24 2018-07-24 탐지 규칙 검증을 위한 패킷 생성 방법 및 장치

Country Status (1)

Country Link
KR (1) KR102011603B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210090044A (ko) * 2020-01-09 2021-07-19 국방과학연구소 실제 위협 트래픽을 모의 위협 트래픽으로 변환하는 장치 및 그 방법
KR102418910B1 (ko) * 2021-01-26 2022-07-08 충북대학교 산학협력단 서로 다른 네트워크 침입 탐지 및 방지 시스템 엔진 간의 룰 변환을 위한 장치 및 이를 위한 방법
KR102418917B1 (ko) * 2021-01-26 2022-07-08 충북대학교 산학협력단 이종의 네트워크 침입 탐지 및 방지 시스템 간의 룰 변환을 위한 장치 및 이를 위한 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100937217B1 (ko) 2007-12-07 2010-01-20 한국전자통신연구원 시그니처 최적화 시스템 및 방법
KR20120001796A (ko) * 2009-03-30 2012-01-04 콸콤 인코포레이티드 수신기 지향 채널들에서 어드레스 프라이버시 보호를 위한 장치 및 방법
KR20170107266A (ko) * 2016-03-15 2017-09-25 주식회사 윈스 오토마타 기반 패킷 필터 시스템 및 그 방법
KR20170139618A (ko) * 2015-04-24 2017-12-19 알까뗄 루슨트 제 1 데이터 패킷으로부터 제 2 데이터 패킷을 생성하기 위한 방법 및 장치

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100937217B1 (ko) 2007-12-07 2010-01-20 한국전자통신연구원 시그니처 최적화 시스템 및 방법
KR20120001796A (ko) * 2009-03-30 2012-01-04 콸콤 인코포레이티드 수신기 지향 채널들에서 어드레스 프라이버시 보호를 위한 장치 및 방법
KR20170139618A (ko) * 2015-04-24 2017-12-19 알까뗄 루슨트 제 1 데이터 패킷으로부터 제 2 데이터 패킷을 생성하기 위한 방법 및 장치
KR20170107266A (ko) * 2016-03-15 2017-09-25 주식회사 윈스 오토마타 기반 패킷 필터 시스템 및 그 방법

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20210090044A (ko) * 2020-01-09 2021-07-19 국방과학연구소 실제 위협 트래픽을 모의 위협 트래픽으로 변환하는 장치 및 그 방법
KR102287926B1 (ko) * 2020-01-09 2021-08-09 국방과학연구소 실제 위협 트래픽을 모의 위협 트래픽으로 변환하는 장치 및 그 방법
KR102418910B1 (ko) * 2021-01-26 2022-07-08 충북대학교 산학협력단 서로 다른 네트워크 침입 탐지 및 방지 시스템 엔진 간의 룰 변환을 위한 장치 및 이를 위한 방법
KR102418917B1 (ko) * 2021-01-26 2022-07-08 충북대학교 산학협력단 이종의 네트워크 침입 탐지 및 방지 시스템 간의 룰 변환을 위한 장치 및 이를 위한 방법

Similar Documents

Publication Publication Date Title
US7730175B1 (en) Systems and methods for identifying the services of a network
US7317693B1 (en) Systems and methods for determining the network topology of a network
KR102011603B1 (ko) 탐지 규칙 검증을 위한 패킷 생성 방법 및 장치
US20170223043A1 (en) Determine vulnerability using runtime agent and network sniffer
US20080263661A1 (en) Detecting anomalies in signaling flows
US20080320152A1 (en) Method and system for detecting a communication problem in a computer network
US20090262659A1 (en) Speed and memory optimization of intrusion detection system (IDS) and intrusion prevention system (IPS) rule processing
JP2008011537A (ja) ネットワークセキュリティデバイスにおけるパケット分類
US10999304B2 (en) Bind shell attack detection
US11916935B1 (en) Systems and methods for detecting malware domain names
CN106209907B (zh) 一种检测恶意攻击的方法及装置
CN115695031A (zh) 主机失陷检测方法、装置及设备
Lahmadi et al. A framework for automated exploit prevention from known vulnerabilities in voice over IP services
Van Hove et al. Rpkiller: Threat analysis from an RPKI relying party perspective
US20150163238A1 (en) Systems and methods for testing and managing defensive network devices
Tanakas et al. A novel system for detecting and preventing SQL injection and cross-site-script
CN115883574A (zh) 工业控制网络中的接入设备识别方法及装置
CN115174245A (zh) 一种基于DoIP协议检测的测试方法及系统
Sen Performance characterization & improvement of snort as an IDS
CN114281547A (zh) 一种数据报文处理方法、装置、电子设备及存储介质
CN114531270A (zh) 针对分段路由标签探测的防御方法及装置
CN108270800B (zh) 一种基于自认证码的报文处理方法和系统
CN117640258B (zh) 网络资产测绘的防护方法、装置、设备和存储介质
EP2819365A1 (en) Network traffic inspection
Kondakci Intelligent network security assessment with modeling and analysis of attack patterns

Legal Events

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