📚 네트워크 · 패킷 분석 › 05. 네트워크 스캔 징후 분석 — 218편
이전 글: 217. UDP Port Scan 특징 · 다음 글: 219. Null Scan

1. 개념

ICMP Scan 은 ICMP 메시지를 이용해 호스트 존재, 네트워크 구성, 시스템 정보를 확인하는 탐색입니다. 가장 흔한 Echo Request 스윕은 206. Ping Scan에서 다뤘으므로, 이 글은 Echo 외의 ICMP 유형과 ICMP 오류 메시지가 정찰에 쓰이는 방식을 다룹니다. ICMP 자체의 유형·코드 구조는 79. ICMP에서 정리했습니다.

Type (요청/응답)이름정찰에서 얻는 것현재 사용
8 / 0Echo호스트 생존일반적
13 / 14Timestamp생존 + 대상 시스템 시각업무상 거의 없음
17 / 18Address Mask생존 + 서브넷 마스크폐기(RFC 6918)
15 / 16Information생존폐기(RFC 6918)

2. 동작 원리

ICMP 탐색은 두 가지 방식으로 정보를 얻습니다. 하나는 질의형 메시지에 대한 응답이고, 다른 하나는 다른 프로토콜 요청에 대해 네트워크가 돌려보내는 오류 메시지입니다.

[질의형]
 출발지 ── ICMP Type 13 (Timestamp Request) ──→ 대상
 출발지 ←── ICMP Type 14 (Timestamp Reply) ──── 대상    → 생존 + 시각 정보
 (Echo를 막고 Timestamp는 허용한 환경에서 생존 확인 우회 수단이 됨)

[오류 응답형]
 출발지 ── UDP/TCP 요청 ──→ 라우터·방화벽·대상
 출발지 ←── ICMP Type 3 (Unreachable) / Type 11 (Time Exceeded)
          → 포트 닫힘, 필터링 장비 존재, 경로상 라우터 주소
      ↓
방어 측 흔적: 드문 ICMP 유형의 인바운드 요청 / 우리 장비가 내보낸 ICMP 오류·응답
  • ICMP 오류 메시지에는 원래 요청 패킷의 IP 헤더와 앞부분이 인용되어 있어, 패킷 캡처에서 어떤 요청 때문에 오류가 났는지 역추적할 수 있습니다.
  • Type 3 Code 13(관리적으로 금지됨)은 필터링 장비가 있다는 사실을 상대에게 알려줍니다.

3. 주요 특징

  • 드문 유형 자체가 신호: Timestamp·Address Mask 요청은 정상 업무에서 거의 발생하지 않으므로, 여러 대상으로 이런 요청이 나가면 탐색 목적일 가능성이 높습니다.
  • Echo와 함께 섞임: 도구는 Echo가 막힌 환경을 고려해 여러 유형을 조합하기도 합니다. 같은 출발지의 Type 8·13 동시 도착은 전형적 조합입니다(205. Host Discovery).
  • 응답 방향이 더 중요: 우리 장비가 Type 14·18 응답을 외부로 보냈다면 실제 정보가 나갔다는 뜻입니다. 취약점 점검에서도 "ICMP Timestamp 응답 허용"은 정보 노출 항목으로 자주 지적됩니다(CVE-1999-0524).
기준정상 ICMPICMP 탐색
주요 유형Echo, Unreachable, Time Exceeded, Fragmentation NeededTimestamp, Address Mask, Echo 스윕
목적지 수소수대역 다수
출발지모니터링 서버, 관리자 단말외부 또는 역할과 무관한 내부 단말
우리 쪽 응답진단용 Echo ReplyTimestamp Reply 등 정보 응답

4. 예시

실습 예시 — 본인 소유 실습망에서 Echo 외 ICMP 질의를 확인하는 방어 측 명령입니다(Rocky/Ubuntu 공통, 값은 환경마다 다름).

# Timestamp·Address Mask 요청만 캡처
sudo tcpdump -nn -i ens33 'icmp[icmptype] == icmp-tstamp or icmp[icmptype] == icmp-maskreq'

# 캡처 파일에서 ICMP 유형별 건수와 출발지
tshark -r /tmp/icmp.pcapng -Y 'icmp' -T fields -e ip.src -e icmp.type | sort | uniq -c | sort -rn

tcpdump 출력 형식 예시(값은 환경마다 다름):

10:21:03.110 IP 203.0.113.45 > 192.168.10.20: ICMP time stamp query id 2301 seq 0, length 20
10:21:03.111 IP 192.168.10.20 > 203.0.113.45: ICMP time stamp reply id 2301 seq 0: org 00:00:00.000, recv 01:21:03.111, xmit 01:21:03.111, length 20
10:21:03.112 IP 203.0.113.45 > 192.168.10.21: ICMP time stamp query id 2302 seq 0, length 20

방화벽에서 ICMP를 유형별로 판단하는 기준 예시입니다(환경에 따라 조정).

유형경계 인바운드 판단 예이유
Type 3 Code 4 (Fragmentation Needed)허용경로 MTU 탐색에 필요
Type 11 (Time Exceeded)관련 세션 응답은 허용진단·경로 추적
Type 8 (Echo Request)필요한 대상만 허용생존 노출 최소화
Type 13·17 요청차단업무 필요 거의 없음, 정보 노출

5. 보안 관점

  • Timestamp 응답은 시스템 시각을, Address Mask 응답은 내부 서브넷 정보를 알려줄 수 있어 정찰에 직접 쓰이는 정보입니다.
  • ICMP를 통째로 막으면 경로 MTU 탐색이 깨져 일부 연결이 멈추는 장애가 생길 수 있으므로, 유형 단위로 허용·차단을 정합니다.
  • 우리 장비가 내보내는 ICMP 오류(Port Unreachable, Admin Prohibited)도 상대에게 정보를 줍니다. 경계에서 무응답 차단 정책과 함께 검토합니다.

6. SOC 관점

흔적 위치확인 내용
방화벽인바운드 ICMP 유형 분포, 아웃바운드 ICMP 응답
IDSICMP Timestamp·Address Mask 요청 관련 Alert
패킷 캡처유형·코드, 오류 메시지에 인용된 원래 요청
취약점 점검 결과Timestamp 응답 허용 여부

관제자가 확인할 질문

  • 출발지가 보낸 ICMP 유형은 무엇이며, 몇 개 대상으로 보냈는가?
  • 우리 장비가 Timestamp·Address Mask에 실제로 응답했는가?
  • ICMP 탐색 뒤 같은 출발지의 TCP·UDP 스캔이 이어졌는가?

오탐 주의: 일부 시간 동기화 점검·네트워크 관리 도구가 Timestamp를 사용할 수 있습니다. 출발지가 관리 서버이고 대상이 정해져 있다면 예외 여부를 확인합니다. 라우터가 보내는 Time Exceeded는 traceroute 같은 정상 경로 진단에서도 발생합니다.


7. 핵심 정리

  • ICMP Scan은 Echo 외에도 Timestamp·Address Mask 같은 질의와 ICMP 오류 메시지로 정보를 얻습니다.
  • Timestamp·Address Mask 요청은 정상 업무에서 드물어 여러 대상으로 나가면 탐색 신호입니다.
  • 우리 장비가 외부로 보낸 ICMP 응답·오류가 실제 정보 노출이므로 아웃바운드 방향을 함께 봅니다.
  • ICMP 오류 메시지에 인용된 원래 헤더로 어떤 요청 때문에 생겼는지 역추적할 수 있습니다.
  • 경계 정책은 ICMP를 통째로 막지 않고 유형별로 허용·차단을 정합니다.
profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글