第四章:漏洞扫描技术——Nessus、OpenVAS与AWVS实战
各位同学,欢迎来到漏洞扫描这一章。说实话,在渗透测试的整个流程里,扫描阶段是最容易让人「上头」的——你想想看,一堆工具跑完,几千条告警砸脸上,新手直接懵圈。我当年第一次用Nessus扫内网,看到满屏的红色高危,差点以为整个公司都要被我搞瘫痪了。后来才发现,一半是误报。
这一章,我们就来聊聊三款主流扫描器:Nessus、OpenVAS和AWVS。我会把安装、配置、使用以及最重要的——报告解读与误报分析,都掰开揉碎了讲清楚。
4.1 Nessus:商业扫描器的标杆
Nessus这玩意儿,说白了就是漏洞扫描界的「瑞士军刀」。功能全、插件多、报告漂亮。我个人习惯用它做内网资产的全面体检。
4.1.1 安装与激活
安装其实不复杂,但有几个坑我得提前说。
# 下载(以Debian系为例)
wget https://www.tenable.com/downloads/api/v2/pages/nessus/files/Nessus-10.7.3-debian10_amd64.deb
# 安装
dpkg -i Nessus-10.7.3-debian10_amd64.deb
# 启动服务
systemctl start nessusd
systemctl enable nessusd
# 访问Web界面
https://your-ip:8834
第一次访问时,会让你选择部署模式。这里注意:选「Managed Scanner」还是「Standalone」? 如果你只是个人做渗透测试,选Standalone就行。我在项目里见过有人选了Managed Scanner,结果死活连不上Tenable.io,折腾了半天才发现选错了。
4.1.2 策略配置与扫描
登录进去后,第一件事是创建扫描策略。我个人习惯这样配:
| 配置项 | 推荐值 | 说明 |
|---|---|---|
| 扫描类型 | Basic Network Scan | 最通用的全端口扫描 |
| 端口范围 | 1-65535 | 别偷懒只扫常见端口,很多漏洞藏在高端口 |
| 扫描速度 | Normal | 生产环境建议用Slow,避免打挂业务 |
| 插件组 | 全部启用 | 除非你知道自己在干什么,否则别乱关 |
嗯,这里要特别说一下扫描速度。我遇到过一位学员,在客户生产环境用「Fast」模式扫数据库服务器,结果Oracle直接挂了。客户差点让我们赔钱。所以记住:生产环境,慢就是快。
4.2 OpenVAS:开源界的良心
如果你预算有限,或者想自己折腾,OpenVAS是个好选择。它现在叫Greenbone Vulnerability Management(GVM),但大家还是习惯叫OpenVAS。
4.2.1 安装与初始化
安装OpenVAS比Nessus麻烦一点,但也不是什么难事。
# 安装(Kali自带,其他系统需手动)
apt update && apt install -y openvas
# 初始化(这一步会下载插件库,大概要20分钟)
gvm-setup
# 检查安装状态
gvm-check-setup
# 启动服务
gvm-start
初始化这一步,我建议你找个网速好的时候做。有一次我在客户现场,用手机热点下载插件库,结果下了两个小时还没完,场面一度非常尴尬。
greenbone-nvt-sync。这招我用了好几年,屡试不爽。
4.2.2 配置扫描任务
登录OpenVAS的Web界面(默认https://127.0.0.1:9392),你会看到它的配置逻辑和Nessus不太一样。它把扫描拆成了几个概念:
- Target:你要扫的目标(IP、域名、网段)
- Task:扫描任务(关联Target和扫描配置)
- Scan Config:扫描配置(决定扫哪些漏洞)
- Report:扫描报告(结果汇总)
我个人习惯这样创建任务:先建Target,再选一个「Full and fast」的扫描配置,最后创建Task。为什么选Full and fast?因为它兼顾了全面性和速度。你想想看,如果选「Full」模式,一个C段扫下来可能要一整天,谁受得了?
4.3 AWVS:Web应用的专属猎手
Nessus和OpenVAS虽然也能扫Web,但术业有专攻。AWVS(Acunetix Web Vulnerability Scanner)才是Web应用扫描的王者。
4.3.1 安装与破解(仅供学习)
AWVS是商业软件,价格不菲。但作为学习用途,我们可以用社区版或者...嗯,你懂的。
# 下载AWVS(以Linux版为例)
wget https://s3.amazonaws.com/acunetix-wvs/.../acunetix_23.9.230928145_x64.sh
# 赋予执行权限
chmod +x acunetix_23.9.230928145_x64.sh
# 安装
./acunetix_23.9.230928145_x64.sh
安装过程中会让你设置Web界面端口(默认3443)和管理员密码。这里我建议端口别改,但密码一定要复杂。为什么?因为AWVS的Web界面直接暴露在网络上,如果密码太弱,别人就能直接控制你的扫描器,那乐子就大了。
4.3.2 扫描Web应用
AWVS的扫描配置非常细致。我一般这样设置:
- 目标URL:输入完整的URL,包括协议(http/https)
- 扫描模式:选「Full Scan」
- 登录设置:如果目标需要登录,配置自动登录脚本
- 爬虫设置:限制爬取深度,避免爬得太深触发WAF
4.4 扫描报告解读与误报分析
好了,工具跑完了,报告出来了。然后呢?这才是真正的考验。
4.4.1 报告结构
不管是Nessus、OpenVAS还是AWVS,报告结构都大同小异:
| 部分 | 内容 | 我的建议 |
|---|---|---|
| 执行摘要 | 漏洞总数、风险等级分布 | 给老板看的,别太较真 |
| 漏洞列表 | 每个漏洞的详细信息 | 重点看这里,逐条分析 |
| 漏洞详情 | 描述、影响、修复建议 | 修复方案的参考依据 |
| 附录 | 扫描参数、时间戳等 | 用于复现和审计 |
4.4.2 误报分析——这才是真功夫
说实话,扫描器报出来的漏洞,有一半可能是误报。为什么?因为扫描器是通过「特征匹配」来判断漏洞的,它不会思考上下文。
举个例子:Nessus报了一个「Apache HTTP Server 2.4.49 路径遍历漏洞」(CVE-2021-41773)。但你一看,目标服务器明明打了补丁。为什么会误报?因为Nessus只是检测了Apache的版本号,而版本号可能被管理员手动修改过。
我总结了一套误报分析的流程:
- 看证据:扫描器有没有提供PoC或请求/响应数据?
- 手动验证:用Burp Suite或curl复现一下漏洞
- 看上下文:这个漏洞在目标环境下是否真的可利用?
- 查补丁:目标系统是否已经安装了安全更新?
- 问业务:这个服务是不是业务必须的?有没有其他缓解措施?
4.4.3 如何降低误报率
想减少误报?我有几个小技巧:
- 更新插件库:Nessus和OpenVAS每周都有新插件,及时更新能减少很多已知问题的误报
- 配置认证扫描:给扫描器提供SSH或Windows凭据,让它能登录系统内部检查,准确率会高很多
- 调整扫描策略:有些扫描项在特定环境下就是误报,可以手动禁用
- 交叉验证:用Nessus扫一遍,再用OpenVAS扫一遍,对比结果。两个工具都报的漏洞,基本就是真的了
好了,这一章的内容就到这里。扫描工具只是手段,真正的价值在于你如何解读报告、如何从海量告警中找出真正的威胁。下一章,我们会进入漏洞利用阶段,到时候你会感谢今天认真做扫描的自己。
记住:扫描做得好,利用没烦恼。