纽约州立大学石溪分校 | 模糊的指纹:Web 应用程序指纹识别的性能提升

admin 2025年5月29日15:57:31评论26 views字数 5762阅读19分12秒阅读模式

纽约州立大学石溪分校 | 模糊的指纹:Web 应用程序指纹识别的性能提升

原文标题:Smudged Fingerprints: Characterizing and Improving the Performance of Web Application Fingerprinting原文作者:Brian Kondracki,Nick Nikiforakis原文链接: https://www.usenix.org/conference/usenixsecurity24/presentation/kondracki发表会议:USENIX笔记作者:王彦@安全学术圈主编:黄诚@安全学术圈编辑:张贝宁@安全学术圈

1 引言

随着开源 Web 应用(如 WordPress 和 Drupal)的广泛部署,识别网站所使用的具体应用类型与版本(即 Web 应用指纹识别)已成为攻击者定位漏洞和防御者加强安全的重要手段。 Web 应用指纹识别通过评估Web端点的内容和行为,以收集有关生成它的应用程序的信息。

在本文中,作者分析了 Web 应用程序指纹识别的现状,填补了关于所用技术及其在实践中的有效性的知识空白。作者对所有 Web 应用程序指纹识别技术进行了文献综述,最终将这些信息提炼为六个 Web 应用程序指纹识别工具的列表,这些工具充分概括了该领域积极使用的学术和商业工作的范围。然后,作者开发了 WASABO,一个基于容器的 Web 应用程序测试平台系统,该系统允许为每个指纹识别工具的测试准备任何版本的 Web 应用程序,并进行自动化大规模的在线指纹识别活动。

2 Web应用程序指纹的背景

当前的指纹识别解决方案严重依赖于每个特定web应用程序生成的内容,决策边界基于生成的动态和静态内容绘制。

2.1 动态内容

动态内容识别依赖网页中稳定存在的结构性元素(如 meta 标签、路径特征、版本字符串等),如Listing 1,可以通过正则匹配轻松识别应用与版本。由于这些指纹信息通常分布在常见页面中,使得网站难以区分脚本和用户的行为,进一步加大了检测难度。

纽约州立大学石溪分校 | 模糊的指纹:Web 应用程序指纹识别的性能提升

2.2 静态内容

静态内容识别则基于 CSS/JS 等文件的哈希值匹配特定版本,如Listing 2。这种指纹识别方法不像动态内容指纹识别那样依赖于内容中包含版本字符串。然而,它容易发生版本冲突,多个不同版本的web应用程序可能使用相同文件,从而具有与相同的哈希值。此外,管理员理论上可以通过禁止访问静态文件或修改这些文件来绕过识别。

纽约州立大学石溪分校 | 模糊的指纹:Web 应用程序指纹识别的性能提升

3 实验设计与方法

3.1 Web 应用和指纹工具的搜集

研究聚焦于五个主流开源 PHP Web 应用(WordPress、Drupal、Joomla、MediaWiki 和 phpMyAdmin),并选取六款具代表性的指纹识别工具进行分析(表一),包括 Metasploit 中的两个模块(针对 WordPress 和 Joomla)。

纽约州立大学石溪分校 | 模糊的指纹:Web 应用程序指纹识别的性能提升

3.2 WASABO:Web应用程序沙箱

作者构建了基于 Docker 的测试平台 WASABO,如图一所示,支持离线与在线测试web程序。此外WASABO 还集成了网络中间件模块,,该中间件通过 mitmproxy 截获和修改工具与 Web 应用之间的流量。

纽约州立大学石溪分校 | 模糊的指纹:Web 应用程序指纹识别的性能提升

4 实验室指纹识别性能

4.1 实验环境设置

本节重点评估六种 Web 应用指纹工具在理想实验室环境中的性能。

作者利用 WASABO 平台部署了 1,360 个历史版本的 Web 应用程序,并对Web应用程序指纹工具进行性能分析,将这些工具的分析分为两个不同的类别:生成正确的Web应用程序类型(例如,WordPress与Drupal),以及生成正确的Web应用程序版本(例如,WordPress 5.8 vs. WordPress 5.9)

4.2 应用类型识别结果

纽约州立大学石溪分校 | 模糊的指纹:Web 应用程序指纹识别的性能提升

图2显示了各工具在 Default 和 Aggressive 模式下的类型识别准确率。灰色“X”区域表示该工具对特定应用类型无效,由于Metasploit 模块仅适用于特定应用,不参与评估。可以看出,Wappalyzer 和 WhatWeb 依赖动态内容(如 HTML 标签、元信息)在多种应用上表现良好。而 BlindElephant 和 VersionInferrer 使用静态文件哈希识别,对动态网页识别能力弱,准确率较低。

4.3 应用版本识别结果

网络应用程序指纹识别工具不仅可以识别网络应用程序的类型,而且还可以识别当前存在的版本,这使得攻击者能够针对已知的漏洞精心设计漏洞,而防御者则可以发现和修补易受攻击的主机。

表2与表3分别展示了各工具在未知与已知应用类型下对版本的识别精度,划分为主版本(Major)、次版本(Minor)与完整版本(Full)三个等级。

