# Nessus

#### Tutorials

- [How to Install and Configure Nessus Vulnerability Scanner on Kali Linux](https://www.howtoforge.com/how-to-install-and-configure-nessus-on-kali-linux/)
- [How to install, configure and use Nessus Vulnerability Scanner on CentOS 8](https://www.howtoforge.com/how-to-install-configure-and-use-nessus-vulnerability-scanner-on-centos-8/)
- [Plugin 最新資訊查詢](https://www.tenable.com/plugins)

#### 免費授權版

- 第一次安裝會有 90 天無限制的試用。
- 超過 90 天後的試用，會變成免費授權版。這個有五年的使用期限，而且限定 16 個掃描 IP 的總數量。
- 免費版計算掃描 IP 數量的原則是，只有掃瞄結果有 High(含) 等級以上弱點，這個 IP 才會被計數。

#### Installation

##### Install on RedHat 8

1. 前往官網申請 [Nessus Essentials](https://www.tenable.com/products/nessus/activation-code) 的免費啟動碼。
2. 從官網下載 Nessus 安裝檔 `Nessus-10.1.2-es8.x86_64.rpm`。
3. 先更新作業系統 `dnf update`。
4. 安裝 RPM 檔 `rpm -ivh Nessus-10.1.2-es8.x86_64.rpm`。
5. 登入網頁 `https://server.ip:8834`。
6. 輸入啟動碼與建立登入的帳號密碼。
7. 完成。

##### Install with the docker

DockerHub: [https://hub.docker.com/r/tenableofficial/nessus ](https://hub.docker.com/r/tenableofficial/nessus)

```bash
docker pull tenableofficial/nessus:<version>

docker run --name "nessus-pro" -d -p 8834:8834  -e ACTIVATION_CODE=<activation code> \
-e USERNAME=admin -e PASSWORD=admin tenableofficial/nessus:<version> 
```

#### Update the Nessus 主程式

##### Offline

1. 下載最新版 Nessus : [Download Nessus | Tenable®](https://www.tenable.com/downloads/nessus?loginAttempted=true)  
    NOTE: 如果舊版的是用 RPM 安裝，升級時也必須用 RPM 升級。
2. 將更新檔上傳至 Nessus 主機，並進行更新作業。

以 RPM 方式更新

```bash
rpm -Uvh Nessus-10.4.1-es8.x86_64.rpm
systemctl stop nessusd
systemctl start nessusd
```

##### Online

```bash
/opt/nessus/sbin/nessuscli update
```

##### 檢查目前版號

Nessus Admin &gt; Settings &gt; About

#### Update the plugins  


##### Online

```bash
/opt/nessus/sbin/nessuscli update --plugins-only
```

##### Offline

- [Install Nessus and Plugins Offline (with pictures) - InfosecMatter](https://www.infosecmatter.com/install-nessus-and-plugins-offline-tutorial-with-pictures/)
- [Offline Update Page Details (Nessus) (tenable.com)](https://docs.tenable.com/nessus/Content/OfflineUpdatePageDetails.htm)
- [Install Plugins Manually (Nessus) (tenable.com)](https://docs.tenable.com/nessus/Content/InstallPluginsManually.htm)

For 免費版授權

> NOTE: 原有的 activation code 已經註冊過，就不能重複取得 plugin 的下載連結。必須重新申請一組新的 activation code，再依據下方程序取得最新 plugin 下載連結。

1. 申請一組新的 [Activation Code](https://www.tenable.com/products/nessus/activation-code) (NOTE: 只有使用這個連結，才可以立即收到郵件通知)
2. 從現有 Nessus 主機取得 Challenge Code
3. 用上述的資料透過下述的連結，可以下載最新的 plugin 更新檔，前往: [https://plugins.nessus.org/v2/offline.php](https://plugins.nessus.org/v2/offline.php) (TIP: 網頁除了提供 plugin 更新檔 `all-2.0.tar.gz` 以外，還有授權檔的資訊，不過在這個案例用不上)

取得 Challenge Code (NOTE: 每次重啟系統，Challenge Code 會被重置)

```bash
/opt/nessus/sbin/nessuscli fetch --challenge
```

將 plugin 更新檔上傳至主機並套用

```bash
/opt/nessus/sbin/nessuscli update all-2.0.tar.gz
```

確認 plugin 已更新

Nessus Admin &gt; Settings &gt; About

- Last Updated: 更新的時間
- Plugin Set: 更新後的版本
- Policy Template version: 更新後的版本

注意事項：

1. 套用更新檔指令完成後，系統還需要數分鐘時間進行背景更新作業，可以觀察 CPU 的負載程度來確認是否已完成。
2. 舊的 scan 不會套用新的 plugin，必須先移除再重新建立才會套用。

#### 重新註冊授權

用新的授權檔重新註冊

- [Generating the Custom URL for downloading plugins for an Offline Nessus Installation (tenable.com)](https://community.tenable.com/s/article/Generating-the-Custom-URL-for-downloading-plugins-for-an-Offline-Nessus-Installation)
- [Manage Nessus Offline (Nessus) (tenable.com)](https://docs.tenable.com/nessus/Content/ManageNessusOffline.htm)

#### FAQ

##### 更新 plugin 出現錯誤

> Error: failed to write decompressed tar archive \* Failed to update from all-2.0.new.tar.gz. Invalid manifest.

解決方案：檢查目錄 `/opt/nessus` 是否有足夠可用空間。

##### 修正 plugin #51192(SSL Certificate Cannot Be Trusted)

對於使用自我簽署憑證的網站或服務，可以使用 custom\_CA 功能，將自訂的根憑證，輸入至 Nessus 系統。

> TIP: 根憑證必須是 PEM 格式 BAS64 編碼，內容包含開頭文字 `-----BEGIN CERTIFICATE-----`，與結尾文字 `-----END CERTIFICATE-----` 的密文內容。

Nessus Web &gt; Settings &gt; Custom CA

```
-----BEGIN CERTIFICATE-----
...
...
...
-----END CERTIFICATE-----
```

##### Log4Shell 誤警報事件 

Nessus 的檢測報告裡，許多各式主機或連網裝置，只要有開啟 HTTP 或 HTTPS 網頁介面，都會出現 Plugin [156014](https://www.tenable.com/plugins/nessus/156014) 與 [156016](https://www.tenable.com/plugins/nessus/156016) 的 Log4Shell 漏洞資訊。

這兩個 Plugin 使用了回測 (Callback)的偵測技術，所以 Scanner (Nessus server) 與 Target (Being scanned hosts) 都需要能連外網的 Tenable Controlled Server。

一般企業裡的網路是限制外網存取的，所以會造成系統誤判的情況。

官方文件指引：[Overview of Callbacks in Log4j Remote Detection Plugins The... | Tenable Connect](https://connect.tenable.com/discussions/tenable-research-release-highlights/overview-of-callbacks-in-log4j-remote-detection-plugins-the-/108463)

Nessus 有兩種不同版本，雲端版 ([Tenable.io](http://tenable.io/))與自行託管的地端版。Log4Shell 有兩個無需認證的檢測 Plugin。

1. Plugin [156014](https://www.tenable.com/plugins/nessus/156014) : 地端主機與被掃描主機需要外網存取，僅適用雲端版
2. Plugin [155998](https://www.tenable.com/plugins/nessus/155998) : 雲端主機需要可以存取內部被掃描的主機，僅適用地端版

不適用的 Plugin 可以從管理介面將它排除。