• 收藏
  • 加入书签
添加成功
收藏成功
分享

一种用于渗透测试的Web指纹识别方法

邱文鑫 曾霞霞
  
大通媒体号
2024年94期
闽江学院计算机与大数据学院 福建福州350108

打开文本图片集

摘要:Web指纹识别是渗透测试的重要环节。鉴于目前主流Web指纹识别工具的识别率不能满足需求,本文探讨一种结合多种指纹识别方式和优化指纹库的指纹识别方法,能有效提升指纹识别率。本文设计了融合关键字匹配、MD5值比对、URL识别和流量分析这4种识别方式的指纹识别工具;构建了包含3006条指纹规则的指纹库,并提出了动态更新命中率hit值的策略。通过与其他指纹识别工具的比对,分析了优劣势。

关键字:渗透测试;Web指纹识别;关键字匹配;MD5值比对

Abstract: Web fingerprinting recognition is a crucial part of penetration testing. Given that the recognition rate of current Web fingerprint identification tools does not meet the requirements, this paper proposes a fingerprint identification method that incorporates multiple fingerprint recognition techniques and optimizes the fingerprint database, effectively enhancing the fingerprint recognition rate. The text describes how to build a fingerprint identification tool that integrates four recognition methods: keyword matching, MD5 value comparison, URL identification, and traffic analysis; It constructs a fingerprint database containing 3,006 fingerprint rules and proposes a strategy for dynamically updating the “hit” value.Through comparison with other fingerprint identification tools, the advantages and disadvantages are analyzed.

Keywords: penetration testing; web fingerprinting recognition; special keyword recognition; MD5 value comparison

在互联网高速发展时代,各行业、各领域的数字化转型不断深入,网络生态变得更加复杂,网络空间安全的维护被赋予了更重要的使命。渗透测试是通过模拟恶意黑客的攻击方法,来评估计算机网络系统安全的一种评估方法,是一个渐进的逐步深入的并且不影响业务正常运行的过程。Web服务器的信息收集是渗透测试的一个重要环节。鉴于目前主流Web指纹识别工具Ehole、WhatWeb、WhatCMS、TideFinger等的识别率不高,本文探讨一种结合多种模式匹配与指纹库特征命中率训练的指纹识别方法,能有效提升指纹识别率。

1 Web指纹识别概述

Web指纹识别是一种对目标网站的识别技术,通过识别网站所使用的服务器类型、数据库、操作系统、运行的脚本语言、使用的开发框架、采用的Web技术等信息对目标进行精准的分类和定位[1]。在Web渗透测试中,通过指纹识别工具可以快速且准确地获取目标网站的服务器类型、开发框架、Web组件等信息,就可以方便查询已知漏洞并进行攻击,增加了渗透测试的成功率。Web指纹识别还可以帮助安全研究人员在安全维护中快速了解目标网站的基本信息,对于维护对象信息收集越全面,安全评估也更加到位。

对Web服务器系统进行全面分析,可供识别的指纹信息从下往上分析包括操作系统、Web服务器、服务端的开发语言、开放框架、Web应用、第三方内容及插件等如图1所示。主流的指纹识别方法有关键字匹配、MD5值验证、URL路径识别这三种。关键字匹配法[2]通过在目标网页的HTML标记、CSS类、JavaScript代码等中搜索特定的关键字或标识,比对这些关键字与已知框架、技术或应用程序的特征。MD5值验证法将目标网页的内容进行MD5哈希计算,生成一个唯一的MD5值,然后与已知框架或页面的MD5值进行比对。URL路径识别法分析目标网站的URL结构、特定的URL参数以及路径中的关键字和TAG模式,来推断目标网站所使用的容器类型、框架或应用程序。

2. 指纹识别模型的设计

指纹识别模型的功能主要包含对目标服务器的数据采集、数据清洗并分类、多模式的指纹识别、识别结果展示以及指纹库存储。该模型开发架构如图2所示,选择Python作为开发语言,采用Scrapy框架进行数据抓取和信息收集,Re、BeautifulSoup库对数据进行清洗,使用Flask框架构建Web应用,并以MongoDB数据库作为数据存储。从目标对象爬取的数据通过数据清洗后分类存储数据库,再通过指纹识别模块调用指纹库进行特征匹配后将识别结果展示前端页面上。

