成果分享|[USENIXSecurity2025]功能变更驱动的远程软件版本识别方法

admin 2026-01-13 14:36:42 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 复旦白泽战队由复旦大学系统软件与安全实验室孵化,2018年成立后已获XCTF、全国大学生信息安全竞赛等40余项冠军,并在USENIXSecurity、ACMCCS等顶会发表论文,培养本硕博梯队人才,形成教学-竞赛-科研闭环,持续输出高水平网安成果。 综合评分: 95 文章分类: CTF,安全培训,实战经验,安全建设,其他


cover_image

成果分享 | [USENIX Security 2025] 功能变更驱动的远程软件版本识别方法

原创

复旦白泽战队

复旦白泽战队

2026年1月12日 17:05 上海

在网络安全领域,精准识别远程软件版本是攻防对抗的关键环节——对攻击者而言,它能大幅提升攻击效率、降低被发现风险;对安全研究者来说,它是评估漏洞威胁、推动厂商修复的重要前提。然而,传统版本识别工具过度依赖预定义字符串或模式作为“指纹”,在面对版本混淆、启用认证等防御措施时往往失效,难以满足真实部署场景的需求。

为了解决这一问题,来自复旦大学系统软件与安全实验室的研究团队,提出了一种基于软件功能变更的隐蔽、精准版本识别方法,并实现了原型工具VersionSeek,该工具的整体性能优于现有工具,并通过真实世界大规模扫描实验揭示了现有软件的漏洞威胁态势。

核心痛点:传统方法为何“失灵”?

传统远程软件攻击常依赖暴力尝试,遍历所有可用漏洞进行攻击,不仅浪费大量资源,还容易因频繁访问被目标察觉。而精准的版本信息能让攻击者聚焦于目标版本对应的漏洞,显著提升攻击成功率。

现有版本识别工具主要基于预定义的字符串或模式(如版本关键词、文件哈希、HTML结构等),但这些方法存在缺陷:它们高度依赖“管理员不会修改开箱即用的应用程序的内容”这一假设。当管理员通过混淆版本信息、启用身份认证等方式进行防御时,这些工具的识别效果会大幅下降,甚至完全失效。

更关键的是,部分软件(如Dubbo)本身不暴露任何可用于识别版本的预定义字符串,导致传统工具难以对其进行版本判断。这一现状促使研究团队思考:是否存在一种不依赖默认特征、难以被修改的版本识别依据?

创新思路:从“功能变更”中寻找答案

研究团队发现,软件版本更新的核心是功能变更——包括新增功能、调整现有功能、移除过时功能等。这些功能变更既是软件迭代的根本原因,也会导致不同版本对同一请求产生不同响应,且这种差异难以被人为修改。

以Elasticsearch为例,5.2.0版本新增了内置用户“logstash_system”,当使用该用户名登录时,5.1.2版本会返回“无法认证用户”(实际认为用户不存在),而5.2.0版本则返回“认证失败”(识别到用户但密码错误)。这种因功能变更产生的响应差异,成为了版本识别的“黄金线索”。

基于这一发现,研究团队提出了功能变更驱动的版本识别方法,核心优势在于:

  1. 不依赖预定义字符串或模式,适用性强;
  2. 功能变更带来的响应差异难以被修改,识别鲁棒性更强;
  3. 可覆盖传统工具无法识别的软件(如Dubbo),具有良好的拓展性。

技术实现

VersionSeek通过三大核心模块,实现了从功能特征提取到版本识别的自动化流程。

功能探针生成模块

触发软件的功能变更响应需要构造精准的探针(请求)。研究团队从软件的发布说明(Release Notes)中提取功能变更信息,聚焦新增、调整、移除三类核心功能变更,同时将拉取请求(Pull Requests)和用户手册的上下文信息作为补充,以缓解发布说明中功能特性描述模糊的问题。最后基于检索增强生成(RAG)方法,利用大语言模型自动生成符合格式要求的功能探针,确保探针的有效性和规范性。

响应处理模块

针对不同环境(网络延迟、网络地址、硬件配置等)导致的响应噪声问题,通过自动化部署多版本软件收集响应数据,基于差分测试提取噪声模式对响应进行标准化处理以剔除与功能变更无关的噪音。最后对标准化的响应进行分类,建立 “探针 – 响应 – 版本” 的映射关系。

版本识别模块

