Vuls采用无代理SSH方式,允许您使用多种方法(例如快速扫描和深度扫描)扫描多个操作系统。
译自 Vuls: A Free, Open Source Vulnerability Scanner for Linux,作者 Jack Wallen。
如果您需要扫描网络上的机器以查找漏洞,并且正在寻找最简单的选项之一,那么Vuls是一个不错的选择。
Vuls允许您使用多种方法扫描多个操作系统,例如快速扫描和深度扫描。Vuls的一大优点是它是无代理的,因此您无需担心在需要扫描的每台机器上安装代理。Vuls使用多个漏洞数据库,例如NVD、JVN、OVAL、RHSA/ALAS/ELSA/FreeBSD-SA和Changelog——因此您可以确定,如果存在漏洞,Vuls会发现它。
使用Vuls,您可以进行本地和远程扫描。所有远程扫描都是通过SSH完成的,因此任何目标都必须接受传入的SSH连接才能使其工作。
让我向您介绍安装Vuls的过程。我将在Ubuntu Server 22.04实例上进行演示。我将演示两种不同的Vuls安装方法。
要运行Vuls,您需要一个正在运行的Linux实例和一个具有sudo权限的用户。如前所述,我将在Ubuntu Server 22.04实例上进行演示。两种安装方法都可以使用。
此方法需要更多时间,但它将为您提供最新版本的Vuls。
首先,您需要运行系统的更新/升级。请记住,如果内核已升级,则需要重新启动才能使更改生效,这意味着您需要在可以重新启动的时间进行此操作。
使用以下命令运行更新和升级:
sudo apt-get update && sudo apt-get upgrade -y
完成后,使用以下命令安装必要的依赖项:
sudo apt-get install debian-goodies reboot-notifier -y
完成上述命令后,使用以下命令下载安装程序脚本:
wget https://raw.githubusercontent.com/vulsio/vulsctl/master/install-host/install.sh
使用以下命令授予安装程序脚本可执行权限:
chmod u+x install.sh
使用以下命令运行安装程序:
sudo ./install.sh
系统将提示您接受安装。发生这种情况时,键入“y”并按键盘上的Enter键。安装大约需要2到5分钟才能完成。
安装完成后,使用以下命令验证安装是否成功:
vuls help
您应该会看到帮助文件的内容。
如前所述,此安装方法不会安装最新版本的Vuls,但它肯定更容易,因为标准存储库中有一个Vuls版本。要运行此安装,请返回终端窗口并发出以下命令:
sudo apt-get install vuls -y
允许安装完成,您就可以继续了。
首先,您需要使用以下命令为Vuls创建一个新目录:
sudo mkdir /opt/vuls
使用以下命令进入该目录:
cd /opt/vuls
使用以下命令创建配置文件:
sudo nano config.toml
将以下内容粘贴到新文件中:
[cveDict]
type = "sqlite3"
SQLite3Path = "/opt/vuls/cve.sqlite3"
[ovalDict]
type = "sqlite3"
SQLite3Path = "/opt/vuls/oval.sqlite3"
[gost]
type = "sqlite3"
SQLite3Path = "/opt/vuls/gost.sqlite3"
[metasploit]
type = "sqlite3"
SQLite3Path = "/opt/vuls/go-msfdb.sqlite3"
[servers]
[servers.localhost]
host = "localhost"
port = "local"
scanMode = [ "fast-root" ]
#scanMode = ["fast", "fast-root", "deep", "offline"]
使用以下命令运行配置测试:
sudo vuls configtest
如果配置一切正常,您将在输出中看到类似以下内容:
[Nov 13 17:48:14] INFO [localhost] It can be scanned with fast scan mode even if warn or err messages are displayed due to lack of dependent packages or sudo settings in fast-root or deep scan mode
[Nov 13 17:48:14] INFO [localhost] Scannable servers are below...localhost
现在,我们需要创建一个CVE数据库。确保您位于/opt/vuls
目录中,然后运行以下命令:
sudo gost fetch debian --dbpath /opt/vuls/gost.sqlite3
sudo go-cve-dictionary fetch nvd --dbpath /opt/vuls/cve.sqlite3
sudo goval-dictionary fetch debian 12 --dbpath /opt/vuls/oval.sqlite3
sudo go-msfdb fetch msfdb --dbpath /opt/vuls/go-msfdb.sqlite3
您现在应该会看到几个扩展名为.sqlite3的文件。
让我们使用以下命令对localhost运行漏洞扫描:
sudo vuls scan localhost
扫描完成后,您可以使用以下命令查看结果:
sudo vuls tui
您将看到一个多窗格窗口,显示所有发现的漏洞。
假设您有一台 IP 地址为 192.168.1.100 的 RHEL 9 服务器,并且您想用 Vuls 扫描它。为此,您首先必须使用以下命令下载特定于 RHEL 9 的 OVAL CVE 数据库:
sudo goval-dictionary fetch redhat 9 --dbpath /opt/vuls/oval.sqlite3
因为 Vuls 使用 SSH 并依赖于 SSH 密钥认证,所以您需要生成一个 SSH 密钥:
ssh-keygen
使用以下命令将密钥复制到服务器:
ssh-copy-id USERNAME@192.168.1.100
将上面的 USERNAME
文本替换为远程服务器上的用户名。
然后我们需要编辑 Vuls 配置文件,所以用以下命令打开它:
sudo nano /opt/vuls/config.toml
在文件的底部,添加以下内容:
[servers.rhel]
host = "192.168.10.100"
port = "22"
user = "USERNAME"
keyPath = "/home/USERNAME/.ssh/id_rsa"
scanMode = [ "fast-root" ] # "fast", "fast-root" or "deep"
确保将 IP 地址替换为远程服务器的 IP 地址,并将 USERNAME
替换为远程机器上的实际用户名。
保存并关闭文件。
再次使用以下命令运行配置测试:
sudo vuls configtest
您应该不会看到任何错误。
要在/opt/vuls
目录中运行远程扫描,请发出以下命令:
sudo vuls scan rhel
扫描完成后,使用sudo vuls tui
命令查看结果。
这就是在 Ubuntu Server 22.04 上安装 Vuls 漏洞扫描程序的全部内容。试试这个工具,看看它是否能帮助您发现连接到局域网的机器上的漏洞。