2.1 数据采集

使用Python语言开发数据采集程序,第三方库Scrapy框架的两个模块Downloader Middleware和Spider Middleware可以较好的提高爬虫效率。Downloader Middleware位于Scrapy的Engine和下载器之间,用于处理请求头、处理请求重定向、重试失败的请求、限制并发请求等。通过添加自定义的下载器中间件来修改请求的User-Agent或者添加代理IP,提升可爬取性。Spider Middleware位于Scrapy的爬虫和引擎之间,用于处理请求、响应和Item等,如修改或丢弃某些数据并输出结果。爬虫程序不断的通过一个网站的主页面获取新的页面来深度挖掘指纹信息,引入多线程编程技术并发提取数据来提升爬虫的速度。

2.2 数据清洗与分类

在获取到对应的网页数据之后,通过BeautifulSoup对网页内容进行解析,BeautifulSoup会将网页解析成Python可以处理的格式,解析完毕之后页面结构划分为header、title、body三部分,其他部分极少存在指纹信息可忽略。使用Re库对划分好的三部分内容进行数据提取,提取规则采用正则表达式如表1所示,提取存在指纹信息的HTML元素。提取到的数据经去空、去符号、模糊匹配策略的清洗,然后安装关键字、路径、文件等进行分类别存储。

2.3 多模式指纹识别

本模型结合了多种指纹识别方式,在前文提到的常用关键字匹配、MD5值比对、URL路径识别基础上,增加了网络流量分析方式。

1、关键字匹配方式

关键字匹配是指纹识别首选策略,通过在网页的HTML、CSS、JavaScript 代码等中搜索特定关键字,能够准确判断目标网站所使用的技术框架和库,如发现 “jQuery”“AngularJS” 等关键字,可确定使用了相应框架。通过分析HTTP请求和响应中的头信息(X-Powered-By)、服务器标识(Server)、缓存策略、Cookie等信息的关键字匹配来推测使用的Web技术,如X-Powered-By:PHP、Server:Apache。大部分CMS系统都具有特定的关键字标识或路径,比如WordPress的“wp-admin”“wp-content”[3],利用关键字匹配可快速识别网站是否使用了特定的CMS,如表2所示指纹与CMS的对应关系。

2、MD5值比对方式

对于Web页面或特定文件,只要其内容未发生改变,生成的MD5值就始终保持一致。通过分析相对不变的HTML网页、JavaScript文件、CSS文件、favicon.ico、robots.txt及其他特定文件的MD5值与指纹库中的已知MD5值进行比对,可以准确地判断目标是否包含指纹特征,识别出使用的Web框架、库和CMS等技术。相对与其他方式,MD5值比对法准确度高,如表3的织梦CMS静态文件识别对应的MD5特征值。

3、URL路径模式识别

通过URL中特定的路径结构或关键字,可以快速判断目标网站所使用的技术框架。通过分析URL路径中的文件扩展名,如扩展名jsp就可以判断是Java技术来开发。路径中出现 “/drupal/”关键字,可以判断网站使用了Drupal这样的CMS系统。若URL中包含 “/spring-boot/”字样,很可能该网站使用了Spring Boot框架;如果出现 “/thinkphp/”,则可能使用了ThinkPHP 框架。

4、网络流量分析方式

通过网络通信流量包分析出TTL返回值信息、开放端口信息,识别Web服务器操作系统指纹类型为Linux还是Windows,该模型调用nmap第三方库开发此功能。通过向目标主机发送ICMP数据包等方式获取其TTL返回值,可大致判断目标服务器的操作系统类型,如Windows系统的TTL初始值一般为128,Linux系统的TTL初始值一般是64[4]。另外不同的Web服务器和应用程序通常使用特定的端口,对目标主机进行端口扫描并尝试识别开放端口上运行的服务及版本信息,再根据这些信息识别操作系统类型、Web服务器、开发技术等。比如端口号445(SMB服务)与3389(RDP服务)可识别Windows,端口22(SSH服务)一般是Linux,端口7001是Weblogic服务的默认端口。

3指纹库的建设

3.1 指纹收集

