KR20130022089A - 서비스 거부 공격에 대한 tcp연결 해제 방법 및 장치 - Google Patents

서비스 거부 공격에 대한 tcp연결 해제 방법 및 장치 Download PDF

Info

Publication number
KR20130022089A
KR20130022089A KR1020110084833A KR20110084833A KR20130022089A KR 20130022089 A KR20130022089 A KR 20130022089A KR 1020110084833 A KR1020110084833 A KR 1020110084833A KR 20110084833 A KR20110084833 A KR 20110084833A KR 20130022089 A KR20130022089 A KR 20130022089A
Authority
KR
South Korea
Prior art keywords
packet
server
ack
communication session
rst
Prior art date
Application number
KR1020110084833A
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 KR1020110084833A priority Critical patent/KR20130022089A/ko
Priority to US13/590,096 priority patent/US20130055349A1/en
Publication of KR20130022089A publication Critical patent/KR20130022089A/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/1441Countermeasures against malicious traffic
    • H04L63/1458Denial of Service
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/22Arrangements for preventing the taking of data from a data transmission channel without authorisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals

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)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Computer And Data Communications (AREA)

Abstract

본 발명에 따른 서비스 거부 공격에 대한 TCP연결 해제 방법 및 장치가 개시된다. 본 발명에 TCP연결 해제 방법은 어느 서버와 원격지 호스트간의 통신 세션에 대한 연결 해제 방법으로, 상기 통신 세션에 대한 연결 해제가 요구되는 경우, 상기 통신 세션에 대한 정보가 기록된 세션 테이블에서, 상기 서버로부터 상기 원격지 호스트로 전송된 마지막 ACK 패킷에 포함된 정보를 획득하는 단계, 상기 획득한 마지막 ACK 패킷에 대한 정보를 이용하여, 상기 통신 세션에 대한 재설정을 요구하는 RST 패킷을 생성하는 단계 및 상기 생성된 RST 패킷을 상기 서버로 전송하는 단계를 포함하여 구성된다. 또한, 본 발명에 따른 서비스 거부 공격에 대한 TCP연결 해제 방법 및 장치를 이용할 경우에는 서버 쪽의 ACK넘버를 즉시 획득하는 방법을 사용하여 서버 쪽 TCP ESTABLISHED 세션을 즉시 연결 해제할 수 있는 RST 패킷을 생성하여 전송하기 때문에, TCP ESTABLISHED 연결을 해제한 만큼 정상 사용자의 서비스 요청을 즉시 받아들일 수 있고, 공격 호스트의 공격 툴이 공격이 성공하고 있는 것으로 오인하게 만드는 효과가 있다.

Description

