Nessus 簡介
Nessus是最受歡迎的漏洞掃描程序之一。1998年, Nessus的創辦人 Renaud Deraison 展開了一項名為 "Nessus"的計划,其計划目的是希望能為因特網社群提供一個免費、威力強大、更新頻繁並簡易使用的遠端系統安全掃描程序。它最初是免費開源的,但是他們在2005年關閉了源代碼,並在2008年免除了“Registered Feed”免費版本。企業版現在需每年花費2,190美元,盡管如此仍然擊敗許多競爭對手。 目前免費的僅有“ Nessus Home ”版本,它僅被授權用於家庭網絡使用並且對目標IP地址數量有限制。Nessus是不斷在更新的,目前已擁有超過75,000個插件。
主要功能包括遠程和本地(經過身份驗證的)安全檢查,具有基於Web界面的客戶端/服務器架構以及用於編寫自己的插件或理解現有插件的嵌入式腳本語言。客戶端提供了運行在X window 下的圖形界面,接受用戶的命令與服務器通信,傳送用戶的掃描請求給服務器端,由服務器啟動掃描並將掃描結果呈現給用戶;掃描代碼與漏洞數據相互獨立,Nessus 針對每一個漏洞有一個對應的插件,漏洞插件是用NASL(NESSUS Attack Scripting Language)編寫的一小段模擬攻擊漏洞的代碼,這種利用漏洞插件的掃描技術極大的方便了漏洞數據的維護和更新;Nessus 具有掃描任意端口任意服務的能力;以用戶指定的格式(ASCII 文本、html 等)產生詳細的輸出報告,包括目標的脆弱點、怎樣修補漏洞以防止黑客入侵及危險級別。
安裝Nessus
關於Nessus的安裝,由於Nessus支持Windows、MacOS、Amazon Linux、Red Hat、Debian、Ubuntu、Fedora、SUSE、FreeBSD等系統。本文僅以基於Debian的Kali操作系統為例進行安裝及破解相關演示,其他操作系統方法類似大家可以自行依葫蘆畫瓢。
下載鏡像
官方(https://www.tenable.com/downloads/nessus)提供安裝包免費下載,選擇適合自己操作系統的安裝包進行下載。比如我的Kali是64位的,那么選擇最新版"Nessus-8.10.0-debian6_amd64.deb"進行下載即可。
安裝鏡像
進入Nessus安裝程序所在目錄,通過dpkg進行安裝即可安裝過程如下所示:
# 通過執行如下命令進行Nessus安裝
root@F0rGeEk:~# dpkg -i /home/forgeek/Downloads/Soft/Nessus-8.10.0-debian6_amd64.deb
Selecting previously unselected package nessus.
(Reading database ... 403084 files and directories currently installed.)
Preparing to unpack Nessus-8.10.0-debian6_amd64.deb ...
Unpacking nessus (8.10.0) ...
Setting up nessus (8.10.0) ...
Unpacking Nessus Scanner Core Components...
- You can start Nessus Scanner by typing /etc/init.d/nessusd start
- Then go to https://F0rGeEk:8834/ to configure your scanner
Processing triggers for systemd (245.4-3) ...
啟動Nessus
在安裝過程中既有啟動提示:在"/etc/init.d/"目錄下通過命令nessusd start進行啟動。當然在Gnome下也可以用service nessusd start命令進行啟動。
root@F0rGeEk:/etc/init.d# ./nessusd start
Starting Nessus : .
......# 啟動過程省略,通過netstat查看監聽端口是否正常
root@F0rGeEk:/etc/init.d# netstat -ano | grep 8834
tcp 0 0 0.0.0.0:8834 0.0.0.0:* LISTEN off (0.00/0/0)
tcp6 0 0 :::8834 :::* LISTEN off (0.00/0/0)
至此,看見監聽端口也都正常了,說明我們的整個安裝及啟動過程均正常。
初始化配置
首先我們通過瀏覽器訪問Nessus的Web界面,然后根據提示進行初始化。瀏覽器中輸入"https://127.0.0.1:8834"即可,打開后顯示如下圖1.1所示,這里需要我們選擇Managed Scanner並點擊Continue。
接下來在Managed by這里需要選擇Tenable.sc,然后點擊continue繼續。
接下來Nessus的初始化向導會要求我們創建用戶,這里創建的是擁有最高管理員權限的賬戶,更具自己喜好自行設置。設置完賬號后系統會進行短暫的初始化,初始化結束后頁面會跳轉到登錄頁面,輸入剛才設置的用戶名密碼進入我們的Nessus工作界面。如下圖1.3所示:
至此我們安裝及初始化的過程就結束了,接下來是通過離線的方式進行插件的更新。
獲取離線插件包
- 獲取challenge code
通過 nessuscli fetch --challenge獲取challenge code,過程如圖1.4所示:
- 申請授權及離線包
從圖2.1我們可以看出下面的提示Actication Code at:https://plugins.nessus.org/v2/offline.php,接下來我們打開這個頁面,按照要求輸入Challenge Code(上一步終端輸出后復制粘貼即可)和activation code(如果沒有看下一步獲取激活碼操作)並點擊Submit即可。
- (附)獲取激活碼
這個步驟主要針對沒有Nessus激活碼的童鞋,首先打開https://zh-cn.tenable.com/products/nessus/nessus-essentials。根據要求輸入名字、姓氏、郵箱(相信聰明的你在這里不會用自己的郵箱和姓名來注冊吧😂)然后點擊注冊,大約1分鍾后即可在您填寫的郵箱中收到激活碼。這里其實我們就是用Nessus Essentials版本的激活碼來生成授權和離線包的下載連接。
- 生成離線包下載連接
當我們填寫完正確的Challenge code和activeation code並點擊submit后,系統會通過相關算法為我們生成離線包下載連接以及授權文件。如圖1.6所示:
下載離線更新包
如果是在Kali中下載更新包,我們可以使用wget加上圖中連接的方式進行下載。當然這里推薦使用uget+aria2c進行多線程的下載,兩百多兆的離線包100M寬帶不到一分鍾就下載完了。Win環境下可以使用你們喜愛的迅雷進行下載。
更新離線包
Nessus 8.10.0 和 Nessus 7.N 版本類似,使用命令nessuscli update all-2.0.tar.gz即可(all-2.0.tar.gz就是上一步下載的離線包)。
root@F0rGeEk:~# /opt/nessus/sbin/nessuscli update /home/forgeek/Downloads/all-2.0.tar.gz
[info] Copying templates version 202003232053 to /opt/nessus/var/nessus/templates/tmp
[info] Finished copying templates.
[info] Moved new templates with version 202003232053 from plugins dir.
* Update successful. The changes will be automatically processed by Nessus.
至此只能說我們的Nessus安裝及插件全部更新完成。現在的Nessus只支持16個IP,因為他是用家庭版的激活碼進行離線更新的。接下來就是如何通過特殊手段突破社區版16個IP的限制。
家庭版升級至專業版
創建plugin feed文件
接下來在"/opt/nessus/lib/nessus/plugins"和"/opt/nessus/var/nessus"目錄下分別新建一個名為"plugin_feed_info.inc"的文件。步驟如下:
root@F0rGeEk:~# touch /opt/nessus/lib/nessus/plugins/plugin_feed_info.inc
root@F0rGeEk:~# touch /opt/nessus/var/nessus/plugin_feed_info.inc
修改plugin_feed_info.inc文件
通過vi或者Text Edit針對兩處的plugin_feed_info.inc進行編輯,將下列內容輸入其中並保存。
PLUGIN_SET = "202005142245";
PLUGIN_FEED = "ProfessionalFeed (Direct)";
PLUGIN_FEED_TRANSPORT = "Tenable Network Security Lightning";
其中"202005152245"是時間,這個需要根據安裝時間來自行修改。
重啟Nessus
接下來我們重新啟動Nessus服務,然后登陸系統見證奇跡吧。
其中由於我沒有導入license授權文件,所以授權到期時間以及激活碼均顯示N/A。如果介意的話就將圖1.6中的license文件復制到/opt/nessus/sbin目錄下,如果沒有下載license文件那么在/opt/nessus/sbin目錄下創建nessus.license文件,然后將圖1.6中的license碼復制並保存至該文件然后執行nessuscli fetch --register-offline nessus.license即可。
注:
這里我們需要注意,每次更新完成后plugin_feed_info.inc文件都會恢復到家庭版的配置(“PLUGIN_FEED = "HomeFeed (Non-commercial use only)"”)。
所以更新完成后需要手動修改plugin_feed_info.inc,這里為了方便我們可以寫一個定期自動更新的腳本來解決這個問題。
#!/bin/bash
rm ~/all-2.0.tar.gz 2&>1 >/dev/null
wget -O "all-2.0.tar.gz" "https://plugins.nessus.org/v2/nessus.php?f=all-2.0.tar.gz&u=a7170375552ec9e9xxxxxxxxxx" && /opt/nessus/sbin/nessuscli update all-2.0.tar.gz
sed -i 's/"HomeFeed (Non-commercial use only)"/"ProfessionalFeed (Direct)"/g' /opt/nessus/var/nessus/plugin_feed_info.inc
sed -i 's/"HomeFeed (Non-commercial use only)"/"ProfessionalFeed (Direct)"/g' /opt/nessus/lib/nessus/plugins/plugin_feed_info.inc
最后通過**crontab**創建一個計划任務,建議每兩個月更新一次即可。之所以建議每兩個月更新一次,其實從以上步驟其實可以看出,我最近一次更新是5月14日,但是實際的更新文件是3月23日的。由此判斷官方並不是每月一更新,所以我們離線更新其實也不用那么頻繁。