工具使用要点60 条

NSE 脚本使用要点

NSE 脚本覆盖侦察、认证与漏洞检查等类别:评估优先 safe/discovery 类别收集信息,利用类脚本不在常规评估使用。

NSE 是什么

NSE(Nmap Scripting Engine)用 Lua 脚本把扫描从“端口是开的吗”扩展到服务识别、配置核查与漏洞探测。脚本按类别归组(auth、broadcast、default、discovery、dos、exploit、external、fuzzer、intrusive、malware、safe、version、vuln),类别决定了它的噪音量与风险,选脚本本质上是选择对目标的影响级别。

基本信息

适用平台Nmap 7.x,脚本目录通常为 /usr/share/nmap/scripts
调用语法--script <脚本名|类别>,参数用 --script-args
自检入口--script-help 看说明,--script-updatedb 更新索引
安全边界safe/discovery 低风险,vuln/intrusive/exploit 需单独授权

典型使用场景

  • 用 ssl-cert、http-title 这类 safe 脚本补充服务识别信息
  • 用 smb2-security-mode 之类的核查脚本确认配置现状
  • 对自建测试环境做 vuln 类脚本的漏洞验证
  • 用 broadcast 类脚本在授权内网段发现设备分布
  • 编写与调试自定义脚本以覆盖内部系统的特殊协议

常用调用示例

常用调用示例
nmap --script-help smb2-security-mode            # 先读脚本说明与依赖,再决定是否执行
nmap -sV --script 'default and safe' -p 80,443 10.0.10.5   # 只跑低风险类别,适合生产网段
nmap --script ssl-cert,ssl-enum-ciphers -p 443 10.0.10.5   # 证书与套件枚举,取证用
nmap --script smb2-security-mode -p 445 10.0.10.0/24       # SMB 签名现状核查

脚本类别与风险

类别用途风险评估
safe无侵入信息收集生产网段可用,仍建议限速
discovery资产与服务发现流量较明显,注意网段范围
version服务版本识别常规,配合 -sV 使用
vuln漏洞探测可能触发告警与防护,需报备
intrusive主动注入类探测可能影响服务,生产禁用
dos/exploit压力与利用类生产环境绝对禁止
--script=all 会把 dos 与 exploit 类脚本一并纳入,这是最常见的事故来源;需要全类别时改用明确组合,例如 'default or safe or discovery'。
脚本结果只说明“现象命中”,不等于漏洞成立:读脚本源码确认它的判据是什么,再决定报告里写确认、疑似还是无法验证。
脚本执行依赖端口探测结果:只写 --script 而没开 -sV 时,部分脚本会因为缺少服务信息而跳过。需要更完整的服务判定时适当提高版本探测强度,代价是扫描时间与流量上升。

易错点

  • 无差别执行 --script all,把 dos 与 exploit 类脚本带进生产,可能造成服务中断或触发应急响应
  • 未读脚本说明就在高价值目标上执行 vuln 类脚本,被防护设备判定为攻击行为
  • 把脚本命中结果直接写成漏洞结论,忽略脚本版本的判据已经过时
  • 在限速严格的网段使用默认并发,导致大量超时误判为端口关闭
  • 脚本索引未更新导致脚本报依赖缺失,却按“无结果”处理
  • 把脚本无输出理解为“没有问题”,实际可能是脚本因缺少服务信息而跳过,应开调试输出确认脚本是否真的执行

数据来源与参考

  • Nmap NSE 官方文档(脚本分类与用法)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