亂入!挑戰者出現
我們今天要來架一台OpenVAS(Greenbone)弱點檢測平台
原因等明天文末就會知道了,總之我們來架設一下吧
雖然我通常一律推薦使用容器方式
但今天 OpenVAS 的架設我們會安裝在本機上
然後我在範例中安裝的又是另一台Kali Linux虛擬機上
安裝的指令流程如下
# 更新來源與安裝
sudo apt update
sudo apt install gvm
# 如果有跳出提示要你autoremove,就執行這行
sudo apt autoremove
# 設置gvm,會花費很久很久的時間,最後會顯示一段密碼 可以記下來
sudo gvm-setup
# 確認一下安裝有沒有問題
sudo gvm-check-setup
# 更新feed (這個亦可省略)
sudo gvm-feed-update
# reload
sudo systemctl daemon-reload
# 啟動
sudo gvm-start
# --- 到這邊應該是可以正常啟動服務使用 ---
# 以下是補充的指令
# 如果需要更新密碼
sudo gvmd --user=admin --new-password=password
# 要創帳號或更新密碼也可以用
sudo runuser -u _gvm -- gvmd --user=username --new-password=password
sudo -E -u _gvm -g _gvm gvmd --user=username --new-password=password
# 更新資料庫 (會跑很久)
sudo gvm-stop
sudo runuser -u _gvm -- greenbone-nvt-sync --rsync
sudo runuser -u _gvm -- greenbone-scapdata-sync --rsync
sudo runuser -u _gvm -- greenbone-certdata-sync --rsync
sudo systemctl daemon-reload && sudo gvm-start
[*] User created with password '7e3e3e16-193f-41d1-bbca-6890476d1334'.
訪問
https://127.0.0.1:9392
用admin跟密碼登入即可
如果在網路上找到一些資訊跟指令發現沒有作用
然後指令是跟 openvas 相關,或是文章比較舊的
很可能是因為 OpenVAS 改名的緣故
他產品從原本的 OpenVAS 改名成 Greenbone Vulnerability Management(GVM)
原本一些指令幾乎都改了
像是原本使用 openvas setup,現在要使用 gvm-setup
如果有遇到監聽 IP 問題
需要更改監聽的 IP
#要修改此檔案
/usr/lib/systemd/system/gsad.service
#指定如下
sudo sed -e 's/127.0.0.1/0.0.0.0/g' /usr/lib/systemd/system/gsad.service -i
sudo systemctl daemon-reload && sudo gvm-start
# 查看一下目前系統上用哪些版本
sudo pg_lsclusters
# 把不需要的停用,假設我只需要16
sudo pg_dropcluster 14 main --stop
sudo pg_dropcluster 15 main --stop
# 暫停服務
sudo service postgresql stop
# 去修改 postgresql 監聽的 port 為 5432
vim /etc/postgresql/16/main/postgresql.conf
# 重啟
sudo systemctl restart postgresql
我們來介紹一下Greenbone的架構
這張圖是 20.08 與 21.04 的
但 22.04 其實差不多也是一樣的架構
會選用這張圖是看起來比較完整的
我們從最中間開始看,因為他算是核心組件,整個架構當中的總指揮官。中間的 Greenbone Vulnerability Manager Daemon(gvmd)是一個中央的服務,負責將漏洞掃描的結果整合到漏洞管理平台當中。同時 gvmd 透過 OSP 協定控制 OpenVAS Scanner。
gvmd 服務本身有基於 XML 的無狀態協定 GMP,這個算是很重要的一個地方,後續會提到原因。然後 gvmd 也負責管控資料庫(安裝過程當中也會安裝PostgreSQL),各項的設定資訊與掃描結果也會被儲存在這個資料庫。使用者的權限,群組與角色的權限控管也由 gvmd 管理。
接著右側的 GSA,其實就是我們看到的管理介面,我們可以透過瀏覽器來查看的 WEB 介面。算是一般使用者與該架構主要的溝通操作管道。我們在 GSA 進行的操作,GSA 會透過 GMP 協定來與 gvmd 溝通。
接著我們來談 OpenVAS Scanner,廣義上的 OpenVAS Scanner 是整組掃描引擎跟資料庫,包含了 ospd-openvas 以及 openvas-scanner(這邊用小寫加上dash來稍微區分),也就是圖中兩個淺綠色的圓圈,還有其他 VTs、SCAP、CERT 整組都算。狹義上的話也可以單指 openvas-scanner,僅負責執行檢測的掃描器。
在 Greenbone 架構中,OpenVAS Scanner 才是負責對於目標系統進行弱點掃描(VT)的部分,可以說是掃描動作的核心。OpenVAS Scanner 會透過與漏洞資料庫的數據去識別目標系統當中的已知弱點,並產生相關的結果。
OpenVAS Scanner 當中的 ospd-openvas 是一個實作 OSP(Open Scanner Protocol)協定的伺服器,OSP 也是基於 XML 的協定。gvmd 和 ospd-openvas 和 openvas-scanner 之間也是透過 OSP 來通訊。gvmd 會透過 OSP 協定來控制 ospd-openvas。包含控制掃描器的啟動、停止和結束,以及ospd-openvas 將掃描結果傳輸到 gvmd。
最主要的就上面提及的幾個部分,然後其他有其他地方要補充。
第一個是架構圖的左上方,有個黑色圓圈的 OSP Scanner,
這個是使用者可以自行開發外部的掃描引擎,使用 OSP 協定與 gmvd 串接,
以下的 Github 有 OSP 框架範例,但目前已經停止維護,我也不知道這個功能現在是否還能使用。
https://github.com/greenbone/ospd-example-scanner
右上方的就是我們的瀏覽器,沒甚麼特別好多說的,
也就是說我們可以透過瀏覽器訪問 GSA 而已,算是一般使用者正常操作流程。
中間上方的是 GMP Client,剛剛有提到其實可以透過 GMP 協定與 gvmd 溝通,
還有特別說這個很重要,為什麼呢?
因為在瀏覽器上執行操作其實是效率還是偏低的,
如果今天工具或平台沒有提供 CLI 或是 API 的方式控制,
這樣我們很難去做到一個自動化。
但 Greenbone 還不錯,
這邊 Clinet 跟 Server 之間其實可透過 CLI 的方式利用 GMP 控制 gvmd,
這樣我們就可以寫腳本來去進行操作,其實會有效率很多。
Greenvbone 官方其實就有提供了 gvm-tools 來幫助我們進行遠端控制 gvmd,
也有提供許多自動化的腳本參考。
腳本是使用 python 所撰寫,方便使用者去修改。
但底層其實就是 GMP(和連接後端的 OSP 協定),
所以如果知道協定格式,不管要用甚麼語言去撰寫程式和腳本都可以。
再來是這張圖沒有的東西XD
叫 Notus Scanner,位置會在 ospd-openvas 之後,不直接與 openvas-scanner,但會使用到 openvas-scanner 掃描的結果資料。Notus Scanner 是一個全新的掃描引擎,於2021發布,這邊附上介紹的文章
https://www.greenbone.net/en/blog/new-vulnerability-scanner-notus/
大概看了一下,我的白話解釋:
邏輯上是說,因為弱點掃描許多是基於版本的偵測,所以在 OpenVAS Scanner 在常規的掃描完成之後,會於伺服器的本地執行 Notus Scanner 去進行版本與弱點的比對。這樣的方式可以加快整個弱點掃描過程的速度。
接著是左下角的,很深的坑(?)
反正就是三個東西弱點掃描需要用的資料庫
這些東西要持續更新才可以,不然你掃不到最新的弱點
最左側 Target Systems 就是我們要去檢測的主機啦!今天只安裝跟介紹一下架構,明天會進行操作的設定,然後對我們的 Wazuh Sever 主機進行檢測。
心聲備註:
連假要結束了,但我的連假都奉獻給資安了
今年沒吃烤肉,希望明年可以把今年烤肉的份吃回來 QQ