当前位置: 首页 > 专利查询>北京大学专利>正文

基于中间指令动态插装的Heapspray检测方法技术

技术编号:4270278 阅读:321 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种基于中间指令动态插装的Heapspray检测方法,属于计算机安全技术领域。本方法为:1)将解释执行网页动态脚本的虚拟机置于单步运行状态;2)判断当前要执行的中间指令是否为赋值类中间指令;3)如果是,则判断该指令参数中的右值参数类型是否为字符串类型,如果是且其值小于设定阈值P,则检查是否存在shellcode;如果右值参数值大于阈值P,则计算其信息熵值;4)取下一中间指令,重复步骤2)和3),如果一赋值类中间指令的右值参数存在shellcode,另一赋值类中间指令的右值参数信息熵值小于设定阈值Q,则判定该脚本存在Heapspray行为。本发明专利技术可减小系统开销、提高检测的准确率。

【技术实现步骤摘要】

本专利技术属于计算机安全
,具体涉及一种基于中间指令动态插装的 Heapspray检测方法。
技术介绍
网页木马(drive-by download),通常是指存在于网页中的,利用客户端浏览器及插件中的安全漏洞,对浏览该网页的计算机进行攻击的恶意代码。近年来,以网页木马为主的针对客户端的攻击逐渐增多,并在所有攻击案例中占据了很大的比重。因此,如何有效检测和防范网页木马已经成为学术界和工业界共同关注和研究的重要问题。 在网页木马的攻击过程中,为了提高攻击的通用性和成功率,攻击者经常会使用被禾尔作He即spray的攻击方式(参见Pincus J, Baker B. Beyond stack smashing:Recent advancesin exploiting buffer overruns[C]. IEEE Security&Privacy,2004.)。Heapspray型网页木马会在内存中填充大量无危害的x86指令(如N0P、X0R EAX,EAX等),并在其后附加实施恶意攻击行为的指令(称为shellcode),这样在溢出成功并改变CPU的指令寄存器(EIP)时,只要EIP修改为内存堆上的一个地址,执行路径就会以很大的概率跳转到这些x86指令中,并最终执行Shellcode。通过这种方式,在构造攻击代码时,攻击者可以不必精确计算溢出点和跳转地址,这就大大提高了攻击代码的通用性和成功率。Heapspray的这种特性使其成为了目前网页木马攻击所使用的主流技术手段。 针对Heapspray型网页木马的检测,目前已有的检测算法都主要存在检测开销较大,检测准确度较低的问题。He即spray是网页中动态语言脚本执行中的一个过程,因而检测的时机问题是一个关系到系统开销、检测准确度和检测及时程度的关键问题。目前已有的检测算法主要通过监视系统内存使用量,监视动态语言脚本虚拟机中对象的新建和释放来寻找检测时机,具体使用的检测手段和参数也局限于评估占用的连续内存大小,检测内存区域中是否有可执行的shellcode等。系统开销较大,准确度较低。
技术实现思路
本专利技术对目前最为普遍的Heapspray型网页木马的攻击过程和机理进行了深 入分析,目的在于提供一种。脚本中间指 令动态插装(Dynamic Opcode Instrumentation)的主要思想与传统的动态二进制插装 (Dynamic Binarylnstr咖entation)的思想类似,动态二进制插装的主要原理是在一个二 进制程序的执行过程中,在每一条将要执行的指令前添加、修改或者变换自定义指令;而本 专利技术中的动态中间指令插装则是在脚本翻译之后生成的二进制中间指令执行过程中,插入 用户自定义的具有特定功能的代码。这种动态插装的方法不需要修改待分析网页或脚本的 源代码,同时可以准确获得脚本执行的语义,适应性强,准确度高。 本专利技术中基于动态中间指令插装的用户自定义的具有特定功能的代码指的是检 测Shellcode和Heapspray行为的代码。通过对脚本语言编译后的二进制中间指令的动态插装和关键指令参数的检查,可以有效识别网页木马中的Shellcode和Heapspray构造过 程,并产生检测报警。 对于二进制中间指令的动态插装和关键指令参数的检查,其步骤如下 1)、将用于解释执行网页动态脚本的虚拟机置于单步运行状态;(对应图1中的步骤1) 2)、取出下一条要执行的中间指令,判断它是否属于关键指令,这里的关键指令指由原脚本语言中的赋值语句翻译之后的中间指令,我们称之为赋值类中间指令;(对应图1中的步骤2,3) 3)、对于将要执行的关键中间指令,如果它的右值参数类型是字符串类型,则对其 指令参数进行检查(对应图1中的步骤4, 5) a)、若该指令的指令参数中,右值参数的类型是字符串且长度小于一定阈值P, 检查该字符串是否存在Shellcode ;(对应图1中的步骤6,8) b)、若该指令的指令参数中,右值参数的类型是字符串且长度大于阈值P,计算该 字符串的信息熵值;(对应图1中的步骤7, 9) 4)、在恶意代码的执行过程中,综合历次检查的结果,若在执行过程中检测出了某 个指令参数中的右值参数存在shellcode以及另一个指令参数中的右值参数信息熵小于 一定的阈值Q,则断定该脚本存在Heapspray行为,是一个Heapspray型网页木马。(对应 图1中的步骤a,b) 其中,上述步骤3a)中的Shellcode存在性检测算法可以使用启发式GetPC策 略的检测算法(参见Polychronakis M, Anagnostakis K, Markatos E. Network-level polymorphicshellcode detection using emulation[J]. Journal in Computer Virology,2007, vol. 2, 257-274.)。 上述步骤3b)中的信息熵H的计算公式为 h Cp) y'j^ i。gQpi) 其中Pi为字节码值为i的字节数占总字符串长度的百分比,n = 256, H即为字符 串的信息熵。 本专利技术的优点和积极效果如下 1.使用动态语言中间指令动态插装技术,通过对中间指令的动态插装,可以准确 地确定恶意代码执行时的语义和行为,从而在恶意代码执行的关键点(赋值语句发生时) 按需对其行为进行审查,减小了系统开销。 2.使用信息熵刻画He即spray的重复代码部分,大量重复片段是He即spray行为 的一个重要特征,使用信息熵可以准确地刻画这一特征,与Shellcode探测配合,可以提高 检测的准确率。附图说明 图1本专利技术的Heapspray型网页木马检测流程图。 具体实施例方式以下以网页中使用最广泛的JavaScript执行引擎为例,对检测方法进行详细说明。 —个基于动态中间指令插装的He即spray检测方法的具体实施过程如下 1、将JavaScript虚拟机切换到单步跟踪状态,同时注册一个Handler函数,使得 单步执行的虚拟机在每次要执行一条中间指令之前,都会先调用这个Handler函数。(对应 图1中的步骤l) 2、令全局变量hasShellcode = lowEntropy = O,将网页中的JavaScript脚本输 入到JavaScript虚拟机中执行; 3、由于上面事先注册了 Handler函数,在虚拟机执行过程中的每一步,我们可以 通过Handler函数来完成对其欲执行指令的获取和检查;(对应图1中的步骤2) 4、首先,Handler函数会检查下一条中间指令所属指令族是否有JS0F_SET标志, 若是,则表明此指令属于赋值类指令,需要对该指令进行进一步检查,否则,跳转到步骤8 ; (对应图1中的步骤3) 5、接着,Handler函数会对根据该赋值指令的具体类型提取出相应的右值对象,并 检测该对象是不是字符串类型,若不是,跳转到步骤8 ;(对应图1中的步骤4) 6、若该对象是字符串类型,则取出其字符串长度属性,根据字符串长度决定是进 行shellcode检查还是信息熵计算(对应图1中的步骤5) a)、若字符串长度小于65535字节,则本文档来自技高网
...

