📚 네트워크 · 패킷 분석 › 05. 네트워크 스캔 징후 분석 — 218편
이전 글: 217. UDP Port Scan 특징 · 다음 글: 219. Null Scan
ICMP Scan 은 ICMP 메시지를 이용해 호스트 존재, 네트워크 구성, 시스템 정보를 확인하는 탐색입니다. 가장 흔한 Echo Request 스윕은 206. Ping Scan에서 다뤘으므로, 이 글은 Echo 외의 ICMP 유형과 ICMP 오류 메시지가 정찰에 쓰이는 방식을 다룹니다. ICMP 자체의 유형·코드 구조는 79. ICMP에서 정리했습니다.
| Type (요청/응답) | 이름 | 정찰에서 얻는 것 | 현재 사용 |
|---|---|---|---|
| 8 / 0 | Echo | 호스트 생존 | 일반적 |
| 13 / 14 | Timestamp | 생존 + 대상 시스템 시각 | 업무상 거의 없음 |
| 17 / 18 | Address Mask | 생존 + 서브넷 마스크 | 폐기(RFC 6918) |
| 15 / 16 | Information | 생존 | 폐기(RFC 6918) |
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 | ICMP 탐색 |
|---|---|---|
| 주요 유형 | Echo, Unreachable, Time Exceeded, Fragmentation Needed | Timestamp, Address Mask, Echo 스윕 |
| 목적지 수 | 소수 | 대역 다수 |
| 출발지 | 모니터링 서버, 관리자 단말 | 외부 또는 역할과 무관한 내부 단말 |
| 우리 쪽 응답 | 진단용 Echo Reply | Timestamp Reply 등 정보 응답 |
실습 예시 — 본인 소유 실습망에서 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 요청 | 차단 | 업무 필요 거의 없음, 정보 노출 |
| 흔적 위치 | 확인 내용 |
|---|---|
| 방화벽 | 인바운드 ICMP 유형 분포, 아웃바운드 ICMP 응답 |
| IDS | ICMP Timestamp·Address Mask 요청 관련 Alert |
| 패킷 캡처 | 유형·코드, 오류 메시지에 인용된 원래 요청 |
| 취약점 점검 결과 | Timestamp 응답 허용 여부 |
관제자가 확인할 질문
오탐 주의: 일부 시간 동기화 점검·네트워크 관리 도구가 Timestamp를 사용할 수 있습니다. 출발지가 관리 서버이고 대상이 정해져 있다면 예외 여부를 확인합니다. 라우터가 보내는 Time Exceeded는 traceroute 같은 정상 경로 진단에서도 발생합니다.