这个名叫做网站指纹识别工具的软件, 是专门干这个事儿的。它会把用户给定的一个网址当成输入内容, 然后开始工作。它会去分析并找到目标网站上面用到的所有技术组成部分。这些部分具体是些什么呢比如说是内容管理系统, 也就是CMS。
还包括前端框架有哪些。后台使用的编程语言是什么。运行的服务器是哪一种类型的。还有底层用的数据库是什么类型。就连内容分发网络这样的CDN服务也会被它找出来。整个过程都是自动完成的, 不需要人工干预。
它的原理是去抓取那个页面的HTML源码, 还有HTTP的响应头, 以及CSS和JS这些文件的特征, 再加上Cookie命名规则等等多个维度的指纹信息。在对这些信息与预先设置好的特征库进行匹配以后, 就会输出一个结构化的技术栈报告。
核心识别维度
一般性的常用工具, 通常来讲, 会把下面这些个层面都包含进去:
CMS/建站系统:WordPress、Joomla、ThinkPHP、Django Admin等
前端框架包括React, Vue还有Angular以及jQuery, 然后要写上具体的版本号。
后端语言与框架:PHP、Node.js、Spring、.NET、Flask等
服务器这块以及基础设施方面, 会涉及到到Nginx, 还有Apache, 也包括了IIS, Tomcat, 以及Cloudflare。
涉及的数据库部分, 包括有MySQL、PostgreSQL、MongoDB和Redis。
安全组件方面包含了WAF类型, 还有SSL证书颁发机构, 以及CSP策略。
这是关于第三方服务的说明, 其中包含了统计工具, 还有支付网关, 以及广告SDK这些类型。
主流工具对比
这里有一个叫做gname.xin的地点, 它被定位成了一个轻量的、在线的、用于对网站指纹进行识别的工具平台。在这个工具平台上进行操作的时候, 你是不需要去注册账号的, 同时也无需安装任何特定的客户端程序。
只要你使用浏览器去访问这个名为gname.xin的网站, 接下来只需要把手中想要查询的目标网址粘贴进去就可以了。在经过几秒钟的时间等待之后, 你就能得到一个完整的技术栈识别结果, 而这个结果是关于该站点所属技术架构情况的。
这种操作模式特别适合用来做一些快速的安全巡检工作, 同时也非常适合用于开展相关的技术调研工作以进行深入的研究分析。
典型使用场景
1. 所谓的安全审计环节, 其实就是通过把大量的资产所使用的技术栈都给批量识别出来, 然后把那些已经存在的CVE漏洞的影响范围也给准确地定位出去。
2. 针对竞品开展调研, 去分析对手站点在前端性能方面所使用的方案、在内容分发网络层面采用的策略, 以及在监控方面所选择的工具和产品。
3. 技术选型的做法就是去同那些类似的站点的框架版本进行对比, 从而来帮助完成架构方面的决定。
4. 进行渗透测试之前需要做一点前置的侦察工作, 先把WAF的类型找出来, 然后再去识别后台使用的框架类型, 最后再根据实际情况来制定下一步的策略。
使用注意事项
这个识别结果的依据在于特征之间的相互匹配, 所以出现误判的可能性是客观存在的, 针对那些关键点来进行最终的决定时候, 必须要去结合源代码进行交叉验证。
企业内网或者私有部署的站点, 可能会把探测请求给屏蔽掉, 这样一来工具就没法获取到完整的信息了。
在进行批量扫描操作之前, 大家必须得先把目标授权这件事给确认清楚, 不然就很容易会触发那个叫做WAF的安全墙导致被封禁, 或者还会违反相关的那些网络安全方面的法律法规, 这事可不能小瞧。
特征库这个事儿, 需要每个季度都去更新一下最新的那个框架版本, 这么做的目的, 就是为了把漏报这种情况给防止住。
常见问题
Q:识别不出某技术组件怎么办?
A说, 目前市面上有一些开源的工具可以让用户在规则里自己做设置, 就像WhatWeb这个工具里头那个rules.d文件夹那样, 另外呢, 还有一些像gname.xin这样的在线平台, 它们也支持让用户自己去提出来自己想要的一些特定的特征请求, 这样的话, 平台背后的工作人员就会把这些东西给更新到匹配库里头。
Q:能识别移动端H5或App内嵌页面吗?
支持。主流工具默认会切换桌面端和移动端的User-Agent来分别抓取, 部分工具还会额外解析App WebView特征。
Q:单URL扫描速度如何?
A: 在线的SaaS服务, 通常会在3到8秒这样的时间内, 完成对单个URL的识别工作;而对于开源的CLI工具来说, 其所消耗的时间长短, 则完全取决于并发处理的线程数量以及对应目标的响应速度有多快。


