Nmap NSE 资产指纹识别:从脚本输出到资产清单

Nmap NSE 资产指纹识别:从脚本输出到资产清单

Nmap 是网络探测与端口扫描工具,NSE(Nmap Scripting Engine,脚本引擎)是它内置的脚本扩展机制,用于在探测端口的同时识别服务版本、协议细节和已知配置。用 -sV -sC 配合 NSE 脚本,可以把一次扫描直接产出为可交付的资产清单。

简介

资产盘点要的是"可交付",不是"扫得全"。交付物通常是一张表,五列:

地址 端口 服务 版本 备注
10.0.0.12 22 ssh OpenSSH 9.6
10.0.0.12 80 http nginx 1.24.0 标题:内部 Git
10.0.0.58 9100 jetdirect 打印机 web 面板 老设备,需低强度

先定清单长什么样,再倒推用什么参数能产出这几列,最后才决定扫哪个段。

安装

bash 复制代码
# Debian/Ubuntu
apt install -y nmap

# CentOS/RHEL
yum install -y nmap

# 查看 NSE 脚本清单
ls /usr/share/nmap/scripts/ | head
nmap --script-help=default

预期结果 :nmap --version 能输出版本号;脚本目录内存在大量 .nse 文件。

命令使用

日常盘点用得最多的是下面一条:

bash 复制代码
nmap -sV -sC -T4 -p- --open -oX assets.xml 10.0.0.0/24

参数含义:

参数 作用
-sV 探测服务与版本
-sC 运行 default 类脚本
-T4 加速,内网合适;公网降到 -T3
-p- 全端口;赶时间用 --top-ports 1000
--open 只显示开着的端口,减少噪声
-oX 输出 XML,便于后续处理

只想先看个大概,用轻量脚本:

bash 复制代码
nmap -sV --script=banner,http-title,ssl-cert -p 80,443,8080 10.0.0.10

预期结果 :banner 抓原始 banner,http-title 抓网页标题,ssl-cert 抓证书信息,输出里能看到对应字段。三个配合基本能判断一台机器是什么系统、上面跑什么业务。

常用选项

NSE 脚本按类别组织,选之前先判断会不会给目标带来副作用:

类别 代表脚本 用途 风险
default http-title、ssh-hostkey 基础信息收集 低
discovery dns-service-discovery、snmp-info 网络资产发现 中
safe ssl-enum-ciphers 弱加密套件检测 低
auth http-brute、ssh-brute 弱口令检测 高,需授权
vuln 各 CVE 专项 已知漏洞迹象检测 高,需授权
intrusive http-sql-injection 主动注入类检测 高,需授权

default、safe 基本只读;auth、vuln、intrusive 会真的发起登录尝试或利用请求。能否运行这类脚本,取决于授权范围,不是技术问题。

使用示例:从 XML 转成清单

Nmap 的 XML 结构规整,用标准库就能转表:

python 复制代码
import xml.etree.ElementTree as ET

tree = ET.parse("assets.xml")
for host in tree.iter("host"):
    addr = host.find("address").get("addr")
    for port in host.iter("port"):
        if port.find("state").get("state") != "open":
            continue
        svc = port.find("service")
        name = svc.get("name") if svc is not None else "unknown"
        ver = (svc.get("product", "") + " " + svc.get("version", "")).strip() if svc is not None else ""
        print(f"{addr}\t{port.get('portid')}\t{name}\t{ver}")

预期结果:输出"IP / 端口 / 服务 / 版本"四列,可直接贴文档或导 Excel。脚本原始输出(如 http-title 抓到的标题)单独放附录,正文只留能直接看的信息。

注意事项

  • 内网扫描从 -T3 起步,看到老设备多的网段再往下降;网络设备(打印机、交换机、摄像头)单独用 --top-ports 100 低强度扫,避免扫挂管理面板。
  • 不打招呼的内网扫描容易触发 IDS 告警,扫之前先报备时间范围和目标网段。
  • XML 里的服务名不一定准,-sV 也会猜错,重要资产要人工复核。
  • vuln 类脚本的结果只能当"迹象"看,不能当作"确认漏洞"写进报告。
  • 全端口扫描慢时,先 --top-ports 1000 快扫一遍,再对发现的 IP 补全端口。
相关推荐
熊出没2 小时前
AI Agent 生产级架构设计:工具调用与MCP、RAG、安全护栏与评估体系
人工智能·安全·架构设计·rag·ai agent
JCETech_Info3 小时前
自动化产线里测头和对刀仪怎么协同?
自动化·雷尼绍·测头·机床测头·马波斯·blum
GoldenSpider.AI3 小时前
用 AI 改流程之前先做「四桶」体检:9 次返工里 8 次靠规则就能消掉(附 Python 发布前校验器)
人工智能·python·自动化·ai智能体
代码方舟3 小时前
零信任架构实战:基于天远贷前风险报告构建自动化消费信贷资质预审网关
人工智能·架构·自动化
Vex2une3 小时前
PowerShell 发展史:从命令行外壳到跨平台自动化引擎
windows·自动化·azure·powershell·vs code·脚本语言·dsc
山东科恩光电3 小时前
安全地毯材质特性与多场景防护应用及日常维护要点
安全
m0_715674433 小时前
金融数据流转监测排行:从看见到拦截的距离
大数据·网络·安全·网络安全·金融
亚川楼宇自控系统数据中心厂家4 小时前
动环监控系统:机房安全稳定运行的关键保障
安全
学逆向的4 小时前
C 控制台指令
c语言·开发语言·网络安全