본문 바로가기
Linux

[#Kali] 10. Nmap 설치 및 사용

by dopal2 2021. 10. 19.
반응형

Nmap
: 포트 스캐닝 툴, 호스트/네트워크를 스캐닝 할 때 사용되는 도구
네트워크에 연결된 장비의 IP주소 목록, 특정 호스트의 IP목록, 운영체제, 서비스중인 소프트웨어 등의 정보를 확인 등등

https://nmap.org/
https://namu.wiki/w/nmap

사용법 : nmap [Scan Type(s)] [Options] {target specification} => nmap [스캔유형] [옵션] {목표명세(목표설정)}

원문 번역
TARGET SPECIFICATION:
Can pass hostnames, IP addresses, networks, etc.
Ex: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254
-iL : Input from list of hosts/networks
-iR : Choose random targets
--exclude <host1[,host2][,host3],...>: Exclude hosts/networks</host1[,host2][,host3],...>
--excludefile : Exclude list from file
목표명세(목표설정) : 호스트 이름, IP 주소, 네트워크 등을 전달할 수 있습니다.
-iL <입력파일명> : 호스트/네트워크 목록에서 입력
-iR <호스트 넘버> : 무작위 대상 선택
--exclude <호스트1[,호스트2][,호스트3]> : 호스트/네트워크 제외
--excludefile <제외 파일> : 파일에서 목록 제외
Ex: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254
HOST DISCOVERY:
-sL: List Scan - simply list targets to scan
-sn: Ping Scan - disable port scan
-Pn: Treat all hosts as online -- skip host discovery
-PS/PA/PU/PY[portlist]: TCP SYN/ACK, UDP or SCTP discovery to given ports
-PE/PP/PM: ICMP echo, timestamp, and netmask request discovery probes
-PO[protocol list]: IP Protocol Ping
-n/-R: Never do DNS resolution/Always resolve [default: sometimes]
--dns-servers <serv1[,serv2],...>: Specify custom DNS servers</serv1[,serv2],...>
--system-dns: Use OS's DNS resolver
--traceroute: Trace hop path to each host
호스트 검색
-sL: 목록 검색 - 간단히 검사할 대상을 나열
-sn: 핑 검색 - 포트 검색 비활성화
-Pn: 모든 호스트를 온라인으로 처리 -- 호스트 검색 건너뛰기
-PS/PA/PU/PY[포트목록]: 지정된 포트에 대한 TCP SYN/ACK, UDP 또는 SCTP 검색
-PE/PP/PM: ICMP ICMP 에코, 타임스탬프 및 넷마스크 요청 검색 프로브
-PO[프로토콜 목록]: IP 프로토콜 핑
-n/-R: DNS 확인 안 함/항상 확인 안 함 [기본: 가끔]
--dns-servers <서버1[,서버2],...>: 사용자 지정 DNS 서버 지정
--system-dns: OS의 DNS 확인기 사용
--traceroute: 각 호스트에 대한 홉 경로 추적
SCAN TECHNIQUES:
-sS/sT/sA/sW/sM: TCP SYN/Connect()/ACK/Window/Maimon scans
-sU: UDP Scan
-sN/sF/sX: TCP Null, FIN, and Xmas scans
--scanflags : Customize TCP scan flags
-sI : Idle scan
-sY/sZ: SCTP INIT/COOKIE-ECHO scans
-sO: IP protocol scan
-b : FTP bounce scan
기술 스캔:
-sS/sT/sA/sW/sM: TCP SYN/Connect()/ACK/Window/Maimon 스캔
-sU: UDP 검색
-sN/sF/sX: TCP Null, FIN 및 Xmas 검색
--scanflags <플래그>: TCP 검색 플래그 사용자 지정
-sI <좀비 호스트[:프로브포트]>: 유휴 검색 (※ 유휴 검색은 사용 가능한 서비스를 찾기 위해 스푸핑 된 패킷을 컴퓨터로 보내는 TCP 포트 검색 방법)
-sY/sZ: SCTP INIT/쿠키-에코 스캔
-sO: IP 프로토콜 검색
-b : FTP bounce 검색 (※ FTP bounce : FTP서버를 속여 프록시로 포트 스캔을 수행)
PORT SPECIFICATION AND SCAN ORDER:
-p : Only scan specified ports
Ex: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9
--exclude-ports : Exclude the specified ports from scanning
-F: Fast mode - Scan fewer ports than the default scan
-r: Scan ports consecutively - don't randomize
--top-ports : Scan most common ports
--port-ratio : Scan ports more common than
포트 사양 및 스캔 순서:
-p <포트 범위>: 지정된 포트만 검색
Ex: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9
--exclude-ports <포트 범위>: 검색에서 지정된 포트 제외
-F: 빠른모드 - 기본 검색보다 적은 수의 포트 검색
-r: 포트 연속 검색 - 무작위 사용X
--top-ports <숫자>: 가장 일반적인 포트 <숫자>개 검색
--port-ratio <비율>: <비율>보다 더 일반적인 검색 포트
SERVICE/VERSION DETECTION:
-sV: Probe open ports to determine service/version info
--version-intensity : Set from 0 (light) to 9 (try all probes)
--version-light: Limit to most likely probes (intensity 2)
--version-all: Try every single probe (intensity 9)
--version-trace: Show detailed version scan activity (for debugging)
서비스/버전 감지:
-sV: 열린 포트를 시도하여 서비스/버전 정보 확인
--version-intensity <레벨>: 0(가벼운 시도)에서 9까지 설정(모든 프로브 시도)
--version-light: 가장 가능성이 높은 프로브에 대한 제한(강도 2)
--version-all: 모든 프로브 시도(강도 9)
--version-trace: (디버깅을 위한) 자세한 버전 검색 작업 표시
SCRIPT SCAN:
-sC: equivalent to --script=default
--script=: is a comma separated list of
directories, script-files or script-categories
--script-args=<n1=v1,[n2=v2,...]>: provide arguments to scripts</n1=v1,[n2=v2,...]>
--script-args-file=filename: provide NSE script args in a file
--script-trace: Show all data sent and received
--script-updatedb: Update the script database.
--script-help=: Show help about scripts.
is a comma-separated list of script-files or
script-categories.
스크립트 검색:
-sC: --script=기본값 과 같음
--script=: 는 쉼표로 구분된 디렉터리, 스크립트 파일 또는 스크립트 범주 목록입니다.
--script-args=<n1=v1,[n2=v2,...]>: 스크립트에 인수를 제공</n1=v1,[n2=v2,...]>
--script-args-file=filename: NSE 인자를 담은 파일 지정
--script-trace: 보내고 받은 모든 데이터 표시
--script-updatedb: 스크립트 데이터베이스를 업데이트
--script-help=: 스크립트에 대한 도움말을 표시
는 쉼표로 구분된 스크립트 파일 또는 스크립트 범주 목록입니다.
OS DETECTION:
-O: Enable OS detection
--osscan-limit: Limit OS detection to promising targets
--osscan-guess: Guess OS more aggressively
운영체제 탐지:
-O: OS 탐지 사용
--osscan-limit: 제한된 OS 검색
--osscan-guess: 포괄적 OS 검색
TIMING AND PERFORMANCE:
Options which take

are in seconds, or append 'ms' (milliseconds),
's' (seconds), 'm' (minutes), or 'h' (hours) to the value (e.g. 30m).
-T<0-5>: Set timing template (higher is faster)
--min-hostgroup/max-hostgroup : Parallel host scan group sizes
--min-parallelism/max-parallelism : Probe parallelization
--min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout : Specifies
probe round trip time.
--max-retries : Caps number of port scan probe retransmissions.
--host-timeout : Give up on target after this long
--scan-delay/--max-scan-delay : Adjust delay between probes
--min-rate : Send packets no slower than per second
--max-rate : Send packets no faster than per second
타이밍 및 성능:
<시간>이 걸리는 옵션은 초 단위이거나 'ms'(밀리초),
값(예: 30m)에 대한 's'(초), 'm'(분) 또는 'h'(시간)

-T<0-5>: 타이밍 템플릿 설정(높을수록 빠름)
--min-hostgroup/max-hostgroup <크기>: 병렬 호스트 검색 그룹 크기
--min-parallelism/max-parallelism <프로브개수>: 프로브 병렬화
--min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <시간>: 프로브 왕복 시간을 지정
--max-retries <재시도>: 포트 검색 프로브 재전송 수를 제한
--host-timeout <시간>: 제한시간 설정
--scan-delay/--max-scan-delay <시간>: 프로브 간 지연 조정
--min-rate <숫자>: 초당 <숫자> 이하의 패킷 전송
--max-rate <숫자>: 초당 <숫자>보다 빠르지 않은 패킷 전송
FIREWALL/IDS EVASION AND SPOOFING:
-f; --mtu : fragment packets (optionally w/given MTU)
-D <decoy1,decoy2[,me],...>: Cloak a scan with decoys</decoy1,decoy2[,me],...>
-S : Spoof source address
-e : Use specified interface
-g/--source-port : Use given port number
--proxies <url1,[url2],...>: Relay connections through HTTP/SOCKS4 proxies</url1,[url2],...>
--data : Append a custom payload to sent packets
--data-string : Append a custom ASCII string to sent packets
--data-length : Append random data to sent packets
--ip-options : Send packets with specified ip options
--ttl : Set IP time-to-live field
--spoof-mac : Spoof your MAC address
--badsum: Send packets with a bogus TCP/UDP/SCTP checksum
방화벽/IDS 회피 및 스푸핑:
-f; --mtu : 패킷 조각(선택적으로 MTU가 주어지지 않음)
-D <decoy1,decoy2[,me],...>: 디코이를 사용한 클록 검색</decoy1,decoy2[,me],...>
-S <ip주소>: IP주소를 소스로 사용해 스캔</ip주소>
-e <인터페이스>: 지정된 인터페이스 사용
-g/--source-port <포트번호>: 지정된 포트 번호 사용
--proxies <url1,[url2],...>: HTTP/SOCKS4 프록시를 통해 연결 릴레이</url1,[url2],...>
--data : 보낸 패킷에 사용자 지정 페이로드 추가
--data-string : 보낸 패킷에 사용자 지정 ASCII 문자열 추가
--data-length : 전송된 패킷에 임의 데이터 추가
--ip-options : 지정된 IP 옵션을 사용하여 패킷 전송
--ttl : IP TTL 설정
--spoof-mac : 지정한 맥 주소를 소스로 사용해 검색
--badsum: 가짜 TCP/UDP/SCTP 체크섬을 사용하여 패킷 전송
OUTPUT:
-oN/-oX/-oS/-oG : Output scan in normal, XML, s|
and Grepable format, respectively, to the given filename.
-oA : Output in the three major formats at once
-v: Increase verbosity level (use -vv or more for greater effect)
-d: Increase debugging level (use -dd or more for greater effect)
--reason: Display the reason a port is in a particular state
--open: Only show open (or possibly open) ports
--packet-trace: Show all packets sent and received
--iflist: Print host interfaces and routes (for debugging)
--append-output: Append to rather than clobber specified output files
--resume : Resume an aborted scan
--stylesheet : XSL stylesheet to transform XML output to HTML
--webxml: Reference stylesheet from Nmap.Org for more portable XML
--no-stylesheet: Prevent associating of XSL stylesheet w/XML output
출력:
-oN/-oX/-oS/-oG : 지정된 파일 이름에 각각 일반, XML, s|
-oA : 세 가지 주요 형식으로 한 번에 출력
-v: 장황도 수준 증가(큰 효과를 얻으려면 -vv 이상 사용)
-d: 디버깅 수준 증가(더 큰 효과를 위해 -dd 이상 사용)
--reason: 포트가 특정 상태에 있는 이유 표시
--open: 열린 포트만 표시(또는 열려 있을 수 있음)
--packet-trace: 보내고 받은 모든 패킷 표시
--iflist: 디버깅을 위한 호스트 인터페이스 및 경로 인쇄
--append-output: 지정한 clobber 출력 파일이 아닌 파일에 추가
--resume : 중단된 검색 다시 시작
--stylesheet : XML 출력을 HTML로 변환하는 XSL 스타일시트
--webxml: Nmap의 참조 스타일시트입니다.더 많은 휴대용 XML을 위한 조직
--no-stylesheet: XML 출력과 XSL 스타일시트의 연결 방지
MISC:
-6: Enable IPv6 scanning
-A: Enable OS detection, version detection, script scanning, and traceroute
--datadir : Specify custom Nmap data file location
--send-eth/--send-ip: Send using raw ethernet frames or IP packets
--privileged: Assume that the user is fully privileged
--unprivileged: Assume the user lacks raw socket privileges
-V: Print version number
-h: Print this help summary page.
기타:
-6: IPv6 검색 가능
-A: OS 탐지, 버전 탐지, 스크립트 검색 및 추적 기능 사용
--datadir : 사용자 지정 Nmap 데이터 파일 위치 지정
--send-eth/--send-ip: 원시 이더넷 프레임 또는 IP 패킷을 사용하여 전송
--privileged: 사용자가 모든 권한을 가지고 있다고 가정
--unprivileged: 사용자에게 원시 소켓 권한이 없다고 가정
-V: 버젼 정보
-h: 도움말

 

EXAMPLES:
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
SEE THE MAN PAGE (https://nmap.org/book/man.html) FOR MORE OPTIONS AND EXAMPLES

 

1. nmap -v -A scanme.nmap.org 실행

 

예시에 있던 scanme.nmap.org에 nmap 실행

 

2. localhost 검색

 

현재 PC에 대한 검색결과는 다음과 같다.

ssh를 이용하기 위한 22번 포트와 xrdp를 사용하기 위한 3389번 포트가 열려있다.

 

3. window pc 검색

 

메인으로 사용중인 PC를 검색했다.

윈도우에서 사용중인 포트인데 3389의 원격포트를 제외하고 어떤 포트인지 구분인 안된다.

 

4. 라즈베리파이 검색

 

라즈비언OS로 사용중인 라즈베리파이를 검색했다.

옵션 O를 사용해서 운영체제 정보도 같이 출력 되었다.

설치 이외의 아무런 작업을 하지않았기 때문에 포트가 열여있지 않은것 같다.

 

5. 옵션 A 검색

 

윈도우 PC를 옵션A로 검색 해봤다. 어떤게 중요정보인지 몰라서 대출 가려봤다.

 

 

이처럼 Nmap을 통해서 각 PC에 열린포트, MAC Address등의 다양한 정보를 가져올 수 있다.

 


본 실습은 테스트환경에서 구동했습니다.

반응형

댓글