【技术保护点】
一种基于中间指令动态插装的Heapspray检测方法,其步骤为:1)将用于解释执行网页动态脚本的虚拟机置于单步运行状态;2)判断当前要执行的中间指令是否为赋值类中间指令;所述赋值类中间指令为由原脚本语言中的赋值语句翻译之后的中间指令;3)如果否则执行该中间指令,如果是赋值类中间指令,则判断该指令参数中的右值参数类型是否为字符串类型,如果否则执行该指令,如果是则对该赋值类中间指令进行检查:如果右值参数值小于设定阈值P,则检查右值参数值中是否存在shellcode;如果右值参数值大于阈值P,则计算该右值参数值的信息熵值H;4)取出下一条要执行的中间指令,重复上述步骤2)和3),如果检查出一赋值类中间指令的指令参数中的右值参数存在shellcode,另一赋值类中间指令的指令参数中的右值参数信息熵值小于设定阈值Q,则判定该脚本存在Heapspray行为。

【技术特征摘要】
一种基于中间指令动态插装的Heapspray检测方法,其步骤为1)将用于解释执行网页动态脚本的虚拟机置于单步运行状态;2)判断当前要执行的中间指令是否为赋值类中间指令;所述赋值类中间指令为由原脚本语言中的赋值语句翻译之后的中间指令;3)如果否则执行该中间指令,如果是赋值类中间指令,则判断该指令参数中的右值参数类型是否为字符串类型,如果否则执行该指令,如果是则对该赋值类中间指令进行检查如果右值参数值小于设定阈值P,则检查右值参数值中是否存在shellcode;如果右值参数值大于阈值P,则计算该右值参数值的信息熵值H;4)取出下一条要执行的中间指令,重复上述步骤2)和3),如果检查出一赋值类中间指令的指令参数中的右值参数存在shellcode,另一赋值类中间指令的指令参数中的右值参数信息熵值小于设定阈值Q,则判定该脚本存在Heapspray行为。2. 如权利要求l所述的方法,其特征在于采用启发式Ge...

【专利技术属性】
技术研发人员:诸葛建伟陈志杰韩心慧龚晓锐宋程昱
申请(专利权)人:北京大学
类型:发明
国别省市:11[中国|北京]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1