CN111324892B - 生成脚本文件的软件基因和脚本检测的方法、装置及介质 - Google Patents

生成脚本文件的软件基因和脚本检测的方法、装置及介质 Download PDF

Info

Publication number
CN111324892B
CN111324892B CN202010062677.3A CN202010062677A CN111324892B CN 111324892 B CN111324892 B CN 111324892B CN 202010062677 A CN202010062677 A CN 202010062677A CN 111324892 B CN111324892 B CN 111324892B
Authority
CN
China
Prior art keywords
data
code
script file
tree structure
generating
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
Application number
CN202010062677.3A
Other languages
English (en)
Other versions
CN111324892A (zh
Inventor
刘旭
胡逸漪
章丽娟
陈鹏
张汪洋
王禹翔
于洪宇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Roarpanda Network Technology Co ltd
Original Assignee
Shanghai Roarpanda Network Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Roarpanda Network Technology Co ltd filed Critical Shanghai Roarpanda Network Technology Co ltd
Priority to CN202010062677.3A priority Critical patent/CN111324892B/zh
Publication of CN111324892A publication Critical patent/CN111324892A/zh
Application granted granted Critical
Publication of CN111324892B publication Critical patent/CN111324892B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本申请公开了一种生成脚本文件的软件基因和脚本检测的方法、装置及介质。其中,对脚本文件进行检测的方法,包括:获取待检测的脚本文件所记载的代码;根据所获取的代码,生成与脚本文件对应的软件基因;以及对软件基因进行检测。解决了现有技术中存在的对恶意脚本识别技术局限于代码特征匹配,无法对脚本文件中的代码逻辑调用关系进行检测,因此影响恶意脚本识别精准度的技术问题。

Description

生成脚本文件的软件基因和脚本检测的方法、装置及介质
技术领域
本申请涉及互联网安全技术领域,特别是涉及一种生成脚本文件的软件基因和脚本检测的方法、装置及介质。
背景技术
如今高速发展的信息时代,软件迭代迅速,而近年来基于脚本的系统软件呈现爆炸式的增长,尤其是脚本型恶意代码,其在系统环境不断变化和安全防护手段持续升级的对抗中,自身也逐渐进化,但这种进化和衍生的效率和危害使得传统基于代码特征的分析方法失效,为了解决这一问题,人们从大数据视角、关联分析中寻找线索规律,结合人工智能算法,基于软件基因技术理论的脚本型恶意代码分析及同源性判定方法能够更好地解决该问题。
传统恶意代码特征通常是指可以标识目标软件的代码片段,其特性是唯一标识性;而脚本基因关注的重点不在于唯一性,而是所提取的代码片段是否具有功能语义或承载家族软件之间相互依赖的关键信息,如软件基因的广义定义一样,这些片段具备原子性、表意性、稳定性、进化性等特性。相对而言,特征检测的思想较为简单,算法匹配效率高,但其内容并不一定具备关键遗传性信息,且易被绕过,而基因则是从微观视角认知软件,实现化繁为简。与传统的特征检测技术不同,使用脚本基因的检测方法不仅可以识别出目标样本,还能分析与目标样本存在相似性或具备同源性的其他潜在样本,从而实现关联挖掘和衍生进化规律的探索。
然而,现有技术中恶意脚本识别技术局限于代码特征匹配,即一段脚本内所包含的恶意代码出现的频率来确定脚本的恶意性,但上述技术对出现变种的恶意脚本识别率很低,且传统的恶意脚本识别技术所提取的特征无法满足脚本同源性判断的需求。
针对上述的现有技术中存在的对恶意脚本识别技术局限于代码特征匹配,无法对脚本文件中的代码逻辑调用关系进行检测,因此影响恶意脚本识别精准度的技术问题,目前尚未提出有效的解决方案。
发明内容
本公开的实施例提供了一种生成脚本文件的软件基因和脚本检测的方法、装置及介质,以至少解决现有技术中存在的对恶意脚本识别技术局限于代码特征匹配,无法对脚本文件中的代码逻辑调用关系进行检测,因此影响恶意脚本识别精准度的技术问题。
根据本公开实施例的一个方面,提供了一种生成脚本文件的软件基因的方法,包括:获取待检测的脚本文件所记载的代码;以及根据所获取的代码,生成与脚本文件对应的软件基因。
根据本公开实施例的另一方面,还提供了一种对脚本文件进行检测的方法,包括:获取待检测的脚本文件所记载的代码;根据所获取的代码,生成与脚本文件对应的软件基因;以及对软件基因进行检测。
根据本公开实施例的另一个方面,还提供了一种存储介质,存储介质包括存储的程序,其中,在程序运行时由处理器执行以上任意一项所述的方法。
根据本公开实施例的另一个方面,还提供了一种生成脚本文件的软件基因的装置,包括:第一数据获取模块,用于获取待检测的脚本文件所记载的代码;以及第一基因生成模块,用于根据所获取的代码,生成与脚本文件对应的软件基因。
根据本公开实施例的另一个方面,还提供了一种对脚本文件进行检测的装置,包括:第二数据获取模块,用于获取待检测的脚本文件所记载的代码;第二基因生成模块,用于根据所获取的代码,生成与脚本文件对应的软件基因;以及基因检测模块,用于对软件基因进行检测。
根据本公开实施例的另一个方面,还提供了一种生成脚本文件的软件基因的装置,包括:第一处理器;以及第一存储器,与第一处理器连接,用于为第一处理器提供处理以下处理步骤的指令:获取待检测的脚本文件所记载的代码;以及根据所获取的代码,生成与脚本文件对应的软件基因。
根据本公开实施例的另一个方面,还提供了一种对脚本文件进行检测的装置,包括:第二处理器;以及第二存储器,与第二处理器连接,用于为第二处理器提供处理以下处理步骤的指令:获取待检测的脚本文件所记载的代码;根据所获取的代码,生成与脚本文件对应的软件基因;以及对软件基因进行检测。
在本公开实施例中,通过对脚本文件中的软件基因进行提取,然后根据提取的软件基因对恶意代码进行检测。达到了提升恶意代码识别精准度的技术效果。解决了现有技术中存在的对恶意脚本识别技术局限于代码特征匹配,无法对脚本文件中的代码逻辑调用关系进行检测,因此影响恶意脚本识别精准度的技术问题。
附图说明
此处所说明的附图用来提供对本公开的进一步理解,构成本申请的一部分,本公开的示意性实施例及其说明用于解释本公开,并不构成对本公开的不当限定。在附图中:
图1是用于实现根据本公开实施例1所述的方法的计算设备的硬件结构框图;
图2是根据本公开实施例1的第一个方面所述的生成脚本文件的软件基因的方法的流程示意图;
图3a示例性地示出了检测系统的整体模块图;
图3b示例性地示出了脚本软件基因提取装置的示意图;
图4a示出了基因提取的整体流程的示意图;
图4b示例性地示出了生成软件基因步骤的具体流程图;
图5是根据本公开实施例1的第二个方面所述的对脚本文件进行检测的方法的流程示意图;
图6是根据本公开实施例2的第一个方面所述的生成脚本文件的软件基因的装置的示意图;
图7是根据本公开实施例2的第二个方面所述的对脚本文件进行检测的装置的示意图;
图8是根据本公开实施例3的第一个方面所述的生成脚本文件的软件基因的装置的示意图;以及
图9是根据本公开实施例3的第二个方面所述的对脚本文件进行检测的装置的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本公开的技术方案,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本公开一部分的实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本公开保护的范围。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
根据本实施例,提供了一种生成脚本文件的软件基因以及对脚本文件进行检测的方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本实施例所提供的方法实施例可以在移动终端、计算机终端、服务器或者类似的计算设备中执行。图1示出了一种用于实现生成脚本文件的软件基因以及对脚本文件进行检测的方法的计算设备的硬件结构框图。如图1所示,计算设备可以包括一个或多个处理器(处理器可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器、以及用于通信功能的传输装置。除此以外,还可以包括:显示器、输入/输出接口(I/O接口)、通用串行总线(USB)端口(可以作为I/O接口的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算设备还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
应当注意到的是上述一个或多个处理器和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到计算设备中的其他元件中的任意一个内。如本公开实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。
存储器可用于存储应用软件的软件程序以及模块,如本公开实施例中的生成脚本文件的软件基因以及对脚本文件进行检测的方法对应的程序指令/数据存储装置,处理器通过运行存储在存储器内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的应用程序的生成脚本文件的软件基因以及对脚本文件进行检测的方法。存储器可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器可进一步包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至计算设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算设备的通信供应商提供的无线网络。在一个实例中,传输装置包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
显示器可以例如触摸屏式的液晶显示器(LCD),该液晶显示器可使得用户能够与计算设备的用户界面进行交互。
此处需要说明的是,在一些可选实施例中,上述图1所示的计算设备可以包括硬件元件(包括电路)、软件元件(包括存储在计算机可读介质上的计算机代码)、或硬件元件和软件元件两者的结合。应当指出的是,图1仅为特定具体实例的一个实例,并且旨在示出可存在于上述计算设备中的部件的类型。
在上述运行环境下,根据本实施例的第一个方面,提供了一种生成脚本文件的软件基因的方法,应用于恶意代码检测系统。图2示出了该方法的流程示意图,参考图2所示,该方法包括:
S202:获取待检测的脚本文件所记载的代码;以及
S204:根据所获取的代码,生成与脚本文件对应的软件基因。
正如背景技术中所述的,现有技术中恶意脚本识别技术局限于代码特征匹配,即一段脚本内所包含的恶意代码出现的频率来确定脚本的恶意性,但上述技术对出现变种的恶意脚本识别率很低,且传统的恶意脚本识别技术所提取的特征无法满足脚本同源性判断的需求。
针对背景技术中存在的技术问题,本实施例技术方案首先从待检测的脚本文件中获取所记载的代码。进一步地,根据所获取的代码,生成与脚本文件对应的软件基因。因此,在对恶意脚本检测的过程中可以对脚本的软件基因进行检测,本方法为脚本的软件基因检测提供数据基础。从而,与现有技术中采用代码特征匹配的检测方式相比,实现了对脚本文件中的代码逻辑调用关系进行检测的目的,达到了提升恶意代码识别精准度的技术效果。解决了现有技术中存在的对恶意脚本识别技术局限于代码特征匹配,无法对脚本文件中的代码逻辑调用关系进行检测,因此影响恶意脚本识别精准度的技术问题。
具体地,在步骤S202中,检测系统首先获取待检测的脚本文件所记载的代码。例如:系统截获一个脚本,并从脚本中提取全部代码。示例性地,脚本文件中的一段代码为“var a=10;”。
进一步地,在步骤S204中,根据所获取的代码,生成与脚本文件对应的软件基因。即,从上述的代码中提取脚本文件中的软件基因。以下为上述脚本文件中“var a=10”这段代码所对应的软件基因,如下所示:
1.在一个具体实例中,最外层type为Program的省略,不列为基因内容显示,那么所提取的基因内容如下:
第一条:
{‘type’:’VariableDeclaration’,‘declarations’:
[{‘type’:’VariableDeclarator,‘id’:
{‘type’:’Indentifer’,’name’:’a’},
‘init’:{‘type’:’Literal’,’value’:10.0,’raw’:’10’}}],’kind’:’var’}
第二条:
{‘type’:‘EmptyStatement’}
2.在另一个具体实例中,最外层不是Program,是其他属性的话,例如:属性TypeA的话,那么TypeA下的所有基因应该是:
第一条
{‘type’:’TypeA’,‘body’:[]}(body内的内容直接去除)
第二条(body内的第一位)
{‘type’:’VariableDeclaration’,‘declarations’:
[{‘type’:’VariableDeclarator,‘id’:
{‘type’:’Indentifer’,’name’:’a’},
‘init’:{‘type’:’Literal’,’value’:10.0,’raw’:’10’}}],’kind’:’var’}
第三条(body内的第二位)
{‘type’:‘EmptyStatement’}
从而通过这种方式,为脚本的软件基因检测提供数据基础,可以根据提取的软件基因对恶意代码进行检测。达到了提升恶意代码识别精准度的技术效果。解决了现有技术中存在的对恶意脚本识别技术局限于代码特征匹配,无法对脚本文件中的代码逻辑调用关系进行检测,因此影响恶意脚本识别精准度的技术问题。
可选地,根据所获取的代码,生成与脚本文件对应的软件基因,包括:生成与代码对应的树形结构数据,其中树形结构数据用于描述代码的语法特征;以及根据树形结构数据,生成与脚本文件对应的软件基因。
具体地,在根据所获取的代码,生成与脚本文件对应的软件基因的操作中,首先生成与代码对应的树形结构数据,其中树形结构数据用于描述代码的语法特征。例如可以采用抽象语法树规则将脚本文件中的代码转化为树形结构,用以描述代码的语法特征,以下是上述代码对应的树形结构数据:
进一步地,根据树形结构数据,生成与脚本文件对应的软件基因。从而,通过抽象语法树结构可以更加直观的体现脚本逻辑流程,并且通过树节点可以规范基因内容。
图3a示例性地示出了检测系统的整体模块图,参考图3a所示,在具体实践中,利用抽象语法树提取模块可以用来构建树形结构数据,数据抽象模块和基因提取模块用来根据树形结构数据,生成与脚本文件对应的软件基因。
可选地,生成与代码对应的树形结构数据,包括:对代码进行词法分析,确定与代码对应的单词集合,其中单词集合包括构成代码的多个单词;以及对所确定的单词集合进行语法分析,生成与代码对应的树形结构数据。
具体地,在生成与代码对应的树形结构数据的操作中,首先对代码进行词法分析,确定与代码对应的单词集合,其中单词集合包括构成代码的多个单词。其中,集合例如可以采用数组的形式,单词还对应有属性。词法分析的解析器会按字符去扫描代码,在它遇到空格、操作符以及特殊符号的情况下,它会认为一句话已经完成了,然后把它们按照预定的规则合并成一个个的标识tokens。同时,它会移除空白符、注释等。最后,整个代码将被分割进一个tokens数组。在一个具体实例中,代码’var a=10’,经过词法分析之后,得到的单词集合(数组形式)为:[{value:‘var’,type:‘keyword’},{value:‘a’,type:‘identifier’}...]。
进一步地,对词法分析得到的单词集合进行语法分析,转化成树形的表达形式(即,上述的树形结构数据)。同时,还包括验证语法,语法如果有错的话,抛出语法错误。
可选地,根据树形结构数据,生成与脚本文件对应的软件基因,包括:从树形结构数据中提取用于进行基因分析的抽象数据;以及对抽象数据进行切分,生成与脚本文件对应的软件基因。
具体地,在根据树形结构数据,生成与脚本文件对应的软件基因的操作中,首先从树形结构数据中提取用于进行基因分析的抽象数据,即从树形结构数据中提取抽象的代码数据。进一步地,对抽象数据进行切分(对树形结构的数据进行切分),生成与脚本文件对应的软件基因。
可选地,从树形结构数据中提取用于进行基因分析的抽象数据,包括:确定构成树形结构的数据部分;以及根据数据部分生成抽象数据,其中抽象数据包括用于标识数据部分的数据类型的第一元素以及记载数据部分的数据内容的第二元素。
具体地,在从树形结构数据中提取用于进行基因分析的抽象数据的操作中,首先确定构成树形结构的数据部分。其中,本步骤还可以先去除无关的数据变量,例如:将最外层的Program剔除,留下Program的body部分。body数组内最外层以花括号包起来的数据我们视为一部分,一个body内可能会包含多个部分,上述的树形结构数据分为两个数据部分如下:
进一步地,根据数据部分生成抽象数据,其中抽象数据包括用于标识数据部分的数据类型的第一元素以及记载数据部分的数据内容的第二元素。例如:上述的第一部分数据中的第一元素和第二元素如下:
通过将树形结构数据确定为多个数据部分,在计算过程中可以针对每一块数据进行操作,节省系统资源占用。此外,还可以使代码逻辑更加清晰,使得基因提取更加精准。将数据分为第一元素和第二元素,可以使数据类型和数据内容进行分离,进一步提高了代码逻辑的清晰程度,提高精准度以及效率。此外,本实施例还可以将得到的抽象数据存储到数组中,在确定软件基因的步骤中可以对数组中的数据进行操作。
可选地,对抽象数据进行切分,生成与脚本文件对应的软件基因,包括:获取抽象数据的第二元素;对第二元素进行遍历,确定第二元素包含的最小数据单位以及最小数据单位之间的调用关系,其中最小数据单位对应于完全执行或者完全不执行状态的代码片段;以及根据最小数据单位以及调用关系,生成软件基因。
具体地,在对抽象数据进行切分,生成与脚本文件对应的软件基因的操作中,首先获取抽象数据的第二元素,即数据部分的数据内容。进一步地,对第二元素进行遍历,确定第二元素包含的最小数据单位以及最小数据单位之间的调用关系,遍历算法例如可以采用广度遍历算法。其中,最小数据单位为对应于完全执行或者完全不执行状态的代码片段,即符合软件基因的原子性原则。每个最小数据单位作为一条基因,而整个第二元素称为一个基因组。调用关系可以是代码之间的引用或者从属的关系。最终,根据根据最小数据单位以及调用关系,生成软件基因。从而通过这种方式,可以保证最终生成的脚本中的基因符合软件基因的特性。
可选地,该方法还包括:确定每个最小数据单位对应的编号,并且利用编号表示最小数据单位之间的调用关系。
具体地,本实施例中还包括确定最小数据单位对应的编号,然后通过编号表示之间的调用关系。从而,与直接的利用代码表示相比,利用编号表示调用关系更加清楚简洁。
可选地,该方法还包括:确定脚本文件的文件类型;以及根据文件类型确定用于生成树形结构数据采用的提取方案。
具体地,脚本文件可以包含多种,例如:JavaScript,PHP,Visual Basic,批处理bat,Python等,在获取脚本文件的代码之前,首先对脚本文件进行预处理,确定脚本文件的类型(例如:Python类型的脚本文件)。即:针对不同类型的脚本文件,将分配不同的语法树解析器去解析脚本(图3a中所示的文件类型检测模块)。其中可以采用magic包确定文件类型。然后选择与Python类型对应的生成树形结构数据的提取方案生成该脚本对应的树形结构数据。此外,在选择提取方案的过程中不限于利用文件类型进行确定,还可以通过其他的文件属性确定提取方案,此处不做具体限定。此外,在确定文件类型的同时还可以确定文件的md5值,在后期软件恶意性判断时会用到md5值作为文件指纹直接进行恶意性判断。
可选地,该方法还包括:对数据内容进行哈希计算,并将计算得到的哈希值作为第二元素的组成部分。
具体地,本实施例技术方案还对数据内容进行哈希计算,然后将计算得到的哈希值作为第二元素的组成部分(对应于上面所述的第二元素中的hash值)。通过哈希计算可以生成数据内容的一个特征,之后在进行同源性分析的时候可以通过hash值判断脚本文件是否发生变异。
图3b示例性地示出了脚本软件基因提取装置的示意图,参考图3b所示,在具体实现上,脚本软件数据通过输入接口存储至装置内的存储介质中。脚本软件基因提取程序在处理器中运行,运行中的数据存储至存储器中。脚本软件基因提取程序运行结束后将数据通过输出接口输出给用户。
此外,图4a示出了基因提取的整体流程的示意图,参考图4a所示,首先文件输入(脚本文件)。然后解析文件类型(确定文件中包含的代码),并且该步骤中还确定该脚本是否为合法脚本,例如:PHP文件的标志性的数据结构为<?php?>或者python中语法是严格按照缩进的,通过合法性判断就是判断文件的语法是否正确,并且在脚本文件语法错误的情况下,结束基因提取流程。进一步地,将解析得到的代码生成树形结构数据(AST),从树形结构数据中提取抽象数据,并从抽象数据中包含的基因以及基因块关系(对应于上述最小数据单位以及调用关系)。最终,将基因信息写入文件生成脚本文件的软件基因。
图4b示例性地示出了生成软件基因步骤的具体流程图,参考图4b所示,首先输入元数据数组(即,对应于上述步骤中的抽象数据的数组)。进一步地,判断数组是否为空,在不为空的情况下从数组内获取一条数据(即,每个抽象数据的第二元素)。进一步地,针对第二元素进行遍历(广度遍历),确定最小数据单位以及对应的编号,记录调用关系。最终,将基因数据和调用关系写入文件,完成生成软件基因的步骤。
从而根据本实施例的第一个方面,可以为脚本的软件基因检测提供数据基础。
此外,根据本实施例的第二个方面,提供了一种对脚本文件进行检测的方法,应用与软件基因检测的系统,图5示出了该方法的流程示意图,参考图5所示,该方法包括:
S502:获取待检测的脚本文件所记载的代码;
S504:根据所获取的代码,生成与脚本文件对应的软件基因;以及
S506:对软件基因进行检测。
具体地,在步骤S502中,检测系统首先获取待检测的脚本文件所记载的代码。例如:系统截获一个脚本,并从脚本中提取全部代码。示例性地,脚本文件中的一段代码为“var a=10;”。
进一步地,在步骤S504中,根据所获取的代码,生成与脚本文件对应的软件基因。即,从上述的代码中提取脚本文件中的软件基因。以下为上述脚本文件中“var a=10”这段代码所对应的软件基因,如下所示:
1.在一个具体实例中,最外层type为Program的省略,不列为基因内容显示,那么所提取的基因内容如下:
第一条:
{‘type’:’VariableDeclaration’,‘declarations’:
[{‘type’:’VariableDeclarator,‘id’:
{‘type’:’Indentifer’,’name’:’a’},
‘init’:{‘type’:’Literal’,’value’:10.0,’raw’:’10’}}],’kind’:’var’}
第二条:
{‘type’:‘EmptyStatement’}
2.在另一个具体实例中,最外层不是Program,是其他属性的话,例如:属性TypeA的话,那么TypeA下的所有基因应该是:
第一条
{‘type’:’TypeA’,‘body’:[]}(body内的内容直接去除)
第二条(body内的第一位)
{‘type’:’VariableDeclaration’,‘declarations’:
[{‘type’:’VariableDeclarator,‘id’:
{‘type’:’Indentifer’,’name’:’a’},
‘init’:{‘type’:’Literal’,’value’:10.0,’raw’:’10’}}],’kind’:’var’}
第三条(body内的第二位)
{‘type’:‘EmptyStatement’}
最终,在步骤S506中对软件基因进行检测,进而完成对脚本文件的检测过程。
从而,可以根据提取的软件基因对恶意代码进行检测。达到了提升恶意代码识别精准度的技术效果。解决了现有技术中存在的对恶意脚本识别技术局限于代码特征匹配,无法对脚本文件中的代码逻辑调用关系进行检测,因此影响恶意脚本识别精准度的技术问题。
可选地,根据所获取的代码,生成与脚本文件对应的软件基因,包括:生成与代码对应的树形结构数据,其中树形结构数据用于描述代码的语法特征;以及根据树形结构数据,生成与脚本文件对应的软件基因。
具体地,在根据所获取的代码,生成与脚本文件对应的软件基因的操作中,首先生成与代码对应的树形结构数据,其中树形结构数据用于描述代码的语法特征。例如可以采用抽象语法树规则将脚本文件中的代码转化为树形结构。进一步地,根据树形结构数据,生成与脚本文件对应的软件基因。从而,通过抽象语法树结构可以更加直观的体现脚本逻辑流程,并且通过树节点可以规范基因内容。
从而根据本实施例的第二个方面,可以根据提取的软件基因对恶意代码进行检测。达到了提升恶意代码识别精准度的技术效果。解决了现有技术中存在的对恶意脚本识别技术局限于代码特征匹配,无法对脚本文件中的代码逻辑调用关系进行检测,因此影响恶意脚本识别精准度的技术问题。
此外,参考图1所示,根据本实施例的第三个方面,提供了一种存储介质。所述存储介质包括存储的程序,其中,在所述程序运行时由处理器执行以上任意一项所述的方法。
从而根据本实施例,通过对脚本文件中的软件基因进行提取,然后根据提取的软件基因对恶意代码进行检测。达到了提升恶意代码识别精准度的技术效果。解决了现有技术中存在的对恶意脚本识别技术局限于代码特征匹配,无法对脚本文件中的代码逻辑调用关系进行检测,因此影响恶意脚本识别精准度的技术问题。
此外,现阶段基于脚本语言开发的应用软件在不断增多,对应的以脚本为主体的漏洞数量也在不断增长。代码审计是应对软件漏洞的传统方法之一,其包含人工审计和自动化审计,自动化审计的方法和恶意脚本识别的方法类似,通过对软件代码内可能产生漏洞的代码片段进行扫描和统计。传统方法能一点程度上规避漏洞风险,但对于由一系列操作引发的漏洞是无法处理的。本实施例技术方案可以很好的应对上述的问题,对软件脚本提取基因后,对漏洞相关的基因片段进行提取,可以较准确的扫描出目标代码的相关漏洞。并且,本实施例的技术方案不仅保留了恶意代码特征还包含了恶意代码间的逻辑关系,能够对未知脚本进行恶意性及同源性判定。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
实施例2
图6示出了根据本实施例的第一个方面所述的生成脚本文件的软件基因的装置600,该装置600与根据实施例1的第一个方面所述的方法相对应。参考图6所示,该装置600包括:第一数据获取模块610,用于获取待检测的脚本文件所记载的代码;以及第一基因生成模块620,用于根据所获取的代码,生成与脚本文件对应的软件基因。
可选地,第一基因生成模块620,包括:结构生成子模块,用于生成与代码对应的树形结构数据,其中树形结构数据用于描述代码的语法特征;以及基因生成子模块,用于根据树形结构数据,生成与脚本文件对应的软件基因。
可选地,结构生成子模块,包括:词法分析单元,用于对代码进行词法分析,确定与代码对应的单词集合,其中单词集合包括构成代码的多个单词;以及语法分析单元,对所确定的单词集合进行语法分析,生成与代码对应的树形结构数据。
可选地,基因生成子模块,包括:数据提取单元,用于从树形结构数据中提取用于进行基因分析的抽象数据;以及基因生成单元,用于对抽象数据进行切分,生成与脚本文件对应的软件基因。
可选地,数据提取单元,包括:结构确定子单元,用于确定构成树形结构的数据部分;以及数据提取子单元,用于根据数据部分生成抽象数据,其中抽象数据包括用于标识数据部分的数据类型的第一元素以及记载数据部分的数据内容的第二元素。
可选地,基因生成单元,包括:数据获取子单元,用于获取抽象数据的第二元素;遍历子单元,用于对第二元素进行遍历,确定第二元素包含的最小数据单位以及最小数据单位之间的调用关系,其中最小数据单位对应于完全执行或者完全不执行状态的代码片段;以及提取子单元,用于根据最小数据单位以及调用关系,生成软件基因。
可选地,装置600还包括:调用关系确定子单元,用于确定每个最小数据单位对应的编号,并且利用编号表示最小数据单位之间的调用关系。
可选地,装置600还包括:文件类型确定模块,用于确定脚本文件的文件类型;以及方案确定模块,用于根据文件类型确定用于生成树形结构数据采用的提取方案。
可选地,装置600还包括:哈希计算子模块,用于对数据内容进行哈希计算,并将计算得到的哈希值作为第二元素的组成部分。
此外,图7示出了根据本实施例的第二个方面所述的对脚本文件进行检测的装置700,该装置700与根据实施例1的第二个方面所述的方法相对应。参考图7所示,该装置700包括:第二数据获取模块710,用于获取待检测的脚本文件所记载的代码;第二基因生成模块720,用于根据所获取的代码,生成与脚本文件对应的软件基因;以及基因检测模块730,用于对软件基因进行检测。
可选地,第二基因生成模块720,包括:树形结构生成子模块,用于生成与代码对应的树形结构数据,其中树形结构数据用于描述代码的语法特征;以及软件基因生成子模块,用于根据树形结构数据,生成与脚本文件对应的软件基因。
从而根据本实施例,通过对脚本文件中的软件基因进行提取,然后根据提取的软件基因对恶意代码进行检测。达到了提升恶意代码识别精准度的技术效果。解决了现有技术中存在的对恶意脚本识别技术局限于代码特征匹配,无法对脚本文件中的代码逻辑调用关系进行检测,因此影响恶意脚本识别精准度的技术问题。
实施例3
图8示出了根据本实施例的第一个方面所述的生成脚本文件的软件基因的装置800,该装置800与根据实施例1的第一个方面所述的方法相对应。参考图8所示,该装置800包括:第一处理器810;以及第一存储器820,与第一处理器810连接,用于为第一处理器810提供处理以下处理步骤的指令:获取待检测的脚本文件所记载的代码;以及根据所获取的代码,生成与脚本文件对应的软件基因。
可选地,根据所获取的代码,生成与脚本文件对应的软件基因,包括:生成与代码对应的树形结构数据,其中树形结构数据用于描述代码的语法特征;以及根据树形结构数据,生成与脚本文件对应的软件基因。
可选地,生成与代码对应的树形结构数据,其中树形结构数据用于描述代码的语法特征,包括:对代码进行词法分析,确定与代码对应的单词集合,其中单词集合包括构成代码的多个单词;以及对所确定的单词集合进行语法分析,生成与代码对应的树形结构数据。
可选地,根据树形结构数据,生成与脚本文件对应的软件基因,包括:从树形结构数据中提取用于进行基因分析的抽象数据;以及对抽象数据进行切分,生成与脚本文件对应的软件基因。
可选地,从树形结构数据中提取用于进行基因分析的抽象数据,包括:确定构成树形结构的数据部分;以及根据数据部分生成抽象数据,其中抽象数据包括用于标识数据部分的数据类型的第一元素以及记载数据部分的数据内容的第二元素。
可选地,对抽象数据进行切分,生成与脚本文件对应的软件基因,包括:获取抽象数据的第二元素;对第二元素进行遍历,确定第二元素包含的最小数据单位以及最小数据单位之间的调用关系,其中最小数据单位对应于完全执行或者完全不执行状态的代码片段;以及根据最小数据单位以及调用关系,生成软件基因。
可选地,第一存储器820还用于为第一处理器810提供处理以下处理步骤的指令:确定每个最小数据单位对应的编号,并且利用编号表示最小数据单位之间的调用关系。
可选地,第一存储器820还用于为第一处理器810提供处理以下处理步骤的指令:确定脚本文件的文件类型;以及根据文件类型确定用于生成树形结构数据采用的提取方案。
可选地,第一存储器820还用于为第一处理器810提供处理以下处理步骤的指令:对数据内容进行哈希计算,并将计算得到的哈希值作为第二元素的组成部分。
此外,图9示出了根据本实施例的第二个方面所述的对脚本文件进行检测的装置900,该装置900与根据实施例1的第二个方面所述的方法相对应。参考图9所示,该装置900包括:第二处理器910;以及第二存储器920,与第二处理器910连接,用于为第二处理器910提供处理以下处理步骤的指令:获取待检测的脚本文件所记载的代码;根据所获取的代码,生成与脚本文件对应的软件基因;以及对软件基因进行检测。
可选地,根据所获取的代码,生成与脚本文件对应的软件基因,包括:生成与代码对应的树形结构数据,其中树形结构数据用于描述代码的语法特征;以及根据树形结构数据,生成与脚本文件对应的软件基因。
从而根据本实施例,通过对脚本文件中的软件基因进行提取,然后根据提取的软件基因对恶意代码进行检测。达到了提升恶意代码识别精准度的技术效果。解决了现有技术中存在的对恶意脚本识别技术局限于代码特征匹配,无法对脚本文件中的代码逻辑调用关系进行检测,因此影响恶意脚本识别精准度的技术问题。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (5)

1.一种生成脚本文件的软件基因的方法,其特征在于,包括:
获取待检测的脚本文件所记载的代码;以及
根据所获取的所述代码,生成与所述脚本文件对应的软件基因;
根据所获取的所述代码,生成与所述脚本文件对应的软件基因,包括:
生成与所述代码对应的树形结构数据,其中所述树形结构数据用于描述所述代码的语法特征;以及
根据所述树形结构数据,生成与所述脚本文件对应的软件基因;
生成与所述代码对应的树形结构数据,包括:
对所述代码进行词法分析,确定与所述代码对应的单词集合,其中所述单词集合包括构成所述代码的多个单词;以及
对所确定的单词集合进行语法分析,生成与所述代码对应的所述树形结构数据;
根据所述树形结构数据,生成与所述脚本文件对应的软件基因,包括:
从所述树形结构数据中提取用于进行基因分析的抽象数据;以及
对所述抽象数据进行切分,生成与所述脚本文件对应的软件基因;
从所述树形结构数据中提取用于进行基因分析的抽象数据,包括:
确定构成所述树形结构的数据部分;以及
根据所述数据部分生成所述抽象数据,其中所述抽象数据包括用于标识所述数据部分的数据类型的第一元素以及记载所述数据部分的数据内容的第二元素。
2.根据权利要求1所述的方法,其特征在于,对所述抽象数据进行切分,生成与所述脚本文件对应的软件基因,包括:
获取所述抽象数据的第二元素;
对所述第二元素进行遍历,确定所述第二元素包含的最小数据单位以及所述最小数据单位之间的调用关系,其中所述最小数据单位对应于完全执行或者完全不执行状态的代码片段;以及
根据所述最小数据单位以及所述调用关系,生成所述软件基因。
3.根据权利要求1所述的方法,其特征在于,还包括:
确定所述脚本文件的文件类型;以及
根据所述文件类型确定用于生成所述树形结构数据采用的提取方案。
4.一种对脚本文件进行检测的方法,其特征在于,包括:
获取待检测的脚本文件所记载的代码;
根据所获取的所述代码,生成与所述脚本文件对应的软件基因;
根据所获取的代码,生成与所述脚本文件对应的软件基因,包括:
生成与所述代码对应的树形结构数据,其中所述树形结构数据用于描述所述代码的语法特征;以及
根据所述树形结构数据,生成与所述脚本文件对应的软件基因;
生成与所述代码对应的树形结构数据,包括:
对所述代码进行词法分析,确定与所述代码对应的单词集合,其中所述单词集合包括构成所述代码的多个单词;以及
对所确定的单词集合进行语法分析,生成与所述代码对应的所述树形结构数据;
根据所述树形结构数据,生成与所述脚本文件对应的软件基因,包括:
从所述树形结构数据中提取用于进行基因分析的抽象数据;以及
对所述抽象数据进行切分,生成与所述脚本文件对应的软件基因;
从所述树形结构数据中提取用于进行基因分析的抽象数据,包括:
确定构成所述树形结构的数据部分;以及
根据所述数据部分生成所述抽象数据,其中所述抽象数据包括用于标识所述数据部分的数据类型的第一元素以及记载所述数据部分的数据内容的第二元素;
以及
对所述软件基因进行检测。
5.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时由处理器执行权利要求1至4中任意一项所述的方法。
CN202010062677.3A 2020-01-19 2020-01-19 生成脚本文件的软件基因和脚本检测的方法、装置及介质 Active CN111324892B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010062677.3A CN111324892B (zh) 2020-01-19 2020-01-19 生成脚本文件的软件基因和脚本检测的方法、装置及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010062677.3A CN111324892B (zh) 2020-01-19 2020-01-19 生成脚本文件的软件基因和脚本检测的方法、装置及介质

Publications (2)

Publication Number Publication Date
CN111324892A CN111324892A (zh) 2020-06-23
CN111324892B true CN111324892B (zh) 2023-09-19

Family

ID=71172839

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010062677.3A Active CN111324892B (zh) 2020-01-19 2020-01-19 生成脚本文件的软件基因和脚本检测的方法、装置及介质

Country Status (1)

Country Link
CN (1) CN111324892B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112699379B (zh) * 2020-12-31 2024-05-24 上海戎磐网络科技有限公司 一种基于软件基因的固件漏洞扫描系统和方法
CN113448605B (zh) * 2021-06-29 2024-02-09 北京高途云集教育科技有限公司 一种软件更新方法、装置、电子设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102592079A (zh) * 2010-12-30 2012-07-18 卡巴斯基实验室封闭式股份公司 用于检测未知恶意软件的系统和方法
CN108171059A (zh) * 2017-12-26 2018-06-15 中国人民解放军战略支援部队信息工程大学 基于软件基因的恶意代码检测与识别方法及装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102592079A (zh) * 2010-12-30 2012-07-18 卡巴斯基实验室封闭式股份公司 用于检测未知恶意软件的系统和方法
CN108171059A (zh) * 2017-12-26 2018-06-15 中国人民解放军战略支援部队信息工程大学 基于软件基因的恶意代码检测与识别方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
陈平 ; 李敬明 ; 沈桂芳 ; 张平华 ; .基于SVM的敏感权限Android恶意软件检测方法.景德镇学院学报.2016,(第06期),全文. *

Also Published As

Publication number Publication date
CN111324892A (zh) 2020-06-23

Similar Documents

Publication Publication Date Title
CN108763928B (zh) 一种开源软件漏洞分析方法、装置和存储介质
CN107292170B (zh) Sql注入攻击的检测方法及装置、系统
CN107341399B (zh) 评估代码文件安全性的方法及装置
CN111738011A (zh) 违规文本的识别方法及装置、存储介质、电子装置
CN111858242A (zh) 一种系统日志异常检测方法、装置及电子设备和存储介质
CN111324892B (zh) 生成脚本文件的软件基因和脚本检测的方法、装置及介质
CN109194677A (zh) 一种sql注入攻击检测方法、装置及设备
CN109104421B (zh) 一种网站内容篡改检测方法、装置、设备及可读存储介质
CN110768875A (zh) 一种基于dns学习的应用识别方法及系统
CN113221032A (zh) 链接风险检测方法、装置以及存储介质
CN111368289A (zh) 一种恶意软件检测方法和装置
CN110795069A (zh) 代码分析方法、智能终端及计算机可读存储介质
CN112016317A (zh) 基于人工智能的敏感词识别方法、装置及计算机设备
CN111159115A (zh) 相似文件检测方法、装置、设备及存储介质
CN109672586A (zh) 一种dpi业务流量识别方法、装置与计算机可读存储介质
US8909566B2 (en) Method, a computer program and apparatus for analyzing symbols in a computer
CN117056347A (zh) Sql语句永真式注入检测方法、装置、计算机设备及存储介质
CN116821903A (zh) 检测规则确定及恶意二进制文件检测方法、设备及介质
CN114547628B (zh) 漏洞检测方法及装置
CN115310087A (zh) 一种基于抽象语法树的网站后门检测方法和系统
CN110245308B (zh) 图像提取方法、装置及终端设备
CN112583773B (zh) 未知样本的检测方法及装置、存储介质、电子装置
CN113051876A (zh) 恶意网址识别方法及装置、存储介质、电子设备
CN110868421A (zh) 恶意代码的识别方法、装置、设备及存储介质
CN115718696B (zh) 源码密码学误用检测方法、装置、电子设备和存储介质

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