ICMP란? (ping 패킷캡쳐)

hi2li·2026년 4월 14일

정의

  • IP통신 중 문제 생기면 알려주는 메시지 시스템
  • 데이터 전달용X
  • 제어 / 오류 보고용 프로토콜



필요성

  • IP프로토콜은 보내기만 하고 책임 지지 않는다.
  • 그래서 문제가 생겨도 알 수가 없다.

→ ICMP를 사용하면 에러 메시지 전달과 네트워크 연결상태( 거의 연결 여부만) 등을 확인할 수 있다.



ICMP 기반의 명령어

  1. ping

    • 내부적으로 ICMP를 사용한다.
    • Echo Request → 요청
    • Echo Reply → 응답
  2. traceroute (윈도우 에서만!!!, 리눅스에서는 UDP를 사용한다)

    • 경로를 추적하는 명령어
    • TTL이라는 최대홉수를 담는 필드에 값을 넣어서 ICMP 패킷을 보낸다
      • 이때 홉을 지날 떄마다 1씩 감소됨.
    • TTL을 0이 되면 해당 라우터는 패킷을 폐기하고  “라우터가 자신의 IP를 출발지로 하는 ICMP 메시지를 새로 생성해서 보낸다”→ “여기 까지 패킷이 왔다”
    • 호스트에서 TTL값을 1부터 시작해서 차례대로 보내게 되면 결과적으로

    1번 홉 → 라우터1 IP
    2번 홉 → 라우터2 IP
    3번 홉 → 라우터3 IP
    ...

     ICMP 응답을 기반으로 구성한 경로를 알 수 있다.

주의 : 리눅스에서는 traceroute할 때 udp를 사용한다.





특징

  • ICMP는 정보를 알려주는 역할이라서 공격자 입장에서 매우 유용함

  • ping을 하게 되면 살아있는 호스트들은 ICMP echo reply을 주기 때문에 ping을 통해 아이피 대역을 훑으면서 살아있는 호스트들을 탐지할 수 있다.

  • 따라서 보안목적으로 ping을 막아두기도 한다.

  • traceroute도 중간 라우터들의 ip를 알 수 있게 되기 때문에 네트워크 구조도 들킬 수 있다.

  • 따라서 보안 목적으로 네트워크 구조를 숨김.

  • 추가적으로 ping Flood같은 DDOS공격은 ICMP Echo request기반으로 오기 때문에 해당 공격등을 막기 위해서도 ICMP를 차단하거나 제한하기도 한다.





# 패킷 보기
# eth0 인터페이스에서 목적지가 내 IP인 ICMP 패킷을 캡처하고, 결과를 icmp.pcap 파일로 저장
# -i eth0        : 캡처할 네트워크 인터페이스 지정
# icmp           : ICMP 패킷만 필터링 (ping 등)
# dst host <내 IP> : 목적지가 내 IP인 패킷만 캡처
# -w icmp.pcap   : 캡처한 패킷을 icmp.pcap 파일로 저장 (Wireshark 등으로 분석 가능)

sudo tcpdump -i 캡쳐할인터페이스 icmp and host <내 IP> -w icmp.pcap

다른 호스트에서 ping 172.32.0.158로 패킷을 보냈고, 정상적으로 받았다.

저장된 icmp.pcap을 와이어 샤크에서 확인해보자

ICMP request와 ICMP reply가 차례대로 와있는것을 볼 수 있다.

profile
easy come , easy go

0개의 댓글