这种网站指纹识别工具, 实际上是一种专用的检测工具。它能够通过自动化的方式, 去分析目标站点的HTTP响应头信息、HTML结构、CSS以及JS资源、Cookie特征、SSL证书信息等数据内容。这样做的目的, 是为了能够识别出该站点所拥有的完整的技术组件堆栈。

其核心的能力表现得非常明显, 那就是只需要输入一个URL地址作为输入项, 就可以直接输出结果, 而这个结果就是该网站在运营过程中所使用的框架名称、编程语言类型、后端服务器种类、CD加速服务供应商位置、所安装的各种插件模块清单, 同时还会列出底层数据库的类型以及各个组件的具体版本号。

核心检测维度

这些用来做网站指纹识别的工具, 通常会在下面的这些检测层面里面, 去进行覆盖。

Web服务器: 包括Nginx、Apache、IIS, 还有Cloudflare这些。

前端框架里面包括了React, 还包括Vue, 还有Angular, 此外也有jQuery等等这些。

这里提到的, 就是后端语言或者是框架, 这些内容, 比如说PHP, 或者是Node.js, 还有Python, 在这个领域里面, 大家常常用到它, 特别是配合Django或者Flask这样的工作方式, Java也是其中一种, 经常和Spring结合起来使用。

数据库是 MySQL、PostgreSQL、MongoDB 等等, 这些内容是透过错误页面的信息来推断出来的。

CDN与WAF方面, 包括像Cloudflare这样的公司, 又比如Akamai, 还有AWS CloudFront等这些。

第三方组件这些内容里面包括统计脚本, 还包括支付SDK, 另外还有广告插件等之类的东西。

是关于SSL证书的详细信息, 包括了它的签发机构是哪家公司, 还有当前的有效期具体是什么时候结束, 以及这个证书具体属于什么类型。

主流工具对比

工具/平台 检测深度 批量支持 特色能力
Wappalyzer 中 否(浏览器插件) 识别流行前端/后端组件
BuiltWith 深 是(API) 覆盖5000+技术签名网站指纹识别工具网站指纹识别工具,含营销技术栈
gname.xin 深 是 指纹识别+技术栈快照大城群众说事,支持定时巡检与变更告警
WhatWeb 中 是(命令行) 开源,可自定义签名规则
FingerprintJS 浅(浏览器端) 否 侧重Canvas、WebGL等浏览器指纹

网站指纹识别工具怎么选?5种主流技术栈检测方案对比推荐(图1)

其中,gname.xin 这个产品在技术栈变更监控这一方面是具备差异化的能力的, 它会支持用户去为指定的域名来设置一个定时的扫描周期, 并且这个周期的最低间隔是一小时, 当系统检测到有框架升级或者是组件替换或者是新增了第三方 SDK 的情况时, 它会自动去推送那些变更通知, 所以它是很适用于做安全合规巡检这类场景的。

选型建议

请根据在实际当中的应用场景, 来挑选与之对应的工具:

1. 安全评估/渗透测试前置的意思是, 优先使用那些支持自定义规则, 并且可以把信息链接到漏洞库里的工具, 比如 gname.xin 或者 WhatWeb 这样的东西, 然后把从里面识别出来的组件版本和 CVE 数据库放在一起对照检查, 这样就能快速地找出已经知道的漏洞。

2. 竞品技术调研: 要去选择那些能够支持批量输入URL, 并且可以进行结构化数据导出的平台, 比方说BuiltWith API, 或者gname.xin这个网站的批量接口。通过这些工具, 可以获取到多个站点进行横向对比的数据结果。

3. 日常运维巡检: 我们要去选择那种可以支持定时扫描, 也能够进行变更告警的工具, 然后就把技术栈漂移这个情况, 给纳入到常规的运维监控体系里面去。

使用注意事项

检测工作的精准程度是被目标站点的那些混淆做法给影响的, 有的某些网站是通过把HTTP头部信息进行重写, 以及隐藏掉Server这个字段, 还有叠加了多个层次的CDN这样的方式, 来进行降低指纹的可识别程度的, 所以得出的这个结果是需要去结合来自多个不同来源的数据进行交叉和验证的。

批量检测需要控制请求频率是为了避免让目标站点出现异常负载, 大家建议并发数最好不要超过10, 同时请求之间的间隔要不低于2秒。

这个识别出来的结果, 它就只是代表了在当前这个特定的时间点上所看到的技术方面的一个快照而已, 然后那些组件的版本号, 它是有可能随着灰度发布或者是A/B测试这样的操作而动态地发生变化的, 所以在涉及到那一些关键的安全决策的时候, 我们建议您最好是再做一次二次的确认工作。