지니의 따듯한 공간

ICMP (2) Query 본문

Network/Network Analysis

ICMP (2) Query

Jineer 2019. 4. 30. 09:36

 조회 (Query Message) 

- 오류 보고 외에 ICMP네트워크 문제를 진단 가능

- 4개의 조회 메시지를 통하여 수행 가능

- 이 유형의 ICMP 시지에서는 노드가 메시지를 보내면 목적지 노드가 특정한 형식에 따라 응답

- 정보 요청/응답(Information Request/Reply)이라는
메시지도 정의되어 있었으나 사용되지 않고 있음

- 이 메시지들은 호스트가 시작될 때 자신의 인터넷 주소를 가져오기 위하여 설계되었으나, 이 기능은 현재 BOOTP에 의해 대체되었음

 

조회 메시지

1. 에코 요청과 응답

 - 에코 요청과 에코 응답 (Echo Request and Reply)  // ex) Ping 명령어

   메시지는 고장 진단의 목적으로 설계    

- 네트워크 관리자와 사용자들은 이 메시지를 사용하여 네트워크 문제를 발견 가능

- 에코 요청과 에코 응답 메시지의 조합은 두 시스템

   (호스트나 라우터)가 서로 통신할 수 있는지 결정 가능

- 호스트나 라우터는 에코 요청 메시지를 다른 호스트나 라우터에게 전송 가능

- 에코 요청 메시지를 받은 호스트나 라우터는 에코 응답 메시지를 생성하여 원래의 송신자에게 전송

- 에코 요청과 에코 응답 메시지는 IP 계층에서 통신이 되는지 결정하기 위하여 사용 될 수 있음

- ICMP 메시지는 IP 데이터그램에 의해 캡슐화되므로 에코 요청이 보내진 장치로부터 에코 응답이 왔다는 것은

  송신자 와 수신자의 IP 프로토콜이 IP 데이터그램을 사용하여 서로 통신하고 있다는 것을 증명

- 중간에 있는 라우터들도 IP 데이터그램을 수신하고, 처리하고 전송한다는 것도 증명

 

- 에코 요청과 에코 응답 메시지를 사용하면 또한 호스트가 다른 호스트에 도달할 수 있는지를 점검 가능

- 사용자 레벨에서 이것은 패킷 인터넷 탐색 명령인 ping을 수행함으로써 이루어짐

- 대부분의 시스템은 하나가 아닌 여러 개의 에코 요청과 에코 응답 메시지를 생성하고 이들에 대한 통계 정보도 제공하는 ping 명령을 제공

 

 

에코 요청에는 os에서 무조건 응답한다. 단, 서버에서 응답 안 하도록 셋팅 할 수는 있다.

 

IP 스케일링? , Port 스케일링 , 검색한다는 뜻 ,

Ip 스케일링 : ping을 쫙 ~ xx~xx까지. 답이오는 ip는 살아있는 주소, -> 공격대상이됨

port 스케일링 : 포트번호 1~65353개 전부다 툴로 (반복문) 보내서 살아있는 port랑, 어떤 프로그램 사용중인지 확인

기초 공격 -> 사전 공격 (사전에 있는 단어)

              / 무작위 공격 (드루트 펄스 어택) 

 

ping = round trip time / 32바이트 데이터 (내용 무관) 갔다가 오는데에 시간 , TTL ,

 

오류메시지가 오다가 오류가 발생하면 더이상 icmp는 발생하지 않는다.

그러면 ping은?

 

에코 요청 및 에코 응답 메시지

- 식별자(identifier)와 순서 번호(sequence number) 필드는 프로토콜에 의해 정형적으로 정의되어 있지는 않고 송신자에 의해 임의로 사용될 수 있

- 식별자 필드는 문제 그룹을 정의하고 순서 번호는 전송한 특정 에코 요청 메시지를 추적 가능

- 식별자는 요청을 보낸 프로세스의 프로세스 ID와 같을 수 있

 

Echo Request : 8 

Echo Reply : 0 

 

//ICMP 헤더에는 ip헤더 + 8Byte 가 들어간다. 

 

에코는 32byte의 임의의 값을 넣어서 보낸다.

 

에코 패킷을 캡처해서 분석해보자.

학교에서 내 AWS 리눅스 서버에 Echo 메시지를 보냈더니 연결 할 수 없다고 뜬다. 왜지..?

                                                                                                        -> 패킷을 분석 해보자. 

 

오류 보고 메시지가 잡힌다. 

Echo request 패킷 캡처

Type 8  /  32byte의 abcd ~ efg 의 알파벳등의 무의미한 데이터가 담겨있고  (윈도우ので)

 

- 분석 결과 - 

내 서버가아닌 라우터로부터 ICMP Error 메시지가 도착.

Destination Unreachable 메시지 / 소스 ip 106.249.37.254 = 학교 라우터로부터

 

Code 13 : 관리자가 필터를 설치하여 호스트에 도달 불가 

즉 학교 측에서 필터를 설치하여서 외부 서버에 접근 하지 못 하도록 막고 있는 것.

 

DOS 창에서 127.0.0.1 (loopback address) / 자기ip로 ping을 할 경우 패킷이 잡히지 않는다.

Wire Shark는 외부에서 들어오는, 즉  내 NIC를 벗어나서 들어오는 패킷을 감시한다.

자기 ip로 echo 메시지를 보내면 자신의 os에서 바로 처리를 하기 때문이다.

 

번외지식 ] 컴퓨터의 시계 1970년 1월1일 ~ 지금 까지의 시간을 초로 계산 하고 있다.

