NSE 脚本是什么
NSE(nmap scripting engine)是 nmap 的脚本引擎,脚本按功能分为若干类别,可以完成服务信息收集、TLS 配置核查、HTTP 响应头检查等工作。对防御方来说,它最大的价值是低成本拿到一组可核验的配置事实;最大的风险是脚本影响面差异极大:safe 与 discovery 类基本只做读取,intrusive 甚至 dos 类可能改变目标状态或造成服务异常。选用脚本前必须看清它的类别。
基本信息
| 所属工具 | nmap(Linux / macOS / Windows 官方发行版) |
|---|---|
| 脚本类别 | auth、broadcast、default、discovery、safe、intrusive、dos 等 |
| 默认脚本集 | nmap -sC 等价于 --script=default |
| 查看方式 | nmap --script-help <脚本名> 查看说明与类别 |
典型使用场景
- 例行核查 Web 服务安全响应头配置是否齐全
- 核查 HTTPS 服务的协议与套件支持情况,识别仍支持旧协议的实例
- 内网资产识别:读取服务标题与操作系统线索,辅助确认设备类型
- 核查缓存类服务的公开信息,确认未开启认证时是否暴露版本
- 扫描前查看脚本类别,确认不会触发告警风暴或改变目标状态
常用安全核查脚本
常用安全核查脚本
nmap --script http-title,http-headers -p 80,443 192.0.2.10
nmap --script ssl-enum-ciphers -p 443 example.com
nmap --script http-security-headers -p 443 example.com
nmap --script smb-os-discovery -p 445 192.0.2.20
nmap --script redis-info -p 6379 192.0.2.30
# 脚本影响面差异大,生产环境优先选 safe 与 discovery 类别脚本信息查询
脚本信息查询
# 查看脚本类别与说明,确认影响面后再使用
nmap --script-help ssl-enum-ciphers
# 列出本机脚本库中的脚本文件
ls /usr/share/nmap/scripts/ | head
# 默认脚本集(等价于 --script=default)
nmap -sC -p 80,443 example.com
# 按类别执行:仅跑安全类别
nmap --script 'safe and discovery' -p 80,443 example.com常用脚本与用途
| 脚本 | 用途 | 影响面 |
|---|---|---|
| http-headers | 读取响应头,判断中间件与安全头 | 低 |
| http-security-headers | 核查安全响应头缺失项 | 低 |
| ssl-enum-ciphers | 枚举 TLS 协议与套件 | 低,但连接次数较多 |
| smb-os-discovery | 读取 SMB 服务与系统信息 | 低 |
| redis-info | 读取 Redis 基本信息 | 低,需目标端口可达 |
先查脚本类别再执行,是使用 NSE 的基本纪律:--script-help 输出的类别字段直接说明脚本是否会修改目标或造成较大负载。
intrusive 类脚本可能修改目标状态或触发告警,生产环境使用前应先在测试环境评估,并在变更窗口内执行。