Web资产指纹技术研究
Web-Based Fingerprinting【基于Web资产的指纹识别技术】
Web指纹识别的意义
[success] 攻击者根据Web指纹信息,使用对应的Web应用漏洞脚本进行攻击,造成了恶劣影响,且攻击案例逐年增加。因此,准确地识别Web服务器指纹信息,及时地了解Web服务可能存在的安全漏洞,并且对Web服务进行隐患排查和防护,具有重要的意义。
攻击者的角度
- Web漏洞检测需要先识别Web服务器类型和版本,从而进行有针对性的漏洞挖掘和利用;
- 有效信息的获取是实施攻击的先要条件。
被攻击者的角度
- 理解、梳理和管理网络资产的范围和类型,完善网络资产底数的排查工作;
- 对自己所拥有的网络资产、关键信息基础设施等做到了如指掌。
防护者的角度
- 在Web渗透过程中,Web指纹识别是信息收集环节中一个比较重要的步骤,通过一些开源的工具、平台或者手工检测CMS系统是公开的CMS程序还是二次开发至关重要,能准确的获取CMS类型、Web服务组件类型及版本信息可以帮助安全工程师快速有效的去验证已知漏洞。
- Web漏洞检测需要先识别Web服务器类型和版本,从而进行有针对性的漏洞检测,进行升级、打补和防护,防止利用漏洞进行的攻击;
- 在基于数据分析构建的防护策略上,针对目标资产的指纹信息,选择多类型数据(漏洞资讯、威胁情报等)进行关联分析。
Web指纹识别的内容
资产设备指纹
- 端口
- 端口产品
- 端口协议和版本
Web服务器指纹
- 应用服务器
- 比如Tomcat、Jboss、Weblogic、Websphere等;
- 前端技术框架
- 比如HTML5、jquery、bootstrap、pure、ace等;
- 后端框架或Web服务器(容器)
- 比如Apache, Lighttpd, Nginx, IIS等;
- 服务器语言
- 比如PHP、Java、Ruby、Python、C#等;
- 操作系统信息
- 比如Linux、Win2k8、Win7、Ubuntu、Centos等;
- CDN信息
- 是否使用CDN,如Cloudflare、360cdn、365cyd、Yunjiasu等;
- WAF信息
- 是否使用waf,如Topsec、Jiasule、Yundun等;
CMS应用系统指纹
CMS英文全称是:Content Management System 中文名称是: 网站内容管理系统
CMS信息:比如大汉CMS、织梦、帝国CMS、phpcms、ecshop等;
CMS识别原理就是得到一些CMS的一些固有特征,通过得到这个特征来判断CMS的类别
指纹识别的方法介绍
[info] 端口扫描方法包括主动嗅探以及被动嗅探
主动嗅探指计算 机通过自主构造一个有针对性的数据包进行探测;
被动嗅探指计算机仅通过检测周边链路的流量进行判断。
主动嗅探方法
Web服务器指纹探测
传统方法
依据Http请求响应头中的Banner标识等相关字段信息进行识别 —- A方法
依赖不同响应状态码上的文本描述差异性特点进行识别 —- B方法
依赖Web服务器在处理Http请求上的行为差异构造Web服务器指纹库进行识别 —- C方法
- Web服务器指纹库是目前使用最多的一种方法;
- 首先借助浏览器向各种Web服务器发送的正常或者异常的Http请求,根据其返回的Http响应特征,构成Web服务器指纹库,然后将某种匹配算法与指纹结合,识别Web服务器类型版本。
以上三种方法各自的优缺点
- A、B 两种方法:由于Banner标识及状态码文本描述语句都是Http响应信息中可选信息,很多Web管理员出于安全考虑,常会对其进行修改或者伪造,因此这2种识别方法容易受到欺骗
- C 指纹库方法:通过收集各种Web服务器指纹对Web服务器进行识别, 需事先建立指纹特征库,当指纹信息不够全面时,识别的准确度将受到很大影响
机器学习方法
[info] 目前研究内容主要是针对 Web 服务器的指纹识别过程
-
- 收集互联网上大量的Web服务器为训练样本,对这些训练样本进行特征提取及训练学习,构造贝叶斯分类器,利用该分类器对待测的Web服务器类型进行分类。
- 特征提取参考论文 “表1 15种Http请求描述”
-
- 在(1)的基础上,减少数据请求过程,针对特征工程进行了优化,同时在分类算法上进行了改进。
常见的Web指纹识别工具
黑客手中的“瑞士军刀”
Http响应头中的Banner信息抓取
1、通过 Netcat 抓取
2、通过 Telnet 抓取
3、通过 Nmap 抓取
发送格式错误的Http Header 请求或者垃圾请求
- 从Response Header中或者Cookie中获取信息
国外指纹识别工具
HMAP
HTTPRECON
HTTPRINT
Wappalyzer
推荐指数:⭐️⭐️⭐️⭐️
使用返回响应头Server等相关字段信息
1、Wappalyzer 是一个实用的跨平台网站分析工具,用于帮助开发者、研究者和设计者检测网页使用的是什么技术,以更好地衡量自己的项目中该使用什么技术。Wappalyzer 的功能和 BuiltWith 类似,可检测内容管理系统(CMS),电子商务平台、Web服务器、JavaScript框架和已安装的分析工具等。
2、下载地址:https://github.com/AliasIO/Wappalyzer
3、Wappalyzer可直接在chrome或火狐的应用商城直接搜索安装。Wappalyzer目前可识别65个大类的1216个应用,查看可检测的应用程序列表:https://wappalyzer.com/applications
Whatweb
推荐指数:⭐️⭐️⭐️⭐️⭐️
使用返回响应头Server等相关字段,https://www.whatweb.net/
1、Whatweb 是一个开源的网站指纹识别软件,拥有超过1700+个插件,它能识别的指纹包括 cms 类型、博客平台、网站流量分析软件、javascript 库、网站服务器,还可以识别版本号、邮箱地址、账户 id、web 框架模块等。
2、Whatweb 是基于 ruby 语言开发,因此可以安装在具备 ruby 环境的系统中,目前支持 Windows/Mac OSX/Linux。在debian/ubuntu系统下可直接
apt-get install whatweb
,kali已自带。3、使用非常简单whatweb http://www.tidesec.net即可,也可以加参数-v显示更详细的信息。
4、下载地址:https://github.com/urbanadventurer/WhatWeb
Whatruns
推荐指数:⭐️⭐️⭐️⭐️
1、Whatruns是为chrome开发的一款web指纹识别程序,还可以显示托管的CDN、wordpress插件、wordpress字体等,拥有丰富的插件支持。
2、跟Wappalyzer安装类似,Whatruns可直接在chrome应用商城直接搜索安装。
3、安装完成后,通过插件图标来获取服务的详细运行信息,效果如下。有时候信息会比Wapplyzer还详细一些,但有时候获取速度稍慢。
Plecost
推荐指数:⭐️⭐️⭐️
1、下载地址:https://github.com/iniqua/plecost
2、Plecost是Wordpress博客引擎的漏洞指纹识别和漏洞查找器,能识别Wordpress版本并能查找到cve,不过访问不了google的话可能有些功能就受限了。Plecost基于python架构,利用了Beautiful Soup来解析html、xml文件识别网站使用的插件及版本。
3、使用也比较方便 plecost -i /usr/share/plecost/wp_plugin_list.txt http://www.freebuf.com
BlindElephant
推荐指数:⭐️⭐️
1、下载地址:https://github.com/lokifer/BlindElephant
2、BlindElephant是一款Web应用程序指纹识别工具。该工具可以读取目标网站的特定静态文件,计算其对应的哈希值,然后和预先计算出的哈希值做对比,从而判断目标网站的类型和版本号。目前,该工具支持15种常见的Web应用程序的几百个版本。同时,它还提供WordPress和Joomla的各种插件。该工具还允许用户自己扩展,添加更多的版本支持。
3、不过该软件最新更新是在2013年,插件库应该算比较旧的了。
4、下载及安装可参考https://github.com/lokifer/BlindElephant,kali中已经内置。
5、使用命令:BlindElephant.py http://www.freebuf.com wordpress
国内指纹识别工具
- 御剑web指纹识别程序
- Test404轻量WEB指纹识别
- w11scan分布式WEB指纹识别平台
- Dayu指纹识别工具
- WebEye
- WTF_Scan
- Webfinger
- FingerPrint
在线指纹识别
- Yunsee 云悉
- bugscaner指纹识别
- TideFinger 潮汐指纹
CMS应用系统指纹识别
传统方法
- 如果使用MD5识别和正则表达式识别的方式,就是用特定的文件路径访问网站,获得这个文件的MD5或者用正则表达式匹配某个关键词,如果匹配成功就说明这个是这个CMS。 所以,识别的成功率是根据我们的字典来决定的。
- 参考内容:Web指纹识别技术研究与优化实现