본문 바로가기

네트워크/Tool

NMAP : 옵션 정리 (1)

NMAP

엔맵은 GPLv2의 조건(특허 등의 이유로 요금을 지불해야돼서 소스코드 공개가 불가능한 경우 실행파일까지 배포가 불가능하다)에 따라 재배포 및 수정할 수 있는 무료 오픈소스 소프트웨어이다.

 

대상 시스템의 정보를 획득할 때 사용되는 유용한 도구. (네트워크의 호스트 및 포트스캔, OS, 취약점 스캔 등)

 

테스트용 사이트 : scanme.nmap.org

Nmap 7.80 (https://nmap.org)
사용법 : nmap [스캔 유형] [옵션] {대상 사양}
대상 사양 :
  호스트 이름, IP 주소, 네트워크 등을 전달할 수 있습니다.
  예 : scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254
  -iL <inputfilename> : 호스트 / 네트워크 목록에서 입력
  -iR <호스트 수> : 임의의 대상을 선택합니다
  --exclude <host1 [, host2] [, host3], ...> : 호스트 / 네트워크 제외
  --excludefile <exclude_file> : 파일에서 목록 제외
호스트 디스커버리 :
  -sL :리스트 스캔-스캔 할 대상을 간단히 나열합니다.
  -sn : Ping Scan-포트 스캔 비활성화
  -Pn : 모든 호스트를 온라인으로 처리-호스트 검색 건너 뛰기
  -PS / PA / PU / PY [portlist] : 주어진 포트에 대한 TCP SYN / ACK, UDP 또는 SCTP 검색
  -PE / PP / PM : ICMP 에코, 타임 스탬프 및 넷 마스크 요청 감지 프로브
  -PO [프로토콜 목록] : IP 프로토콜 핑
  -n / -R : DNS 확인 / 항상 해결 안 함 [기본값 : 가끔]
  --dns-servers <serv1 [, serv2], ...> : 사용자 정의 DNS 서버 지정
  --system-dns : OS의 DNS 확인자 사용
  --traceroute : 각 호스트에 대한 추적 홉 경로
스캔 기술 :
  -sS / sT / sA / sW / sM : TCP SYN / Connect () / ACK / Window / Maimon 스캔
  -SU : UDP 스캔
  -sN / sF / sX : TCP 널, FIN 및 Xmas 스캔
  --scanflags <flags> : TCP 스캔 플래그 사용자 정의
  -sI <zombie host [: probeport]> : 유휴 스캔
  -sY / sZ : SCTP INIT / COOKIE-ECHO 스캔
  -sO : IP 프로토콜 스캔
  -b <FTP 릴레이 호스트> : FTP 바운스 스캔
포트 사양 및 스캔 순서 :
  -p <포트 범위> : 지정된 포트만 검색
    예 : -p22; -p1-65535; -p U : 53,111,137, T : 21-25,80,139,8080, S : 9
  --exclude-ports <포트 범위> : 지정된 포트를 검색에서 제외
  -F : 빠른 모드-기본 스캔보다 적은 수의 포트 스캔
  -r : 포트를 연속적으로 스캔-무작위 화하지 않음
  --top-ports <number> : <number> 가장 일반적인 포트 스캔
  --port-ratio <ratio> : <ratio>보다 일반적인 포트 스캔
서비스 / 버전 탐지 :
  -sV : 서비스 / 버전 정보를 확인하기위한 프로브 개방 포트
  --version-intensity <level> : 0 (라이트)에서 9 (모든 프로브 시도)로 설정
  --version-light : 가장 가능성있는 프로브로 제한 (강도 2)
  --version-all : 모든 단일 프로브 시도 (강도 9)
  --version-trace : 자세한 버전 검색 활동 표시 (디버깅)
스크립트 스캔 :
  -sC : --script = default와 동일
  --script = <Lua scripts> : <Lua scripts>는 쉼표로 구분 된
           디렉토리, 스크립트 파일 또는 스크립트 범주
  --script-args = <n1 = v1, [n2 = v2, ...]> : 스크립트에 인수를 제공하십시오
  --script-args-file = filename : 파일에 NSE 스크립트 인수 제공
  --script-trace : 보내고받은 모든 데이터 표시
  --script-updatedb : 스크립트 데이터베이스를 업데이트하십시오.
  --script-help = <Lua 스크립트> : 스크립트에 대한 도움말을 표시합니다.
           <Lua scripts>는 쉼표로 구분 된 스크립트 파일 목록입니다.
           스크립트 카테고리.
OS 탐지 :
  -O : OS 감지 사용
  --osscan-limit : 유망한 대상으로 OS 감지 제한
  --osscan-guess :보다 적극적으로 OS를 추측
타이밍 및 성능 :
  <시간>이 걸리는 옵션은 초 단위이거나 'ms'(밀리 초)를 추가합니다.
  's'(초), 'm'(분) 또는 'h'(시간)를 값 (예 : 30m)으로 설정하십시오.
  -T <0-5> : 타이밍 템플릿 설정 (높을수록 빠름)
  --min-hostgroup / max-hostgroup <size> : 병렬 호스트 스캔 그룹 크기
  --min-parallelism / max-parallelism <numprobes> : 프로브 병렬화
  --min-rtt-timeout / max-rtt-timeout / initial-rtt-timeout <time> : 지정
      프로브 왕복 시간.
  --max-retries <tries> : 포트 스캔 프로브 재전송 횟수를 제한합니다.
  --host-timeout <time> : 오랜 시간이 지난 후 포기
  --scan-delay / --max-scan-delay <time> : 프로브 간 지연 조정
  --min-rate <number> : 초당 <number>보다 느리지 않은 패킷을 보냅니다.
  --max-rate <number> : 초당 <number>보다 빠른 패킷 전송
방화벽 / IDS 회피 및 스푸핑 :
  -f; --mtu <val> : 프래그먼트 패킷 (선택적으로 제공된 MTU 포함)
  -D <decoy1, decoy2 [, ME], ...> : 미끼로 스캔 망토
  -S <IP_Address> : 스푸핑 소스 주소
  -e <iface> : 지정된 인터페이스 사용
  -g /-source-port <portnum> : 주어진 포트 번호 사용
  --proxies <url1, [url2], ...> : HTTP / SOCKS4 프록시를 통한 릴레이 연결
  --data <hex string> : 전송 된 패킷에 사용자 정의 페이로드 추가
  --data-string <string> : 전송 된 패킷에 사용자 정의 ASCII 문자열을 추가합니다
  --data-length <num> : 전송 된 패킷에 임의의 데이터 추가
  --ip-options <options> : 지정된 ip 옵션으로 패킷을 보냅니다.
  --ttl <val> : IP 활성 시간 필드 설정
  --spoof-mac <mac 주소 / 접두사 / 공급 업체 이름> : MAC 주소 스푸핑
  --badsum : 가짜 TCP / UDP / SCTP 체크섬으로 패킷을 보냅니다.
산출:
  -oN / -oX / -oS / -oG <파일> : 일반 출력 스캔, XML, s | <rIpt kIddi3,
     주어진 파일 이름으로 각각 Grepable 형식을 지정할 수 있습니다.
  -oA <basename> : 세 가지 주요 형식으로 한 번에 출력
  -v : 상세 수준을 높입니다 (더 큰 효과를 보려면 -vv 이상 사용).
  -d : 디버깅 수준을 높입니다 (효과를 높이려면 -dd 이상 사용).
  --reson : 포트가 특정 상태 인 이유를 표시합니다.
  --open : 열려있거나 열린거라 생각되는 포트만 표시
  --packet-trace : 보내고받은 모든 패킷 표시
  --iflist : 호스트 인터페이스 및 경로 인쇄 (디버깅 용)
  --append-output : 클로버 지정 출력 파일이 아닌 추가
  --resume <filename> : 중단 된 스캔 다시 시작
  --stylesheet <path / URL> : XML 출력을 HTML로 변환하는 XSL 스타일 시트
  --webxml :보다 이식 가능한 XML을위한 Nmap.Org의 참조 스타일 시트
  --no-stylesheet : XSL 스타일 시트와 XML 출력의 연관 방지
기타 :
  -6 : IPv6 스캔 사용
  -A : OS 감지, 버전 감지, 스크립트 검색 및 추적 경로 사용
  --datadir <dirname> : 사용자 정의 Nmap 데이터 파일 위치 지정
  --send-eth /-send-ip : 원시 이더넷 프레임 또는 IP 패킷을 사용하여 전송
  --privileged : 사용자에게 모든 권한이 있다고 가정
  --unprivileged : 사용자에게 원시 소켓 권한이 없다고 가정
  -V : 인쇄 버전 번호
  -h :이 도움말 요약 페이지를 인쇄하십시오.
예 :
  nmap -v -A scanme.nmap.org
  nmap -v -sn 192.168.0.0/16 10.0.0.0/8
  nmap -v -iR 10000 -Pn -p 80
추가 옵션 및 예는 매뉴얼 페이지 (https://nmap.org/book/man.html)를 참조하십시오.

 

주요 옵션

스캔 관련

 -p <포트범위> : 포트범위 지정. ex) -p 22,23,80,443 / -p 1-3000,6000-9000

 -O : OS 탐지

 -sV : 서비스 버전 탐지

# nmap -p 81,444 --script http-methods xxx.test.co.kr
PORT    STATE SERVICE
81/tcp  open  hosts2-ns
444/tcp open  snpp
# nmap -p 81,444 -sV --script http-methods xxx.test.co.kr
PORT    STATE SERVICE   VERSION			
81/tcp  open  http      Apache Tomcat/Coyote JSP engine 1.1		
| http-methods:			
|   Supported Methods: GET HEAD POST PUT DELETE TRACE OPTIONS PATCH
|_  Potentially risky methods: PUT DELETE TRACE PATCH			
|_http-server-header: Apache-Coyote/1.1			
444/tcp open  ssl/snpp?			
| fingerprint-strings:			
|   DNSStatusRequestTCP, DNSVersionBindReqTCP, Help, Kerberos, RPCCheck, RTSPRequest, SMBProgNeg, SSLSessionReq, TLSSessionReq:
|     HTTP/1.1 400 Bad Request			
|     Date: Wed, 28 Aug 2019 08:12:23 GMT			
|     Connection: close			
|     Server: Server			
|   GetRequest:			
|     HTTP/1.1 200 OK			
|     Content-Type: application/json;charset=UTF-8			
|     Date: Wed, 28 Aug 2019 08:12:21 GMT			
|     Connection: close			
|     Server: Server			
|     {"Hello":"World"}			
|   HTTPOptions:			
|     HTTP/1.1 200 OK			
|     Cache-Control: private			
|     Expires: Thu, 01 Jan 1970 09:00:00 KST			
|     Allow: GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, PATCH
|     Content-Length: 0			
|     Date: Wed, 28 Aug 2019 08:12:23 GMT			
|     Connection: close			
|_    Server: Server			

 

 --open : 열린 포트만 확인 

 --reason : 해당 STATE로 결과가 출력된 이유

 

출력 관련 

 -v : 상세 내역 확인 (-vv)

 -d : 디버깅 내역 확인 (-dd)

 -oN / -oX <파일경로>: 일반 출력(.txt), XML 출력 (지정한 경로에 쓰기권한이 있어야한다.)

일반출력 (test.txt)
XML 출력 (test.xml)
나머지 두종류의 출력 방식 (위: oS, 아래: oG)

 

 

 

'네트워크 > Tool' 카테고리의 다른 글

NMAP : http.lua (4)  (0) 2019.10.14
NMAP : 쓸만한 NSE 스크립트 (3)  (0) 2019.08.25
NMAP : 스캔 원리 (2)  (0) 2019.08.25