[정보 보안] ICMP 프로토콜

Cookie·2024년 10월 1일
0

정보보안

목록 보기
10/40
post-thumbnail

정보 보안을 공부하면서 ICMP 프로토콜의 Type과 Code에 대한 정리와 암기에 대한 필요성을 느낌




ICMP란?

ICMP란 Internet Control Message Protocol의 약자로 네트워크 장치 간에 오류 메시지나 상태 정보를 전달하는 데 사용되는 프로토콜

메시지 유형을 의미하는 Type 필드와 유형별 세부 내용을 담고 있는 Code 필드로 이루어져 있음


기능

  1. Error-Reporting Message 기능
    : 전송 중 오류 발생 시 에러 메시지를 생성하여 응답
  2. Query Message 기능
    : 네트워크 상태를 진단하기 위한 쿼리 요청 및 응답 메시지 생성



프로토콜 구조

  1. Type(8 bits) : ICMP 메시지의 유형/용도
  2. Code(8 bits) : Type의 세부 내용으로 Type과 Code가 조합되어 ICMP 메시지의 목적과 용도를 나타냄
    • Code가 없는 Type도 존재
  3. CheckSum(16 bits) : ICMP 메시지 오류를 검사하기 위한 값
  4. Rest of the header : Type과 Code에 따라 추가되는 헤더
  5. Data section : 데이터가 위치하는 영역




주요 ICMP 메시지


Error-Reporting

Type3 [Destination Unreachable]

해당 목적지에 도달할 수 없음을 의미
목적지 도달 불가 사유에 따라 다양한 Code(상세 유형)으로 구성되어있음


Code 1 ( Host Unreachable )

: 최종 단계의 라우터가 목적지 호스트로 패킷 전송에 실패한 경우


Code 2 ( Protocol Unreachable )

: 목적지 호스트에서 특정 프로토콜을 사용할 수 없는 경우


Code 3 ( Port Unreachable )

: 목적지 호스트에 해당 UDP 포트가 열려있는 않은 경우, TCP의 경우에는 포트가 열려있지 않으면 TCP RST를 반환 함


Code 4 ( Fragmentation needed and don't fragment was set )

: IP 패킷의 단편화가 필요하지만 , IP 헤더의 Don't fragment(DF) 플래그가 설정되어 단편화 할 수 없는 경우



Type5 [Redirection]

라우팅 경로가 잘못되어 새로운 경로를 이전 경유지 또는 호스트에게 알려주는 메시지

  • ICMP Redirection 공격 시 이용되는 메시지이기도 함



Type11 [Time Exceeded]

타임 아웃이 발생하여 IP 패킷이 폐기되었음을 알리는 메시지
타임아웃 사유는 Code를 통해 알 수 있음


Code 0 ( Time To Live exceeded in Transit )

: IP 패킷이 최종 목적지에 도달하기 전에 TTL값이 0이 되어 해당 패킷이 폐기되었음을 알리는 메시지


Code 1 ( Fragment reassembly time exceeded )

: IP 패킷 재조합 과정에서 타임아웃이 발생하여 해당 IP 데이터그램이 모두 폐기되었음을 알리는 메시지

  • 일반적으로 IP 데이터그램의 일부 단편이 전송과정에서 손실된 경우 재조합에 실패하여 발생함




Query 메시지

: 별도의 Code는 없으며 이외의 쿼리 타입들은 거의 사용되지 않음

Type 8 [Echo Requset]

네트워크 장치 간에 연결이 제대로 되어 있는지 확인하기 위해 발송되는 메시지 ping 명령어 실행 시 목적지 호스트에 전송됨


Type 0 [Reply]

Echo Request에 대한 응답으로 전송되는 메시지 목적지 호스트가 Echo Request를 수신했음을 발신자에게 알림




ICMP 리다이렉트

ICMP Redirection 메시지(Type 5)를 이용하여 패킷 경로를 악의적으로 재설정하는 공격

  • ICMP Redirection 메시지를 수신한 호스트는 자신의 라우팅 테이블에 특정 목적지로 나가는 gateway 주소를 변경함
    • 이를 이용하여 공격자가 원하는 형태의 ICMP Redirection 메시지를 만들어 특정 목적지로 가는 패킷을 공격자로 향하도록 함



ARP Redirect와 차이점

ARP Redirect는 희생자의 ARP Cache Table정보를 변조하여 스니핑하는 것이고, ICMP Redirection는 희생자의 라우팅 테이블을 변조하여 스니핑한다는 차이점이 있음



대응방법

  1. ICMP Redirection 메시지에 의해 라우팅 테이블이 변겨되지 않도록 ICMP Reidirect 옵션을 해제
  2. 현재 대부분의 OS에서 보안상의 이유로 ICMP Redirection 옵션을 기본적으로 해제하고 있음
    • 리눅스 커널 파라미터 중 ICMP Redirection 설정인 accept_redirects를 0으로 설정 (0 은 허용 안함)
profile
나만의 공부 일지... [임시 休]

0개의 댓글