纽约州立大学石溪分校 | 模糊的指纹:Web 应用程序指纹识别的性能提升
纽约州立大学石溪分校 | 模糊的指纹:Web 应用程序指纹识别的性能提升

4.4 版本碰撞问题

图4分析了指纹工具在一次扫描中返回多个候选版本的频率,揭示“版本碰撞”问题的严重程度。Wappalyzer,Metasploit和WhatWeb(默认扫描模式)都只使用动态指纹,这意味着当且仅当在内容中找到版本字符串时才会产生预测。因此,不会有两个或更多不同版本之间概率相等的情况:要么有正确的预测,要么没有预测。

纽约州立大学石溪分校 | 模糊的指纹:Web 应用程序指纹识别的性能提升

作者进一步评估了指纹工具在应对严重漏洞(CVE)时的准确性。通过对比 CVE 数据库中严重漏洞(平均评分 7.7)的影响版本与工具输出结果,发现共 82 起案例中,工具将存在漏洞的版本误识为安全版本。全部错误均来自静态内容工具,包括 BlindElephant、VersionInferrer 和 WhatWeb。这些错误可能导致管理员对系统状态产生误判,错过及时修复漏洞的窗口。

5 真实世界指纹识别性能

5.1 网络中间件

本节介绍了作者设计的网络中间件模块,该模块能够透明地修改每个指纹识别工具生成的流量,从而提高其在现实世界中的性能。具体包括以下三个方面:

  • Cache-breakers:网站通常会将静态资源放在缓存代理服务器后面,缓存服务的一个常见功能是压缩静态web资源,这可能会导致指纹识别工具的文件哈希与预期不同。为了防止这种情况发生,作者设计的网络中间件模块会在每个指纹识别工具生成的请求中添加一个包含随机字符串的查询参数,以防止代理服务器返回缓存版本的资源,而是从原始web服务器获取实际文件。
  • Web Path Prediction:网站管理员可能会将web资源从意外的子目录中提供,这可能会导致指纹识别工具无法正确识别web应用程序。为了解决这个问题,作者设计的网络中间件模块会分析每个目标网站的主页,生成所有已知资源的文件树,并使用该树来识别静态资源的公共父目录,并透明地修改请求路径以适应这些变化。
  • Real-browser Web Requests:为了防止资源紧张和潜在的滥用,网站通常会限制对感知到的web机器人的访问。作者设计的网络中间件模块会拦截来自每个指纹识别工具的所有HTTP GET请求,并使用流行的undetected-chromedriver库通过真实的web浏览器发出相同的请求,以避免被反机器人服务检测到。

5.2 实验结果

纽约州立大学石溪分校 | 模糊的指纹:Web 应用程序指纹识别的性能提升

表4介绍了作者设计的网络中间件模块的实验结果。作者将每个指纹识别工具的扫描结果与他们研究的每个web应用程序记录的最严重漏洞进行交叉引用,发现有82个案例中,一个易受攻击的web应用程序版本被错误地标记为不易受攻击的版本。具体包括以下三个方面:

  • 性能下降:作者发现,与实验室测试结果相比,每个指纹识别工具在实际应用中的性能都有所下降,下降幅度在20%-80%之间。其中,BlindElephant的性能下降最为明显,而Wappalyzer的性能下降最少。
  • 缓存破坏:作者设计的网络中间件模块中的缓存破坏功能可以显著提高BlindElephant和VersionInferrer等依赖静态内容指纹识别的工具的性能。通过直接从源web服务器检索内容,这些工具能够成功识别潜在的web应用程序。
  • 路径预测:作者设计的网络中间件模块中的路径预测功能可以提高工具的性能。通过分析每个目标网站的主页,生成所有已知资源的文件树,并使用该树来识别静态资源的公共父目录,并透明地修改请求路径以适应这些变化。
  • 真实浏览器请求:作者设计的网络中间件模块中的真实浏览器请求功能可以提高工具的性能。通过使用真实的web浏览器发起请求,可以绕过反机器人检测服务,从而提高指纹识别的成功率。

总的来说,作者设计的网络中间件模块可以显著提高web应用程序指纹识别工具的性能,特别是对于依赖静态内容指纹识别的工具。

6 讨论和为例工作

6.1 关键要点

  • Web应用程序容器化的好处:通过开发WASABO(Web Application Sandbox)框架,实现了对任何受支持的web应用程序版本的自动化部署,并通过其网络中间件模块改进了任何web应用程序指纹识别工具。WASABO不仅限于收集数据,还可以创建测试脚本来满足任何web应用程序测试目的。
  • 改进的Web应用程序指纹识别:当前的web应用程序指纹识别技术存在局限性,需要开发更健壮的指纹识别技术,利用应用程序内容的功能方面进行指纹识别,而不是一般的所有内容。同时,利用网络中间件可以立即提高当前web应用程序指纹识别工具的性能,而无需对每个工具进行任何更改。
  • 指纹识别防御:当前的指纹识别技术高度依赖于网站管理员不会修改或删除“开箱即用”提供的web应用程序内容的假设。因此,管理员可以通过对其web应用程序部署进行建模来防止指纹识别。类似地,可以在网络出口部署反向代理服务器中间件,对所有传出流量应用与web应用程序无关的措施,防止攻击者在互联网上进行指纹识别,同时允许内部继续使用指纹识别工具来发现和修补过时的系统。

