강좌 / 팁

기 타 Scanning tool nmap 사용하자

2011.12.19 12:33

gooddew 조회:6465

 nmap 실행

nmap의 사용방법은 다음과 같다. scan type 및 option에 대해서는 nmap의 man page에 자세히 나와있다.

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

Top

Scan Type -sT
 TCP connect() scan : TCP scanning의 가장 기초적인 형태로 connect() 함수를 사용해서 모든 포트에 대해 스캔하는 방식이다. 만약 포트가 listening 상태라면 connect()는 성공할 것이고, 그렇지 않으면 reachable 되지 않는다.
 
-sS
 TCP SYN scan : full TCP 접속을 하지 않으므로 "half-open" 스캐닝이라 한다. 하나의 SYN 패킷을 보내어 SYN|ACK 응답이 오면 그 포트는 listening 상태임을 나타내며, RST 응답이 오면 non-listener임을 나타낸다. 이 기술은 하나의 패킷을 보내어 SYN|ACK 응답을 받으면 그 즉시 RST 패킷을 보내서 접속을 끊어버린다. 이렇게 하면 접속이 이루어지지 않은 상태에서 접속을 끊었기 때문에 로그를 남기지 않는 경우가 대부분이다. custom SYN packet을 만들기 위해서는 루트 권한이 필요하다.
 
-sF
-sX
-sN
 Stealth FIN, Xmas Tree, Null scan : 이들은 SYN 패킷을 막아놓은 방화벽이나 패킷 필터 또는 Synlogger와 Courtney 같은 스캔을 탐지하는 프로그램들을 무사히 통과할 수 있다. open 포트로 FIN 패킷을 보내면 이 패킷을 무시하고, closed 포트로 보내면 RST 패킷이 온다. 이들 스캔은 주로 유닉스계열 OS에서만 사용 가능하며, 루트권한이 필요하다.
 
-sP
 Ping scanning : 네트워크의 어느 호스트가 살아있는지를 알고 싶을 때 사용한다. nmap은 명시한 네트워크의 모든 IP 주소로 ICMP echo request packet을 보내어 이것을 행한다. 호스트가 살아 있다면 응답을 보낸다. 하지만 microsoft.com 같은 일부 사이트는 echo requst packet을 방해한다. 따라서 nmap은 포트번호 80(default) 으로 TCP ack packet을 보낸다. 만약 RST back을 받았다면 이 시스템은 살아있는 것이다.
 
-sU
 UDP scans : 이것은 호스트의 어떠한 UDP 포트가 open 되어 있는지를 결정하기 위해 사용된다. 이 기술은 시스템의 각 포트에 0 바이트의 udp 패킷을 보낸다. 만일 ICMP port unreachable 메시지를 받았다면 이 포트는 closed 상태이며, 다른 경우라 open 상태라고 할 수 있다. 일부에서는 UDP 스캐닝이 무의미하다라고 말한다. 하지만 최근의 Solaris rcpbind hole을 보면 Rpcbind가 32770 이상의 정의되지 않은 UDP 포트에서 발견되고 있다. 이것은 111 포트가 방화벽에서 차단되어지는 것과는 별개의 문제이다. 따라서 UDP 스캐너로 30,000번 이상의 high 포트들이 listening 상태인지를 점검해봐야 한다. 이것은 루트만이 실행가능하다.
 
-sA
 ACK scan : 이 방법은 방화벽의 룰셋을 정밀하게 계획하기 위해 사용된다. 특히 방화벽이 stateful한지 아니면 단순히 들어오는 SYN 패킷을 차단하는 패킷필터인지를 점검하는데 도움이 된다. 포트에 ACK 패킷을 보내어 RST 응답을 받으면 그 포트는 "unfilterd"이며, 아무런 응답이 없으면 "filtered" 이다. nmap은 "unfilterd" 포트는 프린트하지 않는다.
 
-sW
 Window scan : TCP Window 크기의 변칙 때문에 filtered/nonfiltered 뿐만 아니라 open 포트도 스캔할 수 있다는 점을 제외하면 ACK scan과 매우 유사하다.
 
-sR
 RPC scan : 이 스캔 방법은 nmap의 다양한 포트 스캔 방법을 조합해서 이루어진다. 이것은 열려져있는 TCP/UDP 포트에 대해 그들이 RPC 포트인지, 서비스를 제공하는 프로그램은 무엇이며, 버전은 무엇인지 등을 확인하기 위해 SunRPC program NULL commands를 계속 보내게 된다. 따라서 호스트의 portmaper가 방화벽(또는 TCP wrapper)안에 있다 하더라도 'rpcinfo -p'와 같은 정보를 얻을 수 있다.
 
-b
 FTP bounce attack : 익명 FTP 서버를 이용해 그 FTP 서버를 경우해서 호스트를 스캔한다. 이를 FTP 바운스 스캔이라 한다.
 

 


Options -P0 이것은 방화벽에 의해 ICMP echo requests (or responses)를 막아놓은 네트워크의 스캔을 가능하게 한다. ping을 막아놓은 호스트를 스캔하기 위해서는 -P0 나 -PT80을 사용해야 한다.
 
