ICMP 패킷은 IP헤더 다음으로 ICMP Type, ICMP Code, ICMP Checksum 필드로 구성되어 있으며, 일부 ICMP 패킷은 정보나 메시지의 세부 사항을 제공하기 위해 추가적으로 ICMP Contents 필드를 포함한다.
ICMP Type | ICMP Code | ICMP Checksum |
ICMP Contents |
[그림.1 ICMP 패킷 구조]
특수한 경우에 사용되는 ICMP Contents 필드를 제외한 ICMP Type, ICMP Code, ICMP Checksum 필드에 대해 살펴 보자.
① ICMP Type
이 필드는 ICMP 메시지의 유형을 정의하며, ICMP 메시지 유형은 다음 표와 같다.
Type | Name |
0 | Echo Reply |
1 | Unassigned |
2 | Unassigned |
3 | Destination Unreachable |
4 | Source Quench |
5 | Redirect |
6 | Alternate Host Address |
7 | Unassigned |
8 | Echo |
9 | Router Advertisement |
10 | Router Solicitation |
11 | Time Exceeded |
12 | Parameter Problem |
13 | Timestamp |
14 | Timestamp Reply |
15 | Information Request |
16 | Information Reply |
17 | Address Mask Request |
18 | Address Mask Reply |
19 | Reserved (for Security) |
20-29 | Reserved (for Robustness Experiment) |
30 | Traceroute |
31 | Datagram Conversion Error |
32 | Mobile Host Redirect |
33 | IPv6 Where-Are-You |
34 | IPv6 I-Am-Here |
35 | Mobile Registration Request |
36 | Mobile Registration Reply |
37 | Domain Name Request |
38 | Domain Name Reply |
39 | SKIP |
40 | Photuris |
41 | ICMP messages utilized by experimental mobility protocols such as Seamoby |
42-255 | Reserved |
[표.1ICMP Type]
② ICMP Code
이 필드는 위의 ICMP Type들은 몇 가지의 Code를 가지고 있으며, 그 Code 값을 정의한다.
몇 가지 ICMP Type들의 Code값을 살펴보면 아래와 같다.
ICMP Type 3 : Destination Unreachable (목적지에 도달할 수 없음)
Codes | Description |
0 | Net Unreachable |
1 | Host Unreachable |
2 | Protocol Unreachable |
3 | Port Unreachable |
4 | Fragmentation Needed and Don't Fragment was Set |
5 | Source Route Failed |
6 | Destination Network Unknown |
7 | Destination Host Unknown |
8 | Source Host Isolated |
9 | Communication with Destination Network is Administratively Prohibited |
10 | Communication with Destination Host is Administratively Prohibited |
11 | Destination Network Unreachable for Type of Service |
12 | Destination Host Unreachable for Type of Service |
13 | Communication Administratively Prohibited |
14 | Host Precedence Violation |
15 | Precedence cutoff in effect |
ICMP Type 11 : Time Exceeded (시간 초과)
Codes | Description |
0 | Time to Live exceeded in Transit |
1 | Fragment Reassembly Time Exceeded |
더욱 자세한 코드 값에 대한 내용을 알고 싶다면, http://www.iana.org/assignments/icmp-parameters/icmp-parameters.xml을 방문하여, 살펴 보기 바란다.
③ ICMP Checksum
이 필드는 ICMP 헤더의 손상 여부를 확인한다.
참고로 ICMPv6 내용을 알고 싶으면, http://www.iana.org/assignments/icmpv6-parameters를 방문하여, 살펴보기 바란다.
이제 실제로 와이어샤크(Wireshark)를 이용하여 캡쳐한 ICMP패킷을 보며, 위 내용을 바탕으로 패킷을 살펴 보자.
[그림.2]와 [그림.3]은 일반적인 ICMP Ping 테스트와 Tracerout의 내용이다.
[그림.2 Ping 요청]
[그림.2]의 내용을 살펴보면, ICMP Type 8번(Echo) 메시지를 보내며, ICMP Type 8번(Echo)에는 Code가 존재 하지 않기 때문에 Code는 0이라고 표시하였다.
[그림.3 Ping 응답]
Echo 대한 응답으로 ICMP Type 0번 (Echo reply) 메시지를 보내며, ICMP Type 0번(Echo reply) 또한 Code가 존재 하지 않기 때문에 Code는 0이라고 표시 하였다.
다음 [그림.4]은 ICMP Type은 3번이며, Code는 3번이다. 어떻게 해석하면 좋을지 생각해 보자.
[그림.4 해당 포트에 도달 할 수 없음]
결론은 해당 포트에 도달 할 수 없음을 의미한다. 즉, A라는 사람이 ICMP 패킷을 원하는 포트에 보냈을 때 그 포트가 Open이 되어 있지 않을 경우 [그림.4]와 같은 ICMP 패킷을 받는다. 이런 패킷이 다수 발생한다면, 서비스 구성상의 문제거나 UDP Port 스캔을 의심해 본다. 이렇듯 Type과 Code정보를 가지고, 해당 ICMP 패킷이 어떤 메시지를 알려주는지 확인할 수 있다.
참고
http://www.iana.org/assignments/icmp-parameters/icmp-parameters.xml
'Analysis' 카테고리의 다른 글
기본적인 DHCP Packet 분석 (0) | 2013.01.30 |
---|---|
기본적인 DNS Packet 분석 (2) | 2013.01.30 |
기본적인 UDP Packet 분석 (0) | 2013.01.30 |
기본적인 ARP Packet 분석 (0) | 2013.01.30 |
와이어샤크(wireshark) Edit 메뉴 (0) | 2012.12.27 |