CN108769081B - 一种检测xss攻击的方法、装置及计算机可读存储介质 - Google Patents
一种检测xss攻击的方法、装置及计算机可读存储介质 Download PDFInfo
- Publication number
- CN108769081B CN108769081B CN201810758072.0A CN201810758072A CN108769081B CN 108769081 B CN108769081 B CN 108769081B CN 201810758072 A CN201810758072 A CN 201810758072A CN 108769081 B CN108769081 B CN 108769081B
- Authority
- CN
- China
- Prior art keywords
- load
- malicious
- attack
- xss
- detecting
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
- H04L63/1416—Event detection, e.g. attack signature detection
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2463/00—Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00
- H04L2463/146—Tracing the source of attacks
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种检测XSS攻击的方法、装置及计算机可读存储介质,所述方法包括:根据XSS攻击的本体构建贝叶斯网络;判断待判定的载荷是否包含跳转链接;在该待判定的载荷包含跳转链接时,判断该载荷是否为恶意攻击载荷;在该待判定的载荷未包含跳转链接或包含的跳转链接非恶意时,则根据构建好的贝叶斯网络的特征判断该条记录是否为恶意攻击载荷;若判断为存在恶意攻击载荷时,则发出警报。本发明的方法可操作性强,其结果具有可解释性,为各网站防范XSS攻击提供了有力保障。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种检测XSS攻击的方法、装置及计算机可读存储介质。
背景技术
网络攻击检测一直是安全领域的热门话题。传统的检测方法主要依赖入侵检测系统(Intrusion Detection Systems,IDS),该系统旨在识别网络中的恶意行为和违规活动。但是,面对来自应用层的攻击(如XSS,Cross-Site Scripting,跨站脚本攻击),传统方法效果难以令人满意。在XSS检测方面,目前有两种主流的检测方法:静态分析和动态分析。
静态分析是一种手动分析方法,网络安全人员直接从源代码中挖掘可能的漏洞,通常会借助一些辅助工具。静态分析的主要缺点是需要大量的人工精力:程序的源代码通常规模巨大且逻辑复杂,而且其对大众来说通常是无法访问的,因此这种方法作用有限。动态分析是另一种手动分析方法,测试者模拟真实的攻击者对某应用程序进行渗透测试。它会在应用程序的可能注入点中尝试不同的有效攻击向量,并根据响应进行进一步的分析。攻击向量的完备性在这种方法中起着关键作用,并且存在不同的攻击向量生成算法。
如今由于XSS攻击载荷(payload)形式的增加,传统的静态分析和动态分析方法难以将其全部检测出。为了解决这个问题,机器学习算法已经被引入到XSS的检测中,而目前大多数研究中使用的都是黑盒模型,并且缺乏对结果的解释。贝叶斯网络在机器学习领域是一个很好的白盒模型,其结果对用户来说是可以解释的。贝叶斯网络的构建通常需要将专家知识和数据结合起来作为输入,纯数据驱动的贝叶斯网络学习需要大量的高质量数据。因此,需要领域知识,即安全本体来支持模型的构建。
最近,人们引入另一种领域知识—开源威胁情报—作为模型构建的补充。威胁情报是从多个渠道获得的用于保护系统核心资产的安全线索的总和。通用漏洞评分系统(Common Vulnerability Scoring System,CVSS)评分是一种流行的开源威胁情报类型,其有很多子分数,研究者通常以不同的方式将它们结合起来,在风险评估中制定自己的评估指标。但是,除漏洞数据库外,还有很多威胁情报来源没有被研究者使用,如在线恶意IP数据库和恶意域名数据库。
鉴于上述缺陷,有必要提出一种新的防范XSS攻击的方法。
发明内容
本发明的主要目的在于提供一种检测XSS攻击的方法、装置及计算机可读存储介质,旨在提供一种防范XSS攻击的有力方法。
为实现上述目的,本发明提供的一种检测XSS攻击的方法,所述检测XSS攻击的方法包括如下步骤:
步骤S10,根据XSS攻击的本体构建贝叶斯网络;
步骤S20,判断待判定的载荷是否包含跳转链接;
步骤S30,在该待判定的载荷包含跳转链接时,判断该待判定的载荷是否为恶意攻击载荷;
步骤S40,在该待判定的载荷未包含跳转链接或包含的跳转链接非恶意时,则根据构建好的贝叶斯网络的特征判断该待判定的载荷是否为恶意攻击载荷;
步骤S50,在步骤S30和/或步骤S40中若判断为存在恶意攻击载荷时,则发出警报。
优选地,所述步骤S20之前还包括:
通过在网络中获取恶意IP和恶意域名库;
将获取到的恶意IP以及恶意域名库作为恶意情报库。
优选地,所述步骤S30的步骤包括:
步骤S31,将跳转链接进行预设处理后与所述恶意情报库进行比对;
步骤S32,若比对匹配成功则将该待判定的载荷记录为恶意的攻击载荷。
优选地,所述步骤S31中的将跳转链接进行预设处理的步骤包括:
获取跳转链接,若跳转链接为IP地址,则将其还原为点分十进制的形式。
优选地,所述步骤S40的步骤包括:
步骤S41,对该待判定的载荷进行相应特征值的提取,并将该相应特征值输入到贝叶斯网络中;
步骤S42,根据标签节点中不同标签的概率判断是否为恶意的攻击载荷。
优选地,所述步骤S10的步骤之后包括:
步骤S100,获取需要进行处理的原始数据;
步骤S101,对所述原始数据进行预处理;
步骤S102,将预处理后的数据记录到数据库中;
步骤S103,利用预处理好的数据对贝叶斯网络进行结构学习以获取贝叶斯网络的相应参数和结构。
优选地,所述步骤S101包括:
步骤S1011,对包含URL请求的数据进行URL解码;
步骤S1012,对进行URL解码后的数据进行JS解码;
步骤S1013,对进行JS解码后的数据进行HTML实体编码的解码;
步骤S1014,对进行HTML实体编码解码后的数据进行ASCII码的解码;
步骤S1015,将解码后的数据中大写字母全部转变为小写字母;
步骤S1016,将解码后的数据中从左至右的第一个等号之前的数据取出,保留剩余数据。
优选地,所述步骤S10包括:
步骤S11,构建反映XSS攻击的本体;
步骤S12,提取XSS攻击向量的特征来构建贝叶斯网络。
此外,为实现上述目的,本发明还提供一种检测XSS攻击的装置,所述检测XSS攻击的装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的检测XSS攻击的程序,所述检测XSS攻击的程序被所述处理器执行时实现如上所述的方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有检测XSS攻击的程序,所述检测XSS攻击的程序被处理器执行时实现如上所述的检测XSS攻击的方法的步骤。
本发明检测XSS攻击的方法根据XSS攻击的本体构建贝叶斯网络;判断待判定的载荷是否包含跳转链接;在该待判定的载荷包含跳转链接时,判断该载荷是否为恶意攻击载荷;在该待判定的载荷未包含跳转链接或包含的跳转链接非恶意时,则根据构建好的贝叶斯网络的特征判断该条记录是否为恶意攻击载荷;若判断为存在恶意攻击载荷时,则发出警报。本发明的方法由于其恶意情报均爬取于开源网站,其关于恶意情报的信息开放透明,故使本发明的方法可操作性强,并且本发明的方法通过构建贝叶斯网络从而使其结果具有可解释性,为各网站防范XSS攻击提供了有力保障。
附图说明
图1为本发明检测XSS攻击的方法第一实施例的流程示意图;
图2为本发明检测XSS攻击的方法第二实施例的流程示意图;
图3为本发明检测XSS攻击的方法第三实施例的流程示意图;
图4为本发明检测XSS攻击的方法第四实施例的流程示意图;
图5为本发明检测XSS攻击的方法第五实施例的流程示意图;
图6为本发明检测XSS攻击的方法第六实施例的流程示意图;
图7为本发明检测XSS攻击的装置的示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明提供一种检测XSS攻击的方法,在第一实施例中,参见图1,所述检测XSS攻击的方法包括如下步骤:
步骤S10,根据XSS攻击的本体构建贝叶斯网络;
本体是领域知识的重要表现形式,是反映一个领域中的重要概念及概念间的相互关系的重要方式。
所述步骤S10包括:
步骤S11,构建反映XSS攻击的本体;
步骤S12,提取XSS攻击向量的特征来构建贝叶斯网络。
通过对本体进行构建,可以理清XSS攻击载荷的相应特点,并可以将其细化作为模型构建所需特征。本发明实施例中构建的反射型XSS本体如图2所示。其中,该反射型XSS本体包括敏感关键词和/或敏感字符和/或跳转链接。
本体是一个高层的概念模型,要对其中的概念进行进一步的细化来作为将来构建模型所需要的特征。在这里,URL长度可以作为一个定量化的特征;敏感关键词包含了很多,在本发明的实施例中选取以下10个:alert、script、onerror、img、onload、eval、src、prompt、href、javascript;敏感字符在本发明的实施例中选取如下几个:单引号(')、双引号(")、左尖括号(<)、右尖括号(>)、反斜杠(\)和逗号(,);跳转链接在模型中不单独作为一个特征,在后续的判断中若攻击载荷中存在跳转链接将其直接提取出来即可。最终,本发明实施例所选用的特征及在后续模型中的节点标号如下所示:
表1节点序号及含义
之后,利用贝叶斯学习算法对经过预处理的数据进行贝叶斯网络的结构学习。在本发明的实施例中,采用PyAgrum这一Python扩展包进行贝叶斯网络的结构学习。PyAgrum是一个由Python写成的贝叶斯网络扩展包,其中包含了很多成熟算法,涉及贝叶斯网络的参数学习、结构学习和推断等。本实施例中使用其自带的useLocalSearchWithTabuList函数进行贝叶斯网络的结构学习获取贝叶斯网络的结构和相应参数。该函数应用了基于评分搜索的算法,以BDeu评分作为评分函数,禁忌搜索作为搜索算法。本实施例中获得的贝叶斯网络结构如图3所示,其中节点17为标签节点,代表该条待判断记录为正常或有效攻击载荷的概率。
步骤S20,判断待判定的载荷是否包含跳转链接;
对于XSS攻击来说,其恶意代码可能会藏在跳转之后的页面中,而其攻击载荷本身可能只是一个看似无害的跳转链接。例如,<A HREF=”http://x.x.x.x/evil.js”>click</A>(x是一个0~255的正整数)中,当用户点击该链接时,页面会跳转,而真正的恶意代码隐藏在跳转后的页面中,导致用户受到XSS攻击。
因此要有足够的恶意IP库和恶意域名库来进行进一步的匹配,做到对可能的恶意跳转进行及时的拦截。在网上有很多开源的恶意IP库和恶意域名库,在本发明的实施例中,选取FireHOL作为恶意IP库的爬取来源,DNS-BH和PhishTank作为恶意域名库的爬取来源,选用Python3.6中的Requests库和BeautifulSoup库作为爬虫的主要依赖扩展包。
FireHOL本身是Costa Tsaousis开发的用来对Linux内核防火墙的netfilter中IP表进行定制的一种shell脚本,其开发者提供了一个良好的恶意IP地址库,其在GitHub上开源并会经常更新。DNS-BH和PhishTank是两个在线的恶意域名库,两者都有较高的更新频率。Requests库是Python语言编写的爬虫库,其可以方便的从网上爬取大量的数据,而BeautifulSoup库是一个可以从HTML或XML文件中提取数据的Python库,它能够有效解析爬取下来的数据并根据用户需求对其所需数据进行获取。
步骤S30,在该待判定的载荷包含跳转链接时,判断该待判定的载荷是否为恶意攻击载荷;
步骤S40,在该待判定的载荷未包含跳转链接或包含的跳转链接非恶意时,则根据构建好的贝叶斯网络的特征判断该待判定的载荷是否为恶意攻击载荷;
步骤S50,在步骤S30和/或步骤S40中若判断为存在恶意攻击载荷时,则发出警报。
根据对步骤S30和步骤S40的判断输出对应结构,若判断结果为待判定载荷存在恶意攻击载荷,则发出提示警报。
本实施例根据XSS攻击的本体构建贝叶斯网络;判断待判定的载荷是否包含跳转链接;在该待判定的载荷包含跳转链接时,判断该载荷是否为恶意攻击载荷;在该待判定的载荷未包含跳转链接或包含的跳转链接非恶意时,则根据构建好的贝叶斯网络的特征判断该条记录是否为恶意攻击载荷;若判断为存在恶意攻击载荷时,则发出警报。本发明的方法由于其恶意情报均爬取于开源网站,其关于恶意情报的信息开放透明,故使本发明的方法可操作性强,并且本发明的方法通过构建贝叶斯网络从而使其结果具有可解释性,为各网站防范XSS攻击提供了有力保障。
进一步地,请参阅图4,基于本发明检测XSS攻击的方法第一实施例,在本发明检测XSS攻击的方法第二实施例中,上述步骤S10之后还包括:
步骤S100,获取需要进行处理的原始数据;
步骤S101,对所述原始数据进行预处理;
步骤S102,将预处理后的数据记录到数据库中;
步骤S103,利用预处理好的数据对贝叶斯网络进行结构学习以获取贝叶斯网络的相应参数和结构。
其中所述步骤S101包括:
所述步骤S101包括:
步骤S1011,对包含URL请求的数据进行URL解码;
步骤S1012,对进行URL解码后的数据进行JS解码;
步骤S1013,对进行JS解码后的数据进行HTML实体编码的解码;
步骤S1014,对进行HTML实体编码解码后的数据进行ASCII码的解码;
步骤S1015,将解码后的数据中大写字母全部转变为小写字母;
步骤S1016,将解码后的数据中从左至右的第一个等号之前的数据取出,保留剩余数据。
具体地,一个XSS的攻击测试记录可能具有如下的形式:/0_5/wap.php?pageBody=%3Cscript%3Ealert(42873)%3C/script%3E。其中,“?”之前的数据代表一个网站的相应地址和路径,问号后的第一个等号之前的部分是该网站的一个请求参数的名称,之后的部分就是有效攻击载荷了。载荷中的%3C和%3E是URL编码,将其解码后还原为有效的攻击载荷<script>alert(42873)</script>,这是XSS攻击的一种常见测试攻击载荷。因此,对于获取到的可能包含XSS攻击载荷的URL请求,要经历以下步骤的预处理:URL解码;JS解码;HTML实体编码的解码;ASCII码的解码;将原始数据中大写字母全部变为小写字母;将从左至右的第一个等号之前(包含等号)的数据去除,保留剩余数据。将获取到的所有数据预处理后,得到一个完整的攻击载荷数据库,记为PD={py1,…,pyn}。
在本发明的实施例中,以上的步骤均在Python3.6的集成编写环境Anaconda中进行,使用的数据为从GitHub和各种安全论坛网页等收集来的XSS数据,包含正常数据记录135507条和攻击载荷16151条。Anaconda是一个Python的集成编写环境,其提供了类似于MATLAB那样的可以查看变量的图形化界面,同时其中集成了很多编写所需的扩展包,方便在编写程序时进行调用。
进一步地,请参阅图5,基于本发明检测XSS攻击的方法第二实施例,在本发明检测XSS攻击的方法第三实施例中,上述步骤S30包括:
步骤S31,将跳转链接进行预设处理后与所述恶意情报库进行比对;
步骤S32,若比对匹配成功则将该待判定的载荷记录为恶意的攻击载荷。
一般地,为了掩盖真实跳转目的地,跳转用的IP通常会进行伪装。IP地址通常用点分十进制的表示方式(如127.0.0.1),每个部分是0~255之前的十进制整数,而这每一部分都可以用二进制、八进制、十进制或十六进制进行表示。IP地址的四个部分间不需要统一的进制形式,通过进制混用可以对恶意IP地址进行伪装。同时,IP地址也可以用一个单一的整数进行表示,例如,对于一个IP地址10.0.3.193,其可以使用167773121来代表,计算过程为10×2563+0×2562+3×256+193=167773121。将一个长整数转变成常规的点分形式的IP地址时,首先将其还原为一个32位的二进制数字,之后每8位一段分割成四段,将每一段还原成十进制数字即可。对于上述案例来说,167773121可以还原为00001010000000000000001111000001,按照每8位分割成一段共有四段,00001010.00001010.00000011.11000001,每一段还原回整数后即可。
故本实施例中,需将跳转链接进行预设处理,其中所述预设处理的方法为:检测该跳转链接是否为IP地址,若该跳转链接为IP地址,则将其还原为点分十进制的形式。
进一步地,将跳转链接进行预设处理后与所述恶意情报库进行比对,若比对匹配成功则将该待判定的载荷记录为恶意的攻击载荷。其中,该恶意情报库又包括恶意IP库和恶意域名库,若跳转链接为IP地址,则将其还原为点分十进制的形式后再与恶意情报库中的恶意IP进行比对;若为域名标志的跳转链接,则将其与恶意情报库中的恶意域名库进行比对,若比对成功,则将该条记录为恶意攻击载荷。
本实施例中通过将跳转链接进行预设处理后与所述恶意情报库进行比对;若比对匹配成功则将该待判定的载荷记录为恶意的攻击载荷。通过将爬取的恶意IP和恶意域名与跳转链接进行比对,对新型攻击载荷有较好的发现能力。
进一步地,请参阅图6,基于本发明检测XSS攻击的方法第三实施例,在本发明检测XSS攻击的方法第四实施例中,所述步骤S41包括:
步骤S41,对该待判定的载荷进行相应特征值的提取,并将该相应特征值输入到贝叶斯网络中;
步骤S42,根据标签节点中不同标签的概率判断是否为恶意的攻击载荷。
当经过比对后没有发现该链接为恶意链接时,根据构建好的贝叶斯网络的特征对该条记录进行相应特征值的提取,并将这些值作为证据输入贝叶斯网络,根据标签节点中不同标签的概率来判断该条记录是否为恶意的攻击载荷。
为形式化上述描述,令c={C1,…,Cm}代表爬取的恶意情报库,X={X1,…,Xn}是依据本体提取出的特征,r={r1,…,rN}是从相应待判断记录中提取的跳转链接,T={T1,…,TN}代表相应的待判断记录的类型,类型的计算方式为:
在等式中,0代表待判断记录为正常,1代表待判断记录为攻击载荷。IC(ri)是一个指示函数,当ri属于集合C时,该指示函数的值为1,否则为0。P(Ti=1|X1,…,Xn)代表在给定特定证据后当前待判断记录为恶意的后验概率,在本发明的实施例中证据意味着相应的待判断记录中根据相应特征提取的特征值,计算该后验概率使用的方法为联结树算法(junction tree algorithm),在PyAgrum包中已包含相关算法。如果Ic(ri)的值为1,显然该条待判断记录为攻击载荷;如果Ic(ri)的值为0并且P(Ti=1|X1,…,Xn)>0.5,则意味着P(Ti=1|X1,…,Xn)>P(Ti=0|X1,…,Xn),证明该条待判断记录是攻击载荷;否则,该条记录为正常记录。在本发明的实施例中,为验证本发明所提方法的有效性,在实施例中从GitHub和各种安全论坛博客中重新搜集了9497条测试数据,包含6000条正常数据和3497条攻击载荷,分别将其中不同比例的数据换成带有恶意跳转的攻击载荷(例如<A HREF="http://ksdiy.com/evil.js">click</A>),其中恶意跳转目的地从爬取下的恶意情报库中获取。
采用如上所述的方法与传统机器学习分类器效果进行对比,其结果如下表所示:
表2本发明方法与传统分类器的对比效果图
本发明方法 | 支持向量机 | 逻辑斯蒂分类器 | 朴素贝叶斯 | 决策树 | |
原始 | 91.04% | 97.00% | 98.02% | 99.18% | 98.04% |
5% | 91.57% | 94.65% | 95.59% | 95.46% | 94.36% |
10% | 92.07% | 92.26% | 93.18% | 91.77% | 90.66% |
15% | 92.56% | 89.86% | 90.71% | 88.07% | 87.01% |
20% | 92.88% | 87.49% | 88.28% | 84.38% | 83.32% |
25% | 93.35% | 85.07% | 85.87% | 80.67% | 79.64% |
30% | 93.85% | 82.73% | 83.40% | 77.01% | 75.95% |
35% | 94.23% | 80.32% | 80.98% | 73.27% | 72.27% |
40% | 94.67% | 77.94% | 78.55% | 69.60% | 68.58% |
45% | 95.08% | 75.53% | 76.09% | 65.89% | 64.86% |
从结果可以看出,本发明所提方法对恶意载荷有较好的判断作用。
本发明进一步提供一种检测XSS攻击的装置,参见图7,所述检测XSS攻击的装置包括:存储器102、处理器101及存储在所述存储器102上并可在所述处理器101上运行的检测XSS攻击的程序,所述检测XSS攻击的程序被所述处理器101执行时实现如下方法步骤:
根据XSS攻击的本体构建贝叶斯网络;
判断待判定的载荷是否包含跳转链接;
在该待判定的载荷包含跳转链接时,判断该待判定的载荷是否为恶意攻击载荷;
在该待判定的载荷未包含跳转链接或包含的跳转链接非恶意时,则根据构建好的贝叶斯网络的特征判断该待判定的载荷是否为恶意攻击载荷;
在步骤S30和/或步骤S40中若判断为存在恶意攻击载荷时,则发出警报。
本体是领域知识的重要表现形式,是反映一个领域中的重要概念及概念间的相互关系的重要方式。
所述根据XSS攻击的本体构建贝叶斯网络的步骤包括:
构建反映XSS攻击的本体;
提取XSS攻击向量的特征来构建贝叶斯网络。
通过对本体进行构建,可以理清XSS攻击载荷的相应特点,并可以将其细化作为模型构建所需特征。本发明实施例中构建的反射型XSS本体如图2所示。其中,该反射型XSS本体包括敏感关键词和/或敏感字符和/或跳转链接。
本体是一个高层的概念模型,要对其中的概念进行进一步的细化来作为将来构建模型所需要的特征。在这里,URL长度可以作为一个定量化的特征;敏感关键词包含了很多,在本发明的实施例中选取以下10个:alert、script、onerror、img、onload、eval、src、prompt、href、javascript;敏感字符在本发明的实施例中选取如下几个:单引号(')、双引号(")、左尖括号(<)、右尖括号(>)、反斜杠(\)和逗号(,);跳转链接在模型中不单独作为一个特征,在后续的判断中若攻击载荷中存在跳转链接将其直接提取出来即可。最终,本发明实施例所选用的特征及在后续模型中的节点标号如下所示:
表1节点序号及含义
之后,利用贝叶斯学习算法对经过预处理的数据进行贝叶斯网络的结构学习。在本发明的实施例中,采用PyAgrum这一Python扩展包进行贝叶斯网络的结构学习。PyAgrum是一个由Python写成的贝叶斯网络扩展包,其中包含了很多成熟算法,涉及贝叶斯网络的参数学习、结构学习和推断等。本实施例中使用其自带的useLocalSearchWithTabuList函数进行贝叶斯网络的结构学习获取贝叶斯网络的结构和相应参数。该函数应用了基于评分搜索的算法,以BDeu评分作为评分函数,禁忌搜索作为搜索算法。本实施例中获得的贝叶斯网络结构如图3所示,其中节点17为标签节点,代表该条待判断记录为正常或有效攻击载荷的概率。
对于XSS攻击来说,其恶意代码可能会藏在跳转之后的页面中,而其攻击载荷本身可能只是一个看似无害的跳转链接。例如,<A HREF=”http://x.x.x.x/evil.js”>click</A>(x是一个0~255的正整数)中,当用户点击该链接时,页面会跳转,而真正的恶意代码隐藏在跳转后的页面中,导致用户受到XSS攻击。
因此要有足够的恶意IP库和恶意域名库来进行进一步的匹配,做到对可能的恶意跳转进行及时的拦截。在网上有很多开源的恶意IP库和恶意域名库,在本发明的实施例中,选取FireHOL作为恶意IP库的爬取来源,DNS-BH和PhishTank作为恶意域名库的爬取来源,选用Python3.6中的Requests库和BeautifulSoup库作为爬虫的主要依赖扩展包。
FireHOL本身是Costa Tsaousis开发的用来对Linux内核防火墙的netfilter中IP表进行定制的一种shell脚本,其开发者提供了一个良好的恶意IP地址库,其在GitHub上开源并会经常更新。DNS-BH和PhishTank是两个在线的恶意域名库,两者都有较高的更新频率。Requests库是Python语言编写的爬虫库,其可以方便的从网上爬取大量的数据,而BeautifulSoup库是一个可以从HTML或XML文件中提取数据的Python库,它能够有效解析爬取下来的数据并根据用户需求对其所需数据进行获取。
根据判断输出对应结构,若判断结果为待判定载荷存在恶意攻击载荷,则发出提示警报。
本实施例根据XSS攻击的本体构建贝叶斯网络;判断待判定的载荷是否包含跳转链接;在该待判定的载荷包含跳转链接时,判断该载荷是否为恶意攻击载荷;在该待判定的载荷未包含跳转链接或包含的跳转链接非恶意时,则根据构建好的贝叶斯网络的特征判断该条记录是否为恶意攻击载荷;若判断为存在恶意攻击载荷时,则发出警报。本发明的方法可操作性强,其结果具有可解释性,为各网站防范XSS攻击提供了有力保障。
进一步地,在一实施例中,所述检测XSS攻击的程序被所述处理器执行时实现如下方法步骤:
获取需要进行处理的原始数据;
对所述原始数据进行预处理;
将预处理后的数据记录到数据库中;
利用预处理好的数据对贝叶斯网络进行结构学习以获取贝叶斯网络的相应参数和结构。
其中所述对所述原始数据进行预处理的步骤包括:
所述步骤S101包括:
对包含URL请求的数据进行URL解码;
对进行URL解码后的数据进行JS解码;
对进行JS解码后的数据进行HTML实体编码的解码;
对进行HTML实体编码解码后的数据进行ASCII码的解码;
将解码后的数据中大写字母全部转变为小写字母;
将解码后的数据中从左至右的第一个等号之前的数据取出,保留剩余数据。
具体地,一个XSS的攻击测试记录可能具有如下的形式:/0_5/wap.php?pageBody=%3Cscript%3Ealert(42873)%3C/script%3E。其中,“?”之前的数据代表一个网站的相应地址和路径,问号后的第一个等号之前的部分是该网站的一个请求参数的名称,之后的部分就是有效攻击载荷了。载荷中的%3C和%3E是URL编码,将其解码后还原为有效的攻击载荷<script>alert(42873)</script>,这是XSS攻击的一种常见测试攻击载荷。因此,对于获取到的可能包含XSS攻击载荷的URL请求,要经历以下步骤的预处理:URL解码;JS解码;HTML实体编码的解码;ASCII码的解码;将原始数据中大写字母全部变为小写字母;将从左至右的第一个等号之前(包含等号)的数据去除,保留剩余数据。将获取到的所有数据预处理后,得到一个完整的攻击载荷数据库,记为PD={py1,…,pyn}。
在本发明的实施例中,以上的步骤均在Python3.6的集成编写环境Anaconda中进行,使用的数据为从GitHub和各种安全论坛网页等收集来的XSS数据,包含正常数据记录135507条和攻击载荷16151条。Anaconda是一个Python的集成编写环境,其提供了类似于MATLAB那样的可以查看变量的图形化界面,同时其中集成了很多编写所需的扩展包,方便在编写程序时进行调用。
进一步地,在一实施例中,所述检测XSS攻击的程序被所述处理器执行时实现如下方法步骤:
将跳转链接进行预设处理后与所述恶意情报库进行比对;
若比对匹配成功则将该待判定的载荷记录为恶意的攻击载荷。
一般地,为了掩盖真实跳转目的地,跳转用的IP通常会进行伪装。IP地址通常用点分十进制的表示方式(如127.0.0.1),每个部分是0~255之前的十进制整数,而这每一部分都可以用二进制、八进制、十进制或十六进制进行表示。IP地址的四个部分间不需要统一的进制形式,通过进制混用可以对恶意IP地址进行伪装。同时,IP地址也可以用一个单一的整数进行表示,例如,对于一个IP地址10.0.3.193,其可以使用167773121来代表,计算过程为10×2563+0×2562+3×256+193=167773121。将一个长整数转变成常规的点分形式的IP地址时,首先将其还原为一个32位的二进制数字,之后每8位一段分割成四段,将每一段还原成十进制数字即可。对于上述案例来说,167773121可以还原为00001010000000000000001111000001,按照每8位分割成一段共有四段,00001010.00001010.00000011.11000001,每一段还原回整数后即可。
故本实施例中,需将跳转链接进行预设处理,其中所述预设处理的方法为:检测该跳转链接是否为IP地址,若该跳转链接为IP地址,则将其还原为点分十进制的形式。
进一步地,将跳转链接进行预设处理后与所述恶意情报库进行比对,若比对匹配成功则将该待判定的载荷记录为恶意的攻击载荷。其中,该恶意情报库又包括恶意IP库和恶意域名库,若跳转链接为IP地址,则将其还原为点分十进制的形式后再与恶意情报库中的恶意IP进行比对;若为域名标志的跳转链接,则将其与恶意情报库中的恶意域名库进行比对,若比对成功,则将该条记录为恶意攻击载荷。
本实施例中通过将跳转链接进行预设处理后与所述恶意情报库进行比对;若比对匹配成功则将该待判定的载荷记录为恶意的攻击载荷。通过爬取的恶意IP和恶意域名库与跳转链接进行比对,对新型攻击载荷有较好的发现能力。
进一步地,在一实施例中,所述检测XSS攻击的程序被所述处理器执行时实现如下方法步骤:
对该待判定的载荷进行相应特征值的提取,并将该相应特征值输入到贝叶斯网络中;
根据标签节点中不同标签的概率判断是否为恶意的攻击载荷。
当经过比对后没有发现该链接为恶意链接时,根据构建好的贝叶斯网络的特征对该条记录进行相应特征值的提取,并将这些值作为证据输入贝叶斯网络,根据标签节点中不同标签的概率来判断该条记录是否为恶意的攻击载荷。
为形式化上述描述,令C={C1,…,Cm}代表爬取的恶意情报库,X={X1,…,Xn}是依据本体提取出的特征,r={r1,…,rN}是从相应待判断记录中提取的跳转链接,T={T1,…,TN}代表相应的待判断记录的类型,类型的计算方式为:
在等式中,0代表待判断记录为正常,1代表待判断记录为攻击载荷。IC(ri)是一个指示函数,当ri属于集合C时,该指示函数的值为1,否则为0。P(Ti=1|X1,…,Xn)代表在给定特定证据后当前待判断记录为恶意的后验概率,在本发明的实施例中证据意味着相应的待判断记录中根据相应特征提取的特征值,计算该后验概率使用的方法为联结树算法(junction tree algorithm),在PyAgrum包中已包含相关算法。如果IC(ri)的值为1,显然该条待判断记录为攻击载荷;如果Ic(ri)的值为0并且P(Ti=1|X1,…,Xn)>0.5,则意味着P(Ti=1|X1,…,Xn)>P(Ti=0|X1,…,Xn),证明该条待判断记录是攻击载荷;否则,该条记录为正常记录。在本发明的实施例中,为验证本发明所提方法的有效性,在实施例中从GitHub和各种安全论坛博客中重新搜集了9497条测试数据,包含6000条正常数据和3497条攻击载荷,分别将其中不同比例的数据换成带有恶意跳转的攻击载荷(例如<A HREF=”http:/ksdiy.com/evil.js”>click</A>),其中恶意跳转目的地从爬取下的恶意情报库中获取。
采用如上所述的方法与传统机器学习分类器效果进行对比,其结果如下表所示:
表2本发明方法与传统分类器的对比效果图
本发明方法 | 支持向量机 | 逻辑斯蒂分类器 | 朴素贝叶斯 | 决策树 | |
原始 | 91.04% | 97.00% | 98.02% | 99.18% | 98.04% |
5% | 91.57% | 94.65% | 95.59% | 95.46% | 94.36% |
10% | 92.07% | 92.26% | 93.18% | 91.77% | 90.66% |
15% | 92.56% | 89.86% | 90.71% | 88.07% | 87.01% |
20% | 92.88% | 87.49% | 88.28% | 84.38% | 83.32% |
25% | 93.35% | 85.07% | 85.87% | 80.67% | 79.64% |
30% | 93.85% | 82.73% | 83.40% | 77.01% | 75.95% |
35% | 94.23% | 80.32% | 80.98% | 73.27% | 72.27% |
40% | 94.67% | 77.94% | 78.55% | 69.60% | 68.58% |
45% | 95.08% | 75.53% | 76.09% | 65.89% | 64.86% |
从结果可以看出,本发明所提方法对恶意载荷有较好的判断作用。
此外,本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有检测XSS攻击的程序,所述检测XSS攻击的程序被处理器执行时实现如上所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种检测XSS攻击的方法,其特征在于,所述方法包括如下步骤:
步骤S10,根据XSS攻击的本体构建贝叶斯网络;
步骤S20,判断待判定的载荷是否包含跳转链接;
步骤S30,在该待判定的载荷包含跳转链接时,判断该待判定的载荷是否为恶意攻击载荷;
步骤S40,在该待判定的载荷未包含跳转链接或包含的跳转链接非恶意时,则根据构建好的贝叶斯网络的特征判断该待判定的载荷是否为恶意攻击载荷;
步骤S50,在步骤S30和/或步骤S40中若判断为存在恶意攻击载荷时,则发出警报。
2.根据权利要求1所述的检测XSS攻击的方法,其特征在于,所述步骤S20之前还包括:
通过在网络中获取恶意IP和恶意域名库;
将获取到的恶意IP以及恶意域名库作为恶意情报库。
3.根据权利要求2所述的检测XSS攻击的方法,其特征在于,所述步骤S30的步骤包括:
步骤S31,将跳转链接进行预设处理后与所述恶意情报库进行比对;
步骤S32,若比对匹配成功则将该待判定的载荷记录为恶意的攻击载荷。
4.根据权利要求3所述的检测XSS攻击的方法,其特征在于,所述步骤S31中的将跳转链接进行预设处理的步骤包括:
获取跳转链接,若跳转链接为IP地址,则将其还原为点分十进制的形式。
5.根据权利要求1所述的检测XSS攻击的方法,其特征在于,所述步骤S40的步骤包括:
步骤S41,对该待判定的载荷进行相应特征值的提取,并将该相应特征值输入到贝叶斯网络中;
步骤S42,根据标签节点中不同标签的概率判断是否为恶意的攻击载荷。
6.根据权利要求1所述的检测XSS攻击的方法,其特征在于,所述步骤S10的步骤之后包括:
步骤S100,获取需要进行处理的原始数据;
步骤S101,对所述原始数据进行预处理;
步骤S102,将预处理后的数据记录到数据库中;
步骤S103,利用预处理好的数据对贝叶斯网络进行结构学习以获取贝叶斯网络的相应参数和结构。
7.根据权利要求6所述的检测XSS攻击的方法,其特征在于,所述步骤S101包括:
步骤S1011,对包含URL请求的数据进行URL解码;
步骤S1012,对进行URL解码后的数据进行JS解码;
步骤S1013,对进行JS解码后的数据进行HTML实体编码的解码;
步骤S1014,对进行HTML实体编码解码后的数据进行ASCII码的解码;
步骤S1015,将解码后的数据中大写字母全部转变为小写字母;
步骤S1016,将解码后的数据中从左至右的第一个等号之前的数据取出,保留剩余数据。
8.根据权利要求1~7任一项所述的检测XSS攻击的方法,其特征在于,所述步骤S10包括:
步骤S11,构建反映XSS攻击的本体;
步骤S12,提取XSS攻击向量的特征来构建贝叶斯网络。
9.一种检测XSS攻击的装置,其特征在于,所述检测XSS攻击的装置包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的检测XSS攻击的程序,所述检测XSS攻击的程序被所述处理器执行时实现如权利要求1-8任一项所述的方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有检测XSS攻击的程序,所述检测XSS攻击的程序被处理器执行时实现如权利要求1-8任一项所述的检测XSS攻击的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810758072.0A CN108769081B (zh) | 2018-07-11 | 2018-07-11 | 一种检测xss攻击的方法、装置及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810758072.0A CN108769081B (zh) | 2018-07-11 | 2018-07-11 | 一种检测xss攻击的方法、装置及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108769081A CN108769081A (zh) | 2018-11-06 |
CN108769081B true CN108769081B (zh) | 2020-09-11 |
Family
ID=63973259
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810758072.0A Active CN108769081B (zh) | 2018-07-11 | 2018-07-11 | 一种检测xss攻击的方法、装置及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108769081B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110502899A (zh) * | 2019-08-26 | 2019-11-26 | 四川长虹电器股份有限公司 | 一种xss攻击检测的方法 |
CN111488585B (zh) * | 2020-04-17 | 2023-06-27 | 北京墨云科技有限公司 | 一种用于漏洞检测的基于深度学习的攻击向量生成方法 |
CN111797407B (zh) * | 2020-09-08 | 2021-05-07 | 江苏开博科技有限公司 | 一种基于深度学习模型优化的xss漏洞检测方法 |
CN114257389A (zh) * | 2020-09-22 | 2022-03-29 | 北京安全共识科技有限公司 | 一种基于语法分析的反射型xss检测方法及装置 |
CN113193978B (zh) * | 2021-03-24 | 2022-05-24 | 中国人民解放军国防科技大学 | 基于贝叶斯网络模型的xss攻击风险分析方法和装置 |
CN113132416B (zh) * | 2021-06-03 | 2022-06-21 | 新华三信息安全技术有限公司 | 一种数据包检测方法及装置 |
CN114006746A (zh) * | 2021-10-26 | 2022-02-01 | 深信服科技股份有限公司 | 一种攻击检测方法、装置、设备及存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8850589B2 (en) * | 2012-09-25 | 2014-09-30 | International Business Machines Corporation | Training classifiers for program analysis |
US9571454B2 (en) * | 2014-12-19 | 2017-02-14 | Cisco Technology, Inc. | Dynamic re-ordering of scanning modules in security devices |
CN105678170B (zh) * | 2016-01-05 | 2018-05-29 | 广东工业大学 | 一种动态检测xss漏洞的方法 |
CN107301345B (zh) * | 2017-06-06 | 2019-12-06 | 新浪网技术(中国)有限公司 | 一种阻止xss攻击的方法、系统及装置 |
CN107896225A (zh) * | 2017-12-08 | 2018-04-10 | 深信服科技股份有限公司 | 钓鱼网站判定方法、服务器及存储介质 |
CN108259619B (zh) * | 2018-01-30 | 2021-08-24 | 成都东软学院 | 网络请求防护方法及网络通信系统 |
-
2018
- 2018-07-11 CN CN201810758072.0A patent/CN108769081B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN108769081A (zh) | 2018-11-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108769081B (zh) | 一种检测xss攻击的方法、装置及计算机可读存储介质 | |
US20200364338A1 (en) | Attribute relevance tagging in malware recognition | |
US20230229772A1 (en) | Methods and apparatus for using machine learning on multiple file fragments to identify malware | |
Tong et al. | Improving robustness of {ML} classifiers against realizable evasion attacks using conserved features | |
US11188650B2 (en) | Detection of malware using feature hashing | |
Tariq et al. | Resolving cross-site scripting attacks through genetic algorithm and reinforcement learning | |
US10148681B2 (en) | Automated identification of phishing, phony and malicious web sites | |
Borgolte et al. | Delta: automatic identification of unknown web-based infection campaigns | |
US8683584B1 (en) | Risk assessment | |
US11373065B2 (en) | Dictionary based deduplication of training set samples for machine learning based computer threat analysis | |
Arshad et al. | Include me out: In-browser detection of malicious third-party content inclusions | |
Kim et al. | WebMon: ML-and YARA-based malicious webpage detection | |
Kasim | An ensemble classification-based approach to detect attack level of SQL injections | |
Liu et al. | GraphXSS: an efficient XSS payload detection approach based on graph convolutional network | |
Gärtner et al. | Maintaining requirements for long-living software systems by incorporating security knowledge | |
Naqvi et al. | Mitigation strategies against the phishing attacks: A systematic literature review | |
Mimura et al. | Static detection of malicious PowerShell based on word embeddings | |
Malviya et al. | Development of web browser prototype with embedded classification capability for mitigating Cross-Site Scripting attacks | |
US9923916B1 (en) | Adaptive web application vulnerability scanner | |
Kim et al. | AIBFT: artificial intelligence browser forensic toolkit | |
Gupta et al. | GeneMiner: a classification approach for detection of XSS attacks on web services | |
Canzanese Jr | Detection and classification of malicious processes using system call analysis | |
JP6984761B2 (ja) | 情報処理装置及び情報処理プログラム | |
Hiremath | A novel approach for analyzing and classifying malicious web pages | |
Luh et al. | Advanced threat intelligence: detection and classification of anomalous behavior in system processes |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |