轉載至
https://www.4hou.com/technology/10481.html
導語:Nmap本身內置有豐富的NSE腳本,可以非常方便的利用起來,當然也可以使用定制化的腳本完成個人的需求。本文將講述如何利用Nmap的Scripts檢測CVE漏洞。
Nmap是一款應用最廣泛的安全掃描工具,備受滲透人員和黑客的青睞,在對目標服務器進行掃描的時候,能夠快速識別潛在的漏洞。NSE(Nmap Scripting Engine)作為Nmap的一部分,具有強大靈活的特性,允許使用者編寫自己的腳本來完成各種各樣的網絡掃描任務。Nmap本身內置有豐富的NSE腳本,可以非常方便的利用起來,當然也可以使用定制化的腳本完成個人的需求。今天就要講講如何利用Nmap的Scripts檢測CVE漏洞。
Nmap有一個少為人知的部分是NSE腳本引擎,NSE是Nmap的最強大和靈活的功能之一。它允許用戶編寫(並共享)簡單的腳本來自動執行各種網絡任務。Nmap內置了全面的NSE腳本集合,用戶可以輕松使用這些Nse腳本或者創建自定義Nse腳本以滿足他們的個性化需求。
使用NSE腳本更快地查找更多漏洞
在這里,我將一次演示兩個NSE腳本,nmap-vulners和vulscan。這兩種腳本的設計都是為了增強Nmap的版本檢測,為特定服務(如SSH,RDP,SMB等)生成相關的CVE信息。CVE或通用漏洞披露是安全研究人員使用的一種方法,它利用數據庫對單個漏洞進行編目和引用。
例如,漏洞利用數據庫是公開披露的漏洞的流行數據庫。Exploit-DB使用CVE編制與特定版本的服務(如“SSH v7.2”)相關的單個漏洞和漏洞。以下是Exploit-DB的屏幕截圖…請注意分配給此特定SSH漏洞的CVE編號。

nmap-vulners和vulscan都可以使用CVE記錄來增強Nmap的版本檢測。Nmap將識別已掃描服務的版本信息。NSE腳本將獲取這些信息並生成可用於利用該服務的已知CVE。這使查找漏洞變得更簡單。
下面是不使用NSE腳本的Nmap版本檢測示例。Nmap使用版本“OpenSSH 4.3”在端口22上發現了一個SSH服務。

使用NSE腳本的服務器的例子。我們可以看到現在有更多的信息輸出。

nmap-vulners NSE腳本(以紅色突出顯示)報告了過去幾年中披露的十幾個CVE。nmap-vulners CVEs按嚴重性組織,“9.3”開始最嚴重,位於列表頂部,因此值得深入研究。vulscan NSE腳本(以藍色突出顯示)還報告了十多個與OpenSSH v4.3相關的有趣漏洞。
這兩個NSE腳本在顯示與易受攻擊的服務相關的有用信息方面做得非常出色。每次我們使用NSE腳本時,Nmap-vulners都會查詢Vulners exploit數據庫。另一方面,Vulscan會在我們的計算機上查詢當我們第一次下載vulscan時預先配置的本地數據庫。
現在,在上面的屏幕截圖中有很多內容,所以讓我們先來學習如何在使用它們之前安裝這些NSE腳本。
安裝NSE腳本
步驟1 安裝Nmap-Vulners
要安裝nmap-vulners腳本,我們首先使用cd切換到Nmap腳本目錄
cd /usr/share/nmap/scripts/
然后,通過在終端中輸入以下命令來克隆nmap-vulners GitHub存儲庫。
git clone https://github.com/vulnersCom/nmap-vulners.git
nmap-vulners安裝后不需要配置

第2步 安裝Vulscan
git clone https://github.com/scipag/vulscan.git
如前所述,vulscan利用本地存儲在我們計算機上的預配置數據庫。我們可以在vulscan目錄的根目錄中查看這些數據庫。運行以下命令列出可用的數據庫。
ls vulscan/*.csv

Vulscan支持許多優秀的漏洞數據庫。這是一個完整的列表:
· cve.csv
為確保數據庫完全保持最新,我們可以使用vulscan /utilities/updater/目錄中的updateFiles.sh腳本。通過在終端中輸入以下命令更改到更新程序目錄。
cd vulscan/utilities/updater/
然后,使用下面的命令確保該文件具有在計算機上執行的適當權限。
chmod+x updateFiles.sh
然后,我們可以通過在我們的終端中輸入以下命令來執行和運行腳本。
./updateFiles.sh

步驟3 使用Nmap-Vulners進行掃描
使用NSE腳本很簡單。我們所要做的就是將–script參數添加到我們的Nmap命令中,並告訴Nmap使用哪個NSE腳本。要使用nmap-vulners腳本,我們將使用下面的命令。
nmap --script nmap-vulners -sV <目標IP>
該-sV是絕對必要的。使用-sV,我們告訴Nmap探測版本信息的目標地址。如果Nmap不生成版本信息,nmap-vulners將不會有任何數據來查詢Vulners數據庫。使用這些NSE腳本時始終使用-sV。

步驟4使用Vulscan進行掃描
我們可以像nmap-vulners一樣使用vulscan NSE腳本:
nmap --script vulscan -sV <目標IP>

默認情況下,vulscan會一次查詢所有前面提到的數據庫!正如我們在上面的圖片中看到的那樣,消化的信息量非常大。這比我們需要的信息要多得多。我強烈建議一次只查詢一個數據庫。我們可以通過將vulscandb參數添加到我們的Nmap命令並指定數據庫來實現此目的,如下面的示例所示。
nmap --script vulscan --script-args vulscandb = database_name -sV <目標IP> nmap --script vulscan --script-args vulscandb = scipvuldb.csv -sV <目標IP> nmap --script vulscan --script-args vulscandb = exploitdb.csv -sV <目標IP> nmap --script vulscan --script-args vulscandb = securitytracker.csv -sV <目標IP>

第5步 合並為一個命令
NSE腳本作為安全掃描器顯着提高了Nmap的多功能性,范圍。為了充分利用Nmap的版本掃描,我們可以在一個命令中使用nmap-vulners和vulscan。要執行此操作,請在終端中輸入以下命令。
nmap --script nmap-vulners,vulscan --script-args vulscandb = scipvuldb.csv -sV <目標IP>

