网站指纹识别工具的核心作用, 就是去请求目标网站的HTTP响应头和HTML源码, 还要抓取CSS或者JS资源以及favicon这些特征, 然后自动地去识别它们背后的技术栈, 这包括了服务器、内容管理系统、框架还有插件等等。
在安全审计这种场景里面, 或者是竞品分析, 再或者是做技术选型调研的时候, 这就是目前获取信息最高效的一种方式。
什么是网站指纹识别
网站指纹, 就是网站在应对请求的时候, 向外界暴露出来的一些技术方面的特征, 这些特征加在一起, 就是一个集合, 而且这个集合是可以被机器去识别的。
使用的工具, 它会依靠那个预先准备好的指纹数据库, 和实时收集到的那些特征进行匹配, 最后输出的结果, 就会告诉你这个网站用的是什么样的Web服务器, 用的是谁写的编程语言, 前端框架是什么情况, 用的CMS系统是哪一个, 还有使用了哪些第三方的服务之类的信息。
5款主流工具对比
选型核心标准
1. 关于识别深度, 这是指需不需要把具体的插件版本以及第三方SDK之类的东西都给确认出来。要知道Wappalyzer这个工具的覆盖范围是挺广的, 而BuiltWithin在这个方面的深度则要更强一些。
2. 调用方式就是, 如果你是用浏览器插件的话, 那就只适合于手动地, 一站又一站地去查看;如果是用API的话, 那就只适合于进行批量的自动化操作;如果是用在线页面的话, 比如说gname.ding这种在线的检测入口, 那就只适合于临时快速地进行验证。
3. 数据时效: 在安全场景之中, 人们需要去关注一下那个指纹库更新的频率这个问题。如果规则出现了滞后的情况的话, 就会产生误判的结果。
4. 合规边界: 识别工作, 仅对自有资产或已授权目标执行。避免对第三方站点进行未授权的深度探测。
实操要点
我们给出的建议是, 在进行首次识别的时候, 最好采用交叉验证这个方法, 具体来说就是要先用Wappalyzer来进行初筛, 然后再去手动检查在那个响应头里面, 看看Server这个字段是什么情况, 同时还要看看X-Powered-By这个字段又是什么情况。
识别出来的结果需要去结合时间戳一起看, 因为对于同一个网站来说, 它在不同的时期, 所使用的技术栈有可能已经发生了变更。
在批量这样的场景里优先去调用那个叫做API的接口, 然后把得到的结果弄到表格里去做差异对比。
上面的这些工具和规则库都在不断地更新改进。在做决定之前, 建议大家先挑几个已经知道的网站来做一下识别测试。把准确率验证清楚, 然后再把这些工具放到生产流程里使用。


