본문 바로가기

Learning/└보고서

nmap report

NMAP
 


NMAP은 port Scanning 툴로서 호스트나 네트워크를 스캐닝 할 때, 아주 유용한 시스템 보안툴인 동시에, 해커에게는 강력한 해킹툴로 사용될 수 있습니다. 

서버를 운영하다 보면 관리자 스스로도 어떤 포트가 열려있고, 또 어떤 서비스가 제공중인지 잘 
모를때가 있습니다. 기억력이 나빠서나, 게을러서가 아니라 필요에 의해 자주 변경되므로 수시로 
파악해서 기록해두지 않으면 잊어버리게 됩니다. 또 크래킹에 의해 생성된 백도어는 파악하기가 
어렵습니다.

수 많은 포트와 서비스를 효과적으로 체크해서 관리하기 위해서 NMAP과 같은 포트 스캔 툴이 
필요합니다. 
NMAP은 기존의 포트스캔툴에 비해 다양한 옵션과 방화벽 안쪽의 네트웍도 스캔할 수 있는 강력한 
기능이 있습니다.


1. 설치 

http://www.insecure.org/nmap


nmap 의 홈페이지에서 소스파일을 내려 받습니다. 그 후에 설치할 디렉토리로 옮긴후에 압축을 
풉니다. 그 후에 해당 디렉토리에서 ./configure 를 실행한 후에make, make install 을 실행한다.


[root@gyn nmap-2.54BETA30]# ./configure 
[root@gyn nmap-2.54BETA30]# make; make install


설치가 끝났으면 몇 가지 스캔 타입을 알아본다. 

-sT일반적인 TCP 포트스캐닝.
-sS이른바 'half-open' 스캔으로 추적이 어렵다.
-sPping 을 이용한 일반적인 스캔.
-sUUDP 포트 스캐닝.
-PO대상 호스트에 대한 ping 응답을 요청하지 않음 .
log 기록과 filtering 을 피할 수 있다.
-PT일반적이 ICMP ping이 아닌 ACK 패킷으로 ping 을 보내고
RST 패킷으로 응답을 받는다.
-PI일반적인 ICMP ping 으로 방화벽이나 필터링에 의해 걸러진다.
-PBping 을 할 때 ICMP ping 과 TCP ping을 동시에 이용한다.
-PSping 을 할 때 ACK 패킷대신 SYN 패킷을 보내 스캔.
-O대상 호스트의 OS 판별.
-p대상 호스트의 특정 포트를 스캔하거나, 스캔할 포트의 범위를 지정.
ex) -p 1-1024
-DDecoy 기능으로 대상 호스트에게 스캔을 실행한 호스트의 주소를 속인다.
-F/etc/services 파일 내에 기술된 포트만 스캔.
-ITCP 프로세서의 identd 정보를 가져온다.
-nIP 주소를 DNS 호스트명으로 바꾸지 않는다. 속도가 빠르다.
-RIP 주소를 DNS 호스트명으로 바꿔서 스캔. 속도가 느리다.
-o스캔 결과를 택스트 파일로 저장.
-i스캔 대상 호스트의 정보를 지정한 파일에서 읽어서 스캔.
-h도움말 보기

위의 스캔타입은 자주 쓰이는 내용이고 -h 옵션을 쓰거나 man page를 이용하면 아주 상세한 
사용방법을 보실 수 있다.


[gyn@gyn gyn]$ man nmap
NMAP(1) NMAP(1)

NAME
nmap - Network exploration tool and security scanner

SYNOPSIS
nmap [Scan Type(s)] [Options] <host or net #1 ... [#N]>

..중략..

[gyn@gyn gyn]$ nmap -h
Nmap V. 2.54BETA30 Usage: nmap [Scan Type(s)] [Options] <host or net list>
Some Common Scan Types ('*' options require root privileges)
-sT TCP connect() port scan (default)
* -sS TCP SYN stealth port scan (best all-around TCP scan)
* -sU UDP port scan

..중략..


2. 사용.

몇가지 사용 예를 통해 nmap을 활용해 보시죠.


[root@gyn root]# nmap -sP xxx.xxx.xxx.xxx

Starting nmap V. 2.54BETA30 ( www.insecure.org/nmap/ )
Host gyn (xxx.xxx.xxx.xxx) appears to be up.

Nmap run completed -- 1 IP address (1 host up) scanned in 0 seconds

-sP 옵션으로 대상호스트가 살아 있음을 알아냈습니다. 이젠 특정 포트(80)를 검색해 보겠습니다.

[root@ home]# nmap -sP -PT80 xxx.xxx.xxx.xxx
TCP probe port is 80

Starting nmap V. 2.54BETA7 ( www.insecure.org/nmap/ )
Host (xxx.xxx.xxx.xxx) appears to be up.
Nmap run completed -- 1 IP address (1 host up) scanned in 1 second

지정된 포트가 아니라 대상호스트의 열린 포트를 모두 검색해 봅니다.


[root@ home]# nmap -sT xxx.xxx.xxx.xxx

Starting nmap V. 2.54BETA7 ( www.insecure.org/nmap/ )
Interesting ports on (xxx.xxx.xxx.xxx):
(The 1526 ports scanned but not shown below are in state: closed)
Port State Service
22/tcp open ssh 
53/tcp open domain 
80/tcp open http 
Nmap run completed -- 1 IP address (1 host up) scanned in 5 seconds

대상 호스트의 열린 포트를 알수는 있지만 로그가 남으므로 위험합니다. 
스텔스 스캔으로 감시를 피해야 겠지요.

[root@webserver log]# nmap -sS xxx.xxx.xxx.xxx

Starting nmap V. 2.54BETA7 ( www.insecure.org/nmap/ )
Interesting ports on (xxx.xxx.xxx.xxx):
(The 1526 ports scanned but not shown below are in state: closed)
Port State Service
22/tcp open ssh 
53/tcp open domain 
80/tcp open http 

Nmap run completed -- 1 IP address (1 host up) scanned in 5 seconds

UDP port 스캔입니다. 시간이 많이 걸릴 수도 있습니다. 


[root@gyn root]# nmap -sU localhost

Starting nmap V. 2.54BETA30 ( www.insecure.org/nmap/ )
Interesting ports on gyn (127.0.0.1):
(The 1450 ports scanned but not shown below are in state: closed)
Port State Service
53/udp open domain 
699/udp open unknown 

Nmap run completed -- 1 IP address (1 host up) scanned in 3 seconds

이번에는 -O 옵션으로 운영체제를 알아보겠습니다.


[root@webserver /root]# nmap -sS -O xxx.xxx.xxx.xxx

Starting nmap V. 2.54BETA7 ( www.insecure.org/nmap/ )
Interesting ports on db (xxx.xxx.xxx.xxx):
(The 1530 ports scanned but not shown below are in state: closed)
Port State Service
22/tcp open ssh 
113/tcp open auth 
3306/tcp open mysql

TCP Sequence Prediction: Class=random positive increments
Difficulty=2158992 (Good luck!)
Remote operating system guess: Linux 2.1.122 - 2.2.16

Nmap run completed -- 1 IP address (1 host up) scanned in 2 seconds

몇가지 예를 통해 사용법을 알아 보았습니다.