정보보안-이론/XX에 대하여

Nmap Option에 대하여

Nmap은 포트 스캐닝을 해주는 정말로 정말로 정말로 정말로 강력한 도구이다. 아마 이 정보 보호판에서 스캐닝 툴에서는 압도적인 성능을 가지고 있지 않을까 라는 생각이 든다. 그만큼 지원하는 많은 강력한 기능이 있다. 이번 포스팅에서는 CEH공부를 하면서 본 새로운 옵션들을 정리할 겸 아예 nmap 옵션의 모든 것을 정리해보려고 한다.

 

*이 포스팅에는 nmap의 설치방법이 들어있지 않습니다.*


Host 발견 옵션

  • -sL : List SCAN 옵션, target network의 alive한 호스트를 list한다.
  • -sn : Ping SCAN 옵션, target network에 ICMP Ping을 발송한다.
  • -Pn : Target Network의 모든 Host를 alive한 상태로 간주하여 스캐닝을 시도한다.
  • -PS/PA/PU/PV[portlist] : 주어진 [portlist]에 TCP SYN/ACK, UDP, SCTP 스캐닝을 시도한다.
  • -PE/PP/PM : target에 대해 ICMP Echo / Timestamp / Netmask를 요청한다.
  • -n/-R : 절대로 DNS 변환을 허용하지 않는다 / 항상 허용한다.
  • --dns-servers : DNS server를 지정한다.
  • --system-dns : OS's의 DNS 변환을 사용한다.
  • --traceroute : 호스트에게 Trace Hop Path를 탐색한다. >> tracert다

 

SCANNING 옵션

  • -sS/sT/sA/sW/sM : TCP SYN/Connect()/ACK/Window/Maimon Scan을 시도한다.
  • -sU : UDP 스캔을 시도한다.
  • -sN/sF/sX : TCP Null / Fin / Xmas Scan을 시도한다.
  • -sl <zombie host[:probeport]> : idle Scan을 시도한다. zombie로 정찰 포트는 [probeport]를 사용한다,
  • -sY/sZ : SCIP INIT/COOKIE-ECHO Scan을 시도한다.
  • -sO : IP Protocol Scan을 시도한다(이거 무슨 스캔방법이더라)
  • -b : FTP Bounce Scan을 시도한다.

 

Port관련 옵션 

  • -p <port-range> : 지정된 포트범위를 스캔한다.
  •  --exclude-ports  <port-range> : 스캔에서 지정된 포트범위는 제외한다.
  • -F : 기본적인 스캔보다 적은 양의 포트를 스캔한다.
  • -r : 포트스캔을 랜덤화된 방식으로 하지 않고, 순차적으로 한다.(이걸 왜하는거지?)
  • --top-ports <number> : 위에서부터 <number>만큼의 common포트를 탐색한다.(nmap에서 지정한 순서같다)
  • --port-ratio <ratio> : <ratio>비율보다 높게 common한 포트를 탐색한다.(nmap에서 지정한 순서같다)

 

Service/Version 탐색 옵션

  • -sV : 오픈된 포트에 대해서 서비스와 버전정보를 같이 탐색한다.
  • --version-intensity <level> : 0~9로 <level>을 지정할 수 있다. 얼마나 version 탐색을 정밀하게 할지 이다.
  • --version-light : <level>2의 intensity로 스캔한다.
  • --version-all : <level> 9의 intensity로 스캔한다.
  • --version-trace : 스캐닝활동에 발견되는 모든 버전정보를 표현한다.(디버깅용도로 사용)

 

Script 옵션

  • -sC : default script로 동작한다.
  • --script=<Lua Scripts> : Lua언어로 작성된 scripts 파일 .nse를 지정하여 동작시킨다.
  • --script-args<n1=v1,[n2=v2]> : script에 인수를 제공한다.
  • --script-args-file=filename : NSE script args를 file에서 제공한다.
  • --script-trace : script를 통해서 발송되는 모든 송/수신 데이터를 보여준다.
  • --script-updatedb : script database를 업그레이드한다.
  • --script-help=<lua scripts> : scripts의 help를 보여준다.(man인듯, 물론 script에 help를 걸어주어야한다.)

 

OS 탐색 옵션

  • -O : OS 탐색을 허용한다.
  • --osscan-limit : 지정된 타겟에대해서만 os scan을 허용한다.
  • --osscan-guess : nmap에서 시행하는 os 추측을 더 적극적으로 사용한다.

 

