-A :綜合性掃描
-T4: 指定掃描過程使用的時序,總有6個級別(0-5),級別越高,掃描速度越快,但也容易被防火牆或IDS檢測並屏蔽掉,在網絡通訊狀況較好的情況下推薦使用T4
-oX test.xml: 將掃描結果生成 test.xml 文件
-oG test.txt: 將掃描結果生成 test.txt 文件
-sn : 只進行主機發現,不進行端口掃描
-O : 指定Nmap進行系統版本掃描
-sV: 指定讓Nmap進行服務版本掃描
-p <port ranges>: 掃描指定的端口
-sS/sT/sA/sW/sM:指定使用 TCP SYN/Connect()/ACK/Window/Maimon scans的方式來對目標主機進行掃描
-sU: 指定使用UDP掃描方式確定目標主機的UDP端口狀況
-script <script name> : 指定掃描腳本
-Pn : 不進行ping掃描
-iL 1.txt : 批量掃描1.txt中的目標地址
-sL: List Scan 列表掃描,僅將指定的目標的IP列舉出來,不進行主機發現
-sY/sZ: 使用SCTP INIT/COOKIE-ECHO來掃描SCTP協議端口的開放的情況
-sO: 使用IP protocol 掃描確定目標機支持的協議類型
-PO : 使用IP協議包探測對方主機是否開啟
-PE/PP/PM : 使用ICMP echo、 ICMP timestamp、ICMP netmask 請求包發現主機
-PS/PA/PU/PY : 使用TCP SYN/TCP ACK或SCTP INIT/ECHO方式進行發現
-sN/sF/sX: 指定使用TCP Null, FIN, and Xmas scans秘密掃描方式來協助探測對方的TCP端口狀態
-e eth0:指定使用eth0網卡進行探測
-f : --mtu <val>: 指定使用分片、指定數據包的 MTU.
-b <FTP relay host>: 使用FTP bounce scan掃描方式
-g: 指定發送的端口號
-r: 不進行端口隨機打亂的操作(如無該參數,nmap會將要掃描的端口以隨機順序方式掃描,以讓nmap的掃描不易被對方防火牆檢測到)
-v 表示顯示冗余信息,在掃描過程中顯示掃描的細節,從而讓用戶了解當前的掃描狀態
-n : 表示不進行DNS解析;
-D <decoy1,decoy2[,ME],...>: 用一組 IP 地址掩蓋真實地址,其中 ME 填入自己的 IP 地址
-R :表示總是進行DNS解析。
-F : 快速模式,僅掃描TOP 100的端口
-S <IP_Address>: 偽裝成其他 IP 地址
--ttl <val>: 設置 time-to-live 時間
--badsum: 使用錯誤的 checksum 來發送數據包(正常情況下,該類數據包被拋棄,如果收到回復,說明回復來自防火牆或 IDS/IPS)
--dns-servers : 指定DNS服務器
--system-dns : 指定使用系統的DNS服務器
--traceroute : 追蹤每個路由節點
--scanflags <flags>: 定制TCP包的flags
--top-ports <number> :掃描開放概率最高的number個端口
--port-ratio <ratio>: 掃描指定頻率以上的端口。與上述--top-ports類似,這里以概率作為參數
--version-trace: 顯示出詳細的版本偵測過程信息
--osscan-limit: 限制Nmap只對確定的主機的進行OS探測(至少需確知該主機分別有一個open和closed的端口)
--osscan-guess: 大膽猜測對方的主機的系統類型。由此准確性會下降不少,但會盡可能多為用戶提供潛在的操作系統
--data-length <num>: 填充隨機數據讓數據包長度達到 Num
--ip-options <options>: 使用指定的 IP 選項來發送數據包
--spoof-mac <mac address/prefix/vendor name> : 偽裝 MAC 地址
--version-intensity <level>: 指定版本偵測強度(0-9),默認為7。數值越高,探測出的服務越准確,但是運行時間會比較長。
--version-light: 指定使用輕量偵測方式 (intensity 2)
--version-all: 嘗試使用所有的probes進行偵測 (intensity 9)
--version-trace: 顯示出詳細的版本偵測過程信息
NSE腳本引擎
NSE腳本引擎(Nmap Scripting Engine)是nmap最強大,最靈活的功能之一,允許用戶自己編寫腳本來執行自動化的操作或者擴展nmap的功能。
nmap的腳本庫的路徑:/usr/share/nmap/scripts ,該目錄下的文件都是nse腳本
NSE使用Lua腳本語言,並且默認提供了豐富的腳本庫,目前已經包含了14個類別的350多個腳本。NSE的設計初衷主要考慮以下幾個方面
- 網絡發現(Network Discovery)
- 更加復雜的版本偵測(例如 skype 軟件)
- 漏洞偵測(Vulnerability Detection)
- 后門偵測(Backdoor Detection)
- 漏洞利用(Vulnerability Exploitation)
例如:nmap -script smb-vuln-ms17-010 192.168.10.34 #可以探測該主機是否存在ms17_010漏洞
版本偵測用法
比如目標主機把SSH的22號端口改成了2222端口,那么如果使用普通掃描只會發現2222端口是開啟的,並不能知道2222號端口上運行的程序,通過加參數 -sV 進行版本掃描,可以探測到目標主機上2222端口運行的是SSH服務
OS偵測
操作系統偵測用於檢測目標主機運行的操作系統類型及設備類型等信息。
Nmap擁有豐富的系統數據庫nmap-os-db,目前可以識別2600多種操作系統與設備類型。
OS偵測原理
Nmap使用TCP/IP協議棧指紋來識別不同的操作系統和設備。在RFC規范中,有些地方對TCP/IP的實現並沒有強制規定,由此不同的TCP/IP方案中可能都有自己的特定方式。Nmap主要是根據這些細節上的差異來判斷操作系統的類型的。
具體實現方式如下:
- Nmap內部包含了2600多已知系統的指紋特征(在文件nmap-os-db文件中)。將此指紋數據庫作為進行指紋對比的樣本庫。
- 分別挑選一個open和closed的端口,向其發送經過精心設計的TCP/UDP/ICMP數據包,根據返回的數據包生成一份系統指紋。
- 將探測生成的指紋與nmap-os-db中指紋進行對比,查找匹配的系統。如果無法匹配,以概率形式列舉出可能的系統。
OS偵測用法