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