网站首页  词典首页

请输入您要查询的论文:

 

标题 一种基于HTML动态化的恶意爬虫主动防御方法
范文

    丁文豪 武斌

    

    

    

    摘? 要: 目前针对爬虫的防御技术主要是根据检测结果对恶意爬虫进行封禁,检测和防御机制单一,无法应对复杂多变的恶意爬虫,检测误判率高,容易造成误封、漏封。本文提出一种基于移动目标防御思想的恶意爬虫主动防御技术,使用一种新型的HTML动态化方法,结合自适应跳变策略来遏制爬虫规则的制订和后续的恶意操作。通过实验对比,本文提出的主动防御的方法可以有效地限制恶意爬虫自动化、批量化的行为;在保证数据内容安全的前提下有效地降低了其对服务性能的影响。

    关键词: 主动防御;移动目标防御;恶意爬虫;数据安全

    中图分类号: TP393? ? 文献标识码: A? ? DOI:10.3969/j.issn.1003-6970.2019.01.011

    【Abstract】: Nowadays, the researches of malicious crawler defense mainly depends on the detection results to block the malicious crawler`s IP address. The single detection and defense mechanism unable to deal with the complex and changeable malicious crawlers, the high error rate of detection resulting in false blocking and leaky blocking. This paper proposes a malicious crawler active defense technology based on the idea of moving target defense, and uses a new dynamic method of HTML. Combined with adaptive jump strategy to curb the formulation of crawler rules and subsequent malicious operations. Through experimental comparison, the active defense method proposed in this paper can effectively limit the automated and batch behavior of malicious crawlers; in the premise of ensuring the security of data content, it can effectively reduce the impact on service performance.

    【Key words】: Active defense; Moving target defense; Malicious crawler; Information security

    0? 引言

    大數据时代背景下,人们获取有效信息的需求不断增加,网络爬虫作为自动化获取信息的有力助手得以迅猛发展[1]。网络爬虫能够根据预设规则实现自动化、持续化、低成本地和网络应用进行交互,使之被应用到了各个领域,如用以解决信息过载的搜索引擎[2]。

    在享受网络爬虫带来的便利的同时,网络爬虫也带来了诸多安全隐患,企业核心数据被利用网络爬虫暴力批量获取、非法批量采集敏感数据进行社会工程学攻击、刷票/刷点评/秒杀工具带来恶意竞争、批量检测站点漏洞从而造成经济损失以及占用网络带宽、虚耗网络资源等[3],这些不按照网站给出的robots协议,未经授权进行恶意访问的爬虫本文中定义为恶意爬虫,这些爬虫的存在对网络环境带来了巨大的安全隐患。

    Distil Networks 2018研究报告指出,互联网中有约40%~60%的流量来自网络爬虫,其中恶意爬虫占据一半的流量[4]。恶意爬虫的存在给网络安全带来了新的挑战,如何高效的防御恶意爬虫成为网络应用建设者和安全研究者的共同目标。

    本文提出一种基于移动目标防御且自适应调整变换频率的恶意爬虫主动防御方法,能够有效的对恶意爬虫进行防御,并能够在保证数据安全的前提下降低时间和资源的开销。本文主要提出一种新型的HTML动态化方法,来增强HTML代码的复杂性和不可预测性,并通过实验验证其有效性;提出一种自适应调整变换频率的策略,通过实验证明该策略可以有效的降低系统的开销。

    1? 研究现状

    恶意爬虫带来的安全隐患已经引起了研究人员和网络应用从业者的广泛关注,提出了很多防御机制,现阶段常见的防御方式有依据检测结果对相应的IP地址进行封禁,采用验证码进行限制和利用页面元素随机化进行主动防御的机制。

    鲁念平[5]检测后利用图形验证码进行拦截,该方案的主要观点是,通过识别进行封禁,为了容错性,选用了较为简单的数字和字母混合的验证码方式进行拦截。然而,当前技术研究中已经出现了大量针对验证码识别的模型,能够快速准确的进行识别、提交,该方案无法达到预期效果。

    欧阳志友[6]等人提出行为式验证码,通过梯度提升模型的二分器对访问者的鼠标轨迹进行分类,可以限制对恶意爬虫的访问,但是文章中并未提及该验证码的实际形式,并且,现有的恶意网络爬虫技术有能力可以事先录制鼠标轨迹进行模拟,能够完全绕过该类验证码。

    任宏伟[7]提出基于BreakOut异常检测算法,对异常流量的IP地址进行惩罚封杀,从而降低异常流量占比,缓解网站服务的压力,该方法完全依赖检测结果,如果检测结果存在较高误差,将会对正常用户进行限制,影响系统的可用性;另一方面,考虑到IPv4的有限性,多数的客户端都使用的一个出口IP,如果对IP地址进行惩罚,将会导致大量正常用户无法访问。因此该方法无法保证系统的用户体验。

    Wang W[8]等人,利用将HTML页面静态的标签随机化用来限制对页面内容的持续匹配从而限制恶意爬虫和广告过滤器,使用随机数增加了爬虫批量化的难度,但是静态路径问题依然存在,通过xPath方式进行路径匹配可以完全定位,并没能解决爬虫问题。另一方面,该方案没有考虑到页面性能的问题,为了防御爬虫增加的各类特征,都增加了系统的资源开销。

    以上研究都对恶意爬虫的防御起到了一定作用,但是主要还依赖于检测结果,由于检测、防御机制的单一,在面对智能化的爬虫检测成功率越来越低,无法有效的检测出目前复杂多变的恶意爬虫,进而导致防御机制的误封、漏封。本文提出的HTML动态化的恶意爬虫主动防御方法,可以有效的增加爬虫编写者的分析难度,增加页面的复杂性和不可预测性,通过主动、动态的方式预先加固了页面的脆弱环节。

    2? 基于HTML动态化的恶意爬虫主动防御方法

    该方法主要解决HTML内容静态性、路径单一性、确定性所带来数据安全威胁的问题,旨在通过HTML代码动态化的方式,在保证不影响浏览器的正常解析的前提下,消除静态、唯一匹配的元素、路径,并在此基础之上提出一种自适应的跳变策略,降低系统因跳变所带来的能耗。图1所示为本文中主动防御方法的流程图,接下来章节将对该方法中的页面动态化和自适应策略进行进一步阐述。

    2.1? 页面动态化

    恶意爬虫的工作依赖于一系列预先设定好的规则,可以归纳为正则匹配和路径匹配两类。前者通过分析预匹配内容所在HTML内的位置,制订相应的正则表达式;后者通过分析DOM树的xPath路径,来确定精准指向目标元素的路径。为了更好地分析这些规则中存在的共性问题,本文通过针对Alexa排名前1000的站点编写对应的爬虫进行分析对比,如图2所示,现有爬虫通常依赖于HTML代码中的静态内容,如静态class/id/name等属性值或由于HTML 的DOM树结构导致的确定性的路径,因此本文提出动态加密算法和动态陷阱的概念对静态属性和路径进行动态化处理。

    2.1.1? 动态加密静态元素

    由于HTML静态属性值赋予了爬虫匹配规则的唯一定位和持久可用性,本文采用动态加密的方式对静态属性进行加密处理,使得每次响应的HTML代码中原有的HTML静态属性动态变化,且具有不可逆向和不可预测性。

    文献[8]提到的页面随机化技术应用于阻止AdBlock,其将HTML静态属性进行随机化处理,需要将随机化的内容进行映射存储,存在逆向风险。本文引入一种动态加密算法,将Rijndael算法进行改进提升。Rijndael算法是基于代换-置换网络(SPN,Substitution-permutation network)的迭代算法[9],具有较高的效率和安全性。

    2.1.2? 动态陷阱

    经过验证,对HTML静态属性值动态化之后,静态路径仍然存在单一性和可匹配性的问题存在,由于HTML源代码DOM(文档对象模型)树结构的缘故,父、子、同胞、先辈以及后代节点的上下级关系确定了任意子节点都至少存在一条从根节点到该节点的路径支持精准定位,并且由于路径是由元素标签依次组成的,在没有新的元素生成的前提下该路径是静态不变的,从图中可以观察到,即使其属性或者文本发生变化也不会影响到该从根元素到该元素的路径。恶意爬虫可以利用xPath等selector方式进行精准定位,提取定位到节点的内容、属性或者事件做相应操作。

    通过实验分析,指向指定节点的任一路径如果中间插入了任一标签,都会影响到该路径的准确性,路径会发生变化,从而消除静态路径的可匹配性。因此,本文提出一种动态陷阱技术,消除DOM树结构导致的静态路径问题,使HTML在动态加密静态属性之后动态混淆DOM层级关系。动态陷阱的目标是动态地加入隐藏DOM树节点,只是影响DOM树的层级结构的相对位置,消除DOM路径的单一性和可匹配性。本文提出自动抽取当前页面结构,动态加入陷阱节点。

    该模块根据指定内容进行动态插入陷阱节点,主要分为插入点的选取和插入内容的选取两部分。

    (1)插入点的选取

    路径/html/body/div[5]/dl/dd/ul/li[7]/div[2]/div[1]/a表示的是一条指向a节点的路径,路径由节点、谓语等构成,其中谓语包含在[]中,表示在当前级别中选取的该类节点的第几个节点。路径的语法包含了根据DOM树结构的特点可以看出,在此条路径中a元素的上级添加任意节点都会改变指向当前a节点的路径。

    根据设定需要防护的内容首先找到该内容所处节点的路径,DOM树节点的精准路径会因为该节点的先辈节点和前驱同胞节点的增减而变化,故选取插入点的方式便是在其先辈节点中进行插入或在其前面插入同胞节点。因此可以根据指定节点计算其先辈节点和前驱同胞节点的可能情况。

    (2)插入内容的选取

    DOM树中节点包含标签、标签属性以及内容,标签一般包含起始标签和结束标签均嵌入在尖括号中,内容位于两个标签的中间,如这里是内容。插入内容应该至少满足不影响代码执行、不影响页面显示效果且具有不可预测性三个条件。首先,插入的DOM节点均为HTML中的合法节点即可满足不影响代码正常执行;动态插入的节点中不包含内容且不与已有节点产生冲突即可满足不影响页面显示;满足以上两点的tag类型可以自行构造,因此满足不可预测性。

    (3)基于梅森旋转算法的插入機制

    插入机制通过随机选择的方式从插入点和插入内容中进行选取,为了能够提升随机性和不可预测性,需要对插入位置和插入内容进行随机选择,用来产生随机数的方法有很多,如线性同余法、平方取中法以及梅森旋转算法,考虑到随机数质量以及生成效率都有很大的优势[12],本文中引入梅森旋转法做相应改造后来进行随机选择,通过实验分析动态陷阱具有很高的不可逆向性和不可预测性,能够高效地消除HTML中的静态路径问题。

    2.2? 自适应调整动态频率

    移动目标防御最重要的三个问题,“变什么”、“什么时间变”以及“怎么变”,前边章节已经讲述了“变什么”和“怎么变”,而动态的改变就会给系统带来负面影响,影响系统的响应时间,因此选取一个合理的跳变策略,能够实现一个高效的移动目标防御系统[10-11]。

    文献[8]中忽略了对实际应用中并发的考虑,假设web页面元素动态化频率为1秒钟一次,在t0时刻刚结束上一次跳变则t0+1时刻继续跳变,这时,如果访问量达到了原有系统(未加跳变模块时)的最大承受量,且响应时间接近1秒,即系统将针对每一个响应都要进行一次跳变,系统的,进而无法继续提供服务。

    本文提出一种自适应调整变换频率的策略,旨在降低因动态化带来的系统开销。自适应的初衷即是为了能够更好的利用系统性能,保证系统的服务质量,引进一种对系统剩余性能状态进行量化的方法,该方法对系统的性能指标实时采集、计算,从而得出目前的系统性能状态。为了确保系统性能状态对自适应策略影响的准确性,需要获得较为全面的系统信息参数,采集和处理过程中过多的参数会带来额外的开销。如果对性能的改进不能弥补过程中额外的开销,过多的参数易造成负载均衡服务器过载。因此,尽量避免引入过多冗余的参数。根据本系统实际情况分析,由于服务器节点在存储方面对系统负载影响较小,本文中的方法不考虑硬盘利用率,采用CPU利用率、内存利用率和IO消耗。

    3? 模型验证

    为了测试本文中的模型的安全性和效率,本文开发了支持各类请求和实际访问的web应用,用于实验测试。使用Python语言搭建一个涵盖所有页面类型的站点,其中包括各类可匹配的静态元素、静态路径,支持恶意爬虫的采集爬取、恶意模拟提交等150个web页面。

    3.1? 页面动态化实验分析

    本文中页面动态化主要采用了对静态属性动态加密和动态插入陷阱节点,增强了页面数据的安全性,降低了冗余存储以及加密时间,因此本实验选择本文方法(方案一)与文献[8](方案二)以及普通方案(正常情况)进行比较,主要从爬虫交互的成功率、动态化时间两个维度进行实验。

    爬虫交互成功率采用实际请求的方式,分别使用成熟的爬虫工具(八爪鱼、集搜客等)、GitHub成熟的爬虫代码以及针对性的编写爬虫代码三种方式进行对自建站点的所有页面恶意爬取和交互,并统计每种方案下的交互成功率。

    分析不同方案对页面加载时间的影响,为了更好地统计页面加载时间,降低其它因素对响应时间的干扰,本次实验中采用对不同大小页面进行分组,分为了0-0.5*10^6byte,0.5-01*10^6byte以此类推共计六组来验证三种方案下页面加载时间;加载时间的记录通过对每个重复页面请求10次取均值处理。

    表1中数值代表了不同防御方案、不同爬虫工具对实验站点所有页面进行交互的成功率,通过对比实验结果可以发现,由于文献[8]中只是对静态属性值进行了随机化,从一定程度上对恶意爬虫进行了限制,但是针对性代码仍能通过xPath路径,仍可以精准定位到关键元素,并进行后续的恶意攻击操作。而本文中提出的方案在各类攻击工具面前成功率均在10%以内,几乎能够对所有页面进行防护。因此,本文提出的方案能够有效的对恶意爬虫进行全面的防御。

    可以看出本文中提出的方案在各类页面大小分组下都具有较好的优势,另外由于方案二中增加了过多的冗余存储,当页面过大,过多元素映射关系的存储带来检索的压力,导致时间变长,实验结果也表明,当页面不断增大时,本文提出的方案(方案二)的效果也更为凸显。

    3.2? 自适应策略性能分析

    增加动态化策略增大了系统的开销,为了能够选定一个高效率的动态频率,将本文提出的自适应动态频率和固有频率进行对比,固有频率选取保证安全性前提下的三个值与自适应频率进行对比。

    编写实时获取系统性能指标的代码用于自适应跳变策略的,本实验增加动态变换策略后主要影响的性能点事CPU利用率和页面响应时间,本文中采用真实的用户进行对站点的访问进行实验,实验分组分为四组,各组配置如表2所示。

    以上分析可以得出,当加入动态策略之后,系统的性能受到影响,并且随着用户并发量愈发显著,在不考虑性能的情况下,每秒钟对页面进行一次动态加密,几乎可以完全阻止页面数据的采集行为,但是频率越大,对性能影响也越大,在自建站点上正常最佳用户量为40,当频率达到一秒钟一次自建系统最佳用户量为25,自适应策略可以根据系统真实情况自适应动态调整变换频率,从而减少了系统消耗并提升了数据安全性。

    4? 总结

    本文针对恶意爬虫利用静态路径进行恶意操作的问题,提出了恶意陷阱技术,通过动态化的添加陷阱节点消除了静态路径带来的精准匹配隐患;同时对静态属性随机化进行优化,使用动态加密算法解决了利用正则等方式进行匹配目标元素的问题,这两个主动、动态措施有效的遏制了复杂多变的爬虫的恶意行为,弥补了现有被动防御技术中过于单一、误判率高等问题。另外,本文考虑到动态化带来的资源消耗问题,提出一种自适应的动态化机制,有效地降低了因附加动态化而带来的系统性能问题。

    参考文献

    Lee J, Cha S, Lee D, et al. Classification of web robots: An empirical study based on over one billion requests[J]. Computers & Security, 2009, 28(8): 795-802.

    胡晟. 基于网络爬虫的Web挖掘应用[J]. 软件, 2012, 7: 145-147.

    Vikram S, Yang C, Gu G. NOMAD: Towards non-intrusive moving-target defense against web bots[C]//Communications and Network Security. IEEE, 2014: 55-63.

    Distil Networks.2017 Bad Bot Report[R]. San Francisco, 2018.

    鲁念平. 针对信息披露网站的实时爬虫检测与拦截[D]. 哈尔滨工业大学, 2016.

    欧阳志友, 孙孝魁等. 基于梯度提升模型的行为式验证码人机识别[J]. 信息网络安全, 2017(9): 143-146.

    任宏伟. 基于异常检测技术的数据防爬系统设计与应用[D]. 中国科学院大学(工程管理与信息技术学院), 2016.

    Wang W, Zheng Y, Xing X, et al. WebRanz: web page randomization for better advertisement delivery and web-bot prevention[C]//ACM Sigsoft International Symposium on Foundations of Software Engineering. ACM, 2016: 205-216.

    趙凯,胡云琴. Rijndael加密算法的原理分析[J]. 网络安全技术与应用, 2015(4): 14-15.

    刘丹军, 蔡桂林, 王宝生. AMTD: 一种适应性移动目标防御方法[J]. 网络与信息安全学报, 2018(1): 15-25.

    赵鑫. 跳变信息服务系统研究[J]. 软件, 2018, 39(3): 204- 208.

    焦然, 王宜敏. 引入梅森旋转算法的三角网格模型部分隐写算法[J]. 电子测量技术, 2017(12): 228-232.

随便看

 

科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。

 

Copyright © 2004-2023 puapp.net All Rights Reserved
更新时间:2025/3/21 15:01:56