Internet Control Message Protocol에 대해 알아보겠습니다.
ICMP
ICMP(Internet Control Message Protocol)
- 네트워크 장치에서 네트워크 통신 문제를 진단하는 데 사용하는 네트워크 계층 프로토콜
- 데이터가 의도한 대상에 적시에 도달하는지 여부를 확인
- 라우터와 같은 네트워크 장치에서 사용
ICMP의 목적
오류 보고
- 두 장치가 인터넷을 통해 연결되면 ICMP는 데이터가 의도한 대상에 도달하지 못한 경우 전송하는 장치와 공유할 오류를 생성
- 데이터 패킷이 라우터에 비해 너무 큰 경우 라우터에서는 패킷을 삭제하고 ICMP 메시지를 데이터의 원래 소스로 돌려보냄
보조 용도
- 네트워크 진단 수행
- 터미널 유틸리티: traceRoute, ping
- ICMP를 사용해 동작
라우팅 경로
- 요청이 대상에 도달하기 전에 통과해야 하는 연결된 라우터의 실제 물리적 경로
홉
- 한 라우터와 다른 라우터 간의 여정
traceRoute와 ping
traceRoute
- 두 인터넷 장치 간의 라우팅 경로 표시
- 여정 중 각 홉에 필요한 시간 보고
ping
- traceRoute의 단순화 버전
- 두 장치 간의 연결 속도를 테스트
- 데이터 패킷이 대상에 도달하고 발신자의 장치로 돌아오는 데 걸리는 시간 측정
- 라우팅 또는 홉에 대한 데이터는 제공하지 않음
- 두 장치 간의 대기시간(latency)을 측정하는 데 유용
- ICMP 에코 요청 및 에코 응답 메시지는 일반적으로 ping을 수행하기 위해 사용됨
ICMP 작동방식
- ICMP는 TCP 또는 UDP와 같은 전송계층 프로토콜과 연결되지 않음
- 인터넷 프로토콜(IP)와는 다름
- ICMP가 연결이 없는 프로토콜이 되므로 한 장치에서 ICMP 메시지를 보내기 전에 다른 장치와 연결을 수행할 필요 없음
- ICMP는 장치의 특정 포트를 대상으로 하는 것을 허용하지 않음
일반 IP 트래픽
- TCP를 사용해 전송
- 이는 데이터를 교환하는 두 장치가 먼저 TCP 핸드셰이크를 수행하여 두 장치 모두 데이터를 수신할 준비가 되었는지 확인함을 의미
- ICMP는 이런 방식으로 연결을 수행하지 않음
ICMP 패킷
- ICMP 프로토콜을 사용하는 패킷
- 일반 IP 헤더 뒤에 ICMP 헤더를 포함
- 라우터나 서버가 오류 메시지를 보내야 하는 경우 ICMP 패킷 본문 또는 데이터 섹션에는 항상 오류를 일으킨 패킷의 IP 헤더 사본 포함
ICMP가 DDoS 공격에 사용되는 방식
ICMP 폭주 공격(ping 폭주)
- 공격자가 ICMP 에코 요청 패킷으로 대상 장치를 압도하려고 시도하는 경우
- 대상은 각 패킷을 처리하고 응답해야 해 컴퓨팅 리소스를 소비하여 나중에는 합법적인 사용자가 서비스를 받을 수 없게 됨
죽음의 핑 공격
- 공격자가 패킷에 허용되는 최대 크기보다 큰 ping을 대상 시스템에 보내 시스템이 정지하거나 충돌하게 만드는 경우
- 패킷은 대상으로 가는 도중에 분할됨
- 대상에서 패킷이 원래의 최대 초과 크기로 재조립되면 패킷 크기로 인해 버퍼 오버플로 발생
- 지금 시점에서는 구식 공격
SMURF 공격
- 공격자는 스푸핑된 소스 IP 주소가 있는 ICMP 패킷을 전송
- 네트워킹 장비는 패킷에 응답해 스푸핑된 IP에 응답을 보내고 원치 않는 ICMP 패킷으로 피해 장비를 폭주시킴
- 구식 공격