从开源的指纹Webfinger工具中收集到1000条Web应用指纹信息,从工具TideFinger中收集到Web应用指纹信息1001条信息,以及从Fofa、360、FingerPrint、gwhatweb、Wappalyzer等工具的指纹库中提取到CMS的指纹信息整合1005条。共收集3006条指纹信息,存储于MongoDB数据库。

3.2 指纹库优化

指纹库建设后,利用前面设计的模型开发了指纹识别工具(简称自研工具),使用过程中发现有一部分指纹被识别频率高,可以被利用起来。通过统计每条指纹被识别的次数,增加设置一个指纹属性叫做hit字段,该字段记录命中次数,值越大表示指纹被调用的优先级越高,如表6展示部分指纹及其训练权值。

不断跟踪指纹的命中次数(Hit),并根据这些数据调整优先级。通过优先访问命中率较高的规则,显著提高了指纹识别的速度;并优化命令率较低的指纹,或者减少访问,有效避免误报的发生,增强了指纹识别的精准度。对3006条指纹信息进行1000次指纹命中数据训练,命中结果如图3所示。

4.识别结果对比

4.1与TideFinger识别工具的对比

自研工具与常见的几款Web指纹识别工具进行识别结果比对,如表5展示了与TideFinger工具识别结果的对比,识别项目数更多,重点CMS的识别率更高。另外与EHole、Wappalyzer工具的比对结果基本也是类似,说明自研工具对指纹信息识别广度得到了提升。

4.2与360Quake的对比

360Quake是360公司推出的网络空间测绘系统,拥有强大的Web指纹识别能力[5]。为了进一步提升自研工具指纹识别的能力,在已有指纹库的基础上通过360Quake网络空间测绘的大量指纹数据进行再训练。表6展示自研工具与360Quake识别结果对比,识别结果更优。

4.3 对比结果分析

相比较于Ehole、TideFinger、wappalyzer插件等web指纹识别工具,自研工具的指纹识别面更加广泛;对于一些360Quake能够识别出来的重点CMS、开发框架,自研工具基本都能给出相应的识别结果;自研工具对重点CMS的识别,识别结果会更多一些。但一些冷门语言和组件,自研工具的指纹库数据训练不足,需要更多时间的训练才能接近360Quake的识别能力。

5 总结

本文提出了一种融合了多模式指纹识别技术并动态优化指纹库hit值的指纹识别方法,开发的指纹识别工具相对于其他的Web指纹识别工具、插件,改善了识别信息面和重点CMS识别率,总体的指纹识别率更优。相较于以往的工具,更加适合现在攻防演练过程中渗透测试的Web信息收集。同时相比较于大型的网空测绘,还需要更多的时间,更多的指纹库数据训练来提升对冷门语言和组件的识别效果。

【参考文献】

[1] 郝伟,尚守来,万飞.融合网络安全领域知识的Web指纹智能识别[J]. 盐城工学院学报(自然科学版).2024,37(2):43-49.

[2] 邹鸿程,苏金树等.网站指纹识别与防御研究综述[J]. 计算机学报.2022,45(10):2243-2278.

[3] Mockingbird: Defending Against Deep-Learning-Based Website Fingerprinting Attacks With Adversarial Traces[J]. Rahman Mohammad Saidur;Imani Mohsen.IEEE TRANSACTIONS ON INFORMATION FORENSICS AND SECURITY.2021

[4] 陈伟. 加密网页指纹提取与识别算法研究[D].南京:南京信息工程大学,2023.

[5] 王志辉,钟理.一种基于渗透测试的辅助软件设计[J]. 科技与创新.2024(02):35-37,41.

基金或课题项目:WEB指纹识别技术的研究与应用(项目编号:103952023057)

基金或课题项目:闽江学院2024年教育教学研究与改革项目(项目编号:MJUJG2024B005)

作者简介:

姓名:邱文鑫,出生:2003.11,性别:男,民族:汉族,籍贯:江西上饶,学历:大学本科职称:无,单位:闽江学院,单位邮编:350108,研究方向:网络安全、Web指纹识别

姓名:曾霞霞,出生:1981.06,性别:女,民族:汉族,籍贯:福建宁德,学历:硕士,职称:副教授,单位:闽江学院,单位邮编:350108,研究方向:信息安全、数据挖掘

*本文暂不支持打印功能

monitor