6.2 局限性

  • WASABO的局限性:虽然WASABO允许对大量web应用程序版本进行自动化测试,但为每个web应用程序提供兼容性需要手动努力来规划每个web应用程序版本所需的安装步骤。
  • 研究的局限性:选择的web应用程序和指纹识别工具并不构成所有指纹识别工具的详尽列表。未来的研究可以探索更多的web应用程序和指纹识别工具,以更全面地评估指纹识别技术的性能。

7 相关工作

本节将本研究与其他相关工作进行了比较。作者表示,这项工作第一次系统地探索当前web应用程序指纹识别技术的性能。除了介绍本文研究的指纹识别工具的工作外,之前的工作还利用静态和动态指纹识别技术来创建web应用程序指纹识别和漏洞扫描工具。具体如下:

  • Marquardt等人:提出了一种web应用程序指纹识别方法,该方法仅使用每个网站根URL的HTML和相关资产,减少了所需的请求数量。除了利用每个网站主页中包含的CSS和JavaScript文件的哈希值外,作者还利用XPath分析来解析网站主页的HTML树结构。一般来说,这种技术的报告性能等于或低于本文研究的工具。
  • Dresen等人:评估了关键网络之外的攻击者可以在多大程度上识别这些网络中的服务(例如,运行在物联网设备上的服务)。由于这些设备不能被直接探测,作者不得不使用受害者用户的浏览器在用户的本地网络上探测资源,这要受同源策略的限制。由于这种限制,作者开发的工具(CORSICA)可以检查文件的存在(例如,特定物联网设备的特定PNG是否存在于内部IP地址上),或者在有限的情况下,检查用户浏览器中其他文件的影响(例如,尝试加载一个JS库,然后检查如果该库确实被加载和执行时应该存在的全局变量和函数是否存在)。与本文在WASABO中评估的工具相比,CORSICA的文件存在性检查是一种较弱的静态内容指纹识别形式(其中内容由BlindElephant等工具进行哈希处理)。相反,他们的JavaScript检查与动态内容指纹识别相当(如Wappalyzer和WhatWeb所使用的那种)。
  • Schmitt等人:证明,除了对支持网站的web应用程序名称和版本进行指纹识别外,攻击者还可以对web应用程序防火墙(WAF)规则进行指纹识别。
  • Drakonakis等人:最近引入了ReScan,这是一种网络中间件,用于提高流行的web漏洞扫描器的有效性。与WASABO不同的是,ReScan通过寻找有关web应用程序属性的相关信息并将这些信息附加到响应中,以便底层扫描器能够“发现”它们,从而在提高漏洞扫描器性能方面发挥了更积极的作用。相反,本文为这项工作开发的网络转换脚本被动地规范了web应用程序的内容,以减少现实世界定制的影响。

8 总结

在本文中,作者研究了现代web应用程序指纹识别技术,测量了六种流行工具利用静态和动态web应用程序内容信息对当今使用的五种最流行的web应用程序的1360个版本的性能。作者设计并开发了WASABO,一个web应用程序沙箱框架,用于分析每个指纹识别工具在理想条件下的离线识别准确率,在这种条件下,所有可能的web应用程序内容都是可用的。虽然94.8%的web应用程序版本被至少一个工具识别出来,但许多工具无法对任何版本产生单一版本预测,而是返回许多不同的版本,有时分布在7年之久。此外,作者发现有82个案例中,一个包含严重漏洞的web应用程序版本被标记为无漏洞版本。

除了在理想条件下评估web应用程序指纹识别工具外,作者还测量了它们对web应用程序部署中添加的有机噪声的鲁棒性。作者发现,默认情况下,这些工具很难确定主机上存在的web应用程序,与离线结果相比,准确率下降了20%-80%。为了理解这种性能下降的原因并加以补救,作者为WASABO设计了网络中间件模块,能够透明地应用一系列流量修改。通过这样做,作者能够将所研究的指纹识别工具的实际性能提高22.9%。至关重要的是,WASABO以一种与扫描器无关的方式提供了这些改进,这意味着任何当前或未来的web应用程序指纹识别工具都能立即从中受益而无需修改。

作者构建WASABO是为了自动化针对数千个流行web应用程序版本审计web应用程序指纹识别工具的过程,每个版本都有不同的先决条件技术和安装程序。为了帮助研究社区进一步理解web应用程序的可指纹性并激发更多的研究,作者将他们的系统公开提供。

安全学术圈招募队友-ing 有兴趣加入学术圈的请联系 secdr#qq.com

专题最新征文

原文始发于微信公众号(安全学术圈):纽约州立大学石溪分校 | 模糊的指纹:Web 应用程序指纹识别的性能提升

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年5月29日15:57:31
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   纽约州立大学石溪分校 | 模糊的指纹:Web 应用程序指纹识别的性能提升https://cn-sec.com/archives/4111622.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息