nmap을 이용한 여러가지 네트워크 스캔 기법 살펴보기

네트워크를 스캔할 수 있는 도구는 여러가지가 있습니다. 그 중 가장 유명하고 대표적인 nmap에 대한 내용을 정리하려고 합니다.

nmap 은 네트워크, 해킹, 보안쪽 하시는 분이라면 사용하시고 있겠죠. 물론 개발쪽에서도 사용하기도 하죠. 저희 경우에는 nmap 자체를 많이 활용하지는 않습니다. 대체로 손에 익은 옵션들만 사용하여서 정보를 획득하고, 실제로 시간을 많이 들이는 부분이 취약점을 찾아가는 부분과 Exploit 하는 과정인거 같네요 :)

nmap에 대해 간단히 설명드리면 네트워크 스캔을 위한 심플하고 강력한 도구입니다. 또한 zenmap이라는 gui 버전도 지원하며 여러 네트워크에 대해 스캔한다면 gui쪽이 좀 더 직관적으로 그림을 볼 수 있겠지요. 네트워크에 대해 점검하는 도구이지만, 보편적으로는 포트스캐너로 많이 알려져 있습니다. 대상의 서비스 중 외부로 오픈된 포트를 점검하고, 어떤 서비스인지 찾아내기 때문에 침투 테스트나 네트워크 체킹 시 많은 도움이 됩니다.

크게 Host를 식별하는 방법, Port Scan, 장비(IDS,F/W)우회에 쓰이는 옵션 등으로 간단하게 작성합니다.

Host Discovery

nmap을 통해서 동일한 네트워크, 또는 간단한 스캔 작업을 수행할 수 있습니다.

-sL (List Scan) .
# 동일 네트워크상의 host 들을 식별합니다. 빠르게 타겟 확인을 하기 위해서 사용하죠.

-sn (No port scan) .
# 처음 보는 옵션이네요.

-Pn (No ping) .

-PS port list (TCP SYN Ping) .
-PA port list (TCP ACK Ping) .
-PU port list (UDP Ping) .
-PY port list (SCTP INIT Ping) .
-PE; -PP; -PM (ICMP Ping Types) 
# IPMC Ping 타입의 스캔을 하기 위해 사용하는 옵션입니다. 

-PO protocol list (IP Protocol Ping) .
-PR (ARP Ping) .
--traceroute (Trace path to host) .
# 네트워크 상 경로 추적이 필요할 때 사용하는 옵션입니다. 대상 주소까지 타고가는 네트워크 장비의 흐름을 볼 수 있습니다. linux 의 traceroute , windows 의 tracert라고 생각하시면 좋습니다.

-n (No DNS resolution) .
-R (DNS resolution for all targets) .
--system-dns (Use system DNS resolver) .
--dns-servers server1[,server2[,...]] (Servers to use for reverse DNS queries) .

Port Scanning

보안쪽에서 주로 많이 사용되는 부분이지요. 대상의 포트에 대해 스캔하는 기법들이 많이 있습니다. 주로 손에 익은 옵션 위주로 하지만, 움.. 찾아보니 처음보는 옵션들도 종종 있더군요.

-sS (TCP SYN scan) .
# 스텔스 스캔이라고도 불리는 SYN Scan입니다. Syn Paket을 이용하여 스캔하기 때문에 일반적인 장비에서 바로 확인되지 않는 경우가 있습니다. 물론 완벽한 스텔스는 아니지만요. 대체적으로 많이 사용하시는 옵션 중 하나입니다.

-sT (TCP connect scan) .
# TCP를 통해 직접 연결하여 대상의 포트를 확인하는 방법입니다. 해당 옵션을 사용하면 TCP Socket을 통해 연결하여 대상의 포트에 접근, Response 를 보아서 판단하게 되는데 이는 일반적인 포트스캐너와 동일한 형태로 동작합니다. (아주 대중적이고, 많이 볼 수 있는 타입이죠)
# 대체로 SYN Scan으로 감지 되지 않고, 네트워크 접근에 대해서 부담이 적을 때 사용합니다.

-sU (UDP scans) .
# UDP Port 에 대한 스캔하는 옵션입니다. 

-sY (SCTP INIT scan) .
# SCTP 에 대해 스캔하는 옵션입니다.

-sN; -sF; -sX (TCP NULL, FIN, and Xmas scans) .
# SYN, TCP 스캔과 같이 많이 쓰이는 스캔 옵션입니다. 각각 NULL Scan, FIN Scan, Xmas Scan 을 의미합니다.

-sA (TCP ACK scan) .
-sW (TCP Window scan) .
-sM (TCP Maimon scan) .
--scanflags (Custom TCP scan) .
-sZ (SCTP COOKIE ECHO scan) .
-sI zombie host[:probeport] (idle scan) .
-sO (IP protocol scan) .
-b FTP relay host (FTP bounce scan) .

Security Solution Evasion

-f (fragment packets); --mtu (using the specified MTU) .
# 프레그먼트 단위로 패킷을 제어하거나, MTU 사용을 통해 장비를 우회하기 위해 사용되는 옵션입니다.   

-D decoy1[,decoy2][,ME][,...] (Cloak a scan with decoys) .
--data-length number (Append random data to sent packets) .
--ip-options S|R [route]|L [route]|T|U ... ; --ip-options hex string (Send packets with specified ip options) .
--ttl value (Set IP time-to-live field) .
--badsum (Send packets with bogus TCP/UDP checksums) .

More

-O: OS 정보 스캔 
# /OS 정보를 스캔하기 위한 옵션입니다. -O 옵션 사용 시 타겟 주소의 OS를 식별하기 위해 패킷전송 및 배너그래핑을 시작하죠.

-F: Fast scan
# 빠른 스캔을 위한 옵션입니다. 사용해보지는 않았지만,차이가 있을거라 생각됩니다.

-sV: Verion Detect
# 버전 체킹을 위한 옵션입니다. 

-sR: RPC Scan
# RPC 서비스에 대한 스캔을 위한 옵션입니다.  

-sC, --script: NSE Script 사용
# 두 옵션 모두 NSE를 사용하기 위한 옵션입니다. NSE는 nmap에서 사용가능한 스크립트이며, NSE를 통해 취약점을 스캔하는 등 nmap을 좀 더 넓게 사용할 수 있지요. 이 부분은 part2 에서 다뤄볼까합니다.

Reference