타이밍과 동작퍼포먼스 옵션

  • -T<0-5> : 5로 갈수록 더 빠르게 스캔하는 내용이다.(느리게 스캔하는 이유는 방화벽이나 IDS의 탐색을 회피하기 위함이다.)
  • --min-hostgroup/max-hostgroup <size> : 동시에 스캔할 스캔그룹을 지정한다.
  • --min-parallelism/max-parallellism <numprobes> : 정찰을 병렬화 한다.(한번에 한다.)
  • --min-rtt-timeout/max-rtt-timeout/initial-rtt-time <time> : <time>은 단위로 s나 m, ms, h를 사용한다. round trip time을 지정한다.
  • --max-retries <tries> : 포트재전송 횟수를 지정한다.
  • --host-timeout <time> : <time>의 시간이 지나면 해당 호스트 탐색은 포기한다.
  • --scan-delay/--max-scan-delay <time> : 프로브발송간의 간격을 지정한다.
  • --min-rate/max-rate <number> : 초당 <number>번의 패킷을 발송하는 간격을 최소/최대발송간격으로 잡는다

 

방화벽과 IDS 회피 옵션

  • -f / --mtu <val> : 패킷을 fragmentation한다.
  • -D <decoy1, decoy2> : decoy를 설정하여 스캔을 지정한다.
  • -S <IP_Address> : IP주소를 <IP_Address>로 spoof해서 발송한다.
  • -e <iface> : 인터페이스를 지정한다.
  • -g/--source-port <portnum> : 스캔시 source포트를 <portnum>으로 사용한다.
  • --proxies <url1,[url2]> : HTTP/SOCKS4를 이용해서 프록시를 지정한다.
  • --data <hex String> : 발송하는 패킷의 payload를 설정한다.
  • --data-string <string> : 발송하는 패킷에 <String>을 덧붙인다. 
  • --data-length <num> : <num>길이의 랜덤한 난수를 발송한다.
  • --ip-options <options> : 지정된 <options>로 패킷을 발송한다.
  • --ttl <val> : 패킷의 ttl을 지정한다.
  • --spoof-mac <mac address/prefix/vender name> : Mac address를 spoof해서 발송한다.
  • --badsum : 잘못된 checksum으로 패킷을 발송한다.

 

출력 옵션

  • -oN/oX/oS/oG <file> : 스캐닝의 결과를 Normal/XML/sl<rlpt kiddi3(이게 ㅜ머야 ㅅㅂ)/Grepable format으로 지정한다. 각각 file명을 지정하여 저장할 수 있다.
  • -oA <basename> : 출력을 세가지 주된형태로 출력할 수 있다.
  • -v : 자세하게 출력한다.(-vv를 쓰면 더 자세해짐)
  • -d : 디버깅 레벨을 올린다.(-dd를 쓰면 디버깅 레벨이 더욱 올라간다)
  • --reason : 포트가 해당상태인 이유를 출력한다.
  • --open : 오직 open된 포트만을 표현한다.
  • --packet-trace : 모든 전송/수신된 패킷을 보여준다.
  • --iflist : host 인터페이스와 router를 표시한다.
  • --append-output : 결과파일에 출력할때 덮어쓰기가 아닌 이어쓰기로 출력한다.
  • --resume <filename> : 취소된 스캐닝을 지속한다.
  • --stylesheet <path/URL> : 스타일 시트를 지정한다.
  • --webxml : 지정한 스타일이 있는 nmap.ort공식홈페이지를 참조하자
  • --no-stylesheet : XML의 결과에 스타일을 지정하는것을 방지한다.

 

기타 옵션

  • -6 : Ipv6 Scanning을 지원한다.
  • -A : OS 탐색, version탐색, script 스캐닝, traceroute를 다 시행한다.
  • --datadir <dirname> : nmap data file을 지정한다.
  • --send-eth/--send-ip : raw ethernet frames나 ip packet을 전송한다.
  • --privileged : 스캐닝유저가 privileged를 가졌다고 가정하고 스캐닝을 동작한다.
  • --privileged : 스캐닝유저가 privileged를 가지지 못했다고 가정하고 스캐닝을 동작한다.
  • -V : version number를 표현한다.
  • -h : option 설명을 출력한다.

 

출처 : https://nmap.org/book/man-briefoptions.html

 

Options Summary | Nmap Network Scanning

This options summary is printed when Nmap is run with no arguments, and the latest version is always available at https://svn.nmap.org/nmap/docs/nmap.usage.txt. It helps people remember the most common options, but is no substitute for the in-depth documen

nmap.org


버릴 옵션이 단 하나도 없다.(아 몇개는 버려도 된다. -r? 그건 옵션이 아니다) 다 외우고 있을 필요는 없지만, 확실히 머리에 가지고 있으면 좋은거 같다.

'정보보안-이론 > XX에 대하여' 카테고리의 다른 글

DumpSec에 대하여  (0) 2021.05.18
SLOW HTTP공격에 대하여  (0) 2021.05.16
IDLE SCAN에 대하여  (0) 2021.05.15
N-tier Architecture에 대하여  (0) 2021.05.15
PCI-DSS에 대하여  (0) 2021.05.14