ICMP attack against TCP에 대한 고찰

by l2zeo posted Mar 08, 2010
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

참고로 제가 운영중인 카페에 있는자료들입니다.

가입하셔도 보실수 없는 자료들입니다.

http://cafe.naver.com/itgogo.cafe


ICMP attack against TCP에 대한 고찰
Version 0.2
최초작성일 : 2005년 5월 3일
최 종작성일 : 2005년 5월 7일
작성자 : 인포섹㈜ 서 병국 / CISSP

I. 개요
여러 보안관련 기관에서 대다수 회사에서 구현한 ICMP over TCP/IP에서 3가지 보안취약점이 존
재한다고 발표하였으며, 곧바로 이 취약점에 대한 Proof of Concept(PoC) 수준의 공격코드
(Exploit Code)까지 공개되었다.
이 보안취약점을 설명하기 이전에, 먼저 RFC에서 정의한 ICMP Protocol에 대해 살펴보고 그
이후 어떻게 이를 응용하여 공격이 이루어지는지 설명하도록 하겠다. 테스트 환경에서 Exploit
Code(PoC 버전)를 사용하여 실제 Packet을 분석하고 Network IDS에서는 어떤 Signature 탐지할
수있는지 알아 보겠다.
아울러 여러기관 및 벤더에서 보안권고문이 발표되었기 때문에 해결방법(패치 적용 등)은 본 글
에서 생락한다. 왜냐하면, 각각의 정보시스템에 해당되는 상세한 해결 방법은 벤더 웹페이지를
참조하는 것이 더 낳기 때문이다.
II. ICMP (Internet Control Message Protocol)
1. 정의 및 설명
TCP/IP 기반의 인터넷 통신 서비스에서 인터넷 프로토콜(IP, Internet Protocol)과 조합하여
통신 중에 발생하는 오류의 처리와 전송 경로의 변경 등을 제어 메시지를 취급하는
Connectionless Transmission 용의 프로토콜을 ICMP라고 한다. 즉, IP Protocol의 일부분이고
그 상위 Protocol(TCP,UDP)을 사용하기도 하며, 경우에 따라서 Process(Kernel)에 TCP, UDP
Layer를 걸치지 않고 직접 ICMP Messages가 전달될 수 있다. IP Protocol과 ICMP Protocol
을 이용한 대표적인 프로그램은 ping과 traceroute(or tracert.exe)이며, TCP Flow
Control(Sliding Window), UDP Protocol(tftp,DNS)에서도 사용된다.
ICMP Error Message는 Network 응용프로그램(이하 Application)이 시스템 또는 Network상으
로 문제가 발생할 경우에 전송된다. 이 ICMP Error Message에서는 수신하는 호스트로 하여금
문제가 발생한 해당 Application에 정보를 전달하기 위해서 ICMP Message 필드에 반드시
TCP(또는 UDP) Header 정보와 Error Message를 발생시켰던 Original datagram을 포함되어야
한다.
2
2. ICMP Format
ICMP Message는 ‘TYPE’과 ‘CODE’로 구분이 되며 아래 ‘표 1’과 같이 정의될 수 있다. 일반
적으로 ICMP Format은 ‘그림 1’과 같다.
TYPE (8bit) CODE (8bit) Checksum (16bit)
(contents depends on type and code)
‘TCP or UDP Header’
[그림 1 : General ICMP Message]
type code Description Error type Query Error
0 0 Echo reply ?
3 Destination unreachable: ?
0 Network unreachable Soft Error ?
1 Host unreachable Soft Error ?
2 Protocol unreachable Hard Error ?
3 Port unreachable Hard Error ?
4 Fragmentation needed
But don’t fragment-bit
(DF) set
Hard Error ?
5 Source route failed Soft Error ?
4 0 Source quench ?
8 0 Echo request ?
[표 1 : 주요 ICMP Message (RFC 1122 section 4.2.3.9) ]
3. ICMP Error Message에 따른 TCP Flow Control
가. Hard Error (Type:3, Code:2,3,4)
해당 호스트가 Hard error를 수신할 경우 연결을 종료한다. (TCP SHOULD abort the
connection)
나. Soft Error (Type:3, Code:0,1,5)
해당 호스트가 Soft Error를 수신할 경우, 연결을 종료해서는 안되며 해당 Application에 TCP
상태 정보를 전달해야 한다. (TCP MUST NOT abort the connection, and it SHOULD make
the information available to the application.)
III. ICMP attack Against TCP
3가지 공격의 원리는 간단하다. 위에서 살펴본 Hard Error와 Soft Error를 정상적인 발생이 아닌
DoS 공격을 하기 위한 의도적으로 전송시켜 정보시스템의 비 정상적인 TCP Flow Control을 유도
하는 것이다.
3
인터넷상에 공개된 PoC(Proof of Concept) Exploit Code를 사용하여, 공격 Packet을 Sniffing하
여 실제 ICMP Error 코드를 확인하고, 상용 Network IDS에서 어떻게 탐지되는지 살펴보자.
■ 분석에 사용된 프로그램 :
- Packet Capture Program : NGS Sniff v1.1 / tcpdump v3.5.3
- Network IDS : snort 2.3.3 (Build 14) / ISS사의 Proventia™ (탐지정책 : Default 설정 사용)
1. Blind connection-reset attack
가. 설명
공격자는 Server와 Client의 IP를 Spoofing을 하여 Hard error 타입의 ICMP Message(Type 3,
Code : 2, Protocol unreachable)를 연결되어 있는(Connection-Established) 두 호스트에 전
송함으로써, 두 호스트로 하여금 연결을 끊도록 유도하는 공격이다. 즉, 앞에서 살펴 보았던
‘II.3. ICMP Error Message에 따른 TCP Flow Control’에서 정의한 RFC 정의를 악의적인 목적
으로 응용한 것이다. 이는 ICMP Message를 통해 연결이 끊어지더라도 TCP의 fault
Recovery 정책(RFC 816)으로 인하여 다시 재 연결이 된다.
나. 예상 피해
두 호스트간의 Session이 비 정상적으로 종료가 된다. 즉, SQL, telnet, BGP 등과 같은 연결
은 즉시 끊어짐으로써 DoS(Denial of Service) 공격과 같은 피해를 입게 된다.
다. 공격 Packet (예)
1) NGS Sniff v1.1
IP Header
Length and version: 0x45
Type of service: 0x00
Total length: 56
Identifier: 42451
Flags: 0x0000
TTL: 255
Protocol: 1 (ICMP)
Checksum: 0x1e1f
Source IP: 192.168.59.128
Dest IP: 192.168.59.1
ICMP Header
Type: 3 (destination unreachable)
Code: 2 (protocol unreachable)
IP Header
Length and version: 0x45
Type of service: 0x00
4
Total length: 40
Identifier: 25068
Flags: 0x0000
TTL: 255
Protocol: 6 (TCP)
Checksum: 0x6211
Source IP: 192.168.59.1
Dest IP: 192.168.59.128
2) tcpdump v3.5.3
13:38:18.602740 192.168.59.128 > 192.168.59.1: icmp: 192.168.59.128 protocol 6 unreachable for
192.168.59.1.http > 192.168.59.128.274: [|tcp] (ttl 255, id 25068, len 40) (ttl 255, id 42451, len
56)
13:38:18.602800 192.168.59.128 > 192.168.59.1: icmp: 192.168.59.128 protocol 6 unreachable for
192.168.59.1.http > 192.168.59.128.275: [|tcp] (ttl 255, id 25068, len 40) (ttl 255, id 42451, len
56)
13:38:18.602813 192.168.59.128 > 192.168.59.1: icmp: 192.168.59.128 protocol 6 unreachable for
192.168.59.1.http > 192.168.59.128.276: [|tcp] (ttl 255, id 25068, len 40) (ttl 255, id 42451, len
56)
13:38:18.603410 192.168.59.128 > 192.168.59.1: icmp: 192.168.59.128 protocol 6 unreachable for
192.168.59.1.http > 192.168.59.128.277: [|tcp] (ttl 255, id 25068, len 40) (ttl 255, id 42451, len
56)
3) snort 2.3.3 (Build 14)
[**] [1:404:6] ICMP Destination Unreachable Protocol Unreachable [**]
[Classification: Misc activity] [Priority: 3]
05/18-15:00:55.302897 192.168.59.128 -> 192.168.59.1
ICMP TTL:255 TOS:0x0 ID:42451 IpLen:20 DgmLen:56
Type:3 Code:2 DESTINATION UNREACHABLE: PROTOCOL UNREACHABLE
** ORIGINAL DATAGRAM DUMP:
192.168.59.1:80 -> 192.168.59.128:1
TCP TTL:255 TOS:0x0 ID:25068 IpLen:20 DgmLen:40
Seq: 0x23484F44 Ack: 0x67B63736
** END OF DUMP
4) ISS사의 Proventia™ G200
탐지된 공격에 대한 탐지 Signature(ICMP_Protocol_Unreachable_TCP)와 상세한 설명이
함께 나타내고 있다.
5
2. Path MTU discovery Attack
가. 설명
Sender와 Receiver 간에 Fragmentation을 하지 않고 최대 크기(IP datagram)로 전송할 수
있는 MTU를 Path MTU라고 하며, 이는 Sender와 Receiver간의 경로상에 존재하는 Hop의
최소 MTU가 Path MTU값으로 결정된다. ICMP Unreachable Error를 통해 Path MTU값을 결정
하는 알고리즘을 PMTUD(Path MTU Discovery Mechanism)라고 한다.
단, Path MTU값은 68byte 보다 작아서는 안된다. (RFC 1192-Path MTU Discovery) 왜냐하면,
IP Header(20 byte), ICMP Header(8byte), Message(20byte), TCP Header (20byte) 합이
68byte 이기 때문이다. (그림 3)
공격자 는 Path MTU 값을 68 byte 값으로 설정하여 ICMP Unreachable Error 메시지를 전
송함으로써, 데이터 전송속도를 떨어뜨리게 할 수 있다. 68 Byte 이하 값으로 전송할 경우
Cisco사의 Router 경우 ‘Runt Error’로 인하여 해당 Packet이 버려지게 됨으로써, 공격을 성
공시킬 수 없다. (참고 : 일반적인 Internet Network(LAN)의 MTU값은 1500 이다.)
TYPE (3,8bit) CODE (4,8bit) Checksum (16bit)
Unused (must be 0) MTU of next-hop network
IP Header + first 8 bytes of original IP datagram data
[그림 2 : ICMP ‘unreachable’ message Form]
8 byte
6
Ethernet
Header
IP
Header
ICMP
Header
IP Header of datagram that generated error
TCP(UDP)
Header
14byte 20byte 8byte 20bytes 20(8)byte
[그림 3 : ICMP Message Frame]
나. 예상 피해
Network 속도 저하, Server의 Network Performance 저하 등이 발생할 것으로 예상된다.
다. 공격 Packet (예)
1) NGS Sniff v1.1
IP Header
Length and version: 0x45
Type of service: 0x00
Total length: 56
Identifier: 42451
Flags: 0x0000
TTL: 255
Protocol: 1 (ICMP)
Checksum: 0x1e1f
Source IP: 192.168.59.128
Dest IP: 192.168.59.1
ICMP Header
Type: 3 (destination unreachable)
Code: 4 (frag needed but don't fragment bit set)
IP Header
Length and version: 0x45
Type of service: 0x00
Total length: 40
Identifier: 25068
Flags: 0x0000
TTL: 255
Protocol: 6 (TCP)
Checksum: 0x6211
ICMP Message
Data portion of ICMP message
ICMP Datagram
7
Source IP: 192.168.59.1
Dest IP: 192.168.59.128
2) tcpdump v3.5.3
13:44:38.969342 192.168.59.128 > 192.168.59.1: icmp: 192.168.59.128 unreachable - need to
frag (mtu 68) for 192.168.59.1.http > 192.168.59.128.617: [|tcp] (ttl 255, id 25068, len 40) (ttl
255, id 42451, len 56)
13:44:38.969439 192.168.59.128 > 192.168.59.1: icmp: 192.168.59.128 unreachable - need to
frag (mtu 68) for 192.168.59.1.http > 192.168.59.128.618: [|tcp] (ttl 255, id 25068, len 40) (ttl
255, id 42451, len 56)
13:44:38.970826 192.168.59.128 > 192.168.59.1: icmp: 192.168.59.128 unreachable - need to
frag (mtu 68) for 192.168.59.1.http > 192.168.59.128.619: [|tcp] (ttl 255, id 25068, len 40) (ttl
255, id 42451, len 56)
13:44:38.970928 192.168.59.128 > 192.168.59.1: icmp: 192.168.59.128 unreachable - need to
frag (mtu 68) for 192.168.59.1.http > 192.168.59.128.620: [|tcp] (ttl 255, id 25068, len 40) (ttl
255, id 42451, len 56)
3) snort 2.3.3 (Build 14)
[**] [1:396:6] ICMP Destination Unreachable Fragmentation Needed and DF bit was set [**]
[Classification: Misc activity] [Priority: 3]
05/18-15:04:34.186053 192.168.59.128 -> 192.168.59.1
ICMP TTL:255 TOS:0x0 ID:42451 IpLen:20 DgmLen:56
Type:3 Code:4 DESTINATION UNREACHABLE: FRAGMENTATION NEEDED, DF SET
NEXT LINK MTU: 68
** ORIGINAL DATAGRAM DUMP:
192.168.59.1:80 -> 192.168.59.128:3826
TCP TTL:255 TOS:0x0 ID:25068 IpLen:20 DgmLen:40
Seq: 0x23484F44 Ack: 0xDAAE04F7
** END OF DUMP
4) ISS사의 Proventia™ G200
탐지된 공격에 대한 탐지 Signature(ICMP_TCP_MTU_DoS)와 상세한 설명이 함께 나타내
고 있다. RFC에서 정의한 최소 Path MTU값은 68보다 20% 높은 Threshold 값인 82로 설
정하여 Threshold 값 이하의 Path MTU값인 경우 공격으로 판단한다.
Network IDS에서 나오는 공격 로그 중 Path MTU 값을 통해 공격 유무를 판단하는 기준으
로 봐야 한다. 탐지 Signature에 적절한 Threshold Path MTU 값을 설정함으로 False
Positive를 줄일 수 있다. 만약 Network IDS에서 Path MTU값을 분석할 수 없다면 공격 기
준을 삼을 수 없어 상당한 분석시간이 필요로 하게 된다.
8
3. ICMP Source Quench attack
가. 설명
데이터를 전송하는 시스템이 ‘ICMP Source Quench1’ message(type:4, code:0)를 수신할 경
우, ‘slow start2’로 즉, Congestion Windows (cwnd) 전송을 하게 되며, 데이터 전송속도를
낮추게 한다. 이는 RFC에서 정의한 TCP Flow Control 기능 중 하나이다. 공격자는 공격대상
시스템에 ‘Source Quench’ 메시지를 전송함으로써, 데이터 전송속도를 떨어뜨릴 수 있다.
나. 예상피해
Network 속도 저하, Server의 Network Performance 저하 등이 발생할 것으로 예상된다.
다. 공격 Packet (예)
1) NGS Sniff v1.1
IP Header
Length and version: 0x45
Type of service: 0x00
Total length: 56
Identifier: 42451
Flags: 0x0000
TTL: 255
1 RFC 1122 section 4.2.3.9 참고
2 RFC 1122 section 4.2.2.15 참고
탐지된 MTU 값 : 68
Threshold MTU 값 : 82
9
Protocol: 1 (ICMP)
Checksum: 0x1e1f
Source IP: 192.168.59.128
Dest IP: 192.168.59.1
ICMP Header
Type: 4 (source quench)
Code: 0 (unknown code)
Raw Data
45 00 00 28 61 ec 00 00 ff 06 62 11 c0 a8 3b 01 (E (a b ; )
c0 a8 3b 80 00 50 3b a9 23 48 4f 44 ( ; P; #HOD)
2) tcpdump v3.5.3
13:48:43.510578 192.168.59.128 > 192.168.59.1: icmp: source quench for 192.168.59.1.http >
192.168.59.128.332: [|tcp] (ttl 255, id 25068, len 40) (ttl 255, id 42451, len 56)
13:48:43.510591 192.168.59.128 > 192.168.59.1: icmp: source quench for 192.168.59.1.http >
192.168.59.128.333: [|tcp] (ttl 255, id 25068, len 40) (ttl 255, id 42451, len 56)
13:48:43.510602 192.168.59.128 > 192.168.59.1: icmp: source quench for 192.168.59.1.http >
192.168.59.128.334: [|tcp] (ttl 255, id 25068, len 40) (ttl 255, id 42451, len 56)
13:48:43.510614 192.168.59.128 > 192.168.59.1: icmp: source quench for 192.168.59.1.http >
192.168.59.128.335: [|tcp] (ttl 255, id 25068, len 40) (ttl 255, id 42451, len 56)
3) snort 2.3.3 (Build 14)
[**] [1:477:2] ICMP Source Quench [**]
[Classification: Potentially Bad Traffic] [Priority: 2]
05/18-15:05:21.776438 192.168.59.128 -> 192.168.59.1
ICMP TTL:255 TOS:0x0 ID:42451 IpLen:20 DgmLen:56
Type:4 Code:0 SOURCE QUENCH
4) ISS사의 Proventia™ G200
탐지된 공격에 대한 탐지 Signature(ICMP_Source_Quench)와 상세한 설명이 함께 나타내
고 있다.
10
IV. 결론
이번에 나온 ICMP attack against TCP 취약점을 이용한 공격은 과거 SYN Flood와 같은
Protocol 자체에 대한 취약점을 이용한 공격으로써 의미가 있다. 이에 대한 대응방법도 마찬가지
로, 일부 공격형태에 대해서는 원천적으로 차단할 수 없고 다소 완화시키는 수준밖에 없다.
최근 보안공격 추세는 최신 취약점에 대한 Exploit Code만을 이용한 해커 개인의 공격보다는
Bot종류 Worm과 같이 기본적인 뼈대는 유지하면서, 새로운 Exploit Code를 하나씩 더 늘어나는
형태, 즉 Zero-Day-Exploit이 아닌 Zero-Day-Worm 형태로 발전하고 있다. 만약 ICMP Attack
against TCP 공격 코드가 더욱 더 완성되어 Bot Worm에 포함되어 확산이 된다면, 한동안 보안
관리자, Network 운영자, Server 관리자, 보안관제회사는 이에 대한 대응책을 마련하기 위해서 상
당히 노력해야 할 것으로 생각된다.
마지막으로, 여러가지 상용 IDS에 대한 탐지 이벤트 분석과 실제와 가까운 Network 구성상에
서 성능 모니터링 및 공격/방어 테스트를 수행하고자 하였으나, 여러가지 복잡한 사정으로 인하
여 복합적인 테스트를 수행하지 못한 점이 무척이나 아쉽다.
Appendix (참고 자료)
1. IETF
http://www.ietf.org/internet-drafts/draft-gont-tcpm-icmp-attacks-03.txt
2. US-CERT
http://www.kb.cert.org/vuls/id/222750
11
3. TCP/IP Illustrated, Volume1 ? W.Richard Stevens (ISBN 0-201-63346-9)
4. Cisco Systems
http://www.cisco.com/warp/public/707/cisco-sa-20050412-icmp.shtml,
5. RFC 816 - Fault isolation and recovery
http://www.faqs.org/rfcs/rfc816.html
6. RFC 1192 - Path MTU discovery
http://www.faqs.org/rfcs/rfc1191.html
7. TCP/IP Web Guide
http://www.tcpipguide.com/free/t_IPMessageFragmentationProcess-4.htm
8. ISS
http://www.iss.net/security_center/static/17170.php
http://www.iss.net/security_center/static/18499.php
http://www.iss.net/security_center/static/11619.php
9. Microsoft Co., Ltd
http://www.microsoft.com/korea/technet/security/bulletin/MS05-019.mspx
10. Cisco Systems
- Crafted ICMP Messages Can Cause Denial of Service
http://www.cisco.com/en/US/products/products_security_advisory09186a008021bc62.shtml
- TCP Vulnerabilities in Multiple IOS-Based Cisco Products
http://www.cisco.com/en/US/products/products_security_advisory09186a0080436587.shtml
11. Nortel Networks
http://www130.nortelnetworks.com/cgi-bin/eserv/cs/main.jsp?cscat=SECUREADVISORY
2005005697, 2005005701, 2005005700
12. Extreme Networks
http://www.extremenetworks.com

TAG •