本发明专利技术提供了一种基于程序关键字调用序列的脚本病毒检测方法及系统,通过将待检测程序进行词法分析及语法语义分析,标记调用的脚本程序关键字信息及语义类型的助记符,并将所述关键字信息及助记符保存到待检测数据流中,将待检测数据流与预先从恶意脚本中提取的特征串匹配,如果匹配成功,则判定所述待检测程序为恶意。本发明专利技术方法抛弃了程序中的变量名称等,通过代码程序的关键字调用序列,进行模式匹配,可以有效对抗恶意脚本的多态变形,并且模式匹配的方式,有效的减少了特征库中的特征量,减少了磁盘占用。
【技术实现步骤摘要】
本专利技术涉及网络安全领域,特别涉及一种基于程序关键字调用序列的脚本病毒检测方法及系统。
技术介绍
脚本语言是为了缩短传统的编写-编译-链接-运行过程而创建的计算机编程语言,它由相应的解释器逐句解释执行,具有简单,易学易用等特点,目前在互联网的网页开发中大量使用,较为流行的脚本语言有javascript和vbscript等。恶意脚本程序是以损坏系统功能和恶意传播为目的的脚本程序,这部分程序嵌入在正常的网页程序中,不易被人发觉,在用户浏览被恶意脚本感染的网页时,自动下载其他恶意代码到用户电脑中或感染用户系统上的其他脚本代码。目前对恶意脚本的检测方式有很多种,有基于静态代码内容进行模式匹配检测的,也有基于虚拟执行后结果进行模式再匹配的。而目前恶意脚本为了对抗杀毒软件的查杀大都采用了复杂的多态变形技术,如部分的脚本变形采用增加空格换行等无用字符,或者将脚本程序中使用的变量名称采用随机字符串定义,语句等价变换等,这给静态代码检测的方法带来了非常大的困难,导致检测模块的特征量急剧上升,和检出率的不断降低,这就催生了采用虚拟执行后的检测方法,这个方法的好处是通过虚拟执行,解密了恶意代码的变形代码,得到真正的恶意功能部分,再采用静态的模式匹配方法进行匹配,这个方法的确提高了恶意脚本的检出能力,但是由于该方法执行效率非常低,很难找到一致的方法对所有恶意脚本进行解密,通常是每种恶意变形技术都要实现一套脚本虚拟执行解密模块,开发难度大,日常维护成本高导致该方法在目前的反病毒软件中并没有广泛应用。
技术实现思路
基于上述问题,本专利技术提出了一种基于程序关键字调用序列的脚本病毒检测方法及系统,针对恶意脚本程序较多采用字符串替换,增加无意义空行等形式变形加密技术,但是变形的代码拥有相同的调用方式和指令执行流的跳转结构,而且主要功能代码调用的API名称是基本一致的特点,通过对关键词调用及语义中上下文调用及跳转关系,可以基本判断两个脚本语言是否具有一致的代码结构,具有同样代码结构的脚本则可以认为相同,以此来判断脚本程序是否为恶意。一种基于程序关键字调用序列的脚本病毒检测方法,包括:对待检测程序的字符序列进行词法分析,生成一系列单词,并将单词分类,得到单词序列; 根据得到的单词序列,进行语法分析,记录调用的脚本程序关键字信息; 语义分析,根据每行程序语义,确定语义类型,并标记助记符; 创建待检测数据流;逐行遍历待检测程序,判断当前行是否调用了脚本程序关键字信息,如果是,则将所述脚本程序关键字信息添加到待检测数据流中;否则判断当前行是否标记了助记符,如果是,则将所述助记符添加到待检测数据流中,否则跳过当前行; 将所述待检测数据流与特征库中的关键字调用序列特征串匹配,如果匹配成功,则判定所述待检测程序为恶意,否则所述待检测程序非恶意。所述的方法中,所述记录调用的脚本程序关键字信息具体为:记录程序调用的API名称作为脚本程序关键字信息。所述的方法中,所述的语义分析,根据每行程序语义,确定语义类型,并标记助记符中,所述语义类型包括:赋值语句、跳转语句、循环语句和返回语句。所述的方法中,在将所述待检测数据流与特征库中的特征串匹配成功后,还包括:将所述判定为恶意的待检测程序与白名单匹配,如果不存在于白名单中,则确定所述待检测程序为恶意,否则所述待检测程序非恶意。所述的方法中,所述特征库中的关键字调用序列特征串为从已知恶意脚本代码中提取。一种基于程序关键字调用序列的脚本病毒检测系统,包括: 词法分析模块,用于对待检测程序的字符序列进行词法分析,生成一系列单词,并将单词分类,得到单词序列; 语法分析模块,用于根据得到的单词序列,进行语法分析,记录调用的脚本程序关键字信息; 语义分析模块,用于根据每行程序语义,确定语义类型,并标记助记符; 待检测数据流创建模块,用于创建待检测数据流; 遍历检测模块,用于逐行遍历待检测程序,判断当前行是否调用了脚本程序关键字信息,如果是,则将所述脚本程序关键字信息添加到待检测数据流中;否则判断当前行是否标记了助记符,如果是,则将所述助记符添加到待检测数据流中,否则跳过当前行; 匹配模块,用于将所述待检测数据流与特征库中的关键字调用序列特征串匹配,如果匹配成功,则判定所述待检测程序为恶意,否则所述待检测程序非恶意。所述的系统中,所述记录调用的脚本程序关键字信息具体为:记录程序调用的API名称作为脚本程序关键字信息。所述的系统中,所述的语义分析,根据每行程序语义,确定语义类型,并标记助记符中,所述语义类型包括:赋值语句、跳转语句、循环语句和返回语句。所述的系统中,匹配模块后,还包括:白名单模块,用于将所述判定为恶意的待检测程序与白名单匹配,如果不存在于白名单中,则确定所述待检测程序为恶意,否则所述待检测程序非恶意。所述的系统中,所述特征库中的关键字调用序列特征串为从已知恶意脚本代码中提取。本专利技术提供了一种基于程序关键字调用序列的脚本病毒检测方法及系统,通过将待检测程序进行词法分析及语法语义分析,标记调用的脚本程序关键字信息及语义类型的助记符,并将所述关键字信息及助记符保存到待检测数据流中,将待检测数据流与预先从恶意脚本中提取的特征串匹配,如果匹配成功,则判定所述待检测程序为恶意。本专利技术的优势在于,能够针对恶意脚本存在变形难于检测的特点,跳出了程序的静态代码检测思维,采用了不同的脚本程序结构的模式匹配方法来检测恶意代码,采用该方法得到待检测数据流相对源代码而言保留了程序的执行流程,调用方式等主要信息,抛弃了变量名称,语句细节等次要信息,而这些次要信息中常常被恶意脚本所利用,通过多态变形的方法给静态检测带来了很多障碍。本专利技术提出的脚本检测方法可以有效对抗恶意脚本的多态变形特点,相对传统的恶意脚本检测方法可以对经常变化变量名称,增加空行空格,等价语句替换等无用信息的恶意脚本有更高的检出率,对采用相似多态变形技术的未知恶意脚本有较好的未知检测能力。同时,可以对使用相似恶意功能的脚本程序有非常好的归一化能力,有效的减少了特征库中的特征,减少了反病毒程序的磁盘占用,同时还减少匹配次数,进而提升了检测效率。【附图说明】为了更清楚地说明本专利技术或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术基于程序关键字调用序列的脚本病毒检测方法流程图; 图2为本专利技术基于程序关键字调用序列的脚本病毒检测系统示意图。【具体实施方式】为了使本
的人员更好地理解本专利技术实施例中的技术方案,并使本专利技术的上述目的、特征和优点能够更加明显易懂,下面结合附图对本专利技术中技术方案作进一步详细的说明。基于上述问题,本专利技术提出了一种基于程序关键字调用序列的脚本病毒检测方法及系统,针对恶意脚本程序较多采用字符串替换,增加无意义空行等形式变形加密技术,但是变形的代码拥有相同的调用方式和指令执行流的跳转结构,而且主要功能代码调用的API名称是基本一致的特点,通过对关键词调用及语义中上下文调用及跳转关系,可以基本判断两个脚本语言是否具有一致的代码结本文档来自技高网...
【技术保护点】
一种基于程序关键字调用序列的脚本病毒检测方法,其特征在于,包括:对待检测程序的字符序列进行词法分析,生成一系列单词,并将单词分类,得到单词序列;根据得到的单词序列,进行语法分析,记录调用的脚本程序关键字信息;语义分析,根据每行程序语义,确定语义类型,并标记助记符;创建待检测数据流;逐行遍历待检测程序,判断当前行是否调用了脚本程序关键字信息,如果是,则将所述脚本程序关键字信息添加到待检测数据流中;否则判断当前行是否标记了助记符,如果是,则将所述助记符添加到待检测数据流中,否则跳过当前行;将所述待检测数据流与特征库中的关键字调用序列特征串匹配,如果匹配成功,则判定所述待检测程序为恶意,否则所述待检测程序非恶意。
【技术特征摘要】
【专利技术属性】
技术研发人员:苏培旺,童志明,张栗伟,何公道,
申请(专利权)人:哈尔滨安天科技股份有限公司,
类型:发明
国别省市:黑龙江;23
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。