渗透测试——情报收集阶段——漏洞扫描(OpenVAS)_openvas单机更新漏洞库-程序员宅基地

技术标签: Metasploit 渗透测试  

漏洞扫描原理与漏洞扫描器

网络漏洞扫描指的是利用一些自动化的工具来发现网络上各类主机设备的安全漏洞,这些自动化工具通常称为漏洞扫描器。

根据应用环境的不同,漏洞扫描通常可分为:黑盒扫描 和 白盒扫描。

  • 黑盒扫描:一般是通过远程识别服务的类型和版本,对服务是否存在漏洞进行判定。
  • 白盒扫描:在具有主机操作权限的情况下进行漏洞扫描。

白盒扫描的结果更加准确,但一般来说它所识别出的漏洞不应当作为外部渗透测试的最终数据,因为这些漏洞由于防火墙和各类防护软件的原因很可能无法在外部渗透测试中得到利用。而且在渗透测试工作中,一般没有机会获得用户名和口令来登录用户计算机,并使用相关安全工具进行白盒扫描。因此更多的时候需要使用黑盒扫描技术,对远程的主机进行漏洞评估。

漏洞扫描器是一种能够自动应用漏洞扫描原理,对远程或本地主机安全漏洞进行检测的程序。它是一个高度自动化的综合安全评估系统,继承了很多安全工具的功能。漏洞扫描器一般会附带一个用于识别主机漏洞的特征库,并定期对特征库进行更新。


OpenVAS 漏洞扫描器

OpenVAS 是类似 Nessus 的综合性漏洞扫描器,可以用来识别远程主机、Web应用存在的各种漏洞。在 Nessus 商业化不再开放源代码后,在它的原始项目中分支出 OpenVAS 开源项目。OpenVAS 使用 NVT (Network Vulnerabilty Test,网络漏洞测试) 脚本多种远程系统 (包括 Windows、Linux、UNIX 以及 Web 应用程序等) 的安全问题进行检测。

OpenVAS 的主要功能模块
OpenVAS的主要功能模块

配置OpenVAS

在本文展示的 BT5 环境中已经预装了 OpenVAS 网络漏洞扫描工具,但在使用前需要进行一些配置

① 生成 OpenVAS 运行时所需的证书文件

openvas-mkcert -q
openvas-mkcert-client -n om -i

② 升级 NVT 库
openvas-nvt-sync

③ 对 OpenVAS 的扫描引擎进行一些初始化的操作

openvassd
openvasmd --migrate
openvasmd --rebuild

④ 使用 openvasad 命令添加一个管理员角色的 OpenVAS 登录用户(用户名为 admin)
openvasad -c 'add_user' -n admin -r 'Admin'

⑤ 启动OpenVAS Scanner(若端口已被占用可更换)
openvassd --listen=127.0.0.1 --port=9391

⑥ 启动 OpenVAS Manager
openvasmd --database=/usr/local/var/lib/openvas/mgr/tasks.db --slisten=127.0.0.1 --sport=9391 --listen=0.0.0.0 --port=9390
注:sport 应与启动 OpenVAS Scanner 时设置的 port 一致

经过以上 6 步,就可以使用 OpenVAS 插件、OpenVAS Cli 或者 GreenBone Security Desktop(GSD)等,来对 OpenVAS网络扫描服务进行管理和使用了。注意需要使用上面建立的 admin 用户来登录 OpenVAS 服务端。

如果需要将自己的 OpenVAS 与网络上其他渗透测试小组成员共享,可以使用 B/S 架构的客户端程序 GSA (Greenbone Security Assistant)。但使用前需要通过以下命令来启动 GSA 服务
gsad --listen=0.0.0.0 --port=9392 --alisten=127.0.0.1 --aport=9393 --mlisten=127.0.0.1 --mport=9390 --http-only
然后在浏览器中输入 http://localhost:9392 访问 GSA,就可以开始使用 OpenVAS了。

可以把启动 OpenVAS 的相关 Shell 命令写成一个 Shell 脚本文件,这样每次使用 OpenVAS 时只需要运行脚本即可。使用文本编辑器生成文件 start-openvas.sh,并保存在默认的 root 根目录下。其内容示例如下:

openvas-nvt-sync
openvassd --listen=127.0.0.1 --port=9391
openvassd --listen=127.0.0.1 --port=9393
openvasmd --database=/usr/local/var/lib/openvas/mgr/tasks.db --slisten=127.0.0.1 --sport=9391 --listen=0.0.0.0 --port=9390
gsad --listen=0.0.0.0 --port=9392 --alisten=127.0.0.1 --aport=9393 --mlisten=127.0.0.1 --mpost=9390 --http-only

然后在终端中输入 chmod +x start_openvas.sh

下次重新启动 BT5 系统时,可以直接在终端中输入如下命名启动 OpenVAS:
./start_openvas.sh


查找特定服务漏洞

OpenVAS 这类通用漏洞扫描器是一种高度自动化的工具,只需将它接入网络中,它便能够自动的通过“全面撒网”的方式来获取网络中尽可能多的安全漏洞,在方便快捷的同时,它也存在如下不可避免的问题:

  • 扫描过程过于“简单粗暴”
  • 在一些特殊的环境中具有“杀伤性”,比如对一些包含大量陈旧设备的局域网进行扫描时,很可能会造成重要网络设备瘫痪
  • 扫描结果存在漏报现象

因此,不应当把漏洞扫描器的结果当做“救命稻草”,如果漏洞扫描的结果不能满足要求,或是网络中没有使用漏洞扫描器的条件,那么应该使用一些针对性扫描工具来进行漏洞检测。

