2005년 10월 29일 토요일

About Nmap

nmap의 사용법


shell> nmap (스캔종류) (옵션) (호스트 or 네트워크)



<스캔종류>


-sT : 일반적인 포트 스캐너 같이 connect()함수를 사용해서 포트를 하나하나 접속해서 스캔하는 방식이다.


-sS : TCP연결은 3 way handshake를 하면서 이루어진다. 그렇기 때문에 SYN패캣을 보낸후 SYNACK패킷이 온다면 해당 포트는 열려있는 것이고 RST 패킷이 온다면 해당 포트는 닫혀있는 것이다. 그리고 SYNACK패킷을 받았다면 즉시 RST패킷을 보내서 접속을 끊어 버린다. 이렇게 스캔을 하면 접속이 이루어지지 않은 상태에서 접속을 끊었기 때문에 기록이남지 않은 경우가 대부분이다. 이를 SYN스캔이라한다.


-sF : 열려있는 포트에 FIN패킷을 보내면 무시하고 닫혀있는 포트에 보내면 RST패킷이 온다. 이 기법은 SYN패킷을 막아 놓은 방화벽의 안쪽에 있는 호스트를 스캔할 때 주로 사용된다. 이것은 유닉스 계열 OS에서만 사용가능하다. 이를 FIN스캔이라 한다.


-sP : 호스트가 살아있는지, 죽어 있는지만 ping을 이용해 체크한다.


-sU : 열려잇는 UDP 포트를 알아내는 건 쉽지 않다. UDP포트에 패킷을 보내면 패킷이 중간에 사라질 수도 있고 정상적으로 도착해도 돌아오는 패킷이 없기 때문이다. 하지만 만약에 닫혀있는 UDP 포트에 패킷을 보내면 해당 UDP포트가 unreachable 하다는 ICMP패킷이 온다. 이를 이용해 열려있는 UDP포트를 스캔할수있다.


-sR : portmap에 접근 할 수 없는 상태에서 제공하는RPC 서비슬 찾을 때사용한다.RPC서비스들은 port map에서 포트를 할당해 주지만 보통 어디쯤에 포크르 할당하는지 추정이 가능하기 때문이다.


-b : 익명 FTP서버를 이요해 그 FTP 서버를 경유해서 호스틀 스캔한다. 이를 FTP바운스 스캔이라 한다.



<옵션>


-f : SYN 스캔이나 FIN 스캔을 할 때 조각난 패킷을 사용한다.


-P0 : scan 시도전 ping을 시도 하지 않는다. icmp echo request를 허용하지 않는 호스트에 대한 scan을 시도할때 설정해야한다.


-PT : ping의 대용으로 icmp echo request를 보내는 것이 아니라 tcp packet을 보내서 해당 호스트가 작동중인지 검사한다..


-PS : TCP의 SYN 패킷을 보내서 SYNACK패킷이나 RST패킷이 오면 호스트는 살아있는 호스티이다. 이를 이용해서 호스트가 살아있는지, 죽어 있는지를 검사한다.


-PI : 호스트가 죽어있는지 , 살아 있는지를 ICMP로 검사한다.


-PB : TCP ping과 ICMP ping을 둘 다 사용해서 호스트가 죽어있는지, 살아있는지를 검사한다.


-O : TCP/IP fingerprinting을 사용해 호스트이 OS를 주청한다.


-I : RFC 1413에 정의되어있는 ident프로토콜을 사용해 열려있는 포크가 어떤 사용자에의해 열려있는지 검사한다.


-n : DNS lookup을 하지 않는다.


-R : DNS lookup을 한다.


-o <logfilename> : 스캔한 결과를 로그 파일에 남긴다(사람이 읽기 편한 포맷).


-m <logfilename> : 스캔한 결과를 로그 파일에 남긴다(컴퓨터가 일기 편한 포맷).


-i <inputfile> : 스캔할 호스트 리스트를 파일로부터 입력받는다.


-p <port ranges> : 스캔할 포크 리스트를 명시한다. 초기값은 1부터 1024까지의 포트와 services 로 명시되어있는 포트이다.


-F : services에 명시되어 있는 포트만 스캔한다.


-S <ip address> : 패킷의 source 주소를 지정한다.


-g < portnumber> : 패킷의 source 포트넘버를 지정한다.



<호스트나 네트워크>


호 스트의 경우에는 IP나 호스트명으로 지정할 수 있고 네트워크의 경우에는 '128.210.*.*','128.210.0-255.0-255','128.210.1-50,51-255.1,2,3,4,5,-255' 와 같은 포맷으로 사용해서 여러 호스트들을 지정할 수 있다.



<예>

[root@root]# nmap -sT www.test.co.kr


Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2010-11-09 13:48 KST

Interesting ports on 127.0.0.1:

Not shown: 1666 closed ports

PORT     STATE SERVICE

25/tcp   open  smtp

80/tcp   open  http

110/tcp  open  pop3

135/tcp  open  msrpc

139/tcp  open  netbios-ssn

143/tcp  open  imap

366/tcp  open  odmr

445/tcp  open  microsoft-ds

465/tcp  open  smtps

993/tcp  open  imaps

995/tcp  open  pop3s

1025/tcp open  NFS-or-IIS

2301/tcp open  compaqdiag

3389/tcp open  ms-term-serv

MAC Address: 01:12:50:AB:D7:14 (Hewlett Packard)


Nmap finished: 1 IP address (1 host up) scanned in 1.707 seconds