前置知识: 网络安全

漏洞扫描工具

4 min中级

漏洞扫描工具实战:Nmap 服务与脚本扫描、Nessus/OpenVAS(GVM) 任务化扫描、报告研判与 CVSS 漏洞管理闭环。

1. 扫描器如何工作

漏洞扫描器的通用流水线,理解它才能解读与质疑扫描结果:

flowchart LR
    A[主机发现<br>ping/ARP/TCP ping] --> B[端口扫描<br>TCP/UDP]
    B --> C[服务与版本识别<br>banner+指纹]
    C --> D[漏洞匹配<br>插件/脚本/签名]
    D --> E[可选验证<br>safe checks]
    E --> F[报告与评分]

三类角色分工:Nmap 负责发现层(主机/端口/服务/NSE 脚本探测); Nessus/OpenVAS(GVM) 负责漏洞层(插件库对版本与配置做 CVE 匹配); 专用工具(Nuclei/Nikto 等 Web 向)见 024-VulnerabilityScan 的专项介绍。

授权提醒:扫描必须落在书面授权范围内(IP 段、时间窗、扫描强度),否则在多数司法辖区 构成违法或侵权行为。

2. Nmap:发现与脚本探测

2.1 端口与服务

# 快速存活发现(内网可用 ARP,跨网段用 TCP ping)
nmap -sn 192.168.1.0/24

# SYN 半开扫描:速度快、日志痕迹少(需 root)
sudo nmap -sS -T4 --top-ports 1000 192.168.1.10

# 版本与系统识别
sudo nmap -sV -O --version-intensity 5 192.168.1.10

# 输出三种格式:普通/可 grep/XML(供导入 Nessus/报告)
sudo nmap -sV -oA scan-20260901 192.168.1.10
常用参数作用备注
-sS/-sTSYN 半开 / 全连接无 root 退化为 -sT
-sV服务版本探测版本是 CVE 匹配的输入
-sUUDP 扫描慢,聚焦 DNS/SNMP/NTP 等
-T0..5时序模板-T4 内网常用,公网用温和档
-p-全 65535 端口全量盘点时必用

2.2 NSE 脚本引擎

NSE 让 Nmap 具备轻量漏洞探测能力(不替代专业扫描器):

nmap --script vuln 192.168.1.10                 # vuln 类别:已知 CVE 探测
nmap --script smb-vuln-ms17-010 -p445 192.168.1.10   # 定向:永恒之蓝
nmap --script http-enum -p80,443 example.com    # Web 路径枚举
nmap --script ssl-enum-ciphers -p443 example.com     # TLS 套件审计

深入用法(时序调优、防火墙规避、输出解析)见 038-NmapScan。

3. Nessus:任务化漏洞扫描

Tenable 的商业扫描器,插件库大、误报率低,Essentials 版免费供个人小规模使用。

典型工作流:
1. Policies(策略):选择模板(Basic Network Scan / Credentialed Patch Audit /
   Web Application Tests),配置并发与超时
2. Scans(任务):指定目标、计划(周期扫描)、通知
3. 凭据扫描(关键):提供 SSH/SMB 只读凭据 → 从「看版本猜漏洞」升级为
   「登录盘点补丁级」,误报大幅下降
4. 报告:按主机/漏洞两视角导出 PDF/CSV,可自定义合规模板

凭据扫描与否是结果质量的分水岭:非凭据扫描对打满补丁但版本号未变的发行版 (如 RHEL backport)会大量误报;凭据扫描直接读取补丁号,结果可信度接近事实。

4. OpenVAS/GVM:开源替代

OpenVAS 已并入 GVM(Greenbone Vulnerability Management)框架,扫描能力(NVT 网络漏洞测试) 与 Nessus 同构,许可证宽松,适合预算敏感与自定义集成。

# Kali 快速安装
sudo apt install gvm && sudo gvm-setup      # 首次初始化较久,生成 admin 口令
sudo gvm-start

# 同步 NVT 漏洞签名库(务必保持最新)
sudo gvm-feed-update

# 命令行创建任务并启动(gvm-cli)
gvm-cli socket --xml '<authenticate><credentials><username>admin</username>
  <password>PASS</password></credentials></authenticate>'
gvm-cli socket --xml '<create_target><name>lab</name><hosts>192.168.1.10</hosts></create_target>'

与 Nessus 取舍:插件时效与准确度 Nessus 占优;成本与可定制性 GVM 占优。 国内团队亦可用绿盟 RSAS 等商采设备,方法论一致。命令速查见 055-OpenVASCommands。

5. 从扫描结果到漏洞管理

扫描器的输出只是起点,漏洞管理是持续流程:

flowchart LR
    A[周期/触发式扫描] --> B[去重与验证<br>剔除误报]
    B --> C[风险排序<br>CVSS+资产价值+在野利用]
    C --> D[修复计划<br>补丁/配置/缓解]
    D --> E[复测确认]
    E --> F[指标与报告<br>SLA 达成率]
    F --> A

5.1 CVSS 评分怎么读

CVSS v3.1 由三组指标构成:基础分(利用难度与影响,0-10)、时间分、环境分。 读报告时优先看向量的这几个维度:

AV:N 攻击向量=网络(可远程利用)
AC:L 利用复杂度=低
PR:L 所需权限=低          # PR:N(无需权限)更危险
UI:N 用户交互=无
C:H/I:H/A:H 机密性/完整性/可用性影响
示例:AV:N/AC:L/PR:N/UI:N → 网络可达、零交互 → 通常 9.x Critical

5.2 排序不能只看分数

升权因素:
  - 出现在 CISA KEV(已知被在野利用漏洞目录)
  - 暴露面:公网可达 > 内网 > 无网络路径
  - 资产重要性:域控/核心数据库 > 测试环境
  - 有公开 EXP/POC

降权因素:
  - 仅内网且分段隔离、无横向路径
  - 厂商确认不适用(发行版 backport 已修复 → 误报)
SLA 参考线:Critical 7 天 / High 30 天 / Medium 90 天(按行业合规收紧)

5.3 误报处理三步法

1. 核对版本号是否被发行版「回移」:apt changelog <pkg> / rpm -q --changelog <pkg>
2. 查看 Nessus 插件中的「Solution/See Also」与检测逻辑(插件号查 Tenable 官网)
3. 受控复现:在测试机部署同版本验证,确认后在扫描器标记例外并注明依据

6. 常见陷阱

陷阱事实
用生产环境跑高强度全端口扫描老旧设备(打印机/PLC)可能被扫宕机,先监控模式试点
只看高危数量汇报无在野利用的内网中危可能不如一个公网 Critical 紧急
扫描器自己不更新插件/NVT 过期等于拿着旧地图找新大陆
凭据扫描凭据长期不变扫描凭据也是攻击目标,纳入轮换与最小权限
把「修复」等同于「装补丁」补丁、配置、缓解(虚拟补丁/WAF 规则)三条路都算修复

小结

  • 初学者要点:流水线四步(发现→端口→服务→漏洞匹配);Nmap 管发现与轻量探测, Nessus/GVM 管任务化漏洞扫描;读报告先看 CVSS 向量(远程、零权限、零交互最危险), 再结合暴露面与在野利用排序。
  • 进阶注意:凭据扫描显著降低误报(应对发行版 backport);修复排序引入 CISA KEV 与资产价值;把复测与 SLA 达成率作为运营指标;扫描行为本身受授权约束,强度、 范围、时间窗都要写进测试授权书。