一、 前置说明
官方:漏洞扫描中最常用和强大的是某个”N“开头的漏洞扫描器(nessus),但由于许可证限制,kali中并未安装该漏洞扫描器。取而代之安装了nessus收费之后发起的开源版本openvas。(nessus有免费的的个人许可证,但也不适合kali预装)
官方:但由于占用空间太大,2016.2版本后kali就不再预装openvas了,需要我们自己手动安装。
msfconsole中可以load openvas,但那个只相当一个B/S架构中的客户端,要真能扫描还是得安装openvas作为服务端的。
二、openvas安装
2.1 安装openvas
官方和很多教程都推荐先升级系统再安装openvas,但实际发现安装openvas哪些包要更新的都会自己更新所以不用管直接安装即可,在网速可以的情况下大约要十来分钟
可考虑使用阿里源:deb http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free
apt-get install -y openvas
2.2 初始化openvas
初始化工作包括主要是创建ca证书(控制台https使用)、下载最新的扫描规则(NVT)、创建控制台admin用户、启动openvas等。
一个命令即可,不过没有vpn对于天朝的网络,在下载规则一步可能要一整天。
openvas-setup
如果网络、关机、ctrl+c造成中断,再次运行即可,有类似游戏存档功能不会全都重新下载。
2.3 确认openvas初始化无误
openvas-check-setup
openvas-check-setup会检测openvas-setup各步执行结果是否都正常。
2.4 修改admin密码
openvas-setup会创建admin用户,并在打印的终端中打印其密码;但该密码是随机生成的过于难记,推荐不用管他直接修改admin用户的密码。
比如这里将admin用户的密码修改为abcd1234,随便修改为自己想要的即可,由于修改并不需要认证之前的密码所以不用管原密码是什么。忘记密码时也可以这么改。
openvasmd --user=admin --new-password=abcd1234
2.5 启动openvas并查看端口正确监听
openvas-start
按官方说法和之前的版本的经验,应该是openvasmd监听9390端口,openvassd监听9031端口,gsad监听9392端口。
但实际操作就是如图所示,openvasmd监听9390,gsad监听80(http)和9392(https);openvassd在openvas 9中改走unix domain socket。
2.6 登录openvas
浏览器访问https://127.0.0.1:9392/,将证书添加信任,然后用1.5中修改的用户名密码登录即可
2.7 使用openvas进行扫描
点下Scans菜单下的Tasks菜单,点击左上角的扫描任务创建向导进行创建即可。基本就是输入要扫描的ip即可。
漏洞扫描器基本都是直接扫出机器存在哪些cve漏洞,然后我们只要去找cve相对应的exp就可以利用了。
对攻击者而言这是相当舒服的攻击(最舒服的是扫描漏洞后,扫描器还自带exp进行攻出)。
但就如《Metasploit渗透测试魔鬼训练营》所说的那样,由于扫描过程会发送大量数据包很容易被发现,甚至有可能扫死机器,所这只能是一种白盒扫描方式。
三、修改openvas监听地址
在2.5中我们看到openvas只是监听了127.0.0.1地址,这也许是安于安全考虑,但这意味着只能登录到openvas主机才访问openvas,这对个人使用来讲是不太方便的,我们需要让其监听外部ip。
在2.5中我们使用openvas-start命令启动的,我们从其入手:
使用which定位openvas-start所在位置,可以看到是/usr/bin/openvas-start。
然后查看/usr/bin/openvas-start的具体内容,可以看到是用service启动了三个服务。
service启动服务,那对应的脚本应该就是/etc/init.d目录下的greenbone-security-assistant、openvas-scanner、openvas-manager三个文件。
查看这三个文件,发现其中并没有直接配置的监听地址,但看到三个文件中都有类似的代码片段:
查看/etc/default/greenbone-security-assistant、/etc/default/openvas-scanner、/etc/default/openvas-manager三个文件确实在其中配置的地址。
但是很可惜,kali中修改这些文件中的地址并不起作用。
然后又看到上边有“This file is not used if you are using systemd. The options are hardcoded in the openvas-manager.service file.”的说明。
嗯,kali现在还是systemd,然后当前这个文件也不叫openvas-manager.service(反之,如果不是systemd那修改这三个文件应该是可以的)。
我们用locate看一下openvas-manager.service是什么
结合上下文看来意思就比较明白了,就是新建一个/etc/systemd/system/openvas-manager.service.d/local.conf文件,覆盖/lib/systemd/system/openvas-manager.service文件中的[Service]节区。
实验确认,不能简单地将/lib/systemd/system/openvas-manager.service等文件复制过去就完事,这样无法启动。
新的local.conf文件只认[Service]节区,而且格式只能是/etc/default/openvas-manager等文件在NOTE中所说的格式。
当然最简单地是直接修改/lib/systemd/system/openvas-manager.service等文件就完事,但这里就按官方的建议来。
3.1 修改gsa监听地址
注意--mlisten=127.0.0.1指的是gsa要连接到的manager的地址(is listening on),所以保持127.0.0.1不变
mkdir -p /etc/systemd/system/greenbone-security-assistant.service.d/ #创建配置文件存放目录
cat > /etc/systemd/system/greenbone-security-assistant.service.d/local.conf << EOF
[Service]
ExecStart=
ExecStart=/usr/sbin/gsad --foreground --listen=0.0.0.0 --port=9392 --mlisten=127.0.0.1 --mport=9390
EOF
3.2 修改Manager监听地址
mkdir -p /etc/systemd/system/openvas-manager.service.d/ #创建配置文件存放目录 cat > /etc/systemd/system/openvas-manager.service.d/local.conf << EOF
[Service]
ExecStart=
ExecStart=/usr/sbin/openvasmd --listen=0.0.0.0 --port=9390 --database=/var/lib/openvas/mgr/tasks.db
EOF
3.3 修改Scanner监听地址
这东西还真不太懂怎么改,也没必要改,只是为了证明2.5中所说的Scanner改走unix socket。
3.4 重启openvas完成监听地址修改
按3.1和3.2修改完后,重启openvas即可。
openvas-stop #停止openvas openvas-start #启动vas netstat -anp | head #查看端口监听
可以看到gsa和manager都成功监听0.0.0.0地址。在外部以对外IP进行访问,如下图所示可以成功访问
参考:
https://www.kali.org/tutorials/configuring-and-tuning-openvas-in-kali-linux/
https://www.kali.org/penetration-testing/openvas-vulnerability-scanning/
https://www.kali.org/news/kali-linux-20171-release/