KOROMOON

착한 사마리아인이 되고 싶습니다.

9/16/2020

Nmap 명령어의 옵션 설명 및 사용 예제


( 1 ) Nmap 설명


고든 라이온(Gordon Lyon)님께서 개발한 보안 스캐너로 오픈 소스 툴임.

네트워크나 서비스를 검색하고 보안 감사를 검사하며 네트워크 지도까지 만듬.

호스트, 호스트가 제공하는 서비스(어플리케이션 이름 및 버전), 실행 중인 운영 체제(버전까지 포함), 방화벽 유형을 검색할 수 있으며 시스템 및 네트워크 운영, 모니터링, 작업 등에 유용함.

그러나 악의적으로 정보 수집을 하기 위한 해킹 툴이기도 함.

해커들도 Nmap 툴을 기본적으로 사용하며 정보보안, IT 직종에 종사하신 분들은 업무상 반드시 숙지하길 바람.


홈페이지 : 

https://nmap.org/




( 2 ) Nmap 옵션 설명


Nmap 7.80 버전에서 옵션 정보를 확인함.




Nmap 7.80 ( https://nmap.org )


사용법 : nmap [Scan Type(s)] [Options] {target specification}


타켓 사양 : 

  호스트 이름, IP 이름, 네트워크 등을 전달할 수 있음.

  예 : scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254

  -iL <inputfilename>: 호스트/네트워크 목록에서 입력

  -iR <num hosts>: 무작위 대상 선택

  --exclude <host1[,host2][,host3],...>: 호스트/네트워크 제외

  --excludefile <exclude_file>: 파일에서 목록 제외


호스트 발견 :

  -sL: 목록 스캔 - 단순 스캔 대상을 나열

  -sn: Ping 스캔 - 포트 스캔 비활성화

  -Pn: 모든 호스트 온라인 처리 - 호스트 검색 건너뛰기

  -PS/PA/PU/PY[portlist]: 주어진 포트에 대한 TCP SYN/ACK, UDP, SCTP 검색

  -PE/PP/PM: ICMP 에코, 타임스탬프, 넷마스크 요청 검색 프로브(probes)

  -PO[protocol list]: IP Protocol Ping

  -n/-R: DNS 확인 안 함/항상 확인 (기본값 : 가끔(sometimes))

  --dns-servers <serv1[,serv2],...>: 사용자 지정 DNS 서버 지정

  --system-dns: OS의 DNS 리졸버(resolver) 사용

  --traceroute: 각 호스트에 대한 추적 홉(hop) 경로


스캔 기술 :

  -sS/sT/sA/sW/sM: TCP SYN/Connect()/ACK/Window/Maimon 스캔

  -sU: UDP 스캔

  -sN/sF/sX: TCP Null, FIN, and Xmas 스캔

  --scanflags <flags>: TCP 스캔 플래그 사용자 지정

  -sI <zombie host[:probeport]>: Idle 스캔

  -sY/sZ: SCTP INIT/COOKIE-ECHO 스캔

  -sO: IP protocol 스캔

  -b <FTP relay host>: FTP bounce 스캔


포트 사양 및 스캔 순서 :

  -p <port ranges>: 지정된 포트만 스캔

    예: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9

  --exclude-ports <port ranges>: 스캔에서 지정된 포트 제외

  -F: 빠른 모드 - 기본 스캔보다 적은 수의 포트 스캔

  -r: 연속적으로 포트 스캔 - 무작위로 사용하지 마세요

  --top-ports <number>: 가장 일반적인 포트에서 지정된 갯수만큼 스캔

  --port-ratio <ratio>: 비율 보다 일반적인 스캔 포트


서비스/버전 탐지 :

  -sV: 열린 포트를 조사하여 서비스/버전 정보 확인

  --version-intensity <level>: 0 ~ 9 설정 (모든 프로브 시도, 여기서 0은 라이트(light))

  --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 scripts>: 스크립트 도움말 표시 (<Lua scripts> 는 쉼표로 구분된 스크립트 파일 또는 스크립트 범주 목록임.)


OS 탐지 :

  -O: OS 탐지 활성화

  --osscan-limit: OS 탐지를 유망한 대상으로 제한

  --osscan-guess: OS 를 더 적극적으로 추측


타이밍 및 성능 :

  <time>을 사용하는 옵션은 초 단위이거나 값에 '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>: 초당 지정된 숫자보다 느리지 않게 패킷 보내기

  --max-rate <number>: 초당 지정된 숫자보다 빠르게 패킷 보내기


방화벽/IDS 회피 및 스푸핑 :

  -f; --mtu <val>: fragment 패킷 (선택적으로 주어진 MTU 포함(optionally w/given MTU))

  -D <decoy1,decoy2[,ME],...>: 미끼(decoys)로 스캔 은폐

  -S <IP_Address>: 스푸핑 소스 주소

  -e <iface>: 지정된 인터페이스 사용

  -g/--source-port <portnum>: 주어진 포트 번호 사용

  --proxies <url1,[url2],...>: HTTP/SOCKS5 프록시를 통한 릴레이 연결

  --data <hex string>: 전송된 패킷에 사용자 지정 페이로드 추가

  --data-string <string>: 전송된 패킷에 사용자 지정 ASCII 문자열 추가

  --data-length <num>: 전송된 패킷에 임의의 데이터 추가

  --ip-options <options>: 지정된 IP 옵션으로 패킷 보내기

  --ttl <val>: IP TTL(Time-To-Live) 필드 설정

  --spoof-mac <mac address/prefix/vendor name>: MAC 주소 스푸핑

  --badsum: Send packets with a bogus TCP/UDP/SCTP checksum


결과물 :

  -oN/-oX/-oS/-oG <file>: 주어진 파일 이름에 대해 각각 일반, XML, s|<rIpt kIddi3, Grepable 형식 스캔 결과물

  -oA <basename>: 한번에 세 가지 주요 형식으로 출력

  -v: 상세 수준을 높이기 (효과를 높이려면 -vv 사용)

  -d: 디버깅 수준 높이기 (효과를 높이려면 -dd 사용)

  --reason: 포트가 특정 상태에 있는 이유 표시

  --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: raw 이더넷 프레임 또는 IP 패킷을 아용하여 전송

  --privileged: 사용자에게 완전한 권한이 있다고 가정함

  --unprivileged: 사용자에게 raw 소켓 권한이 없다고 가정함

  -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


더 많은 옵션과 예제는 MAN 페이지를 참조하십시오.

(https://nmap.org/book/man.html)




( 3 ) Nmap 사용 예제


1. 타켓 선택


단일 IP 스캔

nmap 192.168.100.128


특정 IP 스캔

nmap 192.168.100.128 192.168.100.129


호스트 스캔

nmap www.koromoon.com


IP 범위 스캔

nmap 192.168.100.128-254


서브넷 스캔

nmap 192.168.100.0/24


텍스트 파일에서 대상 스캔

nmap -iL koromoon_ip_list.txt


2. 포트 선택


단일 포트 스캔

nmap -p 21 192.168.100.128


잘 알려진 포트 스캔

nmap -p 1-1023 192.168.100.128


100 개의 잘 알려진 빠른 포트 스캔

nmap -F 192.168.100.128


서비스 이름으로 포트 스캔

nmap -p http,https 192.168.100.128


모든 포트 스캔

nmap -p- 192.168.100.128


지정된 UDP 및 TCP 포트 스캔

nmap -p U:53,T:21-25,80 192.168.100.128


3. 스캔 유형


TCP 연결을 사용하여 스캔

nmap -sT 192.168.100.128


TCP SYN 스캔을 사용하여 스캔

nmap -sS 192.168.100.128


UDP 포트 스캔

nmap -sU -p 123,161,162 192.168.100.128


선택한 포트 검색 (검색 무시)

nmap -Pn -F 192.168.100.128


4. 서비스 및 OS 감지


OS 및 서비스 감지

nmap -A 192.168.100.128


표준 서비스 감지

nmap -sV 192.168.100.128


공격적인 서비스 감지 (범위는 0 ~ 9, 범위가 높을수록 정확성이 높아짐)

nmap -sV –version-intensity 5 192.168.100.128


5. 결과물 형식


기본 결과물을 파일에 저장

nmap -oN result.txt 192.168.100.128


결과물을 XML 로 저장

nmap -oX result.xml 192.168.100.128


형식화된 결과물로 저장 (Grepable)

nmap -oG result.txt 192.168.100.128


모든 형식으로 결과물 저장

nmap -oA result 192.168.100.128


6. 스크립팅 엔진


기본 안전 스크립트를 사용하여 스캔

nmap -sV -sC 192.168.100.128


스크립트에 대한 도움말보기

nmap --script-help http-wordpress-enum


특정 스크립트(SQL Injection)를 사용하여 스캔

nmap -p 80 -script=http-sql-injection 192.168.100.128


HTTP 관련 스크립트로만 스캔(엄청 오래 걸림)

nmap -p 80 --script=http* 192.168.100.131


UDP DDOS 반사공격 가능한 좀비 검색

nmap -sU -A -PN -n -pU:19,53,123,161 -script=ntp-monlist,dns-recursion,snmp-sysdescr 192.168.100.0/24


스크립트 데이터베이스 업데이트

nmap –script-updatedb


7. 방화벽/IDS 회피 및 스푸핑


작은 조각화된 IP 패킷 사용하는 스캔(ping 스캔 포함)

nmap -f 192.168.100.128


자신만의 오프셋 크기 설정해서 스캔

nmap --mtu 32 192.168.100.128


스푸핑된 IP 에서 스캔 보내기 (-D 옵션값들은 조작된 IP 임)

nmap -D 192.168.100.1,192.168.100.2,192.168.100.3,192.168.100.4 192.168.100.128


주어진 소스 포트 번호 사용

nmap -g 53 192.168.100.128


HTTP/SOCKS4 프록시를 통한 릴레이 연결

nmap --proxies http://www.koromoon.com:8080, http://www.koromoon2.com:8080 192.168.100.128


전송된 패킷에 임의의 데이터를 추가하는 스캔

nmap --data-length 200 192.168.100.128


고도화된 IDS 회피 스캔

nmap -f -t 0 -n -Pn –data-length 200 -D 192.168.100.1,192.168.100.2,192.168.100.3,192.168.100.4 192.168.100.128




============================================================

본 게시물은 KOROMOON 님께서 작성하였으며 CCL (Creative Commons License) 에서 "저작자표시-비영리-동일조건변경허락" 이용조건으로 자료를 이용하셔야 합니다.


댓글 없음:

댓글 쓰기