为实现隐蔽高效的版本识别,研究团队采用基于动态决策树的探针调度算法。首先通过最小探针序列规划保证识别准确率的同时减少探针用量。其次,当部分探针失效时,能重新规划探针序列继续识别,实现自适应调整。此外,通过多数投票处理用户自定义配置或响应伪造导致的版本冲突。

实验评估

研究团队在Elasticsearch、Redis、Dubbo、Joomla、phpMyAdmin五种主流软件(覆盖近十年版本)上对VersionSeek进行了全面评估。

探针有效性

研究团队从发行说明中提取了 7963 个功能特征,由LLM 生成对应的功能性探针并通过验证筛选后,最终获得 1258 个有效探针(探针可用率达 34.17%)。其中,超过 88% 的有效探针能将不同版本划分为 2-5 个类别,部分频繁变动的功能对应的探针(如 Elasticsearch 的 “GET /xpack/usage”)可划分 17 个版本类别;即便在无授权凭证、仅返回错误信息的场景下,VersionSeek也能通过报错处理机制的实现差异区分不同的版本。

版本识别性能

相较于Nmap、Metasploit、BlindElephant等现有工具,VersionSeek的识别率都有不小的提升,最高提升2.8倍。同时使用的探针数量大幅减少,最多减少65.37%的探针用量,例如扫描Joomla时平均需发送6.233个探针,远少于WhatWeb的18个;此外,VersionSeek独具对Dubbo的版本识别能力。

版本识别鲁棒性

在管理员启用版本混淆(替换版本字符串)和路径隐藏(屏蔽版本泄露路径)的对抗场景下,相比于现有工具,VersionSeek表现出良好的鲁棒性。此外,动态决策树机制允许VersionSeek根据运行时响应自适应地调整探针,相较于传统的基于哈希匹配的方法(例如BlindElephant),以更少的探针数量实现了准确的版本识别。

大规模真实世界测量

研究团队基于知名网络空间搜索引擎 Shodan 和 FOFA 提供的2个月的实时数据,使用VersionSeek对277,251台在线服务器进行了大规模扫描:

  • 成功识别240,020台服务器的版本信息,其中191,102台是Shodan和FOFA未能识别版本的;
  • 发现72.25%的用户仍在使用至少一年前发布的版本,面临严重漏洞威胁;
  • Joomla的情况最为严峻,24.98%的用户仍在使用十年前的版本,这些版本存在大量高危漏洞(如CVSS 9.8的远程代码执行漏洞)。

研究团队已将VersionSeek的核心代码开源,包括软件部署、探针生成、响应处理、版本识别等模块,以及经过验证的有效探针集合。开源地址:https://doi.org/10.5281/zenodo.15576928

研究团队

陈晋松,系统软件与安全实验室23级研究生,复旦本硕连读。主要研究方向为互联网测量,目前已在NDSS和USENIX Security等网络安全顶级会议上发表2篇高水平学术论文。

邬梦莹,系统软件与安全实验室21级直博生。主要研究方向为网络黑产和互联网测量,目前已在ACM CCS、NDSS、USENIX Security、IEEE/ACM ICSE等网络安全及软件工程国际顶级会议上发表6篇高水平学术论文。相关研究成果在政府部门和工业界落地实战,取得良好效果。个人主页:https://funeoka-yumee.github.io/

安柏超,系统软件与安全实验室25级硕士。本科毕业于复旦大学保密技术专业,主要研究方向为互联网测量、AI安全等。

洪赓,助理研究员、硕导。研究聚焦于网络黑灰产检测、网络犯罪治理、人工智能安全治理等,目前已在IEEE S&P、USENIX Security、ACM CCS、NDSS等国际顶级会议上发表十余篇高水平学术论文,担任ACM CCS 24、CCS 25程序委员会委员,并主持国家自然科学基金青年项目等重要研究课题。相关成果在执法机关、头部公司均有成功应用,曾获ACM SIGSAC China优博奖(全国共3位)、ACM CCS 2018亮点论文等;学生培养方面,指导本科生团队获得“挑战杯”全国大学生课外学术科技作品竞赛全国特等奖、全国大学生信息安全竞赛一等奖等荣誉。个人主页:https://ghong.site/

供稿:陈晋松

排版:张北辰

责编:邬梦莹

审核:张琬琪、洪赓、林楚乔

复旦白泽战队

一个有情怀的安全团队

还没有关注复旦白泽战队?

公众号、小红书搜索:复旦白泽战队也能找到我们哦~


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:复旦白泽战队 复旦白泽战队《成果分享 | [USENIX Security 2025] 功能变更驱动的远程软件版本识别方法》

评论:0   参与:  0