Nmap 포트 스캐닝

Nmap 포트 스캐닝대상 시스템에서 어떤 포트가 열려 있는지, 어떤 서비스가 동작 중인지 식별하기 위한 네트워크 정보 수집 기법이다. 보안 진단과 공격 준비 단계에서 가장 널리 사용된다.

포트 스캐닝의 목적은 단순하다. “이 서버에 어떤 문이 열려 있는가”를 알아내는 것이다. 포트가 열려 있다는 것은 그 포트에서 어떤 서비스가 실행 중이라는 의미이고, 공격자는 이를 기반으로 취약한 서비스를 선택해 공격을 시도한다. 그래서 Nmap은 합법적인 보안 점검 도구이기도 하지만, 공격 전 정찰 단계에서 자주 사용된다.

Nmap은 다양한 스캔 방식을 제공하는데, 각 스캔 방식의 특징과 패킷 동작을 구분하는 것이 핵심이다.

가장 기본적인 방식은 TCP Connect Scan이다. 실제로 TCP 3-way handshake를 끝까지 수행한다. SYN → SYN/ACK → ACK까지 모두 완료되면 포트가 열려 있다고 판단한다. 연결 로그가 남기 때문에 탐지되기 쉽다.

SYN Scan(반열림 스캔, Half-open Scan)은 가장 대표적인 방식이다. SYN 패킷을 보내고 SYN/ACK가 오면 포트가 열려 있다고 판단한 뒤, 연결을 완전히 맺지 않고 RST로 끊는다. 로그가 적게 남아 은밀하며, 빠르다.

FIN Scan은 FIN 패킷을 보내는 방식이다. 열린 포트는 응답하지 않고, 닫힌 포트는 RST로 응답한다는 TCP 특성을 이용한다. 방화벽이나 필터를 우회하기 위한 기법으로 등장한다.

NULL Scan은 TCP 플래그를 아무것도 설정하지 않고 패킷을 보낸다. FIN 스캔과 마찬가지로 응답 유무를 보고 포트 상태를 추정한다.

XMAS Scan은 FIN, PSH, URG 플래그를 동시에 설정해 패킷을 보낸다. “트리처럼 불이 켜진다”는 의미에서 붙은 이름이다. 역시 열린 포트는 무응답, 닫힌 포트는 RST를 보내는 특성을 이용한다.

UDP Scan은 UDP 포트를 대상으로 한다. UDP는 연결 개념이 없기 때문에, 응답이 없으면 열려 있거나 필터링된 상태로 판단한다. ICMP Port Unreachable 메시지가 오면 닫힌 포트다. 느리고 오탐이 많다.

SYN Scan = 반열림 스캔, 가장 대표적
FIN/NULL/XMAS = 비정상 플래그 스캔, 필터 우회 목적
UDP Scan = ICMP 응답 여부로 판단
TCP Connect Scan = 완전 연결, 탐지 쉬움