📚 네트워크 · 패킷 분석 › 05. 네트워크 스캔 징후 분석 — 217편
이전 글: 216. TCP Port Scan 특징 · 다음 글: 218. ICMP Scan
UDP 스캔의 응답 판단(UDP 응답, ICMP Port Unreachable, 무응답)은 209. UDP Scan에서 다뤘습니다. 이 글은 그 원리를 바탕으로 UDP 스캔이 로그·통계 수준에서 TCP 스캔과 어떻게 다르게 보이는지, 그리고 비슷해 보이는 다른 UDP 이상 트래픽과 어떻게 구분하는지를 정리합니다.
| 비교 | TCP 포트 스캔 | UDP 포트 스캔 |
|---|---|---|
| 연결 개념 | Handshake로 상태 명확 | 없음, 방화벽이 가상 세션으로 추적 |
| 닫힘 응답 | RST (TCP 안에서 처리) | ICMP Type 3 Code 3 (다른 프로토콜로 응답) |
| 속도 | 빠름 | 대상의 ICMP 속도 제한 때문에 느림 |
| 대상 포트 수 | 수백~전체 | 수십~수백 개 위주 |
| 방화벽 로그 | TCP 차단·세션 | UDP 차단 + 아웃바운드 ICMP |
UDP 스캔의 흔적은 요청(UDP)과 응답(ICMP)이 서로 다른 프로토콜로 기록된다는 점이 핵심입니다. 로그를 프로토콜별로 따로 보면 연결이 보이지 않으므로, 방향과 시간을 맞춰 묶어야 합니다.
[외부 출발지] ── UDP 여러 포트 ──→ [경계 방화벽] ──→ [대상 서버]
│ │
인바운드 UDP 허용·차단 로그 닫힌 포트: ICMP 3/3 생성
│ │
↓ ↓
아웃바운드 ICMP 로그 ←──── 서버 → 출발지 ICMP
↓
SIEM: (출발지 UDP 요청) + (대상 → 출발지 ICMP 3/3)을 같은 시간대로 결합
↓
UDP 응답이 나간 포트 = 열림 확인 → 노출 서비스 점검
자주 확인되는 UDP 포트와 응답 시 노출되는 정보는 다음과 같습니다.
| 포트 | 서비스 | 응답 시 드러날 수 있는 것 | 추가 위험 |
|---|---|---|---|
| 53 | DNS | 재귀 질의 허용 여부, 버전 문자열(설정 시) | 반사·증폭 |
| 123 | NTP | 시각 서비스 존재, 관리 질의 응답 | 반사·증폭 |
| 137 | NetBIOS Name | 호스트명·작업그룹 | 내부 정보 노출 |
| 161 | SNMP | 장비 정보(커뮤니티 문자열 취약 시) | 설정 정보 노출 |
| 500 | IKE | VPN 장비 존재 | VPN 대상 공격 준비 |
| 1900 | SSDP | 장치 종류·서비스 목록 | 반사·증폭 |
UDP 이상 트래픽 세 가지는 모양이 비슷하므로 구분 기준이 필요합니다.
| 기준 | UDP 스캔 | UDP Flood | 반사 공격 흔적(피해 측) |
|---|---|---|---|
| 목적지 포트 | 여러 포트, 포트당 1~2회 | 소수 포트에 대량 | 우리 쪽 임의 포트 |
| 출발지 | 보통 실제 주소 1개 | 다수·위조 가능 | 53·123·1900 등 서비스 포트에서 옴 |
| 패킷 크기 | 작음 | 다양, 대역폭 소모 | 큰 응답 패킷 |
| 목적 | 열린 포트 확인 | 서비스 거부 | 서비스 거부(제3자 경유) |
실습 예시 — 본인 소유 실습망의 Zeek conn.log에서 출발지별 UDP 목적지 포트 수와 응답 여부를 요약하는 방어 측 명령입니다(값은 환경마다 다름).
# UDP만: 출발지·대상 쌍별 서로 다른 목적지 포트 수
zeek-cut proto id.orig_h id.resp_h id.resp_p < conn.log \
| awk '$1=="udp"' | sort -u \
| awk '{c[$2" "$3]++} END {for (k in c) print c[k], k}' | sort -rn | head
# 대상이 UDP로 응답한 포트 (resp_bytes > 0)
zeek-cut proto id.orig_h id.resp_p resp_bytes < conn.log \
| awk '$1=="udp" && $2=="203.0.113.45" && $4>0 {print $3}' | sort -n | uniq
결과 형식 예시(값은 환경마다 다름):
100 203.0.113.45 192.168.10.20
2 192.168.10.15 192.168.10.2
53
161
| 관찰 | 해석 |
|---|---|
| 한 쌍에서 UDP 목적지 포트 100개 | UDP 포트 스캔 형태 |
| 내부 단말 → DNS 서버 2개 포트 | 정상 질의(53) 등, 스캔 아님 |
| 53·161에서 응답 데이터 발생 | DNS·SNMP가 외부 출발지에 응답 → 노출 의도·설정 점검 |
| 흔적 위치 | 확인 내용 |
|---|---|
| 방화벽 | 인바운드 UDP 다수 포트, 아웃바운드 ICMP 3/3 |
| Zeek·NetFlow | UDP 목적지 포트 수, 응답 바이트가 있는 포트 |
| 서비스 로그 | DNS 쿼리 로그, SNMP 인증 실패 |
| IDS | UDP 스캔 임계치, SNMP·DNS 프로브 Alert |
관제자가 확인할 질문
오탐 주의: DNS 서버가 여러 권한 서버에 질의할 때나 VoIP·게임·P2P 프로그램은 UDP로 다양한 포트와 통신합니다. 이 경우 실제 데이터 교환이 이어지고 목적지가 다수의 외부 주소라는 점이 다릅니다. traceroute의 UDP 사용과의 구분은 209. UDP Scan을 참고합니다.