서비스 거부 공격에 대한 TCP연결 해제 방법 및 장치{METHOD FOR RELEASING TCP CONNECTIONS AGAINST DISTRIBUTED DENIAL OF SERVICE ATTACKS AND APPARATUS FOR THE SAME}
본 발명은 서비스 거부 공격 또는 분산 서비스 거부 공격에 대한 방어 기술에 관한 것으로, 더욱 상세하게는 서버의 TCP 연결을 장시간 점유하여 그 자원을 고갈시키는 형태의 서비스 거부 공격에 대해 그 연결을 즉시 해제하는 방법 및 장치에 관한 것이다.
대용량 트래픽에 기반한 기존의 서비스 거부 공격들은 그 특징이 일반 트래픽과 뚜렷이 구분되기 때문에 분산 서비스 거부(DDoS: DISTRIBUTED DENIAL OF SERVICE) 공격에 대한 방어 시스템들에 의해 쉽게 차단이 가능해졌다.
이에 따라, 최근의 서비스 거부 공격은 이를 회피하기 위해 소용량의 트래픽을 주로 이용하여 서버의 서비스 자원을 고갈시키는 방법을 사용하고 있다. 그러나, 소용량 트래픽을 통해 서버의 자원을 고갈시키기 위해서는 다수의 좀비 호스트가 필요하며, 공격자의 입장에서는 다수의 좀비 호스트 확보에 많은 시간이 걸린다는 어려움이 있고, 또한 서버의 하드웨어적 성능이 점점 고성능화 되면서 공격의 효과를 보기 위해서 확보해야 하는 좀비 호스트의 숫자도 점점 많아지게 되었다.
공격자들은 이와 같은 어려움을 해결하기 위해, 소규모 좀비 호스트로 소용량 트래픽을 통한 서비스 거부 방법들을 고안하였으며, 그 대표적인 공격 방법들 중의 하나가 서버의 서비스 별로 허용 가능한 TCP 연결 자원을 고갈시키는 방법이다. 이러한 방법에 사용된 대표적인 공격들이 Slowloris/R.U.D.Y./OWASP HTTP Post Tool 과 같은 것들인데, 이들은 단지 몇 대의 좀비 호스트 만으로도 서비스 거부 공격을 성공시킬 수 있다.
도 1은 서비스 거부 공격에 의해 TCP 연결 자원이 고갈된 예를 보여주는 개념도이다.
도 1을 참조하면 단지 한 대의 OWASP HTTP Post 공격 툴(xxx.xxx.174.21)(1)을 이용하여, 서버(xxx.xxx.186.214:80)(2)의 아파치 웹 서비스에 할당된 TCP 연결 자원을 고갈시킨 모습을 보여준다. 한편, 서버(2)의 아파치 웹 서비스에 현재 허용된 최대 TCP 연결 자원 386개가 공격 툴에 의해 모두 고갈되었기 때문에 정상 사용자의 새로운 서비스 접속은 거부되어 버린다.
도 2는 R.U.D.Y. 공격의 예를 보여주고 있으며, 공격 툴은 이와 같은 연결을 성립한 후, 지속적으로 천천히 패킷을 보냄으로써 해당 TCP 연결을 계속 점유하고 있다. 이로 인해서, 원래 의도된 20Mbyte의 데이터를 모두 받기까지 약 13,888일이 소요될 수 있다. 또한, 이 때문에 정상 사용자의 서비스 거부도 지속된다. 정상 사용자의 새로운 서비스 접속을 허용하기 위해서는, 공격 툴에 의해 점유된 서버의 현재 TCP 연결들을 해제하여야 한다.
현재 주로 이용하고 있는 방법은 서비스 프로그램을 종료했다가 다시 실행하거나, 연결을 해제할 원격지 호스트의 IP주소와 포트번호를 차단 ACL(Access Control Logic)로 적용하여, 해당 원격지 호스트의 패킷을 TCP 서비스의 연결해제 타임아웃(Timeout)에 걸릴 때까지 차단하는 방법을 이용한다.
그러나, 서비스를 종료하는 경우, 그 순간 모든 정상 사용자의 서비스도 종료가 되어 버리고, 연결해제 타임아웃 시간은 해당 서비스의 설정에 따라 수십 초에서 수십 분까지 다양하기 때문에, 결국 TCP 서비스의 연결해제 타임아웃 시간만큼 정상 사용자의 서비스 거부도 지속된다는 단점을 가진다.
상기와 같은 문제점을 해결하기 위한 본 발명의 목적은, 공격으로 판단된 통신 세션의 공격 호스트와의 TCP 연결을 즉시 해제하는 방법을 제공하는데 있다.
상기와 같은 문제점을 해결하기 위한 본 발명의 다른 목적은, 공격으로 판단된 통신 세션의 공격 호스트와의 TCP 연결을 즉시 해제하는 장치를 제공하는데 있다.
상기 목적을 달성하기 위한 본 발명의 일 측면은, 어느 서버와 원격지 호스트간의 통신 세션에 대한 연결 해제 방법으로, 상기 통신 세션에 대한 연결 해제가 요구되는 경우, 상기 통신 세션에 대한 정보가 기록된 세션 테이블에서, 상기 서버로부터 상기 원격지 호스트로 전송된 마지막 ACK 패킷에 포함된 정보를 획득하는 단계, 상기 획득한 마지막 ACK 패킷에 대한 정보를 이용하여, 상기 통신 세션에 대한 재설정을 요구하는 RST 패킷을 생성하는 단계 및 상기 생성된 RST 패킷을 상기 서버로 전송하는 단계를 포함하고, 상기 생성된 RST 패킷은, 상기 마지막 ACK 패킷에 대응하여 상기 원격지 호스트로부터 상기 서버로 전송하기 위하여 생성되는 형태의 패킷과 동일하되, TCP 헤더의 RST 플래그가 '1'로 설정된 상기 통신 세션의 재설정을 요청하는 패킷인 것을 특징으로 하는 연결 해제 방법을 제공한다.
여기서, 상기 세션 테이블에 기록된 상기 ACK 패킷에 포함된 정보는 상기 원격지 호스트의 포트 번호 및 IP 어드레스 중 최소한 하나를 포함하는 상기 통신 세션에 대한 기본 정보 및 상기 마지막 ACK 패킷의 ACK 번호를 포함하고, 상기 통신 세션에 대한 기본 정보는 상기 통신 세션이 설정될 때 기록되고, 상기 마지막 ACK 패킷의 ACK 번호는 상기 서버로부터 상기 세션의 원격 호스트로 ACK 패킷이 전송될 때마다 갱신되는 것을 특징으로 한다.
여기서, 상기 서버가 초기 구동시, 상기 서버에서 임의의 원격지 호스트로 전송되는 초기 ACK 패킷을 획득하여 상기 획득한 초기 ACK 패킷에 포함된 주소 정보들을 이용하여, 상기 서버로 전송되는 RST 패킷의 형태인 베이스 패킷을 생성하는 단계를 더 포함하는 것을 특징으로 한다.
여기서, 상기 세션에 대한 재설정을 요구하는 RST 패킷은 상기 베이스 패킷에 포함된 정보에 기초하여 생성하되, 상기 RST 패킷에 포함될 원격지 호스트에 대한 정보는 상기 세션 테이블에 저장된 상기 통신 세션의 원격지 호스트에 대한 정보를 이용하여 생성하고, 상기 RST 패킷의 일련번호는 상기 세션 테이블에 저장된 마지막 ACK 패킷의 ACK 번호를 이용하여 생성되는 것을 특징으로 한다.
여기서, 상기 통신 세션에 대한 연결 해제는 상기 통신 세션이 서비스 거부 공격에 이용되고 있다고 판단되는 경우 요구되는 것을 특징으로 한다.
상기 목적을 달성하기 위한 본 발명의 다른 측면은, 어느 서버와 원격지 호스트간의 통신 세션에 대한 연결 해제 방법으로, 상기 서버의 초기 가동시, 서버에서 임의의 원격지 호스트로 전송되는 초기 ACK 패킷을 획득하여, 상기 획득한 초기 ACK 패킷에 포함된 정보들을 이용하여, 상기 서버로 전송되는 FIN 패킷의 형태인 베이스 패킷을 생성하는 단계, 상기 통신 세션에 대한 연결 해제가 요구되는 경우, 상기 베이스 패킷에 기초하여, 상기 통신 세션을 종료시키기 위한 FIN 패킷을 생성하는 단계 및 상기 생성된 FIN 패킷을 상기 서버로 전송하는 단계를 포함하고, 상기 생성된 FIN 패킷은, 상기 원격지 호스트로부터 상기 서버로 전송하기 위하여 생성되는 형태의 패킷과 동일하되, TCP 헤더의 FIN 플래그가 '1'로 설정된 패킷인 것을 특징으로 하는 연결 해제 방법을 제공한다.
여기서, 상기 FIN 패킷에 대한 응답으로 상기 서버로부터 상기 원격지 호스트로 재전송되는 DUP ACK(Duplicated ACK) 패킷을 가로채는 단계 및 상기 DUP ACK 패킷에 포함된 ACK 번호를 이용하여, 상기 통신 세션에 대한 재설정을 요구하는 RST 패킷을 생성하는 단계 및 상기 RST 패킷을 상기 서버로 전송하는 단계를 더 포함하는 것을 특징으로 한다.
또한 여기서, 상기 RST 패킷은, 상기 FIN 패킷에 기초하여 생성하되, TCP 헤더의 RST 플래그를 '1'로 설정하고, 일련번호는 상기 DUP ACK 패킷에 포함된 ACK 번호를 이용하여 설정하는 것을 특징으로 한다.
또한 여기서, 상기 통신 세션에 대한 연결 해제는 상기 통신 세션이 서비스 거부 공격에 이용되고 있다고 판단되는 경우 요구되는 것을 특징으로 한다.
상기 다른 목적을 달성하기 위한 본 발명의 일 측면은, 어느 서버와 원격지 호스트간의 통신 세션에 대한 연결 해제 장치로, 상기 통신 세션의 원격지 호스트에 대한 기본 정보 및 상기 통신 세션의 서버로부터 상기 통신 세션의 원격지 호스트로 전송된 마지막 ACK 패킷에 대한 정보가 기록된 세션 테이블, 상기 통신 세션이 서비스 거부 공격에 이용되고 있다고 판단된 경우, 상기 세션 테이블에 기록된 상기 마지막 ACK 패킷에 대한 정보를 이용하여, 상기 통신 세션에 대한 재설정을 요구하는 RST 패킷을 생성하는 RST 패킷 생성부 및 상기 생성된 RST 패킷을 상기 통신 세션의 서버로 전송하는 RST 패킷 전송부를 포함하고, 상기 생성된 RST 패킷은, 상기 마지막 ACK 패킷에 대응하여 상기 통신 세션의 원격지 호스트로부터 상기 서버로 전송하기 위하여 생성되는 형태의 패킷과 동일하되, TCP 헤더의 RST 플래그가 '1'로 설정된 패킷인 것을 특징으로 하는 연결 해제 장치를 제공한다.
여기서, 상기 서버가 초기 구동시, 상기 서버에서 임의의 원격지 호스트로 전송되는 초기 ACK 패킷을 획득하여, 상기 획득한 초기 ACK 패킷에 포함된 주소 정보들을 이용하여, 상기 서버로 전송되는 RST 패킷의 형태인 베이스 패킷을 생성하는 베이스 패킷 생성부를 더 포함하고, 상기 통신 세션에 대한 재설정을 요구하는 RST 패킷은 상기 베이스 패킷에 포함된 정보에 기초하여 생성하되, 상기 RST 패킷에 포함될 원격지 호스트에 대한 정보는 상기 세션 테이블에 저장된 상기 통신 세션의 원격지 호스트에 대한 정보를 이용하여 생성하고, 상기 RST 패킷의 일련번호는 상기 세션 테이블에 저장된 마지막 ACK 패킷의 ACK 번호를 이용하여 생성되는 것을 특징으로 한다.
상기 다른 목적을 달성하기 위한 본 발명의 다른 측면은, 어느 서버와 원격지 호스트간의 통신 세션에 대한 연결 해제 장치로, 상기 서버의 초기 가동시, 서버에서 임의의 원격지 호스트로 전송되는 초기 ACK 패킷을 획득하여 상기 획득한 초기 ACK 패킷에 포함된 정보들을 이용하여, 상기 서버로 전송되는 FIN 패킷의 형태인 베이스 패킷을 생성하는 베이스 패킷 생성부, 상기 통신 세션이 서비스 거부 공격에 이용되고 있다고 판단된 경우, 상기 베이스 패킷에 기초하여, 상기 통신 세션을 종료시키기 위한 FIN 패킷을 생성하는 FIN 패킷 생성부 및 상기 생성된 FIN 패킷을 상기 서버로 전송하는 FIN 패킷 전송부를 포함하고, 상기 생성된 FIN 패킷은, 상기 원격지 호스트로부터 상기 서버로 전송하기 위하여 생성되는 형태의 패킷과 동일하되, TCP 헤더의 FIN 플래그가 '1'로 설정된 패킷인 것을 특징으로 하는 연결 해제 장치를 제공한다.
여기서, 상기 FIN 패킷에 대한 응답으로 상기 서버로부터 상기 원격지 호스트로 재전송되는 DUP ACK(Duplicated ACK) 패킷을 가로채어 수신하는 DUP ACK 패킷 후킹부, 상기 통신 세션에 대한 재설정을 요구하는 RST 패킷을 생성하되, 상기 DUP ACK 패킷에 포함된 ACK 번호를 이용하여 상기 RST 패킷의 일련번호를 생성하는 RST 패킷 생성부 및 상기 RST 패킷을 상기 서버로 전송하는 RST 패킷 전송부를 더 포함하는 것을 특징으로 한다.
상기와 같은 본 발명에 따른 서비스 거부 공격에 대한 TCP연결 해제 방법 및 장치를 이용할 경우에는 서버 쪽의 ACK넘버를 즉시 획득하는 방법을 사용하여 서버 쪽 TCP ESTABLISHED 세션을 즉시 연결 해제할 수 있는 RST 패킷을 생성하여 전송하기 때문에, TCP ESTABLISHED 연결을 해제한 만큼 정상 사용자의 서비스 요청을 즉시 받아들일 수 있게 된다. 또한, 서버 쪽 TCP ESTABLISHED 만을 연결 해제 하기 때문에 공격 호스트의 공격 툴이 공격이 성공하고 있는 것으로 오인하게 만드는 효과가 있다.
도 1은 서비스 거부 공격에 의해 TCP 연결 자원이 고갈된 예를 보여주는 개념도이다.
도 2는 R.U.D.Y. 서비스 거부 공격의 일 예를 보여주는 개념도이다.
도 3은 TCP 헤더의 구조를 개략적으로 보여주는 개념도이다.
도 4는 본 발명에 따른 통신 세션의 연결 해제 방법의 기본적 사상을 보여주는 개념도이다.
도 5는 본 발명의 일 실시예에 따른 통신 세션의 연결 해제를 위한 과정을 보여주는 개념도이다.
도 6은 본 발명의 일 실시예에 따른 통신 세션 연결 해제장치의 구성을 보여주는 블록도이다.
도 7은 본 발명의 일 실시예에 따른 세션 테이블의 구조를 보여주는 블록도이다.
도 8은 본 발명의 일 실시예에 따른 서버로부터 호스트로 전송되는 ACK 패킷을 획득한 예를 보여주는 개념도이다.
도 9는 본 발명의 일 실시예에 따른 베이스 패킷을 생성한 예를 보여주는 개념도이다.
도 10은 본 발명의 일 실시예에 따른 베이스 패킷을 RST 패킷으로 변경한 예를 보여주는 개념도이다.
도 11은 본 발명의 다른 실시예에 따른 통신 세션의 연결 해제를 위한 과정을 보여주는 개념도이다.
도 12는 본 발명의 다른 실시예에 따른 통신 세션 연결 해제장치의 구성을 보여주는 블록도이다.
도 13은 본 발명의 다른 실시예에 따른 베이스 패킷을 생성한 예를 보여주는 개념도이다.
도 14는 본 발명의 다른 실시예에 따른 베이스 패킷을 FIN 패킷으로 변경한 예를 보여주는 개념도이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다.
제1, 제2, A, B 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 본 발명에 따른 바람직한 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
본 발명은 공격 호스트에 의해 성립된 TCP ESTABLISHED 연결에 대해, 서버 쪽 TCP ESTABLISHED 만을 즉시 해제하는 방법 및 장치를 개시한다. 서버의 TCP ESTABLISHED 만 해제하는 이유는, 일부 공격 툴들이 공격 호스트 쪽의 TCP ESTABLISHED 연결이 끊어지면, 끊어진 수만큼 재 연결을 시도할 수 있기 때문에, 공격이 여전히 성공한 것으로 공격 툴들이 오인하도록 하기 위함이다.
이하 본 발명에 따른 통신 세션 연결 해제 방법 및 장치의 기초가 되는 TCP 헤더의 구조에 대해서 설명하기로 한다.
도 3은 TCP 헤더의 구조를 개략적으로 보여주는 개념도이다.
도3을 참조하면 TCP 헤더의 구조는 다음과 같이 설명될 수 있다.
TCP 헤더(70)에는 먼저 소스포트와 목적지 포트가 있는데 소스포트는 출발지의 서비스 포트 번호이며 목적지 포트는 도착지의 서비스 포트 번호로서 수신측 호스트에서 프로세스나 서비스를 식별하는 필드이다. 다음으로 시퀀스번호 필드(71)에는 패킷의 고유한 시퀀스번호가 부여되며 처음 연결을 시도할 때는 시스템에서 임의로 생성하게 되고 목적지 측에서 이 값을 이용하여 재구성을 한다.
또한 패킷이 분실되거나 지연 등으로 순서가 어긋나게 도착하는 경우 시퀀스번호(71)를 이용하여 데이터를 올바르게 재배열하게 된다. 응답 번호(72)필드는 패킷의 전송시와 재조립시에 사용된다. 수신된 시퀀스번호에 대하여 예상된 다음 옥텟을 명시한다.
'URG','ACK','PSH','PST','SYN','FIN'으로 이루어진 플래그 필드는 세션이 수행되는 도중에 사용되는 서비스와 오퍼레이션을 명시한다. URG플래그(73)는 긴급상황발생시 사용되는 플래그이고, ACK(74)플래그는 데이터가 제대로 전송되었는지 여부를 알려주는 플래그로서, 3웨이-핸드쉐이크 과정에서 상대로부터 받은 패킷에 대한 응답 패킷을 보내는 경우에 ACK플래그(74)가 '1'로 설정된다.
PSH플래그(75)는 해당 세그먼트의 데이터가 즉각 상위 응용프로그램에 전달되어야 함을 나타내고 RST플래그(76)는 접속의 재설정을 요구하는 플래그이다. SYN플래그(77)는 세션 수립을 제의하는 플래그인데, 초기에 클라이언트에서 서버로 세션을 요청하는 패킷을 보낼때 상기 SYN플래그(77)의 값이 '1'로 설정된다. FIN플래그(78)은 양방향 통신 중 한쪽에서 접속을 종료하면, 이 방향으로 더 이상의 데이터 흐름이 끝났음을 나타내는 필드이다.
본 발명은 위에 설명된 것과 같은 TCP헤더 구조의 특징을 이용하여, 시퀀스넘버와 ACK 넘버의 부여 규칙과 RST 패킷의 특징을 이용하여 공격에 사용된 세션의 연결을 해제하는 방법을 제안한다. 이하 본 발명에 따른 통신 세션의 연결 해제 방법의 기본 사상에 대해서 설명하기로 한다.
도 4는 본 발명에 따른 통신 세션의 연결 해제 방법의 기본적 사상을 보여주는 개념도이다.
도 4를 참조하면 서버(402)와 호스트(402)사이에 TCP/IP 통신 세션이 연결되기 전에 전송되는 패킷들과 해당 세션의 연결을 해제하기 위하여 전송되는 패킷들을 볼 수 있다.
TCP 프로토콜 규약상, 수신 측은 도착된 패킷의 시퀀스넘버를 확인하여, 기다리고 있던 시퀀스넘버가 아니면 해당 패킷을 버리게 된다. 또한, 앞의 도3을 통해서 설명한 것처럼TCP 프로토콜 규약상, RST 플래그가 '1'로 설정된 패킷은 TCP 연결의 즉시 해제를 요청하는 기능을 수행한다
또한, 서버로부터 최근에 수신한 ACK 패킷(422)의 ACK 넘버가 원격지 호스트(401)가 다음에 전송할 시퀀스넘버(411)가 되며, ACK 넘버를 전송한 서버(402)는 다음에 수신할 패킷의 시퀀스넘버로서 전송한 ACK 넘버(431)를 기다리게 된다
서버 쪽 TCP ESTABLISHED(432)를 해제하기 위해서는 도4에 점선 화살표에 나타난 것처럼, 공격 호스트(401)로부터 서버(402)로 SEQLAST 의 시퀀스넘버를 가진 RST 플래그가 '1'로 설정된 패킷(425)을 전송하여야 한다.
한편, TCP ESTABLISHED(432)를 해제(435)하기 위해 필요한 SEQLAST 값은 서버(402) 쪽에서 공격 호스트(401)로 전송한 마지막 패킷(424)의 ACK 넘버에서 추출할 수 있다. 본 발명은 이와 같은 사실에 근거하여, 서버쪽 TCP ESTABLISHED 세션(432)을 즉시 해제하기 위한 방법 두 가지를 제안한다.
이하 본 발명에 따른 연결 해제 방법의 실시예들을 도면을 참조하여 설명하기로 한다.
실시예 1
본 발명에 따른 일 실시예는, 최종적으로 서버로부터 호스트로 전송된 ACK 패킷의 ACK 번호를 지속적으로 유지하면서, 해당 ACK 번호를 RST 패킷의 시퀀스넘버로 설정하는 방법과 그 방법을 수행하는 장치를 보여준다. 이하, 도면을 참조하여, 설명하기로 한다.
도 5는 본 발명의 일 실시예에 따른 통신 세션의 연결 해제를 위한 과정을 보여주는 개념도이다.
도 5를 통해서 설명될 본 발명에 따른 일 실시예는 RST 패킷을 서버로 전송하여 연결해제를 요청하는 방법을 개시한다.
도 5를 참조하면 본 발명의 일 실시예에 따른 통신 세션의 연결 해제를 위한 과정의 각 단계는 어느 서버와 원격지 호스트간의 통신 세션에 대한 연결 해제 방법으로서, 베이스 패킷 생성 단계 (S110), 세션 정보 갱신 단계(S130), 마지막 ACK번호 획득 단계(S150), RST 패킷 생성 단계(S160), RST 패킷 전송 단계(S170), ACL정보 갱신 단계(S180)를 포함하여 구성된다.
베이스 패킷 생성 단계(S110)는 서버가 초기 구동시, 서버에서 임의의 원격지 호스트로 전송되는 최초의 ACK 패킷을 획득하여, 획득한 초기 ACK 패킷에 포함된 기본 정보들을 이용하여, 서버로 전송되는 RST 패킷의 형태인 베이스 패킷을 생성하는 단계이다. 이 단계는 서버의 초기 구동시 한번만 수행되고, 이와 같이 생성된 베이스 패킷에 포함된 기본적인 정보들은 세션의 연결해제를 위하여 RST 패킷을 생성시 참조하게 된다.
기본 정보에는 원격지 MAC 주소 및 서버 쪽 윈도우 크기 등이 포함될 수 있따. ACK 패킷을 획득하지 않고도 패킷을 생성하기 위한 기본 정보들은 간단히 수집할 수 있으므로, 수집된 정보를 이용하여 패킷을 생성할 수도 있다. 패킷은 54바이트 크기로 획득하거나 생성할 수 있다.
이때 임의의 원격지 호스트는 해당 세션의 호스트일 수도 있고 아닐 수 도 있다. 베이스 패킷은 패킷내 기본정보, 즉 주로 서버의 주소정보 등을 참조하기 위하여 초기에 한번 생성되는 것이므로 원격지 호스트에 의해 한정되지는 않는다.
세션 정보 갱신 단계(S130)는 통신 세션이 설정될 때 해당 통신 세션에 대한 기본 정보, 즉 예를 들면, 해당 세션의 원격 호스트 IP 어드레스 및 포트번호를 기록한다. 또한, 서버로부터 해당 세션의 원격 호스트로 ACK 패킷이 전송될 때마다 해당 패킷에 포함된 ACK 번호가 세션 테이블에 기록된다. 즉, 세션 테이블의 ACK 번호는 가장 최근에 서버로부터 세션의 호스트로 전송된 ACK 패킷의 번호가 유지되도록 갱신된다.
지금까지 위에서 설명된 단계(S110, S130)는 해당 세션에 대한 연결해제 요청의 유무에 상관없이 수행되는데, 이는 어떤 세션이 예를 들어, 서비스 거부 공격에 이용되고 있다고 판단되는 경우 연결해제를 위한 기본적인 정보를 유지하기 위한 단계일 수 있다. 또한 본 발명의 일 실시예에 필수적인 단계라기 보다는, 시스템 성능의 효율성을 고려한 선택적인 단계이다.
이하 설명될 단계는 특정 통신 세션에 대한 연결 해제가 요구되는 경우에 수행되는 단계이다.
마지막 ACK번호 획득 단계(S150)는 연결해제가 요구되는 통신 세션에 대한 정보가 기록된 세션 테이블에서, 해당 세션의 서버로부터 원격지 호스트로 전송된 마지막 ACK 패킷에 포함된 정보를 획득하는 단계이다. 즉 앞에서 설명된 것처럼 세션 테이블에는 가장 최근에 전송된 ACK 패킷의 ACK 번호가 기록되어 있는데 해당 번호를 세션테이블에서 가져오는 것이다.
RST 패킷 생성 단계(S160)는 앞서 획득한 마지막 ACK 패킷에 대한 정보, 즉 ACK 번호를 이용하여, 해당 통신 세션에 대한 재설정을 요구하는 RST 패킷을 생성하는 단계이다. 이때, RST 패킷은, 해당 세션의 서버로부터 원격지 호스트로 보내진 마지막 ACK 패킷에 대응하여 해당 원격지 호스트로부터 서버로 전송하기 위하여 생성되는 형태의 패킷과 동일하게 생성된다. 따라서, RST 패킷의 플래그는 '1'로 설정되고, 세션 테이블에서 획득한 마지막 ACK 패킷의 번호는 RST 패킷의 시퀀스번호가 된다. 또한, RST 패킷에 기록되어야 하는 목적지 정보 등은 서버의 초기 구동시 생성된 베이스 패킷에 포함된 정보를 이용한다.
베이스 패킷을 이용한 RST 패킷의 생성에 대한 좀 더 상세한 사항은 후술하기로 한다.
RST 패킷 전송 단계(S170)는 생성된 RST 패킷을 해당 통신 세션의 서버로 전송하는 단계이다. 해당 RST 패킷이 서버로 전송되면, 서버는 호스트로부터의 연결해제 요청으로 인식하여, 연결을 해제하게 된다.
ACL정보 갱신 단계(S180)는 ACL(Access Control Logic) 테이블에 접속이 해제된 세션의 원격지 호스트에 대한 정보를 기록하는 단계이다. 즉 ACL 테이블에 해당 호스트에 대한 정보를 기록하여, 추후 접속 요청이 있는 경우 해당 요청을 차단할 수 있게된다.
이하 본 발명의 일 실시예에 따른 통신 세션 연결 해제장치의 구성 및 구성간의 연결관계에 대하여 설명하기로 한다.
도 6은 본 발명의 일 실시예에 따른 통신 세션 연결 해제장치의 구성을 보여주는 블록도이다.
도 7은 본 발명의 일 실시예에 따른 세션 테이블의 구조를 보여주는 개념도이다.
도 6을 참조하면, 본 발명의 일 실시예에 따른 통신 세션 연결 해제장치는 서버와 원격지 호스트간의 통신 세션에 대한 연결 해제 장치로, 베이스 패킷 생성부(31), 세션 정보 갱신부(32), RST 패킷 생성부(33), RST패킷 전송부(34), ACL정보 갱신부(37), 세션 테이블(50) 및 ACL 테이블(60)을 포함하여 구성된다.
도 6을 참조하면 본 발명의 일 실시예에 따른 통신 세션 연결 해제장치는 다음과 같이 설명될 수 있다.
베이스 패킷 생성부(31)는 통신 세션의 서버(20)가 초기 구동시, 해당 서버에서 임의의 원격지 호스트로 전송되는 초기 ACK 패킷을 획득하여, 해당 초기 ACK 패킷에 포함된 주소 정보들을 이용하여, 세션의 서버(20)로 전송되는 RST 패킷의 형태인 베이스 패킷을 생성하는 부분이다.
이때 임의의 원격지 호스트는 해당 세션의 호스트일 수도 있고 아닐 수 도 있다. 베이스 패킷은 패킷내 기본정보, 즉 주로 서버의 주소정보 등을 참조하기 위하여 초기에 한번 생성되는 것이므로 원격지 호스트에 의해 한정되지는 않는다.
세션 정보 갱신부(32)는 통신 세션이 설정될 때마다 해당 통신 세션에 대한 기본 정보, 즉 예를 들면, 해당 세션의 원격 호스트 IP 어드레스(51) 및 포트번호(52)를 세션 테이블(50)에 기록한다. 또한, 서버(20)로부터 해당 세션의 원격 호스트(10)로 ACK 패킷이 전송될 때마다 해당 패킷에 포함된 ACK 번호(53)가 세션 테이블(50)에 기록된다. 즉, 세션 테이블(50)의 ACK 번호(53)는 가장 최근에 서버(20)로부터 세션의 호스트(10)로 전송된 ACK 패킷의 번호가 유지되도록 갱신된다.
RST 패킷 생성부(33)는 해당 세션이 서비스 거부 공격에 이용되고 있다고 판단된 경우, 세션 테이블(50)에 기록된 마지막 ACK 패킷에 대한 정보를 이용하여, 해당 세션에 대한 재설정을 요구하는 RST플래그가 '1'로 설정된 패킷을 생성하는 부분이다. 이때, RST 패킷은, 마지막 ACK 패킷에 대응하여 상기 통신 세션의 원격지 호스트로부터 상기 서버로 전송하기 위하여 생성되는 형태의 패킷과 동일하다.
또한, RST 패킷은 베이스 패킷 생성부(31)에서 생성한 베이스 패킷에 포함된 정보에 기초하여 생성하되, RST 패킷에 포함될 원격지 호스트(10)에 대한 정보는 세션 테이블(50)에 저장된 상기 통신 세션의 원격지 호스트에 대한 정보를 이용하여 생성하며, RST 패킷의 일련번호를 세션 테이블(50)에 저장된 마지막 ACK 패킷의 ACK 번호(53)로 설정한다.
RST패킷 전송부(34)는 생성된 RST 패킷을 세션의 서버(20)로 전송하는 부분이다. 해당 RST 패킷을 수신한 서버는 해당 통신 세션을 종료하게 될 것이다.
ACL정보 갱신부(37)는 ACL(Access Control Logic) 테이블(60)에 접속이 해제된 세션의 원격지 호스트에 대한 정보를 기록하는 단계이다. 즉 ACL 테이블(60)에 해당 호스트에 대한 정보를 기록하여, 추후 접속 요청이 있는 경우 해당 요청을 차단할 수 있게된다.
세션 테이블(50)은 앞서 설명한 것처럼, 세션이 수립될 때마다 세션에 대한 정보, 예를 들면, 호스트의 IP주소 및 포트 번호가 기록되고, 해당 세션을 통해 서버로부터 호스트로 ACK 패킷이 전송될 때마다 ACK 패킷에 포함된 ACK 번호가 갱신되어 기록된다.
도 7을 참조하면, 세션 테이블(50)의 구조는 원격지 호스트 IP 주소(51), 포트번호(52) 및 서버(20)에서 호스트(10)로 마지막으로 전송된 ACK 패킷의ACK 번호(53)로 구성된다.
본 실시예에 따른 장치는 서버에서 상시 운영되는 형태로 구현 가능하다. 하드웨어 구현의 경우에는 원격지 호스트와 서버 사이에 위치하는 네트워크 보안 시스템 혹은 서버에 장착되는 네트워크 인터페이스 카드 (Network Interface Card, NIC) 형태로도 적용이 가능하다. 서버는 웹 서비스와 같은 주요 서비스에 대해 서버의 특정 서비스 포트번호(Sport)를 통해, 서비스를 요청하는 원격지 호스트의 접속을 기다리고 있다.
이하, 앞에 설명된 통신 세션의 연결해제를 위한 과정의 각 단계별 패킷의 필드의 변화를 도면을 참조하여 설명하기로 한다.
도 8은 본 발명의 일 실시예에 따른 서버로부터 호스트로 전송되는 ACK 패킷을 획득한 예를 보여주는 개념도이다. 도 8은 앞서 도 5를 통해 설명된 베이스 패킷 생성단계(S210)와 도6을 통해 설명된 베이스 패킷 생성부(41)에서 획득한 초기의 패킷에 대한 예이다.
도 8을 참조하면, 서버의 주요 서비스 초기 구동 시, 서버(20)의 포트(Sport) 에서 원격지 호스트(10)로 나가는 ACK 패킷(Pack) 하나를 획득하여 메모리에 저장한 패킷에 포함된 정보를 보여준다.
패킷에는 RST 패킷을 생성할 때 필요한 기본 정보들이 포함되게 되는데, 기본 정보에는 목적지 MAC 주소(811,812) 및 서버 쪽 윈도우 크기 등이 포함되어 있다.
패킷에는 세션의 서버(20)에서 원격지 호스트(10)로 나가기 위한 주소 정보들(도 8의 회색 표시된 필드들)이 기록되어 있으며, 해당 패킷을 변경하여 원격지 호스트(10)에서 서버(20)로 전송되는 형태의 패킷을 생성하게 된다.
도 8에 나타난 주소정보들, 즉 각 필드의 값들을 다음과 같이 표현하기로 한다.
Smac : 서버의 MAC 주소 = 현재 패킷의 소스MAC 주소(813,814)
Sip : 서버의 IP 주소 = 현재 패킷의 소스 IP 주소(821)
Sport : 서버의 서비스 포트번호 = 현재 패킷의 소스포트번호(831)
Rmac : 원격지 MAC 주소 = 현재 패킷의 목적지MAC 주소(811,812)
Rip : 원격지 호스트의 IP 주소 = 현재 패킷의 목적지 IP주소(822)
Rport : 원격지 호스트의 포트번호 = 현재 패킷의 목적지 포트 번호(832)
도 9는 본 발명의 일 실시예에 따른 베이스 패킷을 생성한 예를 보여주는 개념도이다.
도 9를 참조하면, 도8의 패킷에 기초하여 생성된 베이스 패킷, 즉 호스트(10)에서 서버(20)로 보내질 형태의 패킷에 포함된 각 필드의 값을 보여준다.
도 9를 참조하면, 도8의 패킷(800)의 목적지 MAC 주소(811,812), 소스MAC 주소(813,814), 목적지 IP 주소(822) 및 목적지 포트 번호(832)가 각각 도9의 패킷(900)의 Smac(911, 912), Rmac(913,914), Sip(922), Sport(932) 로 변경되고, TCP 헤더의 RST 플래그(935)만을 '1'로 설정하여 베이스 패킷(900)을 생성하는 과정을 나타낸다. 이렇게 변경하면 RST패킷을 서버 쪽으로 보내기 위한 베이스 패킷(900)의 생성을 마치게 된다.
특정 세션에 대한 접속해제의 요청이 있거나, 접속해제가 필요하다고 판단되는 경우, 서버로 전송될 RST 패킷을 생성하게 된다.
도 10은 본 발명의 일 실시예에 따른 베이스 패킷을 RST 패킷으로 변경한 예를 보여주는 개념도이다.
도 10를 참조하면, 도9의 베이스 패킷(900)에 기초하여 생성된 RST패킷(1000) 에 포함된 각 필드의 값을 보여준다. 회색으로 표시된 필드(1021, 1023, 1031, 1033, 1036)가 기존의 베이스 패킷(900)과 다르게 변경된 부분이다.
기존의 베이스 패킷(900)의 소스 IP주소(921), 소스 포트 번호(931)에 대응 하는 필드를 해당 세션의 호스트(10)의 IP 주소 및 포트 번호로 변경하여 Rip(1021), Rport(1031)로 변경된 것을 알 수 있다.
또한, 세션테이블(50)에서 해당 세션에 대응되는 서버(10)에서 호스트(10)로 마지막으로 전송된 패킷의 ACK 번호(53)를 가져와서, RST 패킷(1000)의 시퀀스 번호 필드(1033)에 설정함으로써, 해당 시퀀스번호는 Sack(1033)로 설정된다.
IP 헤더의 첵섬(1023)과 TCP 헤더의 첵섬(1036)은 변경된 현재 RST패킷 정보를 이용하여 계산함으로써 최종적으로 완성된 RST 패킷(1000)을 생성한다.
이렇게 생성한 RST 패킷(1000)을 서버(20)로 전송하게 되면, 원격지 호스트(10)에서 서버(20)로 RST 패킷(1000)을 전송한 효과를 보게 되어, 서버 쪽 ESTABLISHED가 즉시 해제된다. 반면에 공격 호스트로 예상되는 원격지 호스트(10)에서는 여전히 TCP ESTABLISHED 상태가 유지되기 때문에, 공격 툴은 공격이 여전히 성공하고 있는 것으로 오인하여 타임아웃에 의해 ESTABLISHED가 자동해제 되기 전까지는 추가적인 공격을 하지 않게 된다.
원격지 호스트(10)에서는 타임아웃에 의해 TCP ESTABLISHED가 해제되면 재공격을 할 수 있기 때문에, ACL(Access Control Logic) 테이블(60)에 원격지 호스트의 IP 주소를 등록하여 원격지 호스트(10)로부터의 패킷을 차단한다.
실시예1의 방법의 응용으로서 베이스 패킷을 생성하지 않고, 세션 테이블에서 ACK 번호만이 아닌 서버에서 원격지 호스트로 전송되는 ACK 패킷 전체 혹은 ACK 패킷의 54바이트를 통째로 저장해 놓는 방법을 사용할 수도 있다. 그러나, 베이스 패킷을 사용하는 방법이 소프트웨어 구현 측면에서는 처리성능이 좋고, 하드웨어 측면에서는 메모리 사용이 효율적이기 때문에 더 바람직하다.
실시예 1을 통해 설명된 방법의 경우 서버 쪽으로 공격이 발생하고 있는지의 여부와는 관계없이, 항상 서버 쪽의 ACK 패킷을 모니터링 혹은 후킹(hooking)해야 하기 때문에, 소프트웨어 구현의 경우 서버에 지속적인 부하를 가져올 수 있다.
다음으로, 위에 제기된 문제를 해결하기 위한 다른 실시예를 설명한다. 본 방법 역시 소프트웨어 구현뿐 아니라 하드웨어로도 구현 가능하다.
실시예 2
도 11은 본 발명의 다른 실시예에 따른 통신 세션의 연결 해제를 위한 과정을 보여주는 개념도이다.
도 11을 통해서 설명될 본 발명에 따른 다른 실시예는 RST 패킷을 서버로 전송하기 전에 FIN 패킷을 전송하여, 이에 대한 응답으로 전송되는 Duplicated ACK 패킷에서 ACK 번호를 획득하는 방법을 개시한다.
도 11을 참조하면 본 발명의 다른 실시예에 따른 통신 세션의 연결 해제를 위한 과정의 각 단계는 어느 서버와 원격지 호스트간의 통신 세션에 대한 연결 해제 방법으로서, 베이스 패킷 생성 단계(S210), FIN 패킷 생성 단계(S230), FIN 패킷 전송 단계(S240), DUP ACK패킷 후킹 단계(S250), RST 패킷 생성 단계(S260), RST 패킷 전송 단계(S270), ACL정보 갱신 단계(S280)를 포함하여 구성된다.
베이스 패킷 생성 단계(S210)는 서버가 초기 구동시, 서버에서 임의의 원격지 호스트로 전송되는 최초의 ACK 패킷을 획득하여, 획득한 초기 ACK 패킷에 포함된 기본 정보들을 이용하여, 서버로 전송되는 RST 패킷의 형태인 베이스 패킷을 생성하는 단계이다. 이 단계는 서버의 초기 구동시 한번만 수행되고, 이와 같이 생성된 베이스 패킷에 포함된 기본적인 정보들은 세션의 연결해제를 위하여 RST 패킷을 생성시 참조하게 된다.
기본 정보에는 원격지 MAC 주소 및 서버쪽 윈도우 크기 등이 포함될 수 있따. ACK 패킷을 획득하지 않고도 패킷을 생성하기 위한 기본 정보들은 간단히 수집할 수 있으므로, 수집된 정보를 이용하여 패킷을 생성할 수도 있다. 패킷은 54바이트 크기로 획득하거나 생성할 수 있다.
이때 임의의 원격지 호스트는 해당 세션의 호스트일 수도 있고 아닐 수 도 있다. 베이스 패킷은 패킷내 기본정보, 즉 주로 서버의 주소정보 등을 참조하기 위하여 초기에 한번 생성되는 것이므로 원격지 호스트에 의해 한정되지는 않는다.
베이스 패킷 생성 단계(S210)는 해당 세션에 대한 연결해제 요청의 유무에 상관없이 수행되는데, 이는 어떤 세션이 예를 들어, 서비스 거부 공격에 이용되고 있다고 판단되는 경우 연결해제를 위한 기본적인 정보를 유지하기 위한 단계일 수 있다. 또한 본 발명의 일 실시예에 필수적인 단계라기 보다는, 시스템 성능의 효율성을 고려한 선택적인 단계이다.
이하 설명될 단계는 특정 통신 세션에 대한 연결 해제가 요구되는 경우에 수행되는 단계이다.
FIN 패킷 생성 단계(S230)는 특정 통신 세션에 대한 연결 해제가 요구되는 경우, 미리 생성된 베이스 패킷에 기초하여, 통신 세션을 종료시키기 위한 FIN 패킷을 생성하는 단계이다. 이때, FIN 패킷은, 원격지 호스트로부터 서버로 전송하기 위하여 생성되는 형태의 패킷과 동일하되, 패킷의 FIN 플래그가 '1'로 설정된 패킷이다. 한편 이경우, 해당 세션의 서버에서 원격지 호스트로 최종적으로 전송된 ACK 패킷의 ACK 번호를 알 수 없기 때문에, 이와 같이 생성된 FIN 패킷의 시퀀스번호에는 잘못된 번호가 포함된다.
FIN 패킷 전송 단계(S240)는 생성된 FIN 패킷을 세선의 서버로 전송하는 단계이다. 앞서 설명된 것처럼, 시퀀스번호가 맞지 않는 FIN 패킷을 수신한 서버는, TCP 프로토콜 규약상, 이에 대한 응답으로 DUP ACK(Duplicated ACK) 패킷을 원격지 호스트로 재전송하게 된다.
DUP ACK패킷 후킹 단계(S250)는 FIN 패킷에 대한 응답으로 서버로부터 원격지 호스트로 재전송되는 DUP ACK(Duplicated ACK) 패킷을 가로채는 단계이다. 이 DUP ACK 패킷에는 서버에서 호스트로 전송된 마지막 ACK 패킷의 ACK번호가 기록되어 있기 때문에, 서버 쪽 TCP ESTABLISHED를 차단할 RST 패킷의 시퀀스번호로서 사용이 된다.
RST 패킷 생성 단계(S260) DUP ACK 패킷에 포함된 ACK 번호를 이용하여, 해당 통신 세션에 대한 재설정을 요구하는 RST 패킷을 생성하는 단계이다. 이때, RST 패킷은, FIN 패킷에 기초하여 생성할수도 있고, 베이스 패킷에 기초하여 생성할 수도 있다. 다만, TCP 헤더의 RST 플래그를 '1'로 설정하고, 일련번호는 DUP ACK 패킷에 포함된 ACK 번호를 이용하여 설정한다.
RST 패킷 전송 단계(S270)는 생성된 RST 패킷을 해당 통신 세션의 서버로 전송하는 단계이다. 해당 RST 패킷이 서버로 전송되면, 서버는 호스트로부터의 연결해제 요청으로 인식하여, 연결을 해제하게 된다.
ACL정보 갱신 단계(S280)는 ACL(Access Control Logic) 테이블에 접속이 해제된 세션의 원격지 호스트에 대한 정보를 기록하는 단계이다. 즉 ACL 테이블에 해당 호스트에 대한 정보를 기록하여, 추후 접속 요청이 있는 경우 해당 요청을 차단할 수 있게된다.
이하 본 발명의 다른 실시예에 따른 통신 세션 연결 해제장치의 구성 및 구성간의 연결관계에 대하여 설명하기로 한다.
도 12는 본 발명의 다른 실시예에 따른 통신 세션 연결 해제장치의 구성을 보여주는 블록도이다.
도 12를 참조하면, 본 발명의 다른 실시예에 따른 통신 세션 연결 해제장치는 서버와 원격지 호스트간의 통신 세션에 대한 연결 해제 장치로, 베이스 패킷 생성부(41), 세션 정보 갱신부(42), RST 패킷 생성부(43), RST패킷 전송부(44), ACL정보 갱신부(47) 및 ACL 테이블(60)을 포함하여 구성된다.
도12를 참조하면 본 발명의 다른 실시예에 따른 통신 세션 연결 해제장치는 다음과 같이 설명될 수 있다.
베이스 패킷 생성부(41)는 통신 세션의 서버(20)가 초기 구동시, 해당 서버에서 임의의 원격지 호스트로 전송되는 초기 ACK 패킷을 획득하여, 해당 초기 ACK 패킷에 포함된 주소 정보들을 이용하여, 세션의 서버(20)로 전송되는 FIN 패킷의 형태인 베이스 패킷을 생성하는 부분이다.
이때 임의의 원격지 호스트는 해당 세션의 호스트일 수도 있고 아닐 수 도 있다. 베이스 패킷은 패킷내 기본정보, 즉 주로 서버의 주소정보 등을 참조하기 위하여 초기에 한번 생성되는 것이므로 원격지 호스트에 의해 한정되지는 않는다.
FIN 패킷 생성부(42)는 특정 통신 세션에 대한 연결 해제가 요구되는 경우, 미리 생성된 베이스 패킷에 기초하여, 통신 세션을 종료시키기 위한 FIN 패킷을 생성하는 부분이다. 이때, FIN 패킷은, 원격지 호스트(10)로부터 서버(20)로 전송하기 위하여 생성되는 형태의 패킷과 동일하되, 패킷의 FIN 플래그가 '1'로 설정된 패킷이다. 한편 이경우, 해당 세션의 서버에서 원격지 호스트(10)로 최종적으로 전송된 ACK 패킷의 ACK 번호를 알 수 없기 때문에, 이와 같이 생성된 FIN 패킷의 시퀀스번호에는 잘못된 번호가 포함된다.
FIN 패킷 전송부(43)는 생성된 FIN 패킷을 세선의 서버(20)로 전송하는 부분이다. 앞서 설명된 것처럼, 시퀀스번호가 맞지 않는 FIN 패킷을 수신한 서버(20)는, TCP 프로토콜 규약상, 이에 대한 응답으로 DUP ACK(Duplicated ACK) 패킷을 원격지 호스트(10)로 재전송하게 된다.
DUP ACK패킷 후킹부(44)는 FIN 패킷에 대한 응답으로 서버(20)로부터 원격지 호스트(10)로 재전송되는 DUP ACK(Duplicated ACK) 패킷을 가로채는 부분이다. 이 DUP ACK 패킷에는 서버(20)에서 호스트(10)로 전송된 마지막 ACK 패킷의 ACK번호가 기록되어 있기 때문에, 서버 쪽 TCP ESTABLISHED를 차단할 RST 패킷의 시퀀스번호로서 사용이 된다.
RST 패킷 생성부(45) DUP ACK 패킷에 포함된 ACK 번호를 이용하여, 해당 통신 세션에 대한 재설정을 요구하는 RST 패킷을 생성하는 부분이다. 이때, RST 패킷은, FIN 패킷에 기초하여 생성할수도 있고, 베이스 패킷에 기초하여 생성할 수도 있다. 다만, TCP 헤더의 RST 플래그를 '1'로 설정하고, 일련번호는 DUP ACK 패킷에 포함된 ACK 번호를 이용하여 설정한다.
RST패킷 전송부(46)는 생성된 RST 패킷을 세션의 서버(20)로 전송하는 부분이다. 해당 RST 패킷을 수신한 서버(20)는 해당 통신 세션을 종료하게 될 것이다.
ACL정보 갱신부(47)는 ACL(Access Control Logic) 테이블(60)에 접속이 해제된 세션의 원격지 호스트에 대한 정보를 기록하는 단계이다. 즉 ACL 테이블(60)에 해당 호스트(10)에 대한 정보를 기록하여, 추후 접속 요청이 있는 경우 해당 요청을 차단할 수 있게된다.
이하, 앞에 설명된 통신 세션의 연결 해제를 위한 각 단계 중 베이스 패킷 및 FIN 패킷이 생성되는 단계에 따른 패킷의 필드의 변화를 도면을 참조하여 설명하기로 한다.
도 13은 본 발명의 다른 실시예에 따른 베이스 패킷을 생성한 예를 보여주는 개념도이다.
도 13을 참조하면, 도8의 서버에서 임의의 호스트로 전송된 패킷에 기초하여 생성된 베이스 패킷, 즉 호스트(10)에서 서버(20)로 보내질 형태의 패킷에 포함된 각 필드의 값을 보여준다.
도 13을 참조하면, 도8의 패킷(800)의 목적지 MAC 주소(811,812), 소스MAC 주소(813,814), 목적지 IP 주소(822) 및 목적지 포트 번호(832)가 각각 도13의 패킷(1300)의 Smac(1311, 912), Rmac(1313,1314), Sip(1322), Sport(1332) 로 변경되고, TCP 헤더의 FIN 플래그(1335)를 '1'로 설정하여 베이스 패킷(1300)을 생성하는 과정을 나타낸다. 이렇게 변경하면 FIN패킷을 서버 쪽으로 보내기 위한 베이스 패킷(1300)의 생성을 마치게 된다.
특정 세션에 대한 접속해제의 요청이 있거나, 접속해제가 필요하다고 판단되는 경우, 서버로 전송될 FIN 패킷을 생성하게 된다.
도 14는 본 발명의 다른 실시예에 따른 베이스 패킷을 FIN 패킷으로 변경한 예를 보여주는 개념도이다.
도 14를 참조하면, 도13의 베이스 패킷(1300)에 기초하여 생성된 FIN패킷(1400) 에 포함된 각 필드의 값을 보여준다. 회색으로 표시된 필드(1421, 1423, 1431, 1436)가 기존의 베이스 패킷(1300)과 다르게 변경된 부분이다.
베이스 패킷(1300)의 소스 IP주소(1321), 소스 포트 번호(1331)에 대응 하는 필드를 해당 세션의 호스트(10)의 IP 주소 및 포트 번호로 변경하여 Rip(1421), Rport(1431)로 변경된 것을 알 수 있다.
이때, 시퀀스번호(1433)는 최종 ACK 번호값을 알 수 없기 때문에 변경하지 않는다. 한편, IP 헤더의 첵섬(1423)과 TCP 헤더의 첵섬(1436)은 변경된 현재 FIN패킷 정보를 이용하여 계산함으로써 최종적으로 완성된 FIN 패킷(1400)을 생성한다.
이와 같이 생성된 FIN 패킷(1400)을 서버(20)로 전송하게 되면, TCP 프로토콜 상의 규약에 의해 서버(20)는 시퀀스넘버가 맞지 않는 FIN 패킷(1400)에 대한 응답으로 Duplicated ACK 패킷을 원격지 호스트(R)로 재전송하게 된다. 이 Duplicated ACK 패킷에 기록된 서버 쪽 ACK넘버가 서버 쪽 TCP ESTABLISHED를 차단할 RST 패킷의 시퀀스번호로 사용이 된다.
따라서, FIN 패킷(1400)을 전송 후, 잠시 동안만 Duplicated ACK 패킷을 모니터링 혹은 후킹하면 되기 때문에, 실시예 1의 방법과 같이 항상 패킷 모니터링 혹은 후킹 처리를 하지 않아도 되는 성능상의 장점이 된다.
Duplicated ACK 패킷은 패킷 캡춰 프로그램인 wireshark에서는 <표 1>과 같은 형태의 정보로서 나타난다.
<표 1>
Figure pat00001

