몇일 전 Nmap 설치 방법과 nmap을 이용한 OPTIONS Method 취약점 확인 방법에 대해 알아봤습니다. 오늘은 포트스캔에 필요한 옵션에 대해 Windows 버전으로 알아보려고 합니다.
Nmap 목적
TCP 3-Way Handshake를 이용하여 정상적인 통신을 하고 있는 open된 포트를 찾기 위해 사용하며, 불필요한 포트를 찾아서 보안사고 피해를 줄기이 위한 목적을 가지고 있습니다. 하지만 공격자에게는 정보수집을 위한 해킹툴로도 사용 합니다.
스캔옵션
-sS : 기본적으로 가장 많이 사용하는 스캔 옵션이며, Half-open 스캔이라고 합니다.
※ Half-Open 스캔 : TCP 3-Way Handshake 연결을 비정상적으로 통신하는 방식입니다. 포트가 Open된 서버를 test할 경우 로컬에서 SYN을 보내면 서버에서 SYN+ACK를 보내며 다시 로컬에서는 ACK가 아닌 RST를 보냅니다. 하지만 타겟의 서버의 로그에 기록되는 것은 피할 수 있지만 방화벽 또는 IDS, IPS등 보안장비에서는 탐지가 가능합니다.
포트가 Closed 경우에는 로컬에서 서버로 SYN을 보내면 서버는 로컬에게 RST+ACK를 보냅니다.
-sT : 기본 TCP 포트 스캐닝입니다.
-sU : UDP 스캐닝 입니다. 타겟에 UDP 스캔을 보냈을때 Closed 포트는 ICMP Port Unreachable 패킷을 보내고 Open 포트는 응답이 없습니다.
-sN, -sF, -sX : TCP NULL, FIN, Xmas 스캔방식 입니다. 타겟의 FIN, PUSH, URG 플래그를 설정한 패킷을 보내고 타겟의 반응에 따라 열린 포트인지 확인하는 방식입니다. 즉, 스텔스 스캔이라 하며 일반적인 TCP 3-Way Handshake 방식을 무시 하고 열결을 시도 하며 공격자의 정보를 알 수 없습니다.. 방화벽이나 IDS 같은 장비들이 SYN을 검사한다는 허점을 이용한 스캐닝입니다
-sA : TCP ACK 스캔방식입니다. ACK 패킷에 대한 TTL 값을 이용한 분석 옵션입니다.
-sW : TCP 윈도우 스캔 방식이며 ACK 패킷에 대한 윈도우 크기 분석하는 옵션입니다.
-sM : TCP maimon, 방화벽 침투 스캔 방법이며 FIN 스캔과 유사한데 ACK Fleg도 포함합니다. 이는 더 많은 패킷 필터링 방화벽을 잡게 허락하는데 단점은 FIN스캔보다 더 적은 시시틈데 대해 작동한다는 점입니다.
-sI : Idle 스캔은 모든 방법중 가장 비밀스러운 스캔방법이며 스캔하는 시간이 느리고 복잡합니다.
-sP : Ping을 이용한 호스트 활성화 여부 확인하는 옵션입니다.
-F : 빠른 포트 스캔 방식입니다.
-O : 타겟의 서버의 OS 확인 옵션입니다.
-p : 타겟의 특정 포트를 스캔하거나 범위 지정하는 옵션입니다. -p 25는 25 포트에 대해 스캔을 하라는 옵션이고 -p 1-1024는 1~1024까지 포트스캔하라는 옵셥입니다. 원하는 포트를 스캔하기위해서는 -p 20,24,3386 구분해서 스캔할 수 있습니다. 포트를 정하지 않고 -p를 했을 경우 1~65535 모든 포트를 스캔 합니다.
대상 IP는 클래스로 스캔도 가능합니다.
Nmap 결과값
open(열린 상태) : 포트가 열려 있다는 결과이며 Application이 TCP/UDP패킷을 받고 있다는 결과입니다.
Closed(닫힌 상태) : 포트가 닫혀 있다는 결과이며, 해당 포트를 리스닝하고 있는 Application이 없다는 결과입니다.
Filtered(필터된 상태) : 각종 보안장비(방화벽, IPS, DDoS, 각종 보안장비에 가로막혀 포트가 열렸는지 닫혀있는지 판단할 수 없는 상태 입니다.
Unfiltered(필터되지 않은 상태) : 포트 접근능 가능하나 닫혀 있는지 열렸는지 결정을 못 할 경우 입니다.
open|Filtered(열린상태|필터된 상태) : 포트가 열렸는지 필터되었는지 결정 할 수 없는 상태입니다.
closed|Filtered(닫힌상태|필터된 상태) : 포트가 닫혀있는지 필터되었는지 경정 할 수 없는 상태입니다.