1.一种识别vbs网页木马的方法,其特征在于,所述方法包括:
获取vbs代码的自定义函数和自定义对象;
获取所述vbs代码的词法标记;
根据所述vbs代码的自定义函数、自定义对象和词法标记,获取所述vbs代码的语句;
根据预设的映射关系和优先级顺序,将所述vbs代码的语句转换为js语句,包括:根据所述预设的映射关系和所述优先级顺序,若所述vbs代码的语句为Execute语句,将所述Execute语句转换为js语句中的eval语句,所述eval语句的第一个参数是所述Execute语句的参数;在所述eval语句中添加第二个参数,并将所述第二个参数设置为预先规定的转换标识,所述优先级顺序为:声明语句、赋值语句、循环语句、条件分支语句,自定义函数、自定义对象,内置的函数调用;
解析所述js语句,包括:若所述js语句是eval语句,且所述eval语句的第二个参数是预先规定的转换标识,读取所述eval语句的第一个参数;根据所述预设的映射关系,将所述第一个参数转换为另一js语句;解析所述另一js语句;
识别所述解析后的js语句的网页木马行为。
2.如权利要求1所述的识别vbs网页木马的方法,其特征在于,所述获取所述vbs代码的词法标记包括:
采用词法分析工具lex或flex,获取所述vbs代码的词法标记。
3.如权利要求1所述的识别vbs网页木马的方法,其特征在于,所述根据所述vbs代码的自定义函数、自定义对象和词法标记,获取所述vbs代码的语句包括:
根据所述vbs代码的自定义函数、自定义对象和词法标记,采用语法分析工具yacc或bison,获取所述vbs代码的语句。
4.一种识别vbs网页木马的装置,其特征在于,所述装置包括:
转换模块,用于根据预设的映射关系,将vbs代码转换为js语句;
所述转换模块包括:
自定义信息获取单元,用于获取所述vbs代码的自定义函数和自定义对象;
词法分析单元,用于获取所述vbs代码的词法标记;
语法分析单元,用于根据所述自定义信息获取单元获取的自定义函数和自定义对象,以及所述词法分析单元获取的所述vbs代码的词法标记,获取所述vbs代码的语句;
转换单元,用于根据所述预设的映射关系和优先级顺序,将所述语法分析单元获取的所述vbs代码的语句转换为js语句,包括:根据所述预设的映射关系和所述优先级顺序,若所述语法分析单元获取的所述vbs代码的语句为Execute语句,将所述Execute语句转换为js语句中的eval语句,所述eval语句的第一个参数是所述Execute语句的参数;在所述eval语句中添加第二个参数,并将所述第二个参数设置为预先规定的转换标识,所述优先级顺序为:声明语句、赋值语句、循环语句、条件分支语句,自定义函数、自定义对象,内置的函数调用;
解析模块,用于解析所述转换模块转换的js语句,包括:若所述解析模块解析的js语句是eval语句,且所述eval语句的第二个参数是预先规定的转换标识,读取所述eval语句的第一个参数;根据所述预设的映射关系,将所述第一个参数转换为另一js语句;解析所述另一js语句;
识别模块,用于识别所述解析模块解析后的js语句的网页木马行为。
5.如权利要求4所述的识别vbs网页木马的装置,其特征在于,所述词法分析单元,具体用于
采用词法分析工具lex或flex,获取所述vbs代码的词法标记。
6.如权利要求4所述的识别vbs网页木马的装置,其特征在于,所述语法分析单元,具体用于
根据所述自定义信息获取单元获取的自定义函数和自定义对象,以及所述词法分析单元获取的所述vbs代码的词法标记,采用语法分析工具yacc或bison,获取所述vbs代码的语句。
一种识别vbs网页木马的方法和装置\n技术领域\n[0001] 本发明涉及计算机领域,特别涉及一种识别vbs网页木马的方法和装置。\n背景技术\n[0002] 网页木马就是加载在网页中的木马病毒。网页木马可能会破坏文件,盗取资料,给用户造成巨大损失,严重危害了网络安全。\n[0003] 当前网络中,大部分网页是基于javascript(可简写为js)或vbscript(可简写为vbs)脚本语言开发的。其中,针对js网页木马的检测技术已经非常成熟,而针对vbs网页木马,当前主要有两种检测方法:\n[0004] 第一种方法是预先获取木马病毒的vbs代码样本,把它当作一段普通字符串来处理,提取其中的字符串特征,来识别vbs网页木马;\n[0005] 第二种方法是开发一套vbs引擎,通过vbs引擎来解释执行vbs代码,通过分析代码的行为,来识别vbs网页木马。\n[0006] 综合上述,现有技术至少存在以下问题:\n[0007] 需要为vbs网页木马配置一套特征库,而js网页木马也配置有一套特征库,二者不能统一起来处理,开发和维护起来不仅繁琐,而且成本比较高。\n发明内容\n[0008] 为了将vbs网页木马和js网页木马的识别统一起来,本发明实施例提供了一种识别vbs网页木马的方法和装置。所述技术方案如下:\n[0009] 一种识别vbs网页木马的方法,所述方法包括:\n[0010] 获取vbs代码的自定义函数和自定义对象;\n[0011] 获取所述vbs代码的词法标记;\n[0012] 根据所述vbs代码的自定义函数、自定义对象和词法标记,获取所述vbs代码的语句;\n[0013] 根据预设的映射关系和优先级顺序,将所述vbs代码的语句转换为js语句,包括:\n根据所述预设的映射关系和所述优先级顺序,若所述vbs代码的语句为Execute语句,将所述Execute语句转换为js语句中的eval语句,所述eval语句的第一个参数是所述Execute语句的参数;在所述eval语句中添加第二个参数,并将所述第二个参数设置为预先规定的转换标识,所述优先级顺序为:声明语句、赋值语句、循环语句、条件分支语句,自定义函数、自定义对象,内置的函数调用;\n[0014] 解析所述js语句,包括:若所述js语句是eval语句,且所述eval语句的第二个参数是预先规定的转换标识,读取所述eval语句的第一个参数;根据所述预设的映射关系,将所述第一个参数转换为另一js语句;解析所述另一js语句;\n[0015] 识别所述解析后的js语句的网页木马行为。\n[0016] 其中,所述获取所述vbs代码的词法标记包括:\n[0017] 采用词法分析工具lex或flex,获取所述vbs代码的词法标记。\n[0018] 其中,所述根据所述vbs代码的自定义函数、自定义对象和词法标记,获取所述vbs代码的语句包括:\n[0019] 根据所述vbs代码的自定义函数、自定义对象和词法标记,采用语法分析工具yacc或bison,获取所述vbs代码的语句。\n[0020] 一种识别vbs网页木马的装置,所述装置包括:\n[0021] 转换模块,用于根据预设的映射关系,将vbs代码转换为js语句;\n[0022] 所述转换模块包括:\n[0023] 自定义信息获取单元,用于获取所述vbs代码的自定义函数和自定义对象;\n[0024] 词法分析单元,用于获取所述vbs代码的词法标记;\n[0025] 语法分析单元,用于根据所述自定义信息获取单元获取的自定义函数和自定义对象,以及所述词法分析单元获取的所述vbs代码的词法标记,获取所述vbs代码的语句;\n[0026] 转换单元,用于根据所述预设的映射关系和优先级顺序,将所述语法分析单元获取的所述vbs代码的语句转换为js语句,包括:根据所述预设的映射关系和所述优先级顺序,若所述语法分析单元获取的所述vbs代码的语句为Execute语句,将所述Execute语句转换为js语句中的eval语句,所述eval语句的第一个参数是所述Execute语句的参数;\n在所述eval语句中添加第二个参数,并将所述第二个参数设置为预先规定的转换标识,所述优先级顺序为:声明语句、赋值语句、循环语句、条件分支语句,自定义函数、自定义对象,内置的函数调用;\n[0027] 解析模块,用于解析所述转换模块转换的js语句,包括:若所述解析模块解析的js语句是eval语句,且所述eval语句的第二个参数是预先规定的转换标识,读取所述eval语句的第一个参数;根据所述预设的映射关系,将所述第一个参数转换为另一js语句;解析所述另一js语句;\n[0028] 识别模块,用于识别所述解析模块解析后的js语句的网页木马行为。\n[0029] 其中,所述词法分析单元,具体用于\n[0030] 采用词法分析工具lex或flex,获取所述vbs代码的词法标记。\n[0031] 其中,所述语法分析单元,具体用于\n[0032] 根据所述自定义信息获取单元获取的自定义函数和自定义对象,以及所述词法分析单元获取的所述vbs代码的词法标记,采用语法分析工具yacc或bison,获取所述vbs代码的语句。\n[0033] 本发明实施例提供的技术方案带来的有益效果是:通过预设的映射关系,将vbs代码转换为js语句,解析并识别该js语句的网页木马行为,将vbs网页木马和js网页木马的识别统一起来,不需要为vbs网页木马另配置一套特征库,简化了开发和维护过程,降低了成本。\n附图说明\n[0034] 图1是本发明实施例1中提供的识别vbs网页木马的方法流程图;\n[0035] 图2是本发明实施例1中提供的另一识别vbs网页木马的方法流程图;\n[0036] 图3是本发明实施例2中提供的识别vbs网页木马的装置结构示意图;\n[0037] 图4是本发明实施例2中提供的转换模块结构示意图。\n具体实施方式\n[0038] 为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。\n[0039] 实施例1\n[0040] 参见图1,本实施例提供了一种识别vbs网页木马的方法,该方法包括:\n[0041] 101:根据预设的映射关系,将vbs代码转换为js语句;\n[0042] 102:解析该js语句;\n[0043] 103:识别该解析后的js语句的网页木马行为。\n[0044] 本实施例提供的识别vbs网页木马的方法,能够将vbs网页木马和js网页木马的识别统一起来,不需要为vbs网页木马另配置一套特征库,简化了开发和维护过程,降低了成本。\n[0045] 若要实现vbs网页木马的识别,\n[0046] 首先,预先建立vbs代码与js代码的内置函数和对象的映射关系;\n[0047] 例如:vbs中的函数asc(str),在js中对应的函数是str.charCodeAt(0),二者之间需要建立映射关系。\n[0048] 其次,参见图2,识别vbs网页木马的数据处理流程如下:\n[0049] 201:接收vbs代码,对vbs代码进行预处理,获取其中的自定义函数和自定义对象;\n[0050] 202:对vbs代码进行词法分析,获取词法标记(token);\n[0051] 其中,在做词法分析时,内置的词法标记需要与自定义对象和自定义函数区分开来;\n[0052] 具体的,采用开源的词法分析工具(如lex、flex),将输入的vbs代码流识别为符合vbs语法要求的关键字、数字、运算符、标识符等token,其中,标识符进一步区分为变量名、函数名或对象名。\n[0053] 203:根据获取的token以及自定义函数和自定义对象,对vbs代码进行语法分析,获取vbs代码的语句;\n[0054] 其中,若干token构成一条vbs语句;特殊的,自定义函数和自定义对象与内置的token一起构成若干vbs语句;\n[0055] 具体的,在词法分析的基础上,采用开源的语法分析工具(如yacc、bison)对vbs代码进行语法解析,识别出vbs语句。其中,vbs语句在本实施例中包括:表达式、函数、对象,还有声名、赋值、循环、条件分支等语句。\n[0056] 204:如果vbs代码的语句是Execute语句,204a)则转换为js语句eval语句,且在eval语句中添加第二个参数,并执行203,否则执行205;\n[0057] 其中,该eval语句的第一个参数是Execute语句的参数,eval语句的第二个参数,用于识别js语句是否是从vbs代码转换来的,并将其值设为预先规定的转换标识,本实施例中,该转换标识设为“vbs”。\n[0058] 将Execute转换为eval并添加一个参数:vbs转换为js有时不是一次可以完成的,Execute函数的参数也是一段vbs代码,这时可以先执行部分转换的js代码,执行到Execute时,再将Execute的参数部分进行二次转换,如果有Execute嵌套的情况,这种反复转换需要进行多次。\n[0059] 205:根据预设的映射关系,将vbs代码的语句转换为js语句。\n[0060] 具体的,按照优先级顺序,将vbs表达式转化为相应的js表达式:将vbs中的声名、赋值、循环、条件分支等语句转换为相应的js语句;将vbs中的函数定义、对象定义转换为对应的js格式的函数定义、对象定义;对于内置的函数调用根据预先建立的映射关系,转换为相应的调用形式。\n[0061] 例如:通过预先设定的映射关系,将vbs函数call CLng″hello″,转换成js函数parseInt(″hello″,16)。\n[0062] 206:如果还有没处理完的token,执行203,否则执行207;\n[0063] 207:输出js语句;\n[0064] 208:对js语句进行解析;\n[0065] 解析过程具体可由js引擎进行处理,如spidermonkey等。\n[0066] 209:如果js语句是eval语句,且第二个参数为“vbs”,209a)则读取eval语句的第一个参数的值,并执行201,否则执行209;\n[0067] 解析该eval语句的过程具体可由js引擎进行处理,如spidermonkey等。\n[0068] 210:执行js语句,并分析网页木马行为;\n[0069] 具体的,分析js语句的网页木马行为,可以采用现有技术的js网页木马的识别方法。\n[0070] 211:如果已经处理完所有的js语句,则退出,否则执行208。\n[0071] 本实施例提供的识别vbs网页木马的方法,通过预设的映射关系,将vbs代码转换为js语句,解析并识别该js语句的网页木马行为,将vbs网页木马和js网页木马的识别统一起来,不需要为vbs网页木马另配置一套特征库,简化了开发和维护过程,降低了成本。另外,相对与第一种现有技术,不需要提前获取vbs代码样本,具有较高的时效性和通用性;相对于第二种现有技术,不需要额外开发vbs引擎,可以利用现有的js引擎,只需要进行词法分析和语法分析,不需要模拟执行,节省了时间和人力成本。\n[0072] 实施例2\n[0073] 参见图3,本实施例提供了一种识别vbs网页木马的装置,该装置包括:\n[0074] 转换模块301,用于根据预设的映射关系,将vbs代码转换为js语句;\n[0075] 解析模块302,用于解析该转换模块301转换的js语句;\n[0076] 识别模块303,用于识别该解析模块302解析后的js语句的网页木马行为。\n[0077] 进一步的,参见图4,该转换模块301包括:\n[0078] 自定义信息获取单元301a,用于获取该vbs代码的自定义函数和自定义对象;\n[0079] 词法分析单元301b,用于获取该vbs代码的词法标记;\n[0080] 语法分析单元301c,用于根据该自定义信息获取单元301a获取的自定义函数和自定义对象,以及该词法分析单元301b获取的该vbs代码的词法标记,获取该vbs代码的语句;\n[0081] 转换单元301d,用于根据该预设的映射关系,将该语法分析单元301c获取的该vbs代码的语句转换为js语句。\n[0082] 其中,该词法分析单元301b,具体用于\n[0083] 采用词法分析工具lex或flex,获取该vbs代码的词法标记。\n[0084] 其中,该语法分析单元301c,具体用于\n[0085] 根据该自定义信息获取单元301a获取的自定义函数和自定义对象,以及该词法分析单元301b获取的该vbs代码的词法标记,采用语法分析工具yacc或bison,获取该vbs代码的语句。\n[0086] 其中,该转换单元301d,具体用于\n[0087] 根据该预设的映射关系,若该语法分析单元301c获取的该vbs代码的语句为Execute语句,将该Execute语句转换为js语句eval语句,该eval语句的第一个参数是该Execute语句的参数;\n[0088] 在该eval语句中添加第二个参数,并将该第二个参数设置为预先规定的转换标识。\n[0089] 其中,该识别模块303,具体用于\n[0090] 若该解析模块302解析的js语句是eval语句,且该eval语句的第二个参数是预先规定的转换标识,读取该eval语句的第一个参数;\n[0091] 根据该预设的映射关系,将该第一个参数转换为另一js语句;\n[0092] 解析该另一js语句。\n[0093] 本实施例提供的识别vbs网页木马的装置,通过预设的映射关系,将vbs代码转换为js语句,解析并识别该js语句的网页木马行为,将vbs网页木马和js网页木马的识别统一起来,不需要为vbs网页木马另配置一套特征库,简化了开发和维护过程,降低了成本。另外,相对与第一种现有技术,不需要提前获取vbs代码样本,具有较高的时效性和通用性;相对于第二种现有技术,不需要额外开发vbs引擎,可以利用现有的js引擎,只需要进行词法分析和语法分析,不需要模拟执行,节省了时间和人力成本。\n[0094] 以上实施例提供的技术方案中的全部或部分内容可以通过软件编程实现,其软件程序存储在可读取的存储介质中,存储介质例如:计算机中的硬盘、光盘或软盘。\n[0095] 以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
法律信息
- 2011-05-04
- 2009-10-21
- 2009-08-26
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有引用任何外部专利数据! |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |