1. 命令選項以及參數
nmap 的命令類型大體分為 掃描類型,選項,目標格式 這 3 類。按照功能可以分為 目標格式,主機發(fā)現,掃描技術,端口規(guī)格和掃描順序,服務/版本檢測,腳本掃描,操作系統(tǒng)檢測,時間和性能,防火墻/IDS 逃避和欺騙,輸出,雜項 這 11 類。
所以在學習和記憶 nmap 的命令時可以將 nmap 的命令規(guī)劃為:目標說明,主機發(fā)現,端口掃描技術,端口說明和掃描順序,服務和版本探測,操作系統(tǒng)探測,時間和性能,防火墻/IDS 躲避和哄騙 這 8 大類進行記憶,因為這八大類的命令是互不相干的,這些命令也沒有規(guī)定使用和編寫的順序(比如哪類命令需要寫在哪類命令之前或之后,哪個命令要先使用,并沒有這些死板的限制),所以可以任意使用。
Nmap 7.91SVN ( https://nmap.org )
用法:nmap [掃描類型] [選項] {目標格式}
目標格式:
可以傳遞主機名、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>: 從文件中排除列表
主機發(fā)現:
-sL:列表掃描 - 簡單地列出要掃描的目標
-sn:Ping 掃描 - 禁用端口掃描
-Pn:將所有主機視為在線——跳過主機發(fā)現
-PS/PA/PU/PY[portlist]:TCP SYN/ACK、UDP 或 SCTP 發(fā)現到給定端口
-PE/PP/PM:ICMP 回顯、時間戳和網絡掩碼請求發(fā)現探測
-P0[協(xié)議列表]:IP協(xié)議Ping
-n/-R:從不進行 DNS 解析/始終解析 [默認:有時]
--dns-servers <serv1[,serv2],...>:指定自定義 DNS 服務器
--system-dns:使用操作系統(tǒng)的 DNS 解析器
--traceroute:跟蹤每臺主機的跳躍路徑
掃描技術:
-sS/sT/sA/sW/sM:TCP SYN/Connect()/ACK/Window/Maimon 掃描
-sU:UDP 掃描
-sN/sF/sX:TCP Null、FIN 和 Xmas 掃描
--scanflags <flags>:自定義 TCP 掃描標志
-sI <僵尸主機[:probeport]>:空閑掃描
-sY/sZ:SCTP INIT/COOKIE-ECHO 掃描
-s0:IP協(xié)議掃描
-b <FTP 中繼主機>:FTP 反彈掃描
端口規(guī)格和掃描順序:
-p <端口范圍>:只掃描指定端口
例如:-p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9
--exclude-ports <端口范圍>:從掃描中排除指定的端口
-F:快速模式 - 掃描比默認掃描更少的端口
-r:連續(xù)掃描端口 - 不要隨機化
--top-ports <number>: 掃描 <number> 最常用的端口
--port-ratio <ratio>:掃描比<ratio>更常見的端口
服務/版本檢測:
-sV:探測開放端口以確定服務/版本信息
--version-intensity <level>:設置從 0(輕)到 9(嘗試所有探測器)
--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:顯示所有發(fā)送和接收的數據
--script-updatedb:更新腳本數據庫。
--script-help=<Lua 腳本>:顯示有關腳本的幫助。
<Lua scripts> 是一個以逗號分隔的腳本文件列表或
腳本類別。
操作系統(tǒng)檢測:
-O:啟用操作系統(tǒng)檢測
--osscan-limit:將操作系統(tǒng)檢測限制為有希望的目標
--osscan-guess:更積極地猜測操作系統(tǒng)
時間和性能:
需要 <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 <時間>:指定
探測往返時間。
--max-retries <tries>:限制端口掃描探測重傳的次數。
--host-timeout <time>: 這么長時間后放棄目標
--scan-delay/--max-scan-delay <time>:調整探針之間的延遲
--min-rate <number>:每秒發(fā)送數據包的速度不低于 <number>
--max-rate <number>:每秒發(fā)送數據包的速度不超過 <number>
防火墻/IDS 逃避和欺騙:
-F; --mtu <val>:分段數據包(可選w/給定的 MTU)
-D <decoy1,decoy2[,ME],...>:用誘餌隱藏掃描
-S <IP_Address>:欺騙源地址
-e <iface>:使用指定的接口
-g/--source-port <portnum>:使用給定的端口號
--proxies <url1,[url2],...>:通過 HTTP/SOCKS4 代理中繼連接
--data <hex string>:將自定義負載附加到發(fā)送的數據包
--data-string <string>:將自定義 ASCII 字符串附加到發(fā)送的數據包
--data-length <num>:將隨機數據附加到發(fā)送的數據包中
--ip-options <options>: 發(fā)送指定ip選項的數據包
--ttl <val>:設置 IP 生存時間字段
--spoof-mac <mac 地址/前綴/供應商名稱>:欺騙您的 MAC 地址
--badsum:發(fā)送帶有偽造 TCP/UDP/SCTP 校驗和的數據包
輸出:
-oN/-oX/-oS/-oG <file>: 正常輸出掃描, XML, s|<rIpt kIddi3,
和 Grepable 格式,分別為給定的文件名。
-oA <basename>:一次輸出三種主要格式
-v:增加詳細級別(使用 -vv 或更多以獲得更大的效果)
-d:提高調試級別(使用 -dd 或更多以獲得更大的效果)
--reason:顯示端口處于特定狀態(tài)的原因
--open:只顯示開放(或可能開放)的端口
--packet-trace:顯示所有發(fā)送和接收的數據包
--iflist:打印主機接口和路由(用于調試)
--append-output:附加到而不是破壞指定的輸出文件
--resume <文件名>:恢復中止的掃描
--noninteractive:通過鍵盤禁用運行時交互
--stylesheet <path/URL>:將 XML 輸出轉換為 HTML 的 XSL 樣式表
--webxml:來自 Nmap.Org 的參考樣式表以獲得更可移植的 XML
--no-stylesheet:防止將 XSL 樣式表與 XML 輸出相關聯
雜項:
-6:啟用 IPv6 掃描
-A:啟用操作系統(tǒng)檢測、版本檢測、腳本掃描和traceroute
--datadir <dirname>:指定自定義Nmap數據文件位置
--send-eth/--send-ip:使用原始以太網幀或 IP 數據包發(fā)送
--privileged:假設用戶擁有完全特權
--unprivileged:假設用戶沒有原始套接字權限
-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
有關更多選項和示例,請參閱手冊頁 (https://nmap.org/book/man.html)
2. 命令選項的順序和格式
nmap 的命令編寫快捷靈活,支持多個命令選項同時組合使用時可以無序或任意順序排列需要用到的選項,即 nmap 沒有要求用戶在使用命令時需要按某個固定的順序組合排列指定的命令選項。這樣不需要用戶在記住大量命令和選項的同時還需要記住多個選項同時使用時的排放順序,所以大大提高了用戶使用的便捷性命令的靈活性。
例如掃描 IP
192.168.3.79 - 192.168.3.85這個范圍的 IP 地址的 80 端口,那么我們在編寫掃描命令指定一些復雜的掃描控制選項時命令可以這樣nmap -sS -A 192.168.3.79-85 -p 80也可以這樣nmap 192.168.3.79-85 -p 80 -sS -A,
還可以這樣nmap 192.168.3.79-85 -sS -A -p 80所以我們可以從中看出 nmap 的命令在指定一些選項時不需要按照規(guī)定某一個固定的順序放置,可以由用戶自由隨機指定順序放置。
但是有一點需要注意的是,如果需要指定含參數的選項,那么該選項的參數必須緊緊跟隨在該選項的后面,比如指定掃描的端口
-p 80所以80是緊緊跟隨在-p后方的,參數在后方的同時不能被其他選項分隔的,例如這指定掃描的端口-p -A 80選項-p的參數80被其他的選項-A分隔了,所以這樣命令格式就是錯誤的。