UDP Scan

UDP ScanUDP 포트가 열려 있는지 확인하기 위한 포트 스캐닝 기법이다. TCP 스캔과 가장 큰 차이는 UDP에는 연결 개념이 없다는 점이다. 이 한 가지 특성 때문에 UDP 스캔은 느리고, 결과 해석도 상대적으로 어렵다.

TCP 스캔은 SYN, ACK 같은 응답을 보고 “열림/닫힘”을 비교적 명확하게 판단할 수 있다. 하지만 UDP는 연결을 맺지 않기 때문에, 포트가 열려 있어도 아무 응답도 보내지 않는 것이 정상 동작인 경우가 많다. 그래서 UDP 스캔에서는 “응답이 없으면 열려 있을 수도 있다”라는 애매한 판단이 나온다.

UDP Scan의 기본 동작은 이렇다.
스캐너가 대상 포트로 UDP 패킷을 보낸다.
만약 해당 포트가 닫혀 있다면, 대상 시스템은 ICMP Port Unreachable(Type 3, Code 3) 메시지를 보낸다. 이 경우 스캐너는 “포트가 닫혀 있다”고 판단한다.
반대로 아무 응답도 오지 않으면, 해당 포트는 “열려 있거나(Open) 필터링된 상태(Open|Filtered)”로 판단된다.
드물게, UDP 서비스가 실제 응답 데이터를 보내면 “열려 있음(Open)”으로 확정할 수 있다.

이 때문에 UDP Scan은 다음과 같은 특징을 가진다.
TCP 스캔보다 훨씬 느리다.
응답이 없으면 판단이 애매하다(Open|Filtered).
ICMP 응답에 크게 의존한다.
방화벽이나 IDS에 잘 탐지된다.

보안 측면에서 UDP Scan이 중요한 이유는, 중요한 서비스들이 UDP 기반이기 때문이다. DNS(53), SNMP(161), NTP(123), TFTP(69) 같은 서비스는 UDP를 사용한다. 이 서비스들은 잘못 설정되어 있으면 정보 노출이나 증폭 공격의 출발점이 되기 쉽다. 그래서 공격자는 TCP보다 먼저 UDP 스캔을 시도하는 경우도 많다.

UDP Scan은 UDP 포트를 대상으로 한다.
ICMP Port Unreachable이 오면 닫힌 포트다.
응답이 없으면 열려 있거나 필터링된 상태다.
느리고 오탐 가능성이 높다.