Nmap 是最常用到的一种针对性扫描工具。
在这里插入图片描述
通过端口扫描可以得知,目标主机 10.10.10.130 开启了 445 端口,那么就有可能启用了 SMB 服务,则可以使用 Nmap 的 SMB 服务扫描漏洞模块对其进行探测。输入命令:nmap -PO --script=smb-check-vulns 10.10.10.130
在这里插入图片描述
可以看到,Nmap 扫描结果显示目标主机上的 SMB 服务包含 MS08-067 漏洞。
Nmap目前集成了大量的扫描脚本,包括针对特定漏洞的扫描,有针对性的信息获取与枚举,各种协议认证口令的猜解,以及针对特定应用程序的攻击脚本。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_43915762/article/details/86773765

智能推荐

IntelliJ IDEA 如何创建一个 Java 项目_idea 创建 java 项目-程序员宅基地

文章浏览阅读10w+次,点赞164次,收藏461次。使用Intellij IDEA快速创建一个Java项目。Intellij IDEA(简称IDEA),是Java语言开发的集成环境,IDEA在业界被认为是最好的Java开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE支持、各类版本工具、Junit、CVS整合等方面的功能都值得称赞。_idea 创建 java 项目

RSA算法总结(数学知识/CTF题型)_rsa ctf-程序员宅基地

文章浏览阅读6.1k次,点赞5次,收藏35次。1.RSA简介_rsa ctf

URL转换成IP的过程_url变成ip-程序员宅基地

文章浏览阅读6.3k次,点赞6次,收藏15次。【程序人生编者按】对于互联网,人们总是高谈阔论,却很少有人愿意去了解电脑、手机、电视这些设备到底是如何被“连接”起来的。本文通过“我”,一个普通的网络请求的视角,给大家介绍下“我”的工作流程是如何的。人们动动手指,点点鼠标,图片、视频便顺理成章地即时显示在屏幕上。只是,这一切并非理所应当,五光十色的互联网世界之下,是我们在夜以继日地工作。我是一个普通的网络请求。我很渺小,但始终都在履行责..._url变成ip

Java值传递之swap()方法不能交换_swap java 原生-程序员宅基地

文章浏览阅读5.6k次,点赞4次,收藏9次。自己写了一个Swap测试类,代码如下:public class Swap{ public static void main(String[] args) { int c = 3; int d = 5; swap(c, d); System.out.println("c: " + c + " d: " + d);_swap java 原生

android中对自定义View的onMeasure()方法的理解_android开发自定义view onmeasure()-程序员宅基地

文章浏览阅读363次。转载处 http://m.blog.csdn.net/article/details?id=5061467程序员宅基地android中对View的onMeasure()方法的理解发表于2016/1/31 15:44:13 1090人阅读分类: android 在android开发中,很多人对自定义View是望而生畏,我也一样,但这又_android开发自定义view onmeasure()

java api使用心得_Java中使用的API总结-程序员宅基地

文章浏览阅读373次。Java API是JDK所提供的使用类,这些类将底层的代码给封装起来了。Object类是java语言中的根类,它所描述的所有方法子类都可以使用,所有类在创建对象的时候,最终找的父类就是Object。在Objec类中,最常见的就是euqals方法和toString方法。equals方法用于比较两个对象是否相同,实质是比较两个对象的内存地址。在复写Object中的equals方法时,一定要注意publ..._java常用api的应用实验心得

随便推点

Java的数学Math模块_java没有名称为math的模块-程序员宅基地

文章浏览阅读665次。用Java算一些简单的数学公式。_java没有名称为math的模块

背篼酥课堂第五课--乐为物联网 nodemcu_csdn 背篼酥-程序员宅基地

文章浏览阅读444次。乐为入门注册 就不说了直接上学习链接见:http://note.youdao.com/noteshare?id=2f887f249fb7133b7fd96b359b7cc044https://www.lewei50.com/dev/md?book=lewei&path=quickstart1乐为api乐为开发案例乐为物联平台,开源wifi 温度计,温湿度计用No..._csdn 背篼酥

[位运算]位运算的4个简单应用_cpp位运算-程序员宅基地

文章浏览阅读991次。1. 不用任何比较判断两个数中大的那个数我们将两个数做差,得到另一个数,判断这个数的符号位就可以了。当然,不能直接使用判断语句,所以我们使用位运算来操作。2. 两个相同的数异或结果等于0。就这道题而言,在运算过程中会产生一个中间值,即a与b的异或结果,a异或b再异或b就会等于a,如果第二次异或a就会等于b。所以直接三个异或就可以搞定3. 整数的二进制中有多少个1每次循环采用n&=(n-1)..._cpp位运算

ExifInterface 在获取图片经纬度为null或者0的问题_exifinterface 经纬度读不出来-程序员宅基地

文章浏览阅读413次。最近公司项目需要一个读取系统相册里图片中的经纬度信息,但是通过编码实现后在不同设备上测试时,发现在小米9上的系统版本为安卓10,可以正常读取,但是在Redmi K50pro(系统版本为安卓12)、小米12(系统版本为安卓13)上面获取不到图片的经纬度信息,且图片在系统相册里都能正常查看拍摄的位置信息。添加 权限。最终经过排查发现了问题的原因。_exifinterface 经纬度读不出来

SourceTree 重置当前分支到此次提交 和 回滚提交-程序员宅基地

文章浏览阅读3.9k次,点赞3次,收藏4次。SourceTree 重置当前分支到此次提交 和 回滚提交_重置当前分支到此次提交

OpenWrt telnetd开启,需要密码和不需要密码的配置_openwrttelnetd 启动-程序员宅基地

文章浏览阅读1.9w次。1. 开启telnet需要_openwrttelnetd 启动