이후 단계에서 생성되는 RST 패킷은 도10의 RST 패킷(1000)과 동일하다.
상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.

Claims (13)

  1. 어느 서버와 원격지 호스트간의 통신 세션에 대한 연결 해제 방법으로,
    상기 통신 세션에 대한 연결 해제가 요구되는 경우,
    상기 통신 세션에 대한 정보가 기록된 세션 테이블에서, 상기 서버로부터 상기 원격지 호스트로 전송된 마지막 ACK 패킷에 포함된 정보를 획득하는 단계;
    상기 획득한 마지막 ACK 패킷에 대한 정보를 이용하여, 상기 통신 세션에 대한 재설정을 요구하는 RST 패킷을 생성하는 단계; 및
    상기 생성된 RST 패킷을 상기 서버로 전송하는 단계를 포함하고,
    상기 생성된 RST 패킷은, 상기 마지막 ACK 패킷에 대응하여 상기 원격지 호스트로부터 상기 서버로 전송하기 위하여 생성되는 형태의 패킷과 동일하되, TCP 헤더의 RST 플래그가 '1'로 설정된 상기 통신 세션의 재설정을 요청하는 패킷인 것을 특징으로 하는 연결 해제 방법.
  2. 제 1항에 있어서,
    상기 세션 테이블에 기록된 상기 ACK 패킷에 포함된 정보는 상기 원격지 호스트의 포트 번호 및 IP 어드레스 중 최소한 하나를 포함하는 상기 통신 세션에 대한 기본 정보 및 상기 마지막 ACK 패킷의 ACK 번호를 포함하고,
    상기 통신 세션에 대한 기본 정보는 상기 통신 세션이 설정될 때 기록되고, 상기 마지막 ACK 패킷의 ACK 번호는 상기 서버로부터 상기 세션의 원격 호스트로 ACK 패킷이 전송될 때마다 갱신되는 것을 특징으로 하는 연결 해제 방법.
  3. 제 1항에 있어서,
    상기 서버가 초기 구동시,
    상기 서버에서 임의의 원격지 호스트로 전송되는 초기 ACK 패킷을 획득하여 상기 획득한 초기 ACK 패킷에 포함된 주소 정보들을 이용하여, 상기 서버로 전송되는 RST 패킷의 형태인 베이스 패킷을 생성하는 단계를 더 포함하는 것을 특징으로 하는 연결 해제 방법.
  4. 제 3항에 있어서,
    상기 세션에 대한 재설정을 요구하는 RST 패킷은 상기 베이스 패킷에 포함된 정보에 기초하여 생성하되,
    상기 RST 패킷에 포함될 원격지 호스트에 대한 정보는 상기 세션 테이블에 저장된 상기 통신 세션의 원격지 호스트에 대한 정보를 이용하여 생성하고,
    상기 RST 패킷의 일련번호는 상기 세션 테이블에 저장된 마지막 ACK 패킷의 ACK 번호를 이용하여 생성되는 것을 특징으로 하는 연결 해제 방법.
  5. 제 1항에 있어서,
    상기 통신 세션에 대한 연결 해제는 상기 통신 세션이 서비스 거부 공격에 이용되고 있다고 판단되는 경우 요구되는 것을 특징으로 하는 연결 해제 방법.
  6. 어느 서버와 원격지 호스트간의 통신 세션에 대한 연결 해제 방법으로,
    상기 서버의 초기 가동시, 서버에서 임의의 원격지 호스트로 전송되는 초기 ACK 패킷을 획득하여, 상기 획득한 초기 ACK 패킷에 포함된 정보들을 이용하여, 상기 서버로 전송되는 FIN 패킷의 형태인 베이스 패킷을 생성하는 단계;
    상기 통신 세션에 대한 연결 해제가 요구되는 경우, 상기 베이스 패킷에 기초하여, 상기 통신 세션을 종료시키기 위한 FIN 패킷을 생성하는 단계; 및
    상기 생성된 FIN 패킷을 상기 서버로 전송하는 단계를 포함하고,
    상기 생성된 FIN 패킷은, 상기 원격지 호스트로부터 상기 서버로 전송하기 위하여 생성되는 형태의 패킷과 동일하되, TCP 헤더의 FIN 플래그가 '1'로 설정된 패킷인 것을 특징으로 하는 연결 해제 방법.
  7. 제 6항에 있어서,
    상기 FIN 패킷에 대한 응답으로 상기 서버로부터 상기 원격지 호스트로 재전송되는 DUP ACK(Duplicated ACK) 패킷을 가로채는 단계;
    상기 DUP ACK 패킷에 포함된 ACK 번호를 이용하여, 상기 통신 세션에 대한 재설정을 요구하는 RST 패킷을 생성하는 단계; 및
    상기 RST 패킷을 상기 서버로 전송하는 단계를 더 포함하는 것을 특징으로 하는 연결 해제 방법.
  8. 제 7항에 있어서,
    상기 RST 패킷은, 상기 FIN 패킷에 기초하여 생성하되, TCP 헤더의 RST 플래그를 '1'로 설정하고, 일련번호는 상기 DUP ACK 패킷에 포함된 ACK 번호를 이용하여 설정하는 것을 특징으로 하는 연결 해제 방법.
  9. 제 6항에 있어서,
    상기 통신 세션에 대한 연결 해제는 상기 통신 세션이 서비스 거부 공격에 이용되고 있다고 판단되는 경우 요구되는 것을 특징으로 하는 연결 해제 방법.
  10. 어느 서버와 원격지 호스트간의 통신 세션에 대한 연결 해제 장치로,
    상기 통신 세션의 원격지 호스트에 대한 기본 정보 및 상기 통신 세션의 서버로부터 상기 통신 세션의 원격지 호스트로 전송된 마지막 ACK 패킷에 대한 정보가 기록된 세션 테이블;
    상기 통신 세션이 서비스 거부 공격에 이용되고 있다고 판단된 경우, 상기 세션 테이블에 기록된 상기 마지막 ACK 패킷에 대한 정보를 이용하여, 상기 통신 세션에 대한 재설정을 요구하는 RST 패킷을 생성하는 RST 패킷 생성부; 및
    상기 생성된 RST 패킷을 상기 통신 세션의 서버로 전송하는 RST 패킷 전송부를 포함하고,
    상기 생성된 RST 패킷은, 상기 마지막 ACK 패킷에 대응하여 상기 통신 세션의 원격지 호스트로부터 상기 서버로 전송하기 위하여 생성되는 형태의 패킷과 동일하되, TCP 헤더의 RST 플래그가 '1'로 설정된 패킷인 것을 특징으로 하는 연결 해제 장치.
  11. 제 10항에 있어서,
    상기 서버가 초기 구동시, 상기 서버에서 임의의 원격지 호스트로 전송되는 초기 ACK 패킷을 획득하여, 상기 획득한 초기 ACK 패킷에 포함된 정보들을 이용하여, 상기 서버로 전송되는 RST 패킷의 형태인 베이스 패킷을 생성하는 베이스 패킷 생성부를 더 포함하고,
    상기 통신 세션에 대한 재설정을 요구하는 RST 패킷은 상기 베이스 패킷에 포함된 정보에 기초하여 생성하되,
    상기 RST 패킷에 포함될 원격지 호스트에 대한 정보는 상기 세션 테이블에 저장된 상기 통신 세션의 원격지 호스트에 대한 정보를 이용하여 생성하고,
    상기 RST 패킷의 일련번호는 상기 세션 테이블에 저장된 마지막 ACK 패킷의 ACK 번호를 이용하여 생성되는 것을 특징으로 하는 연결 해제 장치.
  12. 어느 서버와 원격지 호스트간의 통신 세션에 대한 연결 해제 장치로,
    상기 서버의 초기 가동시, 서버에서 임의의 원격지 호스트로 전송되는 초기 ACK 패킷을 획득하여 상기 획득한 초기 ACK 패킷에 포함된 주소 정보들을 이용하여, 상기 서버로 전송되는 FIN 패킷의 형태인 베이스 패킷을 생성하는 베이스 패킷 생성부;
    상기 통신 세션이 서비스 거부 공격에 이용되고 있다고 판단된 경우, 상기 베이스 패킷에 기초하여, 상기 통신 세션을 종료시키기 위한 FIN 패킷을 생성하는 FIN 패킷 생성부; 및
    상기 생성된 FIN 패킷을 상기 서버로 전송하는 FIN 패킷 전송부를 포함하고,
    상기 생성된 FIN 패킷은, 상기 원격지 호스트로부터 상기 서버로 전송하기 위하여 생성되는 형태의 패킷과 동일하되, TCP 헤더의 FIN 플래그가 '1'로 설정된 패킷인 것을 특징으로 하는 연결 해제 장치.
  13. 제 12항에 있어서,
    상기 FIN 패킷에 대한 응답으로 상기 서버로부터 상기 원격지 호스트로 재전송되는 DUP ACK(Duplicated ACK) 패킷을 가로채어 수신하는 DUP ACK 패킷 후킹부;
    상기 통신 세션에 대한 재설정을 요구하는 RST 패킷을 생성하되, 상기 DUP ACK 패킷에 포함된 ACK 번호를 이용하여 상기 RST 패킷의 일련번호를 생성하는 RST 패킷 생성부; 및
    상기 RST 패킷을 상기 서버로 전송하는 RST 패킷 전송부를 더 포함하는 것을 특징으로 하는 연결 해제 장치.
