nmap(Network exploration tool and security scanner)
主要用途:掃描主機的資訊
ex:
查localhost的資訊nmap localhost
refer
http://insecure.org/nmap/
http://nmap.org/man/zh/index.html
用法
nmap [Scan Types掃瞄類型] [Options掃瞄參數] {target specification指定目標}
target specification(指定目標):
多台單一機器用空格分開 ex192.168.0.155 192.168.0.177
-表示範圍ex 192.168.1-200.50-100
星號表示範圍ex 192.168.*.155(意思就是 192.168.0.155,192.168.1.155⋯192.168.2.255⋯)
netmask表示範圍ex192.168.0.0/24 203.71.166/24
-iL :掃描檔案中指定的目標
-iR : 隨機選擇被掃描的主機數量
–exclude : 要排除的目標
–excludefile : 排除文件中目標
ps:指定的文件格式大致如下
192.168.0.*
203.71.166.20-80
www.xxx.com
www.yyy.com/24
20.0-20.50-100.*
HOST DISCOVERY(偵測目標方式):
-sL: 只列出要掃描的主機列表,不做真正的掃描
-sP: 使用ping和ack掃描,預設選項
-P0: 不偵測目標主機狀態,直接進行掃描
-PS [portlist]: 利用TCP SYN ping
-PA [portlist]: 利用TCP ACK ping
-PU [portlist]: 利用UDP ping
-PE/PP/PM: 使用ICMP ping類型,分別為echo, timestamp,netmask request
-PR : 利用ARP ping
-n :不對ip進行dns解析
-R: 對ip進行dns解析
ps:預設是有時會執行-R選項
ex:
使用ping掃瞄子網路內的所有IP,並列出有回應的IP,但不作進一步測試
nmap -sP 192.168.1.0/24
列出子網路所有IP及對應的主機名稱,但不作ping 及通訊埠偵測
nmap -sL 192.168.1.0/24
利用tcp syn ping偵測遠端主機是否已開啟22,23,80,25通訊埠
nmap -PS22,23,80,25 192.168.1.1
使用UDP協定ping 遠端的主機
nmap -PU 192.168.1.0/24
-sP畫面大致如下:
Host 10.1.2.7 appears to be up.
MAC Address: 00:01:3C:D0:A9:8A (TIW Systems)
Host 10.1.2.9 appears to be up.
MAC Address: 00:11:6B:97:18:22 (Accton Technology)
Nmap finished: 256 IP addresses (2 hosts up) scanned in 16.455 seconds
SCAN TECHNIQUES(掃描方式):
-sS 使用tcp syn掃描,此為半開放的掃瞄方式,速度較快也較常被用,並可列出有回應的遠端主機已開啟的網路服務埠
-sU 使用udp掃描
-sT 使用tcp Connect()掃描,若-sS掃瞄無效會自動改用此掃描方式
-sA 使用tcp ACK掃描
-sW 使用tcp windows掃描
-sM 使用tcp Maimon掃描
-sN 使用TCP Null掃描
-sF 使用TCP FIN掃描
-sX 使用TCP Xmas掃描
–scanflags : 自訂TCP flags掃描,flags有syn,ack,psh,urg,fin,rst
-sI : 匿名掃描
-sO: 使用IP protocol掃描
-b : 利用遠端ftp主機掃描
ex:
使用TCP SYN掃瞄遠端主機群
nmap -sS 192.168.1.0/24
用UDP協定掃瞄遠端主機群
nmap -sU 192.168.1.0/24
偵測遠端主機已開啟哪些通訊協定 TCP,UDP,ICMP,…
nmap -sO 192.168.1.19
執行-sO時,目標主機tcpdump會類似以下
20:18:01.016785 IP 10.1.2.26 > 10.1.2.25: ip-proto-245 0
20:18:02.018842 IP 10.1.2.26 > 10.1.2.25: pnni 0
20:18:03.020868 IP 10.1.2.26 > 10.1.2.25: stp 0
20:18:04.022906 IP 10.1.2.26 > 10.1.2.25: ip-proto-249 0
20:18:05.024947 IP 10.1.2.26 > 10.1.2.25: idpr-cmtp 0
20:18:06.026991 IP 10.1.2.26 > 10.1.2.25: ip-proto-239 0
PORT SPECIFICATION AND SCAN ORDER(指定port及掃描順序):
預設會掃描1-1024間的所有port,和nmap-services文件指定的port
-p : 指定要掃描的port
ex: -p 22; -p 1-65535; -p U:53,111,137,T:21-25,80,139,8080
ps: -p 1024- 是大於1024的意思
-F: 根據nmap-services文件指定的port掃描
-r: 有順序的掃描port,預設是無順序
SERVICE/VERSION DETECTION(偵測服務版本):
-sV: 啟用伺服器服務版本偵測功能
–version-light: 僅提供少數訊息
–version-all: 顯示全部訊息
–version-trace: 顯示詳細訊息
OS DETECTION(偵測作業系統):
-O: 啟動作業系統偵測
–osscan-limit: 只偵測指定目標
–osscan-guess: 推測作業系統類型
TIMING AND PERFORMANCE(時間和效能):
-T <0-6> 設定timing template(速度調整模板),預設是3,0是最慢但最不容易被發現
–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.
–host-timeout : Give up on target after this long
–scan-delay/–max_scan-delay : Adjust delay between probes
FIREWALL/IDS EVASION AND SPOOFING:
-f; –mtu : fragment packets (optionally w/given MTU)
-D : Cloak a scan with decoys
-S : Spoof source address
-e : Use specified interface
-g/–source-port : Use given port number
–data-length : Append random data to sent packets
–ttl : Set IP time-to-live field
–spoof-mac : Spoof your MAC address
OUTPUT(輸出結果):
-oN 將輸出直接寫在指定的文件上
-oX 輸出成XML格式
-oS 輸出成s|
-oG 輸出成grep格式
-oA : 輸出成以上四種格式
-v:提高輸出結果的詳細度
-d[level]: 設定debug時輸出的詳細度
–open :僅顯示state為open的主機
–packet-trace: 顯示所有傳送和接收的封包
–iflist: 顯示主機介面或路由
–append-output: 將本次掃描結果寫入另一個掃描結果文件後面,不支援xml
–resume : 繼續上次被中斷的掃描,不支援xml
–stylesheet : 指定xsl樣式將xml轉換成html
–no_stylesheet: 不要將xml轉換成html
MISC:
-6: 啟用ipv6掃描
-A: 執行全部選項,包括作業系統和伺服器服務偵測
–datadir :指定nmap參數檔位置
–send-eth 要求使用訊框傳送
–send-ip: 要求使用封包傳送
–privileged: Assume that the user is fully privileged
-V: 顯示版本
-h: 顯示簡短操作說明
網路上的其他範例
偵測遠端主機的作業系統類型nmap -O 192.168.1.19
nmap -A 192.168.1.19
掃瞄遠端主機,並列出相關詳細的資訊。nmap -v scanme.nmap.org
以SYN秘密掃瞄網域為scanme.nmap.org所屬 C 子網段的所有存在的主機作業系統類型。nmap -sS -O scanme.nmap.org/24
進行主機列表及TCP掃瞄特定網路服務,遠端主機的網路含括 198.116.(0-255).(1-127) 網段下。nmap -sV -p 22,53,110,143,4564 198.116.0-255.1-127
隨機選擇100000台主機,偵測是否開啟 Web 服務,由於此掃瞄較耗時,所以加上-P0 不作主機列表。nmap -v -iR 100000 -P0 -p 80
對 www.target.com 底下所屬網域進行 TCP Stealth Scan ,掃描的 port 僅限於 FTP,SSH,TELNET,SMTP,POP3nmap -sS -p 21,22,23,25,110 www.target.com/24
掃描 tcp 與 udp port ,範圍從 1-65535,目標是www.example.com,注意, 如果該機器有防火牆保護著或是微軟主機,這項掃描將會失敗nmap -sF -sU -p 1-65535 www.example.com
–script vuln 可列出弱點
──(kali㉿kali)-[~]
└─$ sudo nmap -Pn -sS -sV --script vuln 192.168.75.159
Starting Nmap 7.93 ( https://nmap.org ) at 2023-01-22 19:34 EST
Nmap scan report for 192.168.75.159
Host is up (0.00016s latency).
Not shown: 998 closed tcp ports (reset)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| vulners:
| cpe:/a:openbsd:openssh:8.2p1:
| CVE-2020-15778 6.8 https://vulners.com/cve/CVE-2020-15778
| C94132FD-1FA5-5342-B6EE-0DAF45EEFFE3 6.8 https://vulners.com/githubexploit/C94132FD-1FA5-5342-B6EE-0DAF45EEFFE3 *EXPLOIT*
| 10213DBE-F683-58BB-B6D3-353173626207 6.8 https://vulners.com/githubexploit/10213DBE-F683-58BB-B6D3-353173626207 *EXPLOIT*
| CVE-2020-12062 5.0 https://vulners.com/cve/CVE-2020-12062
| CVE-2021-28041 4.6 https://vulners.com/cve/CVE-2021-28041
| CVE-2021-41617 4.4 https://vulners.com/cve/CVE-2021-41617
| CVE-2020-14145 4.3 https://vulners.com/cve/CVE-2020-14145
| CVE-2016-20012 4.3 https://vulners.com/cve/CVE-2016-20012
|_ CVE-2021-36368 2.6 https://vulners.com/cve/CVE-2021-36368
...omit...
–script=ssh-brute 可使用ssh爆力密碼破解
# nmap -p 22 --script=ssh-brute --script-args userdb=user.txt,passdb=pw.txt 192.168.1.100
...omit...
NSE: [ssh-brute] Trying username/password pair: root:aaaaaa
...omit...
PORT STATE SERVICE
22/tcp open ssh
| ssh-brute:
| Accounts:
| root:123456 - Valid credentials
Nmap done: 1 IP address (1 host up) scanned in 902.61 seconds