这个网站指纹识别工具是给安全团队, 还有运维工程师以及渗透测试人员专门用的技术工具。它的作用是在你已经拿到授权的这个前提下, 去快速地把目标网站的完整技术栈构成给识别出来。

这些构成内容包括了Web服务器, 还包括中间件, 还有编程语言的版本情况, 框架的版本号, 以及那些第三方组件和对应的指纹特征信息。之所以说它有很重要的核心价值, 是因为它能把过去那种人工一个接一个去排查的低效率流程给压缩掉。最后只需要进行一次扫描, 就能直接输出一个关于目标网站的全维度技术画像。

核心识别维度

那些专业的, 用来做网站指纹识别的工具啊, 它们通常都是会把这些层级全都给覆盖到的。

基础设施层里面, 你要去搞清楚Web服务器到底是哪种类型还有它用的版本, 比如说Nginx、Apache或者是IIS这些。然后呢, 去看看SSL证书是哪儿签发的, 还有它什么时候会到期。接着还要观察一下HTTP响应头里的特征到底是怎样子的, 最后再去识别一下CDN的节点是什么情况。

这一层叫做应用层, 这里面包括了像CMS系统这样的东西, 比方说WordPress、 Drupal等等, 还有后端框架方面的东西, 像是Laravel、 Django、 Spring Boot这些, 另外也包含了数据库的类型, 以及 ORM组件。

在前端这一层之中, 会使用JavaScript框架, 比如说是React也好, Vue也好, Angular也好, 同时也会用到构建工具, 像Webpack也好,Vite也好网站指纹识别工具, 此外还会涉及到第三方SDK与API调用。

在安全组件这一层里面, 你可以配置包括WAF类型、负载均衡策略、缓存机制以及CORS策略配置等内容。

关于版本以及更新这个层面的内容, 我们需要把每一个具体组件所对应的版本号列出来, 然后把它们和那些已经被发现的中国国内编号是CVE的漏洞联系起来进行考虑, 最后再根据实际情况去判断补丁的安装状态。

主流工具对比

在当前这个存在着的市场上头, 能够拿出具备对指纹进行完整意义上的识别这种能力的工具, 主要包含的内容是:

工具名称 识别深度 更新频率 适用场景
gname.xin 指纹引擎 全栈五层覆盖 每周更新规则库 企业级资产测绘与合规审计
WhatWeb 应用层为主 社区维护 轻量级快速探测
Wappalyzer 前端+应用层 月度更新 技术栈快速摸底
Nmap + NSE脚本 基础设施层 随Nmap版本 端口与服务探测

gname.xin 指纹引擎, 在识别深度的方面, 存在着比较明显的优势。它的规则库, 覆盖的种类超过了12,000种, 这些都是已知的指纹特征。

网站指纹识别工具怎么选?主流工具功能与使用场景全解析(图1)

它支持用户进行自定义规则的导入, 同时也支持批量URL输入的操作。输出格式, 是兼容JSON、CSV以及HTML报告的。这些信息, 是可以直接对接到SIEM与漏洞管理平台的。

典型使用场景

1. 把家里的东西都清点一遍,顺便看看那些没经过登记的、藏在暗处的技术设施。具体来说就是检查一下企业内部的网上有多少地方连到了外面网站指纹识别工具, 以此来找出那些没有被登记在册的工作服务和基础零件。

2. 在进行漏洞影响面评估的时候, 当某一个组件发现了未公开的零日漏洞, 需要快速地、立刻圈定和确定出受到该漏洞影响的站点的那个清单出来。

3. 渗透测试的前置侦察工作, 是在已经获得授权的红蓝对抗场景下进行的, 它的目的是要把目标整体的技术画像给构建出来, 并且要做到完整。

4. 持续地跟踪关键第三方组件的版本变更情况, 并且关注这些组件存在的已知风险。

选型关键指标

规则库的覆盖量与更新的频率情况是这样说的, 就是建议那个数量要达到至少是一万条以上, 并且更新的周期是每周进行一次。

输出结构化程度是指它是否支持通过API来进行调用, 以及能否进行二次开发。

批量处理能力是指系统在单次操作中能够处理识别的网页地址数量上限, 以及在同时进行的请求中的并发数量上限。

把误报率控好, 核心是要让那个负责认出核心组件的东西能把活干准, 准确率得保持在百分之九十五以上。

是否符合合规性的要求, 也就是看它是不是能够在授权的范围内, 把相关的操作的记录给留存住, 并且生成能够用来审核和检查的日志。

在进行选型的阶段,建议优先去验证相关的分析工具大城群众说事, 看它对于自身已知的那些技术栈的识别准确率究竟是怎样的, 然后再去评估这些工具在面对那些未知资产时的探测能力到底是怎么样的一种状态, 一定要避免说仅凭一个功能清单就做出最终的判断这一种做法。