KR1020110084833A 2011-08-24 2011-08-24 서비스 거부 공격에 대한 tcp연결 해제 방법 및 장치 KR20130022089A (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020110084833A KR20130022089A (ko) 2011-08-24 2011-08-24 서비스 거부 공격에 대한 tcp연결 해제 방법 및 장치
US13/590,096 US20130055349A1 (en) 2011-08-24 2012-08-20 Method and apparatus for releasing tcp connections in defense against distributed denial of service attacks

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110084833A KR20130022089A (ko) 2011-08-24 2011-08-24 서비스 거부 공격에 대한 tcp연결 해제 방법 및 장치

Publications (1)

Publication Number Publication Date
KR20130022089A true KR20130022089A (ko) 2013-03-06

Family

ID=47745666

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110084833A KR20130022089A (ko) 2011-08-24 2011-08-24 서비스 거부 공격에 대한 tcp연결 해제 방법 및 장치

Country Status (2)

Country Link
US (1) US20130055349A1 (ko)
KR (1) KR20130022089A (ko)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6094357B2 (ja) * 2013-04-22 2017-03-15 富士通株式会社 通信方法、通信システム、及び通信装置
CN108777607B (zh) * 2018-04-23 2021-08-31 上海华为技术有限公司 一种拦截确认包的方法以及接入网设备
CN108810008B (zh) * 2018-06-28 2020-06-30 腾讯科技(深圳)有限公司 传输控制协议流量过滤方法、装置、服务器及存储介质
CN116775382B (zh) * 2023-08-21 2023-10-27 江苏拓浦高科技有限公司 基于ZooKeeper分布式协调服务的主备服务器切换方法及系统

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6816910B1 (en) * 2000-02-17 2004-11-09 Netzentry, Inc. Method and apparatus for limiting network connection resources
US7607170B2 (en) * 2004-12-22 2009-10-20 Radware Ltd. Stateful attack protection
US20070022474A1 (en) * 2005-07-21 2007-01-25 Mistletoe Technologies, Inc. Portable firewall

Also Published As

Publication number Publication date
US20130055349A1 (en) 2013-02-28

Similar Documents

Publication Publication Date Title
Jansen et al. The Sniper Attack: Anonymously Deanonymizing and Disabling the Tor Network.
CN110198293B (zh) 服务器的攻击防护方法、装置、存储介质和电子装置
US8745723B2 (en) System and method for providing unified transport and security protocols
US8499146B2 (en) Method and device for preventing network attacks
US8224976B2 (en) Using a server&#39;s capability profile to establish a connection
Abramov et al. TCP Ack storm DoS attacks
US7404210B2 (en) Method and apparatus for defending against distributed denial of service attacks on TCP servers by TCP stateless hogs
WO2010048838A1 (zh) 网络认证方法、客户端请求认证的方法、客户端和装置
CA2565409A1 (en) Preventing network reset denial of service attacks using embedded authentication information
WO2011029357A1 (zh) 认证通信流量的方法、通信系统和防护装置
CN110266678B (zh) 安全攻击检测方法、装置、计算机设备及存储介质
US8973143B2 (en) Method and system for defeating denial of service attacks
CN102510385A (zh) 防ip数据报分片攻击的方法
CN112165447A (zh) 基于waf设备的网络安全监测方法、系统和电子装置
CN112187793A (zh) 一种ACK Flood攻击的防护方法及装置
KR20130022089A (ko) 서비스 거부 공격에 대한 tcp연결 해제 방법 및 장치
US20230016035A1 (en) Efficient connection processing
Luckie et al. Resilience of deployed TCP to blind attacks
CA2548344A1 (en) Preventing network reset denial of service attacks
Kumar et al. Data sequence signal manipulation in multipath tcp (mptcp): The vulnerability, attack and its detection
JP2006185194A (ja) サーバ装置、通信制御方法及びプログラム
EP3539235B1 (en) Systems, apparatuses and methods for cooperating routers
WO2016197498A1 (zh) 一种防止网络攻击的方法及设备、存储介质
JP2006345268A (ja) パケットフィルタ回路及びパケットフィルタ方法
KR100576013B1 (ko) 통신 네트워크에서 전송 제어 프로토콜 동기 플러드공격을 방어하기 위한 방법

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid