본문 바로가기

Computer Science/security

[시스템 보안] NMap 사용법 및 옵션



NMap은 대표적인 포트 스캔 프로그램이다

다른 기능도 있을 수 있으나 나는 포트 스캔에만 사용한다.

 

NMap 을 다운로드한다.

www.nmap.org/ 


NMap 주요 옵션 목록

 

nmap [-주옵션] [-부옵션] <IP Ranges>

 

[주 옵션]


-sT/ sS/ sA/ sW/ sM  :   TCP 스캔, 차례대로 Connect/SYN/ACK/Window/Maimon 스캔 (-sT: Full connection  / -sS : SYN half 연결)

-sU                         :   UDP 스캔

-sP                         :   Ping 스캔 (Ping 을 통해 대상의 alive 여부만 파악), Ping Sweep 에 사용

 

* -sSU 와 같이 하면 TCP/UDP 스캔을 둘다 수행함

* 주 옵션이 생략될 경우, root 권한 default -sS, 일반권한 default -sT)

 



[부 옵션]


-P0 -PS                     :   ICMP Ping 금지 / SYN 스캔 사용 (PIng sweep 에서 시간 절약)

-sV                             :   포트 어플리케이션 식별

-O                             :   OS 식별

-oA <filename>             :   결과를 nmap, gnmap, xml 세가지 포맷의 텍스트 파일로 저장

-p<port ranges>            :  스캔 대상 포트 지정   (예시 : 21,22,23,8000-9000)

-T<0~4>                     :  속도 옵션,  T4 (Aggressive : 가장 빠름), T0 (Paranoid : 가장 느림)

--min-parallelism <숫자> : 복수의 메소드를 이용해서 동시에 패킷을 전송 (상당히 대량의 패킷 발송하여 빠르게 스캔)

-PN                            :  서버 탐색 없이 바로 포트 스캔 시도 (, 서버가 존재하는지 확인하는 과정 생략)

-iL <filename>               :  스캔 대상을 파일에서 읽어옴

-S <IP> -e <interface> -PN : 소스 ip에 지정한 ip spoofing 하여 자신의 아이피를 속임

-D <decoy1,decoy2...>  : 지정된 여러 decoy들로부터 패킷이 유입되는 걸로 위장함 (-sV 에서 사용할 수 없음)



 

[스캔 예시]


nmap -sS 192.168.10..1                     : TCP 하프 연결을 이용해서 Stealth 모드로 스캔한다.

nmap -sU 192.168.10.1                      : UDP 스캔

nmap -sP -P0 -PS 192.168.10.0/24    : C 클래스 전체에 Ping Sweep (ICMP ping 금지, TCP SYN 사용)

nmap -sS -sV -O 192.168.10.1           : 포트에서 서비스하는 App OS 식별

nmap -sS -PN 192.168.10.1               : 대상이 살아 있다고 가정하고 스캔 시도 (서버 존재를 확신하는데 down으로 탐색될때)

nmap -sS -S 192.168.10.100 -e eth0 -PN 192.168.10.1   : 자신의 ip 192.168.10.100 으로 속여 스캐닝함

nmap -sS -T5 --min-parallelism 100 192.168.241.1

 


 

nmap 결과 - open, filtered, closed

 

open   : 포트가 열려있음. (애플리케이션이 패킷/연결을 받아들이기 위해 리스닝 하고 있음)

filtered : 방화벽, 필터 등 장애물이 가로막고 있어서 nmap이 해당 포트에 접근할 수 없음(열려있는지 닫혀 있는지 알 수 없음)

closed : 해당 포트가 열려있지 않음. (해당 포트를 리스닝하고 있는 애플리케이션이 없음)