目錄
前言
Nessus – 在Kali Linux內漏洞掃描著名的工具之一,蒐錄超過67000份CVE以及超過168000個插件可以使用,有基本款以及專業款兩個差異,本文章我們採用免費的基本款進行示範,雖然有些限制但基本的功能都可以直接使用,免費版我們一次只能掃描16組IP位址,以及有些模板跟功能不能使用,但也足夠了
不過精通基本款的Nessus可以讓我們在使用專業款時可以更快上手,以及就算換到其他款掃描工具也可以無痛上手,我們來試著在Kali Linux安裝,Kali機器只要2CPU core跟4GB的RAM就可以執行該工具了,我們直接從開發商tenable下載debian版的Nessus:https://www.tenable.com/downloads/nessus?loginAttempted=true
同時我們要用檢查一下檔案沒被變更過,用他們提供的SHA256或MD5來進行比對,如果讀者是用M系列晶片的macbook安裝的Kali Linux,麻煩下載Linux – Ubuntu – aarch64的版本

讀者下載下來後可以點開checksum選單拿到SHA256跟MD5的檢查碼,我們下載下來的檔案讀出SHA256放進”sha256sum_nessus.sha256″檔案裡,用sha256sum的檢查工具搭配”-c”選擇該檔案
──(kali㉿kali)-[~/Downloads]
└─$ sha256sum "Nessus-10.9.4-ubuntu1804_aarch64.deb" > sha256sum_nessus.sha256
┌──(kali㉿kali)-[~/Downloads]
└─$ sha256sum -c sha256sum_nessus.sha256
Nessus-10.9.4-ubuntu1804_aarch64.deb: OK
如果checksum有match的話就會顯示OK,在Linux的distribution裡可以用apt套件來進行下載
kali@kali:~/Downloads$ sudo apt install ./Nessus-10.9.4-ubuntu1804_aarch64.deb
...
Preparing to unpack .../Nessus-10.9.4-ubuntu1804_aarch64.deb ...
Unpacking nessus (10.9.4) ...
Setting up nessus (10.9.4) ...
...
Unpacking Nessus Scanner Core Components...
- You can start Nessus Scanner by typing /bin/systemctl start nessusd.service
- Then go to https://kali:8834/ to configure your scanner
當我們安裝好nessus後,就可以用systemctl核心來進行啟動服務
┌──(kali㉿kali)-[~/Downloads]
└─$ sudo systemctl start nessusd.service
┌──(kali㉿kali)-[~/Downloads]
└─$ sudo systemctl status nessusd.service
● nessusd.service - The Nessus Vulnerability Scanner
Loaded: loaded (/usr/lib/systemd/system/nessusd.service; disabled; preset:>
Active: active (running) since Fri 2025-09-26 23:47:36 EDT; 8s ago
Invocation: 56202d5b553a476583d28d6356a5350f
Main PID: 25084 (nessus-service)
Tasks: 15 (limit: 4490)
Memory: 119.4M (peak: 119.8M)
CPU: 8.660s
CGroup: /system.slice/nessusd.service
├─25084 /opt/nessus/sbin/nessus-service -q
└─25086 nessusd -q
Sep 26 23:47:36 kali systemd[1]: Started nessusd.service - The Nessus Vulnerabi>
Sep 26 23:47:36 kali nessus-service[25084]: nessus-service [25084][INFO] : Ness>
lines 1-14/14 (END)
確認狀態是啟動後,我們可以打開瀏覽器看https://127.0.0.1:8834,由於是自簽憑證的服務,所以瀏覽器會出現風險,但我們是在本地端使用的,所以直接接受風險進去即可

進到網頁後要先進行安裝做一些設定

接著選擇基本款的Nessus Essentials產品進行註冊

接著填寫必要的資料進行註冊

註冊完成後tenable就會給一組註冊號碼

接著要創立一組local的帳號來進行漏洞掃描

註冊完local帳號後之後就都是用這組帳號進行操作了,完成填寫後就會開始安裝所有必要的插件,會需要花上一些時間

一旦安裝完所有套件,我們就可以開始使用Nessus Essentials這款工具了
Nessus元件
我們執行掃描之前花點時間來熟悉核心的功能,第一次進去工具裡會出現歡迎頁面跟指引,不過我們先關掉吧,先看到左上角的掃描及設定

Settings設定頁面可以用來設置應用服務,舉例來說我們可以透過設定email來探索SMTP伺服器取得相關結果,而在進階的頁面裡可以設置全域的設定包括使用者介面、掃描以及log的形式等與執行方式相關的配置

點進settings第一個about就可以看到Nessus的基本資料、license狀態以及該license還能部署到幾台機器上等等,接著我們回到掃描頁面看一下政策以及模板功能,政策是為了讓掃描時可以預設一些選項所做的選擇,如果確定某些條件是必要的,可以將政策儲存成模板供以後使用
如果點進掃描的模板裡,可以看到Nessus已經提供了很廣泛的模板給我們使用,主要分成三個種類來選擇
- 探索(Discovery)
- 漏洞(Vulnerabilities)
- 準則(Compliance)

準則分類的模板只有升級成商業版才能使用,畢竟支援更強大的功能例如行動裝置掃描模板,或者支援其他商業型的雲端服務等複雜的功能需要讀者的支持($$)才有辦法維護,探索分類的話有主機探索或者ICMP的探索,建立一系列存活的主機或開啟的port清單,讀者可以根據目標情境選擇
而漏洞分類則是根據重大漏洞或漏洞家族所組成的模板,例如通常會掃描網頁應用服務查看是否有PrintNightmare或者檢測Zerologon惡意軟體是否存在,但更通俗的說,Nessus提供三個弱點掃描模板
- 基本網路掃描:根據模板預設的範圍進行完整的搜尋,此方法針對大部分的漏洞都進行檢測,所以Nessus會建議先選擇這項模板,當然我們也可以客製化這項模板裡的設定
- 進階掃描:不做任何預設政策的掃描模板,當讀者需要完全的客製化或者目標有特殊需求時就會採用這種模板
- 進階動態掃描:最後一項通用的掃描模板,同樣是不設定任何政策的模板,但前面的掃描已經將範圍慢慢縮小,而最終我們決定最主要的弱點進行掃描
而進階掃描跟進階動態掃描最大的差異是我們不需要手動選擇,用動態插件過濾就可以代替了,Nessus的插件都是用Nessus Attack Scripting Lanuage(NASL)寫成,各項模板內包含了許多資訊與演算法來檢測漏洞,每個插件都來自不同的家族,為了應用於不同的情境之下
弱點掃描
讓我們開始做一次弱點掃描吧,回到Scan頁面先找到右上角的New Scan

就會進到選擇模板的頁面,第一階段我們可以先選基本網路掃描針對大範圍進行,而要針對大範圍,則要另外進行基礎、探索、評估、報告以及進階等等設定

預設的頁面只需要填一些資料,主要只需要兩個資料,(1)命名這次的掃描名稱(2)目標清單,Nessus支援指定多組目標,不管是單一的IP位址,或者一組網段,甚至是Fully-Qualified Domain Name(FQDN)或一份IP清單,只要輸入本次掃描名稱以及目標IP即可

只要點選Basic Network Scan,Nessus就會幫忙設置大部分的選項了,但預設的功能可能不會是我們一定需要的,讀者應該根據不同的掃描形式、目標環境、時間的限制以及目標種類來決定要做何種設定
而在這種模式之下,預設來看Nessus會去掃描一些常見的port,在DISCOVERY的頁面可以設定想要掃描的port,我們針對80跟443的port來設定

在預設的掃描形式提供數種型態,為了選擇指定特定port,我們必須選擇custom的選項,出現DISCOVERY的選項底下我們可以額外設定一些選擇,同樣可以客製化在進階的掃描時需要特別關注哪些選項,在Port掃描選項中可以指定單一或範圍的port,我們選擇只掃port 80跟443
另外,還可以啟用如果除了80跟443之外的port如果是開啟的,也不要去管它,這能讓Nessus將80跟443 port之外的都視為關閉的狀態,一來是我們不感興趣,二來可以節省更多資源

我們雖然指定了兩個TCP port,但在Basic Network Scan預設模板之下,Nessus不會去掃UDP port,換句話說,如果我們想找UDP port必須得手動設定,讀者要考慮自己的情境是否需要設定這條件,如果除了TCP port之外要找UDP的話得花額外的時間進行搜尋,尤其目標有防火牆或網路設備在主機之前的話,有時候不太能區分port是關閉的還是其實是封包被丟掉了
為了更省時間以及不讓目標發現,我們還需要把主機探索功能關掉,畢竟我們靠前面的偵察就已經發現上線中的目標機器了,不必再檢查一次,所以我們進Discovery的主機探索把遠端Ping機器的條件關掉

至目前為止我們沒有設定任何身份驗證資料,就代表我們的掃描動作都是屬於非授權的,也沒有去動評估的設定,則代表工具不會進行到暴力破解,即便我們沒有啟動暴力破解的設定,光是一次的掃描就會造成許多的網路流量出現,畢竟我們做掃描一次就會針對多台主機進行,有機會被目標組織網管發現異常的流量
以上就是基本對模板進行客製化需要注意的點,讀者可以嘗試執行一次掃描,在save的右邊有個執行可以點選

按下執行就會建立這次掃描的profile,Nessus儀表板上就會顯示本次掃描的狀態如何

上圖就顯示正在掃描中,我們可以選擇要不要暫停或停止本次掃描,一旦掃描完成,狀態就會變更成為完成

分析掃描結果
隨著Nessus自身跟插件不斷地更新,每次掃描的結果都不太一樣,點進我們的掃描profile裡看結果

第一個會看到host頁面,顯示出所有掃到的host以及圖形化顯示漏洞的組成,能夠快速的讓我們知道本次掃描取得哪些值得關注的資訊,以及一些統整性的安全性資料,右下角顯示所有目標的漏洞狀態,而在上方則顯示本次掃描的基本資料
由於Nessus插件經常在更新,所以這些圖的組成跟呈現有可能在不同的版本中長得不一樣,但基本呈現的概念都差不多,如果要看特定host的結果,可以點選該ip位址進去,我們檢查一下其中一個實驗的host 192.168.50.124看看

危害程度分類指引我們快速得知該資訊是否為重大危害,我們在192.168.50.124裡還發現三項MIXED的層級,Nessus會將數種有關聯性的資料包裝在一起分成這個類別,數量則代表有多少相關聯的資訊,我們可以點進組合起來的資訊查看每一個細項,點進Apache Httpd(Multiple Issues),在家族底下是顯示Web Servers的問題

點進組合的Apache Httpd問題內,還可以單獨看其中一項問題,我們檢查看看Apache 2.4.49 < 2.4.51 Path Traversal Vulnerability問題

透過插件所偵測到的資訊,Nessus會詳細的把所有漏洞資訊都顯示出來,甚至是相關的風險、漏洞利用的情況以及其他參考資料都可以取得
回到最上層的掃描結果,雖然分析單一的目標可以獲得許多詳細的資訊,但我們更在乎的是針對所有目標得到重大漏洞的統整性資料,Nessus針對這點開發了排序機制,稱作VPR Top Threats,利用漏洞排序評分(Vulnerability Priority Rating, VPR)來做分類,在VPR清單內會顯示掃描到的前十大危險漏洞做排列

在我們的實驗中只有顯示六項漏洞,根據不同的Nessus版本VPR Top Threats也會做出調整,但不管怎麼說,每個發現的漏洞都會在漏洞排序評分機制中,接著我們來看修補頁面,如果Nessus偵測到任何漏洞,插件會提供修補策略讓使用者來修復漏洞,我們之前看Apache漏洞時出現了以下修復資訊

最後則是歷史紀錄頁面,顯示根據掃描設定所做了哪些漏洞的檢測,我們可以時常檢視歷史紀錄來跟前一次的掃描相比有沒有新發現,至目前為止我們已經了解Nessus的掃描情況了,而如果委託方要求任何紀錄形式的話,Nessus提供產出弱點掃描結果的PDF檔報告功能
除了產報告之外,還可以根據結果變更該次掃描的設定,再次掃描找到正確的範圍或縮小目標,匯出資料等等,或者設置監控足跡,這可以讓我們觀察到特定的插件為何會執行某些特定的動作,這些設定都是為了將false negative的問題降低
我們嘗試看看把我們第一次的掃描結果給輸出成PDF檔吧,按下Report

點下Report之後跳出一個新頁面可以選擇不同的報告模板,每個報告模板會有不同的結構、關注的點以及內容呈現,我們嘗試使用主機詳細漏洞的模板,該模板會詳細的把每台host發現的資料組合起來,並且我們選擇PDF格式後產出報告

將報告儲存起來就可以給委託方了,其他像是漏洞完整清單(Complete List of Vulnerabilities)模板會產出更詳細的漏洞整合資料,但其他的資訊就不太詳細了,讀者可以根據想要知道的資訊做選擇,其他種類的報告形式再請讀者到Tenable官方的文件頁面查看 https://docs.tenable.com/Nessus.htm
在了解完基本的整套預設弱點掃描之後,我們可以來嘗試客製化掃描設定以及分析與預設掃描之間的差異
已授權弱點掃描
接著我們嘗試利用Nessus提供的憑證來執行已授權弱點掃描,如我們之前描述,已授權掃描能產生更詳細的資訊並降低false positive的情況,其中要注意的是已授權掃描不只會產生一堆網路流量,也會在目標系統裡觸發許多噪音,例如大量的log以及防毒軟體的警告
一樣先回儀表板點New Scan

儘管所有的Nessus模板都可以接受使用者的憑證,我們另外選擇附憑證的監控掃描模板(Credentialed Patch Audit),其特點是預先設定執行local端的安全檢查,與Basic Network Scan模板的差異是不會模擬外部攻擊者的行為,而是模仿內部人員進行掃描的行為,不只能找到更詳細的系統版本資訊,更能夠知道每個軟體的版本號碼,為後續的提權攻擊更有利

一樣設置profile名稱以及目標

另外點選Credentials頁面在host分類上選擇SSH,在授權模式下把目標機器ssh的username跟password一併附上,預期的權限選擇sudo等級,如果讀者猜測sudo權限是root帳號的話就填上去吧

於本次實驗中我們是設置SSH作為憑證,當然還有其他種授權方法可以進行,如果想一併嘗試所有方法,可以從Categories裡找到All的選項,而想要知道其他種方法請讀者到Tenable的文件裡查找:https://docs.tenable.com/nessus/Content/Credentials.htm
針對Linux或macOS目標機器SSH就挺萬用的了,當然如果是Windows的伺服器上只要有架設SSH server也有機會,但大部分我們會針對SMB以及WMI(Windows Management Instrumentation)來執行已授權弱點掃描,這兩種路徑都允許我們使用local或網域帳號進行搜尋
為了確保已授權掃描可以成功,我們需要確保目標系統的設定都是正確的,而對於我們的工具來說要確保目標機器沒有設置任何防火牆擋掉掃描的流量,另外防毒軟體常常會將授權掃描視為惡意軟體的行為,經常會將掃描工具的連線給斷開,所以需要搭配例外處理或者想其他方法先關掉目標機器的防毒軟體
Windows另一項比較麻煩的安全機制就是使用者帳號存取控管(User Account Control, UAC),用來建立使用者帳號替代系統管理員權限,畢竟系統管理員可以執行大部分的軟體及指令,可想而知,這也會干擾已授權掃描,但也有辦法設定UAC允許Nessus可以掃描或甚至短暫的關掉
但那個做法稍微複雜一些,有興趣的讀者請參考Tenable官方文件:https://docs.tenable.com/nessus/Content/CredentialedChecksOnWindows.htm,我們實驗上就先針對Linux系統吧,上面的設定完之後直接進行掃描,掃描結果的漏洞頁面可以發現所有已授權掃描找到的資訊
由於模擬內部掃描的方法會將一系列的資訊統整起來,所以MIXED分類的資料每一細項會很長,一個一個點開會很麻煩,直接把組合的選項關閉,直接按Disable Groups即可

關閉之後每一個線索都會羅列出來

檢查從Ubuntu VM裡拿到的資訊,Ubuntu Local SecurityChecks家族資訊都呈現給我們了,插件會依類別分組為插件家族,用於檢查相同情境下的漏洞,例如針對資料庫、防火牆或網頁伺服器的漏洞檢查,各自擁有獨立的插件家族,而Ubuntu Local Security Checks插件家族包含許多插件,專門檢測Ubuntu的local漏洞及遺漏的patch,名稱欄位則顯示漏洞相對應的Ubutnu版本號以及簡易的描述

同樣資料庫內有可能出現該Linux版本之下的可利用應用程式資訊,例如Firefox或者cURL等套件讀者都請注意
Nessus 插件
在預設的情況下Nessu執行了數個插件,雖然大部分情況都挺好用的,但我們也是可以調整成只用單一的插件,如果讀者的情境已經事先知道只需要某方面的資訊,我們就可以加快速度找出特定的漏洞即可,例如我們針對目標機器搜集只受到CVE-2021-3156的危害資訊,這個漏洞可以讓一般使用者提權成root權限
要設置這種動態插件配置,我們一樣回到儀表板選擇New Scan

而這次我們則選擇進階動態掃描模板(Advanced Dynamic Scan),這個模板就允許我們動態的選擇要使用的插件,而並非之前一直手動開關

一樣設定掃描profile名字以及目標IP

同樣我們也提供SSH跟sudo憑證權限做已授權掃描,不同於前一節,這次我們要選擇使用的插件為哪種,點選Dynamic Plugins頁面,用左側的欄位挑選只找CVE,中間欄位則選擇不同的過濾條件來指定我們要找的漏洞行為,右邊欄位則可以選擇CVE號碼,我們輸入CVE-2021-3156這個漏洞,按下Preview Plugins就會配置這項過濾器了,但會花上幾分鐘時間

一旦過濾器配置完成,就可以找到與CVE號碼相關的漏洞家族

另外一項非常方便的功能就是能夠組合多種過濾器,舉例來說我們實驗的機器是Ubuntu系統,所以能夠新增第二項過濾器指定相關的插件家族,按下旁邊的+號就可以新增了

如此就能多一條過濾器做出判斷,通常為了限縮準確的範圍,以我們這裡是Ubuntu系統,就可以在左側欄位選擇Plugin Family,而右側則選Ubuntu Local Security Checks

要注意的是有時候Nessus由於更新的問題右邊不會出現任何值,發生時移除掉第二欄就可以正常運作了,設定完所有想要的過濾器之後,一樣按下Preview Plugins,選擇Ubuntu Local Security Checks,Nessus會顯示關於插件的資訊,包括受影響的Ubuntu版本、一些簡單描述以及修補的ID

按下指定的plugin還會出現更詳細的相關漏洞資料

有興趣的讀者再去查看,我們就先執行這掃描了吧,執行完後一樣可以到漏洞頁面查看

在我們的實驗機器上顯示一個HIGH程度的問題就是我們利用指定的插件過濾出來的,點進去該項可以確認我們的設定是不是真的有成功找到CVE-2021-3156漏洞

我們設定的這個插件說明Nessus只使用了有通報過的受影響應用程式版本號,但並未用任何方法來確認該漏洞是不是真的存在,所以下一步評估階段時,我們應該要二次驗證這個漏洞的有效性
以上就是我們使用Nessus這款強大的弱點掃描工具實驗的一些基本操作,免費版的軟體就有如此多的選項可以設定,建議讀者可以先熟悉免費版的所有功能,以利未來進入相關產業或公司要進行弱點掃描時可以更快上手,而公司或單位如果採購了企業版的方案,讀者也可以從官方文件中快速了解更多的功能
屆時請參考文件:https://docs.tenable.com/nessus/Content/GettingStarted.htm