메인보드의 시모스의 배터리가 존재하기 때문에, 전원이 빼더라도 시간이 계속 간다.

그 시간을 이용해서 오늘이 몇월 몇일인지 화면에 보여준다.

1970~ 시간을 이용해서 현재 시간을 구하는 프로그램이 당연히 깔려있겠지.

 

2. 타임스탬프 요청과 응답

 - 두 시스템(호스트나 라우터)은 타임스탬프 요청과 응답(Timestamp Request and Reply) 메시지를 사용하여

   IP데이터그램이 이 둘 사이를 오고 가는데 필요한
 - 왕복 시간(round-trip time)을 결정 가능

 - 두 장치의 시계를 동기화하기 위해서도 사용될 수 있음

타임스탬프 요청과 응답 메시지 유형

 - 3개의 타임스탬프 필드는 각각 32비트 길이를 가짐

 - 각 필드에는 그리니치 표준시(Greenwich Mean Time)라 불렸던 세계 표준시(Universal Time)자정으로부터의 시간을 milliseconds 단위로 표현한 값이 저장 됨

 - 32 비트는 0에서 4,294,967,295 사이의 수를 표현할 수 있으나 이 경우의 타임스탬프는 86,400,000 = 24 × 60 × 60 × 1,000을 넘을 수 없음을 주지하기 바람

 

4개의 시간으로 Round - Trip - Time을 계산한다.

Original Timestamp : 송신자가 보냈을때 시간.

Receive Timestamp : 수신자가 받았을때 시간.

Transmit Timestamp : 수신자가 응답 메세지를 다시 보낼 때 시간.

도착 시간 : 수신자의 응답 메시지를 받은 시간.

milliseconds 단위기 때문에 x 1000.

 

1. 송신자(=발신지)는 타임스탬프 요청 메시지를 생성

Original Timestamp : 송신자는 자신의 시계값을 original timestamp 필드에 삽입

                            다른 두 스탬프 필드는 0으로 채워져 있음

2. 수신자(=목적지)는 타임스탬프 응답 메시지를 생성

                           요청 메시지에 있는 original timestamp 값을 응답 메시지의 같은 필드에 복사

3. 수신 타임스탬프(receive timestamp) 필드에는 요청이 수신된 시점에서의 자신의 시계 값을 삽입

4. 전달 타임스탬프(transmit timestamp) 필드에는 응답메시지가 출발하는 시점의 시계 값을 삽입

5. 타임스탬프 요청과 응답 메시지는 데이터그램이 발신지에서 목적지로 가서

                          다시 돌아오는 동안 걸리는 편도 또는 왕복 시간을 계산하는데 사용 될 수 있음

 

- 발신지와 목적지 시스템의 시계가 동기화되어 있어야만 송신시간과 수신시간 계산이 정확할 수 있음

- 두 시계가 동기화 되어 있지 않다 하더라도 왕복 시간의 계산은 정확

- 각 시계의 값이 왕복 시간 계산에서 각각 두 번 적용되고 그 결과로 동기화의 차이점이 서로 상쇄되기 때문임

 

3. 주소 마스크 요청과 응답

 - 호스트의 IP 주소는 네트워크 주소, 서브넷 주소와 호스트 식별자로 구성

 - 호스트는 IP 주소 전체를 알 수도 있지만 주소의 어느 부분이 네트워크 주소이고

                              어느 부분이 서브넷 주소이며 또 어느 부분이 호스트 식별자 인지 모를 수 있음

      AND 연산 - Net id   /  NAND 연산 - Host id

마스크 요청과 마스크 응답 메시지 형식

 - 요청 메시지에는 주소 마스크 필드가  0으로 채워져

 - 라우터가 주소 마스크 응답을 호스트에게 보내면 이 필드에는 netid는 1로 hostid는 0으로 되어 있는
   실제 마스크 값이 들어

 

4. 라우터 간청과 광고

 - 다른 네트워크 상의 host에게 데이터를 보내고자 하는 host는 자신의 네트워크에 연결된 라우터의 주소를 알아야 함

 - 라우터가 정상적으로 동작하고 있는지도 알아야 함

 - 라우터 간청(solicitation)과 라우터 광고(advertisement) 메시지는 이러한 상황에 유용

 - 호스트는 라우터 간청 메시지를 브로드캐스트하거나 멀티캐스트할 수 있음

라우터 간청 메시지 형식

 - 수명(lifetime) 필드는 엔트리가 유효할 것으로 생각되는 시간을 초 단위로 표현한 값

 - 광고 내의 각 라우터 엔트리는 적어도 라우터 주소(router address)와 주소 선호 레벨(address preference level) 필드를 가지고 있음

 - 주소 선호 레벨라우터의 순위를 정의

 - 선호 레벨디폴트 라우터를 선택하기 위하여 사용

 - 주소 선호 레벨이 0이면 디폴트 라우터로 고려 됨

 - 주소 선호 레벨이 8000000016이라면 이 라우터는 절대로 디폴트 라우터로 선택되지 않음

 

라우터 광고 메시지 형식

Number of addresses - 주소가 몇개가 오겠냐

 

Address entry size - 주소의 크기

 

Lifetime - 이 광고가 몇초간 유효 할 거냐

 

Router address - 0이오면 Default Router

 

'Network > Network Analysis' 카테고리의 다른 글

HTTP (Hypertext Transfer Protocol)  (0) 2019.06.11
DNS (Domain Name System)  (0) 2019.06.10
단편화 및 검사합  (0) 2019.04.15
데이터 그램 2  (0) 2019.04.15
IPv6 주소 체계  (0) 2019.04.15
Comments