-PT 어느 호스트가 살아 있는지를 알기 위해 TCP "ping"을 사용한다. 이것은 ICMP echo request 패킷을 보내고 응답을 기다리는 대신에, 네트워크에 TCP ACK를 보내어 응답이 오기를 기다린다. RST 응답이 오면 호스트는 살아 있는 것이다. 이 옵션은 ping 패킷을 차단하는 네트워크나 호스트을 스캔하는 동안은 호스트가 살아 있는 것과 같다. -PT<port number>를 사용 하며, 디폴트 포트는 80이다.
 
-PS 이 옵션은 루트사용자를 위해 ACK 패킷 대신에 SYN (connection request)을 사용한다. 호스트가 살아 있다면 RST (or, rarely, a SYN|ACK)로 응답 한다.
 
-PI 이 옵션은 오리지날 ping (ICMP echo request) packet을 사용한다. 이것은 살아있는 호스트를 찾으며 또한 네트워크의 subnet-directed broadcast addresses를 찾는다. 이들은 들어오는 IP 패킷을 컴퓨터의 서브넷으로 브로드케스트하기 위한 IP 주소이다. 따라서 denial of service attacks (Smurf is the most common) 가능성이 있다면 이들은 제거되어야 한다.
 
-PB 이것은 ping 기본 형태로 ACK (-PT)와 ICMP (-PI) 모두를 사용한다.
 
-O 이것은 TCP/IP fingerprinting을 통해 리모트 호스트를 확인하는데 사용된다 다시 말해 리모트 시스템의 운영체제를 점검해 준다. 루트권한이 필요하다.
 
-I RFC 1413에 정의되어 있는 ident 프로토콜을 사용해 open되어 있는 포트가 어떤 사용자에 의해 열려 있는지 검사한다.
 
-v verbose mode : interactive한 사용에 매우 유용한 옵션이다.
 
-h nmap의 'quick reference'이다.
 
-p
<port ranges> 점검하고자 하는 포트를 지정하는 옵션이다. 예로 23번 포트를 점검하려면 '-p 23' 하면 된다. 또한 '-p 20-30,139,60000-'은 20에서 30사이의 포트와 139번 포트, 60000번 이상의 포트에 대해 스캔하라는 뜻이다.
 
-F nmap-services에 나열된 포트만 스캔한다.
 
-n / -R DNS lookup을 하지 않는다. / DNS lookup을 한다.
 
-S
<IP_Address> 패킷의 source 주소를 지정한다.
 
-e
<interface> 네트워크의 인터페이스를 지정한다.
 
-g
<portnumber> 패킷의 source 포트번호를 지정한다.
 
-oN
<logfilename> 스캔한 결과를 로그 파일에 남긴다(사람이 읽기 편한 포맷).
 
-oM
<logfilename> 스캔한 결과를 로그 파일에 남긴다(컴퓨터가 읽기 편한 포맷).
 

 

번호 제목 글쓴이 조회 추천 등록일
[공지] 강좌 작성간 참고해주세요 gooddew - - -
1323 윈 도 우| 윈도우 7 에서 USB 제거를 XP 처럼 하기 [16] 해밀 16045 0 12-23
1322 윈 도 우| 시작 사용자 이미지 제거(내용 살짝 정리) [16] 양철나무꾼 7924 0 12-21
1321 기 타| 윈도우용 압축파일 zip 을 리눅스에서 풀기 gooddew 8329 0 12-19
1320 서버 / IT| 라우터 보안 관리 [1] gooddew 8924 0 12-19
1319 기 타| 리눅스 특수화일명 삭제방법 [3] gooddew 6334 0 12-19
1318 윈 도 우| 인터넷 익스플러러 속도 향샹을 위한 팁 [9] gooddew 14513 0 12-19
1317 기 타| 서버가 커있는 시간 확인하기 [2] gooddew 6326 0 12-19
1316 기 타| rdate 명령 활용법 gooddew 5776 0 12-19
1315 기 타| 부팅시 출력되는 메시지가 너무 빨리 지나가 볼수가 없때 [2] gooddew 6569 0 12-19
1314 기 타| 부팅시 X 윈도우로 바로 실행되게 하기 gooddew 6431 0 12-19
1313 기 타| 네트워킹 설정 하기 [1] gooddew 5828 0 12-19
1312 기 타| 네임서버 강좌 ver 0.2 gooddew 5539 0 12-19
1311 기 타| rm 명령어로 삭제한 파일/폴더 복구하기 [1] gooddew 7919 0 12-19
1310 기 타| 패킷 헤더(header)를 출력하는 tcpdump gooddew 7393 0 12-19
1309 기 타| tcp_wrapper 설정 gooddew 6294 0 12-19
1308 기 타| squid를 설정하기 gooddew 6541 0 12-19
1307 기 타| 센드메일 가이드 gooddew 5240 0 12-19
» 기 타| Scanning tool nmap 사용하자 gooddew 6465 0 12-19
1305 기 타| RedHat기반-여러개의 이더넷카드 인식 및 네트웍 인터페이... gooddew 5403 0 12-19
1304 기 타| 리눅스 보안 점검 gooddew 5330 0 12-19
XE1.11.6 Layout1.4.8