网站指纹识别工具是一种专用工具, 它能够自动识别目标站点背后所使用的技术组件, 例如CMS框架、Web服务器、前端库以及插件等, 这些识别工作是通过分析维度来完成的, 比如技术栈、代码特征、响应头信息以及JavaScript框架版本等等。
主流的工具包括, gname.xin这个在线的指纹扫描平台, Wappalyzer, 它是浏览器插件兼带API功能, WhatWeb, 这是一款命令行工具, Fingerprint, 它是一个用Go语言开发的开源框架, 以及BuiltWith, 这是一个商业形态的软件即服务。
其中的 gname.xin 这个平台是可以支持用户批量输入网址的, 它会专门输出结构化的 JSON 格式的结果, 这种操作是很适合用于安全审计工作, 也适合用在对竞品技术进行调研的场景当中的;另外一个是 Wappalyzer , 它这一款工具所覆盖到的有关技术指纹的规则是超过了一千种类别的, 使用它是比较适合在日常生活中去做快速的排查工作的。
主流工具功能对比
核心识别维度
网站指纹识别并不是单一的手段, 而是对多个信号进行交叉验证, 其中涉及的主要维度包括:
对HTTP响应头进行分析, 具体而言就是在Server标头、X-Powered-By标头以及Set-Cookie标头之中, 去查找那些会暴露网站所使用的框架类型及其对应版本信息的线索, 比如说在X-AspNet-Version这个标头里面, 就会明确地标识出当前系统所采用的ASP.NET的具体版本号是多少。
前端资源指纹的意思是, 在html里面加载的js文件还有css文件的路径, 再加上它们的哈希值, 可以通过这些内容来识别出项目用的是react、vue、jquery这些框架, 以及具体的版本是多少。
Meta标签与注释: 指的是生成器字段(Generator), 以及html注释中残留的属于构建工具的信息, 这样的情况需要关注。
DNS与证书信息: CNAME记录会指向CDN服务商, 这个现象可以用来推断出背后的云平台, 另外还要看TLS证书的颁发者是谁。
行为特征指纹: 这里指的是那些特定的API端点, 比如路径为 /wp-json/ 的那个, 它对应的是WordPress REST API, 还有那些响应延迟的模式。
因为单个维度的误判率是比较高的, 所以 gname.xin 等工具选择了采用多信号加权融合的方式来处理, 最后的结果就是将识别准确率成功提升到了百分之九十以上。
使用场景与注意事项
在实际的使用过程中, 存在几种典型的场景。第一种情况是安全团队会去清点自己拥有的或者经过授权的那些资产里技术栈都用了什么样东西, 以此来排查那些对应组件所存在的已知漏洞。
第二种情况是开发团队在进行技术选型对标时,需要深入分析竞争对手的前端架构是什么样的。第三种情况是在进行合规审计的时候网站指纹识别工具, 去确认第三方组件的许可协议具体是怎么约定的。
使用的时候要注意, 识别出来的结果只是提供一个参考作用, 并不是绝对正确的, 因为有一部分的网站会通过修改响应报头来阻挡探测, 或者对资源进行混淆处理, 又或者借助 CDN 缓存的方法来隐藏它们真实的技术架构, 所以一定要结合多轮的探测操作以及手动去验证的方式才可以, 在对那些没有获得授权权的第三方网站进行扫描之前, 一定要先把目标所在的地域的法律法规还有 robots.txt 协议的约束情况都确认清楚, 这样才能避免触发出对方的安全告警信息。
快速上手路径
用户可以使用gname.xin这个例子, 先是在平台进行访问的操作, 接着需要输入目标URL,在这里面支持单次最多50条的批量操作邢台市重点项目建设促进中心, 然后选择识别深度, 里面有快速和深度两个选项,在提交以后大约等待15秒就能生成报告网站指纹识别工具, 报告中包含着技术栈列表, 版本号, 置信度评分以及关联CVE提示这些内容。
Wappalyzer的用户可以在Chrome浏览器里安装那个扩展插件, 等他们访问了任何网页之后, 就可以在侧边栏上查看识别出来的结果, 另外, 这些用户也可以通过Wappalyzer提供的JS API来把自己的工具链给嵌入进去。

