KR20110048349A - Http를 이용한 통신에서 불완전한 get 요청 메시지에 의한 서비스 거부 공격을 탐지하는 방법 및 그 장치 - Google Patents
Http를 이용한 통신에서 불완전한 get 요청 메시지에 의한 서비스 거부 공격을 탐지하는 방법 및 그 장치 Download PDFInfo
- Publication number
- KR20110048349A KR20110048349A KR1020090105112A KR20090105112A KR20110048349A KR 20110048349 A KR20110048349 A KR 20110048349A KR 1020090105112 A KR1020090105112 A KR 1020090105112A KR 20090105112 A KR20090105112 A KR 20090105112A KR 20110048349 A KR20110048349 A KR 20110048349A
- Authority
- KR
- South Korea
- Prior art keywords
- request
- request message
- server
- denial
- packet
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
- H04L63/1416—Event detection, e.g. attack signature detection
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1441—Countermeasures against malicious traffic
- H04L63/1458—Denial of Service
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer And Data Communications (AREA)
Abstract
HTTP를 이용한 서버와 클라이언트 간의 통신에서, 클라이언트로부터 서버로 전송되는 불완전한 GET 요청 메시지에 의한 서비스 거부(DoS) 공격을 탐지하는 방법이 제공된다. 상기 클라이언트가 전송하는 하나의 GET 요청 메시지의 GET 요청 패킷 개수를 카운팅하는 과정을 포함한다. 만약 클라이언트가 전송하는 하나의 GET 요청 메시지가 TCP(Transmission Control Protocol)에서 설정된 MSS값(Maximum Segment Size)보다 클 경우 GET 요청 메시지를 MSS값에 따라 분할하여, 상기 서버로 전송하는 분할된 GET 요청 패킷 개수를 카운팅하는 과정 또한 포함하고, 상기 MSS값을 이용하여 상기 클라이언트가 상기 서버로 하나의 GET 요청 메시지를 분할하여 전송 할 수 있는 패킷의 최대 개수(이하 분할된 GET 요청 최대 패킷 개수)를 계산하는 과정 및 상기 분할된 GET 요청 패킷의 카운팅 된 개수와 상기 분할된 GET 요청 최대 패킷 개수를 비교하여 상기 GET 요청 메시지의 정상 여부를 판단하는 과정을 포함한다.
Description
본 발명은 HTTP를 이용한 통신에서 불완전한 GET 요청 메시지에 의한 서비스 거부 공격을 탐지하는 방법 및 그 장치에 관한 것으로서, 클라이언트가 불완전한 GET 요청 메시지를 서버에게 요청하는 경우, 서버는 open connection을 유지하고, 완전한 GET 요청 메시지를 기다리는 특성을 이용하여 발생시키는 서비스 거부 공격을 탐지하기 위한 방법 및 그 장치에 관한 것이다.
본 발명은 지식경제부의 IT성장동력기술개발사업의 일환으로 수행한 연구로부터 도출된 것이다. [과제관리번호: 2009-S-038-01, 과제명: 분산서비스거부(DDoS) 공격 대응 기술 개발]
최근 HTTP 프로토콜의 구조적인 취약성을 이용한 공격으로서 웹 서비스가 서비스 거부(Denial of Service: DoS) 상태로 만들게 하는 "Slowloris"라는 공격 도구가 공개된바 있다.
이 공격 도구에 의한 공격은 HTTP 클라이언트가 하나의 GET 요청 메시지를HTTP 서버에게 전송하는데 메시지의 끝임을 알 수 있는 데이터를 포함하지 않는다.
HTTP 서버는 GET 요청 메시지를 전송받았으나 완전하지 않은 메시지이므로 완전한 GET 요청 메시지가 전송될 때까지 요청을 계속 기다리게 된다. 그러나 HTTP 서버는 클라이언트의 메시지를 계속 기다리는 것이 아니라 설정된 일정 시간 동안 메시지가 들어오지 않으면 연결을 끊는다. 그러므로 공격 도구는 연결이 끊기기 전에 메시지의 끝임을 알 수 있는 데이터 대신 의미없는 데이터를 전송하여 지속적인 연결을 유지한다.
만일 HTTP 서버에 기 설정된 한계치만큼 세션이 접속되면, 다른 클라이언트가 더 이상 상기 HTTP 서버에 접속을 할 수 없다. 여기서, 세션이란 서로 다른 두 호스트 즉, 클라이언트와 서버 간에 네트워크 연결(connection)이 지속적으로 유지되고 있는 상태를 말한다.
최근의 공격들은 기존의 디도스(Distribute Denial of Service: DDoS) 공격과는 다르게 대량의 트래픽을 전달하지 않고, 아주 적은 트래픽으로 HTTP 서버에 서비스 거부 상태를 만들 수 있다. 이러한 대표적인 공격이 HTTP 서버에게 불완전한 HTTP GET 요청 메시지를 전송하는 공격이다.
현재 불완전한 HTTP GET 요청 메시지에 의한 공격 패턴은 HTTP 서버와의 연결을 끊지 않기 위해서 반복적인 페이로드를 전달하므로, 이에 대한 시그니처(signature)로 공격 패턴을 차단하고 있다. 그러나 공격 패턴이 지능화되면, 시그니처에 의한 공격 패턴 차단에는 한계가 있다.
따라서 본 발명의 목적은 HTTP 서버의 리소스를 소모시키는 서비스 거부 공격(예를 들어 Slowloris)을 방어하기 위하여 불완전한 GET 요청 메시지를 이용한 서비스 거부 공격을 탐지하는 방법을 제공하는 것이다.
본 발명의 다른 목적은 상기 방법을 이용한 장치를 제공하는 것이다.
상술한 본 발명의 목적을 달성하기 위한 본 발명의 일면에 따른 불완전한 GET 요청 메시지를 이용한 서비스 거부 공격을 탐지하는 방법은, 상기 클라이언트가 웹 서비스를 제공 받기 위하여 GET 요청 메시지를 전송하는데 이때 전송되는 하나의 GET 요청 메시지를 카운팅하는 과정을 포함한다. 만일 하나의 GET 요청 메시지가 TCP(Transmission Control Protocol)에서 설정된 MSS값(Maximum Segment Size) 보다 커서 여러 개의 패킷으로 분할되어 상기 서버로 전송 될 때에는 분할되어, 상기 서버로 전송되는 패킷 개수(이하, 분할된 GET 요청 패킷 개수)를 카운팅하는 과정을 포함하고, 상기 GET 요청 메시지의 URL 길이 제한과 MSS 값을 이용하여 하나의 GET 요청 메시지가 MSS에 의해서 분할되어 상기 서버로 전송 될 때의 분할되어 보내 질 수 있는 패킷의 최대 개수(이하, 분할된 GET 요청 최대 패킷 개수)를 계산하는 과정 및 상기 분할된 GET 요청 패킷 개수와 분할된 GET 요청 패킷 최대 개수를 비교하여 상기 GET 요청 메시지의 서비스 거부 공격 여부를 판단하는 과정을 포함한다.
본 발명의 다른 일면에 따른 불완전한 GET 요청 메시지를 이용한 서비스 거부공격을 탐지하는 장치는 클라이언트와 서버 간의 세션 연결이 설정되고, 상기 세션 연결이 설정된 이후에 상기 클라이언트로부터 상기 서버로 전송되는 불완전한 GET 요청 메시지를 이용한 서비스 거부공격을 탐지하는 탐지 서버로서, 상기 탐지 서버는 상기 클라이언트와 상기 서버 사이에 연결되어 상기 클라이언트와 상기 서버 간의 세션 연결이 완료되었음을 알리는 세션 연결 신호를 생성하고, TCP(Transmission Control Protocol)에서 설정된 MSS값(Maximum Segment Size)을 이용하여 상기 클라이언트가 상기 서버로 전송할 수 있는 상기 분할된 GET 요청 최대 패킷 개수를 계산하는 세션 관리부와, 상기 분할된 GET 요청 패킷을 수신하고, 상기 세션 연결 신호에 응답하여 상기 MSS값(Maximum Segment Size)에 따라 분할되어 상기 서버로 전송되는 상기 분할된 GET 요청 패킷의 개수를 카운팅하는 카운팅부 및 상기 클라이언트로부터 상기 서버로 송신되는 상기 분할된 GET 요청 패킷을 수신하고, 카운팅된 상기 분할된 GET 요청 패킷의 개수와 상기 분할된 GET 요청 최대 패킷 개수를 비교한 결과에 따라 GET 요청 메시지에 의한 서비스 거부 공격을 판단하는 공격 판단부를 포함한다.
본 발명의 또 다른 일면에 따른 불완전한 GET 요청 메시지를 이용한 서비스 거부공격을 탐지 방법은 상기 세션 연결이 완료된 이후, 상기 클라이언트가 상기 서버로 전송되는 GET 요청 메시지의 페이로드 바이트 수 또는 패킷 수를 누적하는 과정 및 상기 클라이언트가 상기 누적된 GET 요청 메시지의 페이로드 바이트 수 또는 패킷 수가 기 설정된 임계치에 도달하는 시점에서, 상기 서버로부터 HTTP 응답 메시지의 수신 여부를 확인하여, 상기 GET 요청 메시지에 의한 서비스 거부 공격을 판단하는 공격 판단부를 포함한다.
본 발명에 의하면, GET 요청 메시지를 전송할 시, GET 요청 메시지 URL의 최대 길이 제한과 HTTP 클라이언트가 한번에 전송할 수 있는 MSS(Maximum Segment Size)를 이용하여, 하나의 GET 요청 패킷이 MSS에 의해서 분할될 경우 분할된 GET 요청 패킷의 최대 개수를 계산함으로써, 불완전한 GET 메소드 요청 패킷을 이용한 서비스 거부 공격을 정확히 판단할 수 있다. 즉, 본 발명은 정상적인 GET 요청 메시지와 불완전한 GET 요청 메시지를 정확하게 구분함으로써, HTTP 클라이언트가 open connection 상태로 HTTP 서버와 세션을 계속 유지하여 적은 트래픽으로 HTTP 서버의 리소스를 소모시키는 서비스 거부 공격을 탐지할 수 있다.
이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예를 상세히 설명하기로 한다. 먼저, 본 발명의 바람직한 실시예를 설명하기에 앞서, 본 발명의 이해를 돕기 위해 HTTP 웹 서버와 HTTP 클라이언트 시스템으로 구성된 일반적인 시스템에 대해 설명하기로 한다.
도 1은 일반적인 HTTP을 이용한 서버와 클라이언트 간의 신호 흐름도이다.
도 1을 참조하면, 먼저 HTTP 클라이언트 시스템(100)(이하, HTTP 클라이언트)은 HTTP 웹 서버(300)에 서비스를 요청하기 위해서 SYN 패킷(10)을 전송하여 세션 연결을 요청한다. 이때 HTTP 웹 서버(300)는 자원이 허용되면 SYN+ACK(12) 패킷 으로 응답한다. SYN+ACK 패킷(12)을 수신한 HTTP 클라이언트(100)는 ACK 패킷(14)을 HTTP 웹 서버(300)로 전송함으로써, 하나의 새로운 세션이 생성된다.
이와 같이 3 단계의 연결과정을 통해 세션이 구성되는 것을 통상 3 way handshake 과정이라 불리며, 모든 TCP 통신에서 적용된다. 이후 HTTP 클라이언트(100)는 GET 패킷(16)을 통해 원하는 페이지를 HTTP 웹 서버(300)에 요청하고, GET 패킷(16)에 대한 응답 패킷(18)을 HTTP 웹 서버(300)로부터 전송받고, 전송받은 응답 패킷을 통해 원하는 페이지를 제공받는다.
이상 HTTP 클라이언트(100)가 HTTP 웹 서버(300)로부터 일반적인 웹 서비스를 제공받기 위한 과정이 기술되었다.
일반 HTML 문서 및 이미지, 동영상 등을 HTTP 서버에 요청하는 경우, GET 메소드가 사용된다. 따라서 HTTP 클라이언트는 원하는 페이지를 요구하기 위해서는 도 1에 도시된 바와 같은 GET 요청 메시지(16)를 전송하고, 이 메시지 구조는 도 2에 도시된 바와 같다.
도 2는 도 1에 도시된 GET 요청 메시지의 구조를 보여주는 도면이다.
도 2를 참조하면, GET 요청 메시지는 요청 라인(22), 메시지 헤더(24), 공백 라인(26) 및 메시지 본문(28)으로 구성된다. 각 구성의 끝은 항상 CRLF(Carriage Return and Line Feed)(0x0d, 0x0a)로 표시된다.
HTTP 클라이언트(100)의 브라우저가 요청을 보내는 경우, 요청 라인(22)(Request-Line)이 표현된다. 요청 라인(22)에는 3가지 정보 즉, 요청 방식(REQUEST METHOD), 웹 문서 경로(URI) 및 HTTP 버전이 포함된다. 요청 방식은 HTTP 요청 방식이라고 하며, 주요 방식은 'GET', 'POST', 'HEAD', 'PUT', 'CONNECT' 등이 있다. 도 2에서는 'GET'으로 지정된 요청 방식이 나타난다.
메시지 헤더(24)에는 수행날짜, 'Accept', 'Accept-Language', 'Host' 'Connection', 프로그램 이름, 버전, 쿠키(Cookie) 등 HTTP 메시지에 대한 부가적인 정보에 해당하는 헤더 정보들이 표현된다. 각 헤더 정보의 마지막 부분에는 항상 CRLF(0x0d, 0x0a)가 표현되며, CRLF(0x0d, 0x0a)은 하나의 헤더 정보의 끝을 표시한다.
여기서 'Accept'는 HTTP 클라이언트의 브라우저가 수용할 수 있는 MIME(Multi-Purpose Internet Mail Extensions) content-types을 HTTP 서버에게 알려주는 헤더 정보이고, 'Accept-Language'는 브라우저가 사용할 언어를 알려주는 헤더 정보이고, 'Host'는 URL에 있는 호스트와 포트를 나타내는 헤더 정보이다. 'Connection'은 HTTP 클라이언트와 HTTP 서버 간의 지속적인(persistent) 연결을 유지하고자 하는 경우에 사용되는 헤더 정보이다. HTTP 1.1을 지정하는 요청 라인과 지속적인 연결을 의미하는 'Keep-Alive' 값을 통해 HTTP 클라이언트와 HTTP 서버 간의 지속적인(persistent) 연결이 유지된다. 이것은 그림이나 애플릿이 사용된 웹 페이지에서 다시 열 필요가 없게 되므로 많은 시간이 절약된다.
공백 라인(26)은 메시지 헤더(24)의 끝을 의미하며, 마찬가지로 CRLF(0x0d, 0x0a)로 표현된다.
메시지 본문(28)은 메소드가 POST가 아니면 항상 비어있는 상태로 HTTP 서버로 전달된다.
도 3은 도 2에 도시된 GET 요청 메시지 구조의 일례를 나타내는 도면이다.
도 3을 참조하면, 'GET/HTTP/1.1(CRLF)'는 도 2의 요청 라인(22)에 해당하고, 'Accept: */*(CRLF) ~ Connection: Keep-Alive'는 도 2의 메시지 헤더(24)에 해당하고, '(CRLF)'(36)은 도 2의 공백 라인(26)에 해당한다. 도 3에 도시된 GET 요청 메시지는 GET 메소드 요청이므로, 도 2에 도시된 메시지 본문 부분에 해당하는 부분은 비어있다.
도 3에서 주목해야 될 부분은 메시지 헤더(34)의 끝과 공백 라인(36)이다. 메시지 헤더(34)에 포함된 모든 헤더 정보들의 끝에는 CRLF(0x0d, 0x0a)가 표현된다. 따라서 메시지 헤더(34)에 포함된 헤더 정보들 중 마지막 헤더 정보의 끝 부분에도 CRLF(0x0d, 0x0a)(34A)가 표현되며, CRLF(0x0d, 0x0a)(34A)의 뒤에는 도 3에 도시된 바와 같이 공백 라인(36A)이 연속적으로 표현된다. 이때, GET 요청 메시지의 경우, 메시지 본문이 없으므로 HTTP 서버에서는 공백 라인(36)을 요청의 끝이라고 인식하므로, 공백 라인(36)은 GET 요청 메시지를 전송하는 경우 반드시 포함되어야 한다.
따라서 완전한 GET 메소드 요청에서는, 메시지 헤더(34)가 끝날 때 CRLF(0x0d, 0x0a)(34A)가 표현되고, 뒤이어 공백 라인(36)에 의해서 CRLF(0x0d, 0x0a) (36A)가 표현되므로, 두 개의 CRLF((0x0d, 0x0a)(0x0d, 0x0a))가 연속적으로 표현된다.
그러나 불완전한 GET 메소드 요청의 경우, GET 요청 메시지를 전송 시, 메시지 헤더(34)의 끝을 의미하는 CRLF(34A)와 공백 라인(36)에서 표현되는 CRLF(36A) 가 연속적으로 나타나지 않는다. 따라서 HTTP 웹 서버에서는 요청의 끝을 인식하지 못하므로, HTTP 웹 서버는 HTTP 클라이언트로부터 계속된 요청을 기다린 후, 결국 타임아웃(timeout)에 도달하거나, HTTP 클라이언트는 요청의 끝을 나타내는 CRLF(0x0d, 0x0a) 대신에 무의미한 헤더를 지속적으로 전송하여 HTTP 웹 서버의 리소스를 고갈시킬 뿐만 아니라 이러한 HTTP 웹 서버는 버퍼 오버플로우(buffer overflow) 공격에도 취약하다. 이와 같이, 공백 라인(36A)이 표현되지 않은 GET 요청 메시지는 HTTP 구조 형식을 이용한 서비스 거부(Denial of Service: DoS) 공격으로 판단한다.
따라서 본 발명의 실시예에서는 불완전한 GET 요청 메시지로 인한 서비스 거부 공격을 사전에 탐지하기 위한 두 가지 방법이 제시된다.
본 실시예에서 제안하는 두 가지 방법은 모두 URL 길이와 관련된다.
HTTP 프로토콜 표준에서는 URL 길이의 최대값이 정의되어 있지 않으나, 실질적으로 HTTP 클라이언트나 HTTP 서버에 의해 URL의 길이는 다음과 같이 제한되고 있다.
HTTP 클라이언트에 의한 URL의 길이는 사용되는 브라우저에 따라 다음과 같이 제한된다. 인터넷 익스플로러(Internet Explorer)의 경우, 2048자까지의 URL 입력이 가능하며, 이 이상의 URL을 입력하면, 오류 화면이 표시된다. 파이어폭스(FireFox)의 경우, 65536자 URL 입력이 가능하다. 사파리(Safari)에서는 80000자 이상의 URL 입력이 가능하며, 오페라(Opera)에서는 190000자 이상의 URL 입력이 가능하다.
HTTP 서버에 의한 URL의 길이의 제한을 살펴보면, Apache 서버에서는 HTTP 클라이언트로부터 대략 4000자의 URL 입력에 대응하는 요청이 있는 경우, 413 오류 화면이 표시되고, IIS 서버에서는 HTTP 클라이언트로부터 16384자의 URL 입력에 대응하는 요청이 기본으로 설정되어 있다.
웹 프로그래머는 사용자가 어떤 브라우저를 사용하는지 또는 어떤 HTTP 서버를 사용하는지 모르기 때문에 모든 곳에서 사용할 수 있는 최소 길이의 URL을 기준으로 웹 프로그래밍을 할 것이므로 현재의 웹 프로그래머는 인터넷 익스플로러의 URL 길이의 제한에 따라 웹 프로그래밍을 할 것이다.
현재 마이크로소프트사에서 인터넷 익스플로러의 주소 창에 입력되는 문자 수를 2,083자로 설정하고, GET 방식을 사용하는 경우를 가정하면, 실제 action 주소를 뺀 2,048자의 문자 수가 적용된다. 하나의 문자는 1 바이트로 표현되므로, GET 요청 메시지의 크기는 2,048 바이트보다 크지 않다.
또한 TCP에서 전송할 수 있는 데이터의 최대 크기(size)는 MSS(Maximum Segment Size)로 정의되고, 이 MSS 값은 아래와 같이 최대 전송 단위(Maximum Transmission Unit: MTU) 값에 의해 결정된다.
MSS = MTU - (IP header 크기) - (TCP header 크기)
그러므로 이더넷(Ethernet)의 경우, MTU 1500, IP 헤더 크기 20 byte, TCP 헤더 크기 20 byte를 제외하면 1460 byte가 MSS로 결정된다. 이것은 웹 서비스를 하기 위해 도 1에 도시된 바와 같은 3 way handshake 과정에서 HTTP 클라이언트와 HTTP 서버는 도 1의 SYN(10)과 SYN+ACK(12)을 전송하는 과정에서 상대방에게 자신 의 MSS 값을 TCP 헤더의 옵션(option) 필드를 통해 알려준다.
도 4는 결정된 MSS에 따라 HTTP 클라이언트와 HTTP 서버 간에 서로 주고받는 신호의 흐름을 보여주는 도면이다.
도 4에 도시된 바와 같이, HTTP 클라이언트(300)와 HTTP 서버(400)가 주고받는 신호들(40, 42, 44)에 의해 세션이 성립되면, HTTP 클라이언트(300)는 GET 요청 메시지(46)를 통해 원하는 페이지를 HTTP 서버(400)에게 요청한다. 이때 하나의 GET 요청 메시지의 URL 길이가 MSS 크기 이상이면, 여러 개의 패킷으로 나뉘어 전송된다. 따라서 하나의 GET 요청 메시지가 2,048byte를 초과할 수 없는 원칙과, 세션 연결 후 MSS 크기(size) 이상의 메시지를 전송할 수 없는 원칙을 고려하면, MSS 크기를 초과하는 하나의 GET 요청 메시지는 한번에 전송되지 못하고, 여러 번 나누어 전송된다. 즉, 분할된 GET 요청 패킷 최대 개수는 2,048byte/MSS의 올림 값이 된다. 예를 들면, HTTP 클라이언트(300)의 MSS가 1460인 경우, 하나의 GET 요청 메시지가 나누어져서 전송 가능한 최대 패킷 개수는 1.4(2,048/1460)가 되고, 1.4를 올림 하면, 2가 된다. 따라서 HTTP 클라이언트가 가장 긴 2,048 byte의 하나의 GET 요청 메시지를 HTTP 서버에 전송하는 경우, 세션이 성립된 이후, 첫 번째 패킷 페이로드가 1460byte가 전송되고, 바로 그 다음의 두 번째 GET 요청 패킷 페이로드 588byte가 마지막 패킷이 된다. 다시 말해, 도 3에 도시된 바와 같이 최대 2개의 분할된 GET 요청 패킷 안에는 메시지 헤더(34)의 마지막 헤더의 끝을 나타내는 CRLF(0x0d, 0x0a)(34A)와 공백 라인(36)을 나타내는 CRLF(0x0d, 0x0a)(36A)가 포함되어 있어야 한다.
URL 길이에 따라 제한되는 하나의 GET 요청 메시지는 URL의 최대 길이가 2,048 byte이므로, 분할된 GET 요청 최대 패킷 개수를 2,048 byte/MSS의 올림값이라 설명되고 있다. 이는 현재 URL 길이 제한이 HTTP 클라이언트와 HTTP 서버의 URL 길이 제한 중의 인터넷 익스플로러에서 가장 작은 크기로 URL 길이를 제한하고 있어서 2,048 byte/MSS의 올림값이라고 하고 있으나 이는 추후 HTTP 클라이언트나 HTTP 서버에 의해서 실질적인 URL 길이 제한이 변경됨에 따라서 유동적으로 변화 할 수 있다.
이하, 지금까지 상술한 특성을 이용한 본 발명의 일실시예에 따른 불완전한 GET 요청 메시지에 의한 서비스 거부 공격 탐지 방법에 대해 설명하기로 한다.
도 5 및 도 6은 본 발명의 일실시예에 따른 불완전한 GET 요청 메시지를 이용한 서비스 거부 공격을 탐지하는 과정을 설명하는 흐름도이다.
도 5 및 도 6을 참조하면, 본 발명의 일실시예에 따른 불완전한 GET 요청 메시지에 의한 서비스 거부 공격 탐지 과정은 HTTP 클라이언트로부터 GET 요청 메시지를 수신하는 서버에서 수행되는 것으로 가정하여 기술된다. 그러나, HTTP 클라이언트와 HTTP 서버 사이에 서비스 거부 공격 탐지 서버가 구비되고, 상기 탐지 서버에서 본 발명의 일실시예에 따른 불완전한 GET 요청 메시지에 의한 서비스 거부 공격의 탐지 과정이 수행될 수도 있다.
먼저, HTTP 서버가 HTTP 클라이언트로부터의 패킷을 입력받는다(S510). 여기서 패킷은 헤더 및 페이로드(payload)를 포함한다. 헤더는 패킷을 라우팅 및 해석하기 위해 필요한 데이터를 포함하며, 페이로드는 수신되는 실제 데이터를 포함한 다.
이어, HTTP 서버는 ACK 패킷의 수신 여부 즉, 3 way handshake 과정이 완료 여부에 따라 현재의 세션 연결(Session Connect) 상태를 확인한다(S512).
세션 연결이 완료되지 않은 경우, HTTP 서버는 세션 연결이 완료될 때까지 GET 요청 패킷의 개수를 '0'으로 초기화한다(S514).
세션 연결이 완료되면, HTTP 서버는 세션 연결 완료 후에 HTTP 클라이언트로부터 지금까지 수신된 GET 요청 패킷 개수를 확인한다. 만약 메시지가 길어서 분할되어 전송되었다면 분할된 GET 요청 패킷의 개수를 확인한다(S516). 수신된 패킷의 개수가 '0'이면, 즉, 아직 수신된 GET 요청 패킷이 없으며, 현재의 세션에서 적용되는 MSS값을 추출하고(S518), 세션 연결 완료 후에 HTTP 클라이언트로부터 수신되는 GET 요청 패킷의 페이로드 길이(L)값을 추출한다(S520).
상기 과정(S516)에서, 확인된 GET 요청 패킷의 개수가 '0'이 아니면, 즉, 현재 수신된 GET 요청 패킷이 최초가 아니면 하나의 GET 요청 메시지가 MSS보다 커서 분할되어 전송되는 패킷으므로, 상기 과정(S518)을 거치지 않고, 현재 수신된 패킷의 페이로드 길이값을 추출하는 과정이 수행된다(S520).
이어, 세션 연결 후, 현재까지 하나의 GET 요청 메시지가 분할되어 전송된 패킷의 개수 즉, 분할된 GET 요청 패킷 개수를 카운팅하고(S522), 카운팅된 패킷의 개수(CNT)와 URL 길이에 따라 HTTP 클라이언트에서 HTTP 서버로 하나의 GET 요청 메시지를 분할하여 송신할 수 있는 패킷의 기 설정된 최대 개수(MAX_CNT) 즉, 분할된 GET 요청 최대 패킷 개수를 비교한다(S524). 여기서, 기 설정된 최대 개 수(MAX_CNT)는 HTTP 클라이언트와 HTTP 서버의 URL 길이 제한에 따라서 달라질 수 있으며, 예컨대, URL 길이가 2048 byte로 제한되는 익스플로러가 다른 HTTP 클라이언트나 HTTP 서버의 URL 길이 제한 중 가장 짧은 경우, MSS가 1460인 경우, 기 설정된 최대 개수는 2(2048/MSS의 올림값)로 설정될 수 있다.
상기 분할된 GET 요청 패킷 개수(CNT)와 상기 기 설정된 분할된 GET 요청 최대 패킷 개수(MAX_CNT)를 비교한 결과, 'CNT > MAX_CNT' 이면, HTTP 서버가 현재의 세션에서 수신되는 GET 요청 패킷을 불완전한 GET 요청 메시지 즉, 서비스 거부 공격으로 탐지한다(S532). 탐지된 결과는 시스템 관리자에 의해 모니터링되고, 해당 패킷의 접속을 차단하는 후속 조치가 수행될 수 있다. 만일, 상기 카운팅된 분할된 GET 요청 패킷 개수(CNT)와 상기 기 설정된 분할된 GET 요청 최대 패킷 개수(MAX_CNT)를 비교한 결과, 'CNT < MAX_CNT' 이면, HTTP 서버가 현재 수신된 패킷의 맨 마지막에 2개의 연속된 CRLF가 포함되어 있는지를 판단한다(S526).
패킷이 2개의 연속된 CRLF을 포함하면, HTTP 서버는 현재의 세션에서 수신된 GET 요청 메시지를 정상 패킷으로 판단한다(S528).
2개의 연속된 CRLF을 포함하지 않은 경우, HTTP 서버는 상기 과정(S518)에서 추출된 MSS값과 상기 과정(S520)에서 추출된 패킷의 페이로드 길이(L)값을 비교한다(S530).
비교 결과, 'L < MSS' 이면, 불완전한 GET 요청 메시지 즉, 서비스 거부 공격으로 판단한다(S532). 'L > MSS'일 수는 없으므로, 'L = MSS' 이면, 상기 카운팅된 분할된 GET 요청 패킷의 개수(CNT)와 상기 기 설정된 분할된 GET 요청 최대 패킷 개수(MAX_CNT)가 동일한지 여부를 판단하고(S534), 'CNT == MAX_CNT'이면, 현재 세션에서 수신되는 GET 요청 메시지를 불완전한 GET 요청 메시지에 의한 서비스 거부 공격으로 판단하고(S532), 'CNT ≠ MAX_CNT'이면, 다음 분할된 GET 요청 패킷이 수신될 때까지 대기한다(S536). 즉, 'CNT ≠ MAX_CNT'인 경우는 하나의 GET 요청 메시지가 다수개의 패킷으로 분할되어 아직 수신되지 않은 경우이므로, HTTP 서버는 다음 패킷을 기다린다. HTTP 서버에서는 하나의 GET 요청 메시지가 분할되어 전송된 경우 마지막 패킷이 수신될 때까지 상기 일련 과정들(S526, S528, S530, S532, S534)이 계속 수행된다.
도 7은 본 발명의 일실시예에 따른 불완전한 GET 요청 메시지를 이용한 서비스 거부 공격을 탐지하는 전체 시스템 구성 블록도이다.
도 7을 참조하면, 전체 시스템은 HTTP 클라이언트(100), 유무선 네트워크(150)를 통해 상기 HTTP 클라이언트(100)와 네트워크 통신을 수행하는 HTTP 서버(300) 및 상기 네트워크(150)와 상기 HTTP 서버 사이에 구비되어 불완전한 GET 요청 메시지를 이용한 서비스 거부 공격을 탐지하는 탐지 서버(200)를 포함한다.
HTTP 클라이언트(100)와 HTTP 서버(300)는 기본적으로 3 way handshake 과정에 의해 세션을 구성한다. 세션이 구성되면, HTTP 클라이언트(100)가 기본적으로 GET 메소드에 따라 HTTP 서버(300)로 GET 요청 메시지를 전송한다. 이때, 탐지 서버(200)는 URL 최대 길이 제한과 HTTP 클라이언트가 한번에 전송할 수 있는 패킷 크기 제한 MSS을 이용하여, HTTP 클라이언트(100)가 하나의 GET 요청메시지를 전송하면서 MSS에 의해 나누어서 보낼 수 있는 GET 요청 최대 패킷 개수를 계산한다.
탐지 서버(200)는 계산된 최대 개수에 근거하여 완전한 GET 요청 메시지와 불완전한 GET 요청 메시지를 구분함으로써 서비스 거부 공격을 탐지 한다.
이하, 상기 탐지 서버에 대해 상세히 설명하기로 한다.
도 8은 도 7에 도시된 탐지 서버의 내부 구성의 일례를 보여주는 블록도이다.
도 8을 참조하면, 탐지 서버(200)는 서비스 거부 공격 해당하는 GET 요청 패킷과 정상적인 사용자의 GET 요청 패킷을 구분하기 위하여, 세션 관리부(210), 카운팅부(220), 제1 비교부(230), 패킷 분석부(240) 및 제2 비교부(250)를 포함한다.
세션 관리부(210)는 세션 연결을 위해 HTTP 서버(100)와 HTTP 클라이언트(300)가 서로 주고 받는 패킷들(도 4의 40, 42)로부터 MSS값을 추출한다. 세션 관리부(210)는 현재 브라우저와 웹 서버에서 제한하고 있는 URL 최대 길이값 중의 제일 작은 URL 길이 제한값과 상기 추출된 MSS값을 이용하여 최대 개수(MAX_CNT)([URL의 길이 제한값 / MSS값]을 올림한 개수)를 계산한다. 또한 HTTP 서버(300) 와 HTTP 클라이언트(100) 간에 세션 연결이 완료되면, 세션 연결이 완료된 이후에 HTTP 클라이언트(100)로부터 HTTP 서버(300)로 전송되는 GET 요청 패킷의 페이로드 길이(L) 값을 추출한다. 이때, GET 요청 패킷의 페이로드 길이(L)값이 상기 MSS값을 초과하여, 하나의 GET 요청 메시지가 여러 개로 분할되어 전송되는 경우, 분할된 GET 요청 패킷들의 페이로드 길이(L) 값을 각각 추출한다. 또한 세션 관리부(210)는 세션 연결이 완료되었음 알리는 세션 연결 신호(S1)를 생성하며, 일 례로, HTTP 클라이언트(100)로부터 HTTP 서버(300)로 전송되는 ACK 패킷(도 4의 44)에 응답하여 상기 세션 연결 신호(S1)를 생성할 수 있다. 생성된 세션 연결 신호(S1)는 카운팅부(220)로 전달한다.
카운팅부(220)는 상기 세션 연결 신호(S1)에 응답하여 세션 연결 후에 상기 HTTP 클라이언트(100)로부터 HTTP 서버(300)로 전송되는 분할된 GET 요청 패킷 개수(CNT)를 카운팅한다. 즉, 수신되는 하나의 GET 요청 메시지가 분할되어 전송된 패킷의 개수(CNT)를 카운팅하고, 카운팅된 결과치를 제1 비교부(230)로 전달한다.
제1 비교부(230)는 상기 카운팅부(220)로부터의 상기 카운팅된 분할된 GET 요청 패킷 개수(CNT)와 상기 세션 관리부(210)로부터의 분할된 GET 요청 패킷 최대 개수(MAX_CNT)를 비교하고, 비교 결과에 따라 제1 비교 신호(C1-1) 및 제2 비교 신호(C1-2) 중 어느 하나의 신호를 출력한다. 여기서, 제1 비교 신호(C1-1)는 상기 카운팅된 분할된 GET 요청 패킷의 개수(CNT)가 분할된 GET 요청 패킷 최대 개수(MAX_CNT)보다 큰 경우를 나타내는 신호이고, 제2 비교 신호(C1-2)는 상기 카운팅된 분할된 GET 요청 패킷의 개수(CNT)가 분할된 GET 요청 패킷 최대개수 (MAX_CNT)보다 작거나 같은 경우 나타내는 신호이다.
공격 판단부(240)는 상기 신호(C1-1 또는 C1-2)를 전달받는 시점에서 HTTP 서버(300)로 전달되는 GET 요청 패킷을 분석한다. 공격 판단부(240)가 제1 비교 신호(C1-1)를 전달받으면, 현재 세션에서의 GET 요청 패킷을 불완전한 GET 요청 메시지에 의한 공격 패킷 즉, 서비스 거부 공격으로 판단하고, 제2 비교 신호(C1-2)를 전달받으면, 현재 HTTP 서버(300)로 전달되는 패킷의 끝 부분에 연속된 2개의 CRLF(도 3의 34A, 36A)가 포함되어 있는지를 판단한다. 패킷의 끝 부분에 연속된 2개의 CRLF(도 3의 34A, 36A)가 포함되어 있으면, HTTP 클라이언트로부터 HTTP 서버(300)로 전달되는 현재의 GET 요청 패킷을 정상적인 패킷으로 판단한다. 한편, 공격 판단부(240)는 GET 요청 패킷의 끝 부분에 연속된 2개의 CRLF가 존재하지 않으면, 제2 비교부(250)를 구동시키는 구동신호(D1)를 생성한다.
제2 비교부(250)는 상기 구동 신호(D1)에 응답하여 GET 요청 패킷의 페이로드 길이(L)값과 MSS값을 비교하고, 비교 결과를 제3 비교 신호(C2-1) 또는 제4 비교 신호(C2-2)로서 출력한다. 출력되는 제3 비교 신호(C2-1) 또는 제4 비교 신호(C2-2)는 공격 판단부(240)로 전달된다. 여기서, 제3 비교 신호(C2-1)는 GET 요청 패킷의 페이로드 길이(L)값이 MSS값보다 작을 때 제2 비교부(250)로부터 출력되는 신호이고, 제4 비교 신호(C2-2)는 패킷의 페이로드 길이(L)값이 MSS값보다 크거나 같을 때 제2 비교부(250)로부터 출력되는 신호이다.
공격 판단부(240)는 패킷의 페이로드 길이(L)값이 MSS값보다 작은 경우, 제2 비교부(250)로부터 전달되는 제3 비교 신호(C2-1)를 전달받으면, 현재 세션에서 전달되는 GET 요청 메시지를 불완전한 패킷 즉, 서비스 거부 공격으로 판단한다. 만일 공격 판단부(240)가 패킷의 페이로드 길이(L)값이 MSS값보다 크거나 같은 경우, 제2 비교부로부터 전달되는 제4 비교 신호(C2-2)를 전달받고, 상기 카운팅된 분할된 GET 요청 패킷의 개수(CNT)와 분할된 Get 요청 최대 패킷 개수(MAX_CNT)가 동일한 경우, 현재 세션에서 전달되는 GET 요청 패킷을 불완전한 패킷 즉, 서비스 거부 공격으로 판단한다.
도 9 내지 도 10은 본 발명의 다른 실시예에 따른 불완전한 GET 요청 메시지를 탐지하는 방법을 설명하기 위한 서버와 클라이언트 간의 신호 흐름도이다.
도 9 내지 도 10을 참조하면, 본 발명의 다른 실시예에 따른 불완전한 GET 요청 메시지를 이용한 서비스 거부 공격을 탐지하는 방법에서는 도 5 및 도 6에서 설명한 탐지 방법과 같은 원리가 이용된다. 다만, 도 5 및 도 6의 설명에서는, 하나의 GET 요청 메시지의 마지막 부분에 연속된 2개의 CRLF가 존재하는 지를 판별하여 GET 요청 메시지를 이용한 서비스 거부 공격 여부가 판별되었으나, 본 발명의 다른 실시예에서는, 연속된 2개의 CRLF의 존재 여부를 확인하지 않고도 하나의 GET 요청 메시지의 마지막 부분에 연속된 2개의 CRLF의 존재 여부가 확인된다.
본 발명의 다른 실시예에서는 HTTP 응답 패킷을 통해 연속된 2개의 CRLF의 존재 여부가 확인된다.
정상적인 GET 요청 메시지는 도 9에 도시된 바와 같이, 클라이언트가 전송하는 하나의 GET 요청 메시지의 URL 길이가 MSS값을 초과하여 2개의 패킷(52, 54)으로 분할되어 서버로 전송되는 경우, 정상적인 GET 요청 패킷이 서버에 전송되면, 클라이언트는 서버로부터 "HTTP/1.1 200 OK"와 같은 HTTP 응답 메시지를 수신 받게 된다. 이러한 HTTP 응답 메시지는 표준 문서의 HTTP status code를 포함하는 모든 형태의 패킷을 포함한다.
한편, 불완전한 GET 요청 메시지는 도 10에 도시된 바와 같이, 하나의 GET 요청 메시지의 URL 길이가 MSS값을 초과하여 여러 개의 패킷으로 분할되어 클라이언트로부터 서버로 전송될지라도, 클라이언트는 상기 분할된 하나의 GET 요청 메시 지(62)에 대한 HTTP 응답 메시지를 서버로부터 전송 받지 못한다.
따라서 세션 연결이 완료된 이후, 클라이언트는 GET 요청 메시지의 페이로드 바이트 수 또는 패킷 수를 누적하고, 기 설정된 임계치 이상의 GET 요청 메시지의 페이로드 바이트 수 또는 패킷 수를 전송하였음에도 불구하고, 서버로부터 HTTP 응답 메시지를 전송받지 못하면, 전송한 GET 요청 메시지를 불완전한 GET 요청 메시지 즉, 서비스 거부 공격으로 판단한다. 일례로, 상기 기 설정된 임계치는 누적된 패킷 수가 5로 설정되거나, 누적된 바이트 수가 2000 byte로 설정될 수 있다.
이제까지 본 발명에 대하여 바람직한 실시 예를 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 본 발명을 구현할 수 있음을 이해할 것이다. 예컨대, 도 7에 도시된 탐지 서버가 클라이언트와 서버 사이에 구비된 것으로 기술하였으나, 상기 탐지 서버에 구비된 구성들은 상기 서버에 구비될 수도 있다. 그러므로 상기 개시된 실시 예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 한다.
도 1은 일반적인 HTTP를 이용한 서버와 클라이언트 간의 신호 흐름도이다.
도 2는 도 1에 도시된 GET 요청 메시지의 구조를 보여주는 도면이다.
도 3은 도 2에 도시된 GET 요청 메시지 구성의 일례를 나타내는 도면이다.
도 4는 기 설정된 MSS에 따라 클라이언트와 서버 간의 신호 흐름도이다.
도 5 및 도 6은 본 발명의 일실시예에 따른 불완전한 GET 요청 메시지에 의한 서비스 거부 공격의 탐지 과정을 보여주는 순서도이다.
도 7은 본 발명의 일실시예에 따른 불완전한 GET 요청 메시지를 이용한 서비스 거부 공격을 탐지하는 전체 시스템 구성 블록도이다.
도 8은 도 7에 도시된 탐지 서버의 내부 구성의 일례를 보여주는 블록도이다.
도 9 및 도 10은 본 발명의 다른 실시예에 따른 불완전한 GET 요청 메시지에 의한 서비스 거부 공격의 탐지하는 방법을 설명하기 위한 서버와 클라이언트 간의 신호 흐름도이다.
Claims (20)
- HTTP를 이용한 서버와 클라이언트 간의 통신에서, 세션 연결이 완료된 후 클라이언트로부터 서버로 전송되는 불완전한 GET 요청 메시지에 의한 서비스 거부 공격을 탐지하는 방법에 있어서,상기 클라이언트가 전송하는 GET 요청 메시지를 카운팅 하는 단계;하나의 GET 요청 메시지의 GET 요청 패킷 개수를 카운팅 하는 단계로서, 하나의 GET 요청 메시지가 TCP(Transmission Control Protocol)에서 설정된 MSS값(Maximum Segment Size)보다 길어지면 MSS에 따라 분할하여, 상기 서버로 전송하는 상기 패킷의 개수를 카운팅 하는 단계;상기 클라이언트가 MSS 보다 긴 하나의 GET 요청 메시지를 TCP(Transmission Control Protocol)에서 설정된 MSS값(Maximum Segment Size)에 따라 분할하여, 상기 서버로 전송할 수 있는 상기 분할된 GET 요청 패킷의 최대 개수를 계산하는 단계; 및상기 카운팅된 분할된 GET 요청 패킷의 개수와 상기 계산된 GET 요청 패킷의 최대 개수를 비교하여, 상기 GET 요청 메시지에 의한 서비스 거부 공격 여부를 판단하는 단계를 포함하는 불완전한 GET 요청 메시지를 이용한 서비스 거부 공격을 탐지하는 방법.
- 제1항에 있어서, 상기 GET 요청 메시지에 의한 서비스 거부 공격 여부를 판단하는 단계는,상기 카운팅된 GET 요청 패킷의 개수가 상기 계산된 GET 요청 패킷의 최대 개수보다 큰 경우, 상기 GET 요청 메시지를 공격으로 판단하는 것인 불완전한 GET 요청 메시지를 이용한 서비스 거부 공격을 탐지하는 방법.
- 제1항에 있어서, 상기 계산된 GET 요청 패킷의 최대 개수를 계산하는 단계는,클라이언트와 서버의 URL 길이 제한 중의 GET 요청 메시지가 사용 할 수 있는 가장 작은 URL 길이 제한 값을 상기 MSS 값으로 나누고, 나눈 결과를 올림한 것인 불완전한 GET 요청 메시지를 이용한 서비스 거부 공격을 탐지하는 방법.
- 제3항에 있어서, 상기 클라이언트는 익스플로러, 파이어폭스, 사파리, 오페라 중 어느 하나가 탑재되고, 상기 서버는 아파치 및 IIS 중 어느 하나가 탑재된 웹서버인 불완전한 GET 요청 메시지를 이용한 서비스 거부 공격을 탐지하는 방법.
- 제1항에 있어서, 상기 카운팅된 GET 요청 패킷의 개수가 상기 계산된 GET 요청 패킷의 최대 개수보다 작거나 같은 경우, 상기 카운팅된 GET 요청 패킷에 연속된 2개의 CRLF가 포함되어 있는지를 판단하는 단계를 더 포함하고,상기 카운팅된 GET 요청 패킷이 연속된 2개의 CRLF를 포함하는 경우, 상기 상기 카운팅된 GET 요청 패킷은 정상 패킷으로 판단하는 것인 불완전한 GET 요청 메시지를 이용한 서비스 거부 공격을 탐지하는 방법.
- 제5항에 있어서, 상기 카운팅된 GET 요청 패킷이 연속된 2개의 CRLF를 포함하는지를 판단하는 단계는,상기 카운팅된 GET 요청 패킷의 개수가 복수인 경우, 맨 마지막에 상기 서버로 전송되는 상기 GET 요청 패킷이 상기 연속된 2개의 CRLF를 포함하는지를 판단하는 단계인 것인 불완전한 GET 요청 메시지를 이용한 서비스 거부 공격을 탐지하는 방법.
- 제5항에 있어서, 상기 GET 요청 패킷이 연속된 2개의 CRLF를 포함하지 않는 경우,상기 서버로 전송되는 GET 요청 패킷의 페이로드 길이값을 추출하는 단계; 및추출된 상기 GET 요청 패킷의 페이로드 길이값과 상기 MSS값을 비교하여, 상기 GET 요청 메시지를 이용한 서비스 거부 공격 여부를 판단하는 단계를 더 포함하는 것인 불완전한 GET 요청 메시지를 이용한 서비스 거부 공격을 탐지하는 방법.
- 제7항에 있어서, 상기 GET 요청 메시지를 이용한 서비스 거부 공격 여부를 판단하는 단계,상기 추출된 상기 GET 요청 패킷의 페이로드 길이값이 상기 MSS값보다 작은 경우, 상기 GET 요청 패킷을 불완전한 GET 요청 메시지에 의한 서비스 거부 공격으로 판단하는 것인 불완전한 GET 요청 메시지를 이용한 서비스 거부 공격을 탐지하는 방법.
- 제7항에 있어서, 상기 GET 요청 메시지를 이용한 서비스 거부 공격 여부를 판단하는 단계,상기 분할된 GET 요청 패킷의 개수와 상기 계산된 GET 요청 패킷의 최대 개수가 동일한 경우, 상기 GET 요청 메시지는 불완전한 GET 요청 메시지를 이용한 서비스 거부 공격인 것으로 판단하는 것인 불완전한 GET 요청 메시지를 이용한 서비스 거부 공격을 탐지하는 방법.
- 제9항에 있어서,상기 카운팅된 GET 요청 패킷의 개수와 상기 계산된 GET 요청 패킷 최대 개수가 동일한 경우는 상기 패킷 페이로드 길이값과 상기 MSS값이 동일한 경우인 것인 불완전한 GET 요청 메시지를 이용한 서비스 거부 공격을 탐지하는 방법.
- 클라이언트와 서버 간의 세션 연결이 설정되고, 상기 세션 연결이 설정된 이후에 상기 클라이언트로부터 상기 서버로 전송되는 불완전한 GET 요청 메시지를 이용한 서비스 거부 공격을 탐지하는 장치에 있어서,상기 클라이언트와 상기 서버 사이에 연결되어 상기 클라이언트와 상기 서버 간의 세션 연결이 완료되었음을 알리는 세션 연결 신호를 생성하고, TCP(Transmission Control Protocol)에서 설정된 MSS값(Maximum Segment Size)을 이용하여 상기 클라이언트가 상기 서버로 전송할 수 있는 상기 하나의 GET 요청 메시지가 MSS에 의해 나뉘어져 보내질 수 있는 패킷 최대 개수를 계산하는 세션 관리부;상기 패킷을 수신하고, 상기 세션 연결 신호에 응답하여 상기 MSS값(Maximum Segment Size)에 따라 분할되어 상기 서버로 전송되는 상기 패킷의 개수를 카운팅하는 카운팅부; 및상기 클라이언트로부터 상기 서버로 송신되는 상기 GET 요청 패킷을 수신하고, 카운팅된 상기 분할된 GET 요청 패킷의 개수와 상기 분할된 GET 요청 패킷의 최대 개수를 비교한 결과에 따라 상기 GET 요청 메시지에 의한 서비스 거부 공격 여부를 판단하는 공격 판단부를 포함하는 불완전한 GET 요청 메세지를 이용한 서비스 거부 공격을 탐지하는 장치.
- 제11항에 있어서, 상기 세션 관리부는 3 way handshake 과정에서 상기 클라이언트로부터 상기 서버로 송신되는 ACK 패킷에 응답하여 상기 세션 연결 신호를 생성하는 것인 불완전한 GET 요청 메시지를 이용한 서비스 거부 공격을 탐지하는 장치.
- 제11항에 있어서, 상기 세션 관리부는 TCP(Transmission Control Protocol)에서 설정된 MSS값(Maximum Segment Size)과 상기 패킷 페이로드 길이값을 추출하는 것인 불완전한 GET 요청 메시지를 이용한 서비스 거부 공격을 탐지하는 장치.
- 제13항에 있어서, 상기 세션 관리부는 브라우저에서 서버와 클라이언트에 의해 제한되는 GET 요청 메시지의 URL의 길이 제한값과 상기 추출된 MSS값을 이용하여 상기 분할된 GET 요청 최대 패킷 개수를 계산하고,상기 최대 개수는 상기 URL의 길이 제한값을 상기 MSS값으로 나눈 결과를 올림 한 것인 불완전한 GET 요청 메시지를 이용한 서비스 거부 공격을 탐지하는 장치.
- 제13항에 있어서,상기 계산된 분할된 GET 요청 패킷의 최대 개수와 상기 카운팅된 분할된 GET 요청 패킷의 개수를 비교하는 제1 비교부; 및상기 MSS값과 상기 패킷 페이로드 길이값을 비교하는 제2 비교부를 더 포함하는 불완전한 GET 요청 메시지를 이용한 서비스 거부 공격을 탐지하는 장치.
- 제15항에 있어서,상기 제1 비교부는 상기 카운팅된 분할된 GET 요청 패킷의 개수가 상기 분할된 GET 요청 패킷의 최대 개수보다 큰 경우를 나타내는 제1 비교 신호 및 상기 카운팅된 분할된 GET 요청 패킷의 개수가 최대 개수보다 작거나 작은 경우를 나타내는 제2 비교 신호 중 어느 하나를 상기 공격 판단부로 전송하는 것인 불완전한 GET 요청 메시지를 이용한 서비스 거부 공격을 탐지하는 장치.
- 제16항에 있어서, 상기 공격 판단부는 상기 제1 비교 신호에 응답하여 상기 클라이언트로부터 상기 서버로 전송되는 패킷을 불완전한 GET 요청 메시지를 이용한 서비스 거부 공격으로 판단하고, 상기 제2 비교 신호에 응답하여 상기 제2 비교부를 구동시키는 구동신호를 생성하는 것인 불완전한 GET 요청 메시지를 이용한 서비스 거부 공격을 탐지하는 장치.
- 제17항에 있어서, 상기 제2 비교부는 상기 구동신호에 응답하여 상기 MSS값과 상기 패킷 페이로드 길이값을 비교하고,상기 제2 비교부는 패킷 페이로드 길이값이 MSS값보다 작은 경우를 나타내는 제3 비교 신호 및 상기 패킷 페이로드 길이값이 MSS값보다 크거나 같은 경우를 나타내는 제4 비교 신호 중 어느 하나를 출력하는 것인 불완전한 GET 요청 메시지를 이용한 서비스 거부 공격을 탐지하는 장치.
- 제18항에 있어서, 상기 공격 판단부는 상기 제3 비교 신호에 응답하여 상기 클라이언트로부터 상기 서버로 전송되는 패킷을 불완전한 GET 메시지 요청에 의한 서비스 거부 공격으로 판단하고, 상기 제4 비교 신호에 응답하여 나머지 분할된 GET 요청 패킷을 수신하는 것인 불완전한 GET 요청 메시지를 이용한 서비스 거부 공격을 탐지하는 장치.
- HTTP를 이용한 서버와 클라이언트 간의 통신에서, 세션 연결이 완료된 이후 상기 클라이언트로부터 상기 서버로 전송되는 불완전한 GET 요청 메시지를 이용한 서비스 거부 공격을 탐지하는 방법에 있어서,상기 클라이언트가 상기 서버로 전송되는 GET 요청 패킷의 페이로드 바이트 수 또는 패킷 수를 누적하는 단계; 및상기 클라이언트가 상기 누적된 GET 요청 패킷의 페이로드 바이트 수 또는 패킷 수가 기 설정된 임계치에 도달하는 시점에서, 상기 서버로부터 HTTP 응답 패킷의 수신 여부를 확인하여, 상기 GET 요청 메시지의 서비스 거부 공격 여부를 판별하는 단계를 포함하는 것인 불완전한 GET 요청 메시지를 이용한 서비스 거부 공격을 탐지하는 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020090105112A KR101269552B1 (ko) | 2009-11-02 | 2009-11-02 | Http를 이용한 통신에서 불완전한 get 요청 메시지에 의한 서비스 거부 공격을 탐지하는 방법 및 그 장치 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020090105112A KR101269552B1 (ko) | 2009-11-02 | 2009-11-02 | Http를 이용한 통신에서 불완전한 get 요청 메시지에 의한 서비스 거부 공격을 탐지하는 방법 및 그 장치 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20110048349A true KR20110048349A (ko) | 2011-05-11 |
KR101269552B1 KR101269552B1 (ko) | 2013-06-04 |
Family
ID=44239512
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020090105112A KR101269552B1 (ko) | 2009-11-02 | 2009-11-02 | Http를 이용한 통신에서 불완전한 get 요청 메시지에 의한 서비스 거부 공격을 탐지하는 방법 및 그 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101269552B1 (ko) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101598187B1 (ko) * | 2014-12-23 | 2016-02-26 | 주식회사 시큐아이 | DDoS 공격 차단 방법 및 장치 |
KR20190053540A (ko) * | 2017-11-10 | 2019-05-20 | 고려대학교 산학협력단 | SDN 기반의 Slow HTTP DDoS 공격의 방어 시스템 및 그 방법 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100862187B1 (ko) * | 2006-10-27 | 2008-10-09 | 한국전자통신연구원 | 취약점 분석 및 공격방식 모델링을 이용한 네트워크기반의인터넷 웜 탐지 장치 및 그 방법 |
-
2009
- 2009-11-02 KR KR1020090105112A patent/KR101269552B1/ko not_active IP Right Cessation
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101598187B1 (ko) * | 2014-12-23 | 2016-02-26 | 주식회사 시큐아이 | DDoS 공격 차단 방법 및 장치 |
KR20190053540A (ko) * | 2017-11-10 | 2019-05-20 | 고려대학교 산학협력단 | SDN 기반의 Slow HTTP DDoS 공격의 방어 시스템 및 그 방법 |
US10931711B2 (en) | 2017-11-10 | 2021-02-23 | Korea University Research And Business Foundation | System of defending against HTTP DDoS attack based on SDN and method thereof |
Also Published As
Publication number | Publication date |
---|---|
KR101269552B1 (ko) | 2013-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4759389B2 (ja) | パケット通信装置 | |
US7623466B2 (en) | Symmetric connection detection | |
US10931711B2 (en) | System of defending against HTTP DDoS attack based on SDN and method thereof | |
KR101424490B1 (ko) | 지연시간 기반 역 접속 탐지 시스템 및 그 탐지 방법 | |
US10693908B2 (en) | Apparatus and method for detecting distributed reflection denial of service attack | |
WO2016106592A1 (zh) | 一种特征信息分析方法及装置 | |
US20140189867A1 (en) | DDoS ATTACK PROCESSING APPARATUS AND METHOD IN OPENFLOW SWITCH | |
US20090044005A1 (en) | Unauthorized communication detection method | |
KR20090014334A (ko) | 전송 프로토콜의 성능을 향상시키는 시스템 및 방법 | |
KR20130017333A (ko) | 응용 계층 기반의 슬로우 분산서비스거부 공격판단 시스템 및 방법 | |
US20140304817A1 (en) | APPARATUS AND METHOD FOR DETECTING SLOW READ DoS ATTACK | |
RU2635220C2 (ru) | Система двухсторонней связи в реальном времени с использованием протокола НТТР | |
US20110016523A1 (en) | Apparatus and method for detecting distributed denial of service attack | |
JP6502902B2 (ja) | 攻撃検知装置、攻撃検知システムおよび攻撃検知方法 | |
WO2010099754A1 (zh) | 一种发送日志信息的方法及装置 | |
CN108810008B (zh) | 传输控制协议流量过滤方法、装置、服务器及存储介质 | |
KR20110022141A (ko) | 응용계층 분산 서비스 거부 공격 탐지 및 차단 장치 및 그 방법 | |
KR101269552B1 (ko) | Http를 이용한 통신에서 불완전한 get 요청 메시지에 의한 서비스 거부 공격을 탐지하는 방법 및 그 장치 | |
WO2011012004A1 (zh) | 一种实现网络流量清洗的方法及系统 | |
Wang et al. | An approach for protecting the openflow switch from the saturation attack | |
CN115664833B (zh) | 基于局域网安全设备的网络劫持检测方法 | |
Rajaboevich et al. | Analysis of methods for measuring available bandwidth and classification of network traffic | |
CN108449280B (zh) | 一种避免tcp报文乒乓的方法及装置 | |
KR101424504B1 (ko) | 포지티브 방식을 이용한 통합보안관제시스템 | |
KR101997211B1 (ko) | 네트워크 보안 장치 및 그의 공격 탐지 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20160427 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20170427 Year of fee payment: 5 |
|
LAPS | Lapse due to unpaid annual fee |