目錄

前言

主動式資料搜集之DNS枚舉與Port掃描章節我們提到了Nmap這款port掃描工具,以及它強大的客製化Nmap腳本引擎(Nmap Scripting Engine, NSE),有時候在時間的限制下我們不適合使用Nessus這款商業化強大但耗時的工具,這時一些輕量級的漏洞掃描工具就是很好的選擇

NSE漏洞腳本

作為替代Nessus強大的插件,我們可以使用NSE來施行自動化的弱點掃描,利用NSE的腳本我們可以將Nmap從基本的網路探索功能,強化成數種網路偵察工具,例如將偵測漏洞的任務、暴力破解的任務以及基本款網路探索的功能結合在一起,甚至已經有人寫好偵測系統版本或資訊搜集能力的腳本供Nmap使用

NSE腳本可以組合超過一種任務分類,舉例來說可以分類成安全型跟漏洞行,或者侵入型跟漏洞型腳本,只要沒有影響到目標系統穩定性都視為安全的標準,因為侵入型的行為可能會破壞目標服務或系統,為了避免目標變得不穩定

讀者應該要非常清楚腳本的種類,以及執行該NSE腳本後會有何效果,在不清楚的狀況之前不要輕舉妄動,讀者可以查看NSE官方文件或者下載下來的NSE腳本內容來進行檢查

我們的實驗專注於漏洞型分類來讓Nmap可以檢測弱點資訊,在Kali Linux機器當中,NSE腳本存放在”/usr/share/nmap/scripts/”目錄底下,只要檔案格式是”.nse”的都可以點進去看腳本行為,另外還有一個”script.db”檔案用來儲存當前所有可用的NSE腳本,我們可以用這個資料庫檔來看屬於漏洞分類的腳本

每一個搜尋到的項目都會顯示檔案名稱跟類型,讀者可以在這目錄底下找到該NSE腳本,儘管有些腳本針對的版本資訊有點過時,但很幸運漏洞類型的腳本都有適時地在進行更新,透過官方的Vulners Vulnerability Database蒐錄最新的漏洞,不同的腳本分類成”safe”、”vuln”以及”external”

那麼Nmap該透過何種參數選擇這些腳本呢?參數的組成可以選擇類別、布林函數表示、用逗號分隔不同的類別、用script.db裡面顯示的代號搭配萬用字元組合或者腳本的絕對路徑來指定,我們試著使用漏洞類別來進行掃描,之前提到使用”–script”可以指定腳本,而我們選擇”vuln”類別,另外搭配”-sV”來偵測服務資訊,最後用”-p”來指定掃描443

用這個類別我們偵測到目標機器上架設Apache服務2.4.49版本,以及使用所有漏洞分類裡的NSE腳本進行測試,如果有match到的就會顯示出偵測到的資訊以及相關的漏洞資料

這些漏洞腳本不只顯示關於CVE編號的資訊,同時也顯示CVSS分數以及一些補充資料,例如我們的實驗顯示漏洞腳本偵測到CVE-2021-41773的漏洞出現在目標的Apache機器上,另一項漏洞腳本有用的功能是針對CVE提供Proof of Concepts (PoC),其標記為可利用”EXPLOIT”,反之如果沒有match到任何漏洞,就不會顯示任何資訊出來

利用NSE腳本

在上一節我們了解了NSE的漏洞分類及腳本形式,但如果直接指定”vuln”這個分類就會從資料庫中一一比對,而有時我們只需要找到特定的CVE就好,當我們只想驗證某個漏洞是存在的,直接找特定的分類會顯示出一堆資料,而對於近代的漏洞,我們需要組合多個腳本來縮小範圍

舉例來說我們要針對CVE-2021-41773這個漏洞,為了找到適合的腳本,我們可以先在搜尋引擎裡找CVE編號加上NSE來進行搜尋

搜尋到Github有提供的,https://github.com/RootUp/PersonalStuff/blob/master/http-vuln-cve-2021-41773.nse,我們就可以下載這個腳本,一樣儲存在”usr/share/nmap/scripts/”目錄底下,以及我們要更新script.db之後才能用nmap來呼叫這個腳本,利用”–script-updatedb”參數來更新

要注意腳本名字一定要跟scripts目錄底下其他的檔案命名規則一樣,否則database不會接受

於是這一次,我們就可以將參數的腳本從類別中改為方才下載的NSE檔,針對目標機器以及port針對這個CVE進行偵測

實驗結果可以看到我們的目標確實match到了CVE-2021-41773漏洞,還提供給了我們一些額外的背景資訊,儘管Nmap最一開始並非設計來弱點掃描的,但有了NSE腳本的擴充性讓這個工具搖身成為一個輕量化的漏洞掃描工具,在滲透測試時如果手邊沒有強大的弱點掃描工具,我們可以使用Nmap來替代,或者我們想要AB比較驗證結果時也可以考慮Nmap

然而我們也必須考量弱點掃描工具常見的問題,NSE腳本提供了很有用的資訊,可以使用侵入性或安全性等分類,但同時也要留心如果是採用其他人的NSE腳本,裡面也許會包含惡意的code,而反被別人入侵進來,所以我們需要時時刻刻注意NSE腳本除了可正常使用之外,也必須是安全的,這跟MCP的問題差不多一樣

弱點掃描在安全性評估上非常有用,設定正確的工具能為我們搜集到有用的資料,不過在取得資訊之後還得靠人工二次檢查才能確保資訊是有效的,不過讀者也要銘記在心,漏洞掃描工具的操作會對目標系統或服務造成影響,所以在使用時必須得先知道後果以及完全規劃再進行掃描

One Comment

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *