CN115906077A - 一种信息检测方法、装置、设备及计算机可读存储介质 - Google Patents
一种信息检测方法、装置、设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN115906077A CN115906077A CN202211406179.1A CN202211406179A CN115906077A CN 115906077 A CN115906077 A CN 115906077A CN 202211406179 A CN202211406179 A CN 202211406179A CN 115906077 A CN115906077 A CN 115906077A
- Authority
- CN
- China
- Prior art keywords
- information
- detected
- attack
- programming
- text
- 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.)
- Pending
Links
Images
Landscapes
- Machine Translation (AREA)
Abstract
本申请实施例公开了一种信息检测方法,该方法包括:获取待检测编程文本对应的第一输出信息;其中,第一输出信息是待检测编程文本运行后得到的;对待检测编程文本进行解析,生成待检测编程文本对应的语法结构树;对语法结构树进行分析,并基于分析结果确定第二输出信息;基于第一输出信息和第二输出信息,确定待检测编程文本中攻击信息是否注入成功。本申请实施例还公开了一种信息检测装置、设备及计算机可读存储介质。
Description
技术领域
本申请涉及互联网技术领域,尤其涉及一种信息检测方法、装置、设备及计算机可读存储介质。
背景技术
随着互联网技术的飞速发展,黑客利用全球广域网(World Wide Web,Web)漏洞远程注入恶意代码,从而控制服务端或窃取服务端信息;目前,常使用基于规则的检测方法来检测注入的恶意代码是否攻击成功;其中,基于规则的检测方法是通过将响应方向信息与基于安全经验整理的信息进行匹配,以此来检测注入的恶意代码是否攻击成功。但是,相关技术中基于规则的检测方法在检测注入的恶意代码是否成功攻击服务端时,存在仅能识别出具有固定格式的恶意代码的问题,导致检测精度较低。
发明内容
为解决上述技术问题,本申请实施例期望提供一种信息检测方法、装置、设备及计算机可读存储介质,可以解决相关技术中检测注入的恶意代码是否攻击成功的检测方法,仅能检测出具有固定格式的恶意代码的问题,扩大了检测攻击是否成功的广泛适用性,且提高了检测精度。
本申请的技术方案是这样实现的:
一种信息检测方法,所述方法包括:
获取待检测编程文本对应的第一输出信息;其中,所述第一输出信息是所述待检测编程文本运行后得到的;
对所述待检测编程文本进行解析,生成所述待检测编程文本对应的语法结构树;
对所述语法结构树进行分析,并基于分析结果确定第二输出信息;
基于所述第一输出信息和所述第二输出信息,确定所述待检测编程文本中攻击信息是否注入成功。
上述方案中,所述对所述待检测编程文本进行解析,生成所述待检测编程文本对应的语法结构树,包括:
基于目标词法文件对所述待检测编程文本进行词法分析,得到所述待检测编程文本的字词;其中,所述目标词法文件是所述待检测编程文本所采用的编程语言对应的词法文件;
基于所述编程语言对应的目标语法文件对所述字词进行语法分析,得到所述待检测编程文本中变量之间的层级关系和所述变量之间的关联方式;
基于所述待检测编程文本中的变量、所述层级关系和所述关联方式,生成所述语法结构树;其中,所述语法结构树中的节点关联了与所述节点具有对应关系的所述待检测编程文本的函数。
上述方案中,所述对所述语法结构树进行分析,并基于分析结果确定第二输出信息,包括:
对所述语法结构树进行分析,确定所述语法结构树中每一节点对应的目标变量、所述目标变量之间的目标关联方式和所述目标变量对应的目标函数;
基于所述目标函数、所述目标变量和所述目标关联方式,生成目标编程文本;
基于所述目标编程文本确定所述第二输出信息;其中,所述第二输出信息是所述目标编程文本运行后得到的。
上述方案中,所述基于所述第一输出信息和所述第二输出信息,确定所述待检测编程文本中攻击信息是否注入成功,包括:
基于所述第二输出信息,确定所述待检测编程文本中的所述攻击信息的攻击类型;
基于所述攻击类型、所述第一输出信息和所述第二输出信息,确定所述待检测编程文本中攻击信息是否注入成功。
上述方案中,所述基于所述攻击类型、所述第一输出信息和所述第二输出信息,确定所述待检测编程文本中攻击信息是否注入成功,包括:
在所述攻击类型为第一攻击类型,且所述第一输出信息与所述第二输出信息匹配的情况下,确定所述待检测编程文本中攻击信息注入失败;其中,所述第一攻击类型表征获取所述待检测编程文本所在的第一设备中的信息;
在所述攻击类型为第一攻击类型,且所述第一输出信息与所述第二输出信息不匹配的情况下,确定所述待检测编程文本中攻击信息注入成功;
在所述攻击类型为第二攻击类型,且所述第一输出信息与所述第二输出信息匹配的情况下,确定所述待检测编程文本对应的设备的行为信息;
基于所述设备的行为信息,确定所述待检测编程文本中攻击信息是否注入成功。
上述方案中,所述基于所述设备的行为信息,确定所述待检测编程文本中攻击信息是否注入成功,包括:
在所述第二攻击类型表征对所述第一设备中的目标文件或系统进行了操作时,基于所述第一设备和所述第一设备对应的第二设备所产生的所述行为信息,确定所述待检测编程文本中攻击信息是否注入成功;
在所述第二攻击类型表征在所述第一设备中加载了恶意文件时,基于所述第二设备所产生的所述行为信息,确定所述待检测编程文本中攻击信息是否注入成功。
上述方案中,所述方法还包括:
基于所述攻击信息的攻击类型,从目标信息安全数据库中确定所述攻击信息的属性信息;
基于所述属性信息生成告警信息。
一种信息检测装置,所述装置包括:
获取单元,用于获取待检测编程文本对应的第一输出信息;其中,所述第一输出信息是所述待检测编程文本运行后得到的;
处理单元,用于对所述待检测编程文本进行解析,生成所述待检测编程文本对应的语法结构树;
所述处理单元,还用于对所述语法结构树进行分析,并基于分析结果确定第二输出信息;
确定单元,用于基于所述第一输出信息和所述第二输出信息,确定所述待检测编程文本中攻击信息是否注入成功。
一种信息检测设备,所述设备包括:处理器、存储器和通信总线;
所述通信总线用于实现所述处理器和所述存储器之间的通信连接;
所述处理器用于执行所述存储器中存储的信息检测程序,以实现上述的信息检测方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现上述的信息检测方法的步骤。
本申请实施例所提供的信息检测方法、装置、设备及计算机可读存储介质,通过获取对待检测编程文本运行后得到的输出信息,其中,待检测编程文本是采用目标编程语言生成的,再对待检测编程文本进行解析,生成待检测编程文本对应的语法结构树,再对语法结构树进行分析,得到待检测编程文本对应的编程信息,之后基于输出信息和编程信息,确定待检测编程文本中攻击信息是否注入成功;如此,通过对待检测编程文本对应的语法结构树进行分析可以精确还原出完整代码,并对还原出的完整代码进行运行得到第二输出信息,之后将第一输出信息和第二输出信息进行比对就可以知道待检测编程文本中攻击信息是否注入成功,这种方案对于任何待检测编程文本都是适用的,从而解决了相关技术中检测注入的恶意代码是否攻击成功的检测方法,仅能检测出具有固定格式的恶意代码的问题,扩大了检测攻击是否成功的广泛适用性,且提高了检测精度。
附图说明
图1为本申请实施例提供的一种信息检测方法的流程示意图;
图2为本申请实施例提供的另一种信息检测方法的流程示意图;
图3为本申请实施例提供的一种信息检测方法中生成语法结构树的示意图;
图4为本申请实施例提供的又一种信息检测方法的流程示意图;
图5为本申请实施例提供的一种信息检测方法中确定攻击信息是否注入成功的流程示意图;
图6为本申请实施例提供的一种信息检测装置的流程示意图;
图7为本申请实施例提供的又一种信息检测设备的流程示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例提供一种信息检测方法,该方法可以应用于信息检测设备中,参照图1所示,该方法包括以下步骤:
步骤101、获取待检测编程文本对应的第一输出信息。
其中,第一输出信息是待检测编程文本运行后得到的。
在本申请实施例中,待检测编程文本可以是基于目标编程语言生成的具有代码的文本;在一种可行的实现方式中,目标编程语言可以是Java语言、C语言和C++语言等编程语言,待检测编程文本可以是Java代码注入攻击、C代码注入攻击和C++代码注入攻击;第一输出信息可以是运行待检测编程文本中的代码后得到的输出结果(即响应方向得到的输出结果,也就是响应回显)。
在本申请实施例中,信息检测设备可以主动发起用于获取第一输出信息的请求指令。
步骤102、对待检测编程文本进行解析,生成待检测编程文本对应的语法结构树。
其中,语法结构树可以指的是以树状的形式表现待检测编程文本的语法结构;在一种可行的实现方式中,语法结构树可以是抽象语法树(Abstract Syntax Tree,AST);当然,语法结构树也可以是表示语法结构的其他形式的树。
在本申请实施例中,可以通过使用与待检测编程文本的目标编程语言相对应的解析框架,对待检测编程文本进行解析,从而确定待检测编程文本对应的语法结构树。
步骤103、对语法结构树进行分析,并基于分析结果确定第二输出信息。
其中,可以基于语法结构树中每一节点的节点信息,还原出语法结构树对应的代码,再对还原出的代码进行运行(即虚拟执行)得到第二输出信息。在本申请实施例中,对语法结构树中的每一节点进行分析,确定出每一节点的节点信息,再基于所有节点信息确定出第二输出信息。需要说明的是,第二输出信息可以指的是请求方法得到的输出信息;第二输出信息中可以包括待检测编程文本中因为攻击信息而隐藏的代码被执行后的结果。这样,通过对待检测编程文本进行虚拟执行后可以理解待检测编程文本注入攻击的意图。
步骤104、基于第一输出信息和第二输出信息,确定待检测编程文本中攻击信息是否注入成功。
在本申请实施例中,可以将第一输出信息和第二输出信息进行匹配,基于匹配结果来确定待检测文本中攻击信息是否注入成功,即在第一输出信息和第二输出信息匹配的情况下,表明待检测编程文本中攻击信息注入失败;在第一输出信息和第二输出信息不匹配的情况下,表明待检测编程文本中攻击信息注入成功。这样,通过虚拟执行得到的信息与响应回显共同检测攻击是否成功,做到精确检测的同时减低误报。
本申请的实施例所提供的信息检测方法,通过对待检测编程文本对应的语法结构树进行分析可以精确还原出完整代码,并对还原出的完整代码进行运行得到第二输出信息,之后将第一输出信息和第二输出信息进行比对就可以知道待检测编程文本中攻击信息是否注入成功,这种方案对于任何待检测编程文本都是适用的,从而解决了相关技术中检测注入的恶意代码是否攻击成功的检测方法,仅能检测出具有固定格式的恶意代码的问题,扩大了检测攻击是否成功的广泛适用性,且提高了检测精度。
基于前述实施例,本申请实施例提供的一种信息检测方法,参照图2所示,该方法包括以下步骤:
步骤201、信息检测设备获取待检测编程文本对应的第一输出信息。
其中,第一输出信息是待检测编程文本运行后得到的。
步骤202、信息检测设备基于目标词法文件对待检测编程文本进行词法分析,得到待检测编程文本的字词。
其中,目标词法文件是待检测编程文本所采用的编程语言对应的词法文件。
在本申请实施例中,字词可以用token表示,token也可以理解为把程序的语句进行类似分词得到的单词;词法分析是计算机科学中将字符序列转换为单词(token)序列的过程;进行词法分析的程序或者函数叫作词法分析器,也叫扫描器,词法分析器或扫描器可以是根据目标词法文件生成的。
在本申请实施例中,可以采用与待检测编程文本的编程语言对应的词法文件对待检测编程文本进行分析,以将待检测编程文本进行分词处理得到字词;在一种可行的实现方式中,若待检测编程文本为var a=4,则待检测编程文本的字词为var、a、=和4。
步骤203、信息检测设备基于编程语言对应的目标语法文件对字词进行语法分析,得到待检测编程文本中变量之间的层级关系和变量之间的关联方式。
其中,关联方式可以指的是变量与变量之间的连接方式;在一种可行的实现方式中,关联方式可以是变量与变量之间的拼接方式。
在本申请实施例中,可以采用语法解析器对目标语法文件进行编译,得到目标语法文件对应的有限状态自动机(Finite State Machine,FSM),然后再采用FSM对字词进行组合规约,根据组合规约后的字词得到待检测编程文本中变量之间的层级关系和变量之间的关联方式。
需要说明的是,语法分析是在词法分析的基础上将token序列组合成各类语法短语,如“程序”、“语句”、“表达式”等,语法分析是通过语法分析器判断程序在结构上是否正确,程序的结构由上下文无关文法描述。其中,语法解析器是根据目标语法文件生成的。
步骤204、信息检测设备基于待检测编程文本中的变量、层级关系和关联方式,生成语法结构树。
其中,语法结构树中的节点关联了与节点具有对应关系的待检测编程文本的函数。
在本申请实施例中,可以将待检测编程文本中的变量和关联方式作为语法结构树法的节点,并将层级关系作为语法结构树法的边,从而生成待检测编程文本对应的语法结构树。
在一种可行的实现方式中,参照图3所示,为待检测编程文本为#a="who",
#b="ami",@java.lang.Runtime@getRuntime().exec(#a+#b)生成的语法结构树;其中,语法结构树中的节点分别是a、=、who、b、=、ami和+。
步骤205、信息检测设备对语法结构树进行分析,确定语法结构树中每一节点对应的目标变量、目标变量之间的目标关联方式和目标变量对应的目标函数。
在本申请实施例中,可以采用代码生成器对语法结构树进行遍历,从而获取语法结构树中每一节点对应的目标变量、目标变量之间的目标关联方式和目标变量对应的目标函数;在一种可行的实现方式中,代码生成器可以是ECMAScript代码生成器。
在一种可行的实现方式中,参照图3所示,遍历图3中示出的抽象语法树,从而可以确定出目标变量为变量a和变量b,目标变量之间的目标关联方式为拼接关系(#a+#b),目标变量对应的目标函数为执行函数(exec)。
步骤206、信息检测设备基于目标函数、目标变量和目标关联方式,生成目标编程文本。
其中,目标编程文本可以指的是对待检测编程文本进行分析后得到的文本。
在本申请实施例中,可以将目标函数、目标变量和目标关联方式输入到代码生成器,从而将语法结构树转换为可执行代码的目标编程文本。这样,通过使用语法结构树,精确还原每个字符串,不仅能精确检测出攻击是否成功,还能降低误报。
步骤207、信息检测设备基于目标编程文本确定第二输出信息。
其中,第二输出信息是目标编程文本运行后得到的。
在本申请实施例中,在生成目标编程文本后,可以在待检测编程文本所运行的终端的后台执行目标编程文本中的目标函数,从而确定出执行目标函数后得到的信息即第二输出信息。
在一种可行的实现方式中,以目标编程文本为#a="who",#b="ami",@java.
lang.Runtime@getRuntime().exec(#a+#b)为例,在运行过程中记录每个变量的值,即分别记录变量a和变量b对应的值,分别是字符串:"who"、"ami"。然后在执行函数exec时,发现其函数中的参数表征的是变量a和变量b的+运算,于是为了还原字符串将会获取到变量a和变量b的值,其中,由于变量a和变量b皆为字符串,所以变量a和变量b的+运算为变量a和变量b的拼接运算,就可以得到#a+#b的值(即第二输出信息)为"whoami"。
步骤208、信息检测设备基于第二输出信息,确定待检测编程文本中的攻击信息的攻击类型。
在本申请实施例中,可以对第二输出信息进行分析,从而从第二输出信息中确定待检测编程文本的攻击意图,从而基于攻击意图对待检测编程文本进行分类得到待检测编程文本的攻击类型;在一种可行的实现方式中,攻击类型可以分为五类,分别是探测漏洞类型、敏感信息获取类型、文件操作类型、系统操作类型和加载恶意文件类型。
步骤209、信息检测设备基于攻击类型、第一输出信息和第二输出信息,确定待检测编程文本中攻击信息是否注入成功。
在本申请实施例中,可以根据攻击类型,来确定仅根据第一输出信息和第二输出信息来确定待检测编程文本中攻击信息是否注入成功,还是需要确定其他信息来确定待检测编程文本中攻击信息是否注入成功。
需要说明的是,步骤209可以通过以下方式来实现:
a1、信息检测设备在攻击类型为第一攻击类型,且第一输出信息与第二输出信息匹配的情况下,确定待检测编程文本中攻击信息注入失败。
其中,第一攻击类型表征获取待检测编程文本所在的第一设备中的信息,其中,第一设备可以指的是待监测编程文本所运行的终端。
在一种可行的实现方式中,第一攻击类型可以是探测漏洞类型,第一攻击类型也可以是敏感信息获取类型;其中,敏感信息可以指的是通过正常的访问请求无法获取到的信息,如秘钥信息;当第一攻击类型为探测漏洞类型时,黑客大多通过一些确定的第一输出特征来判断服务器是否存在漏洞,如print(“hack success”),在执行待检测编程文本之后会直接出现hack success的执行结果(即第一输出结果),而运行请求方向具体的执行代码(即目标待检测编程文本)得到第二输出结果,在hack success的执行结果与运行目标待检测编程文本得到的第二输出结果匹配的情况下,表明待检测编程文本中攻击信息注入失败;当第一攻击类型为敏感信息获取类型时,例如exec(“cat/etc/passwd”),在运行待检测编程文本之后会直接出现/etc/passwd对应的执行结果,而运行请求方向具体的执行代码(即目标待检测编程文本)得到第二输出结果,在运行请求方向具体的执行代码(即目标待检测编程文本)得到第二输出结果与/etc/passwd对应的执行结果匹配的情况下,表明待检测编程文本中攻击信息注入失败。
a2、信息检测设备在攻击类型为第一攻击类型,且第一输出信息与第二输出信息不匹配的情况下,确定待检测编程文本中攻击信息注入成功。
在一种可行的实现方式中,当第一攻击类型为探测漏洞类型时,黑客大多通过一些确定的第一输出特征来判断服务器是否存在漏洞,如print(“hack success”),在执行待检测编程文本之后会直接出现hack success的执行结果(即第一输出结果),而运行请求方向具体的执行代码(即目标待检测编程文本)得到第二输出结果,在hack success的执行结果与运行目标待检测编程文本得到的第二输出结果不匹配的情况下,表明待检测编程文本中攻击信息注入成功;当第一攻击类型为敏感信息获取类型时,例如exec(“cat/etc/passwd”),在运行待检测编程文本之后会直接出现/etc/passwd对应的执行结果,而运行请求方向具体的执行代码(即目标待检测编程文本)得到第二输出结果,在运行请求方向具体的执行代码(即目标待检测编程文本)得到第二输出结果与/etc/passwd对应的执行结果不匹配的情况下,表明待检测编程文本中攻击信息注入成功。
a3、信息检测设备在攻击类型为第二攻击类型,且第一输出信息与第二输出信息匹配的情况下,确定待检测编程文本对应的设备的行为信息。
其中,行为信息可以指的是设备在运行过程中产生的信息;待检测编程文本对应的设备可以指的是待检测编程文本所运行的终端,待检测编程文本对应的设备也可以指的是终端对应的服务器。
在本申请实施例中,在攻击类型为第二攻击类型,且第一输出信息与第二输出信息匹配的情况下,表明通过将第一输出信息与第二输出信息进行匹配的方式无法判断待检测编程文本中攻击信息是否攻击成功,还需要再进一步根据待检测编程文本对应的设备的行为信息,来确定待检测编程文本中攻击信息是否攻击成功。
a4、信息检测设备基于设备的行为信息,确定待检测编程文本中攻击信息是否注入成功。
在本申请实施例中,可以对行为信息进行分析来确定待检测编程文本中攻击信息是否注入成功。
需要说明的是,步骤208之后,在执行步骤209的具体实现步骤的时候,可以是执行步骤a1、步骤a2或者步骤a3-a4。
本申请的实施例所提供的信息检测方法,通过对待检测编程文本对应的语法结构树进行分析可以精确还原出完整代码,并对还原出的完整代码进行运行得到第二输出信息,之后将第一输出信息和第二输出信息进行比对就可以知道待检测编程文本中攻击信息是否注入成功,这种方案对于任何待检测编程文本都是适用的,从而解决了相关技术中检测注入的恶意代码是否攻击成功的检测方法,仅能检测出具有固定格式的恶意代码的问题,扩大了检测攻击是否成功的广泛适用性,且提高了检测精度。
基于前述实施例,本申请实施例提供的一种信息检测方法,参照图4所示,该方法包括以下步骤:
步骤301、信息检测设备获取待检测编程文本对应的第一输出信息。
其中,第一输出信息是待检测编程文本运行后得到的。
步骤302、信息检测设备基于目标词法文件对待检测编程文本进行词法分析,得到待检测编程文本的字词。
步骤303、信息检测设备基于编程语言对应的目标语法文件对字词进行语法分析,得到待检测编程文本中变量之间的层级关系和变量之间的关联方式。
步骤304、信息检测设备基于待检测编程文本中的变量、层级关系和关联方式,生成语法结构树。
其中,语法结构树中的节点关联了与节点具有对应关系的待检测编程文本的函数。
步骤305、信息检测设备对语法结构树进行分析,确定语法结构树中每一节点对应的目标变量、目标变量之间的目标关联方式和目标变量对应的目标函数。
步骤306、信息检测设备基于目标函数、目标变量和目标关联方式,生成目标编程文本。
步骤307、信息检测设备基于目标编程文本确定第二输出信息。
其中,第二输出信息是目标编程文本运行后得到的。
步骤308、信息检测设备基于第二输出信息,确定待检测编程文本中的攻击信息的攻击类型。
需要说明的是,在执行步骤308之后,可以执行步骤309、310或者311~313。
步骤309、信息检测设备在攻击类型为第一攻击类型,且第一输出信息与第二输出信息匹配的情况下,确定待检测编程文本中攻击信息注入失败。
其中,第一攻击类型表征获取待检测编程文本所在的第一设备中的信息。
步骤310、信息检测设备在攻击类型为第一攻击类型,且第一输出信息与第二输出信息不匹配的情况下,确定待检测编程文本中攻击信息注入成功。
步骤311、信息检测设备在攻击类型为第二攻击类型,且第一输出信息与第二输出信息匹配的情况下,确定待检测编程文本对应的设备的行为信息。
需要说明的是,步骤311之后可以执行步骤312或者步骤313。
步骤312、在第二攻击类型表征对第一设备中的目标文件或系统进行了操作时,信息检测设备基于第一设备和第一设备对应的第二设备所产生的行为信息,确定待检测编程文本中攻击信息是否注入成功。
其中,第一设备可以指的是待检测编程文本所运行的服务器;第二设备可以指的是待检测编程文本所在的服务器对应的终端。
在本申请实施例中,可以将第一设备中的信息与第一设备对应的第二设备所产生的行为信息进行结合,共同来确定待检测编程文本中攻击信息是否注入成功。
在一种可行的实现方式中,在第二攻击类型表征对待检测编程文本所运行的服务器中的目标文件或系统进行了操作时,例如new java.io.BufferedWriter(newjava.io.FileWriter("shell.jsp"));在待检测编程文本所在的服务器中写入一个shell.jsp文件,但是从服务器侧来看,仅能判断待解析编程文本是否写入服务器中,但shell到底执行成功还是执行失败,是在服务器对应的终端中才能发现的,若发现终端的一些异常进程,或者终端中出现文件落盘、文件的增删改查等一些行为信息,将待检测编程文本所运行的服务器中的代码注入执行写shell的行为与终端的一些异常进程,或者终端中出现文件落盘、文件的增删改查等一些行为信息相结合,共同确定待检测编程文本中攻击信息是否注入成功。
步骤313、在第二攻击类型表征在第一设备中加载了恶意文件时,信息检测设备基于第一设备所产生的行为信息,确定待检测编程文本中攻击信息是否注入成功。
其中,第一设备可以指的是待检测编程文本所运行的服务器;恶意文件可以指的是包含非法信息的文件。
在本申请实施例中,可以对待检测编程文本所运行的服务器所产生的行为信息进行分析,从而确定待检测编程文本中攻击信息是否注入成功。
在一种可行的实现方式中,在第二攻击类型表征在待检测编程文本所在的服务器中加载了恶意文件的情况下,在黑客发起攻击后,建立待检测编程文本所在的服务器与黑客的服务器之间的连接的有效负载(payload)中就附带有恶意文件中的互联网协议地址(Internet Protocol Address,IP)或者域名信息,当识别到该类攻击后,检测待检测编程文本所在的服务器(被攻击的服务器)的行为信息,如果黑客攻击成功,则待检测编程文本所在的服务器会对恶意文件中的IP或者域名信息发起请求,访问恶意文件并加载恶意文件,利用检测待检测编程文本所在的服务器(被攻击的服务器)的行为信息,即可检测该类表征在待检测编程文本所在的服务器中加载了恶意文件的攻击。
在本申请的其它实施例中,该方法还可以包括以下步骤:
步骤314、信息检测设备基于攻击信息的攻击类型,从目标信息安全数据库中确定攻击信息的属性信息。
其中,目标信息安全数据库可以指的是具有被广泛认同的信息安全漏洞或者已经暴露出来的弱点的字典;在一种可行的实现方式中,目标信息安全数据库可以是通用漏洞披露(Common vulnerabilities&exposures,CVE),其中,CVE为每一个漏洞和暴露确定了唯一的名称。
在本申请实施例中,属性信息可以指的是用来唯一标识攻击信息的信息;在一种可行的实现方式中,在目标信息安全数据库可以是通用漏洞披露(Commonvulnerabilities&exposures,CVE),属性信息可以是攻击信息的编号信息,如CVE-1999-1046;需要说明的是,在确定出攻击信息的编号信息后,就可以快速在任何其他CVE兼容的数据库中找到相应的修补信息,从而解决安全问题。
在本申请实施例中,在确定出攻击信息的攻击类型以后,可以将该攻击类型对应的攻击信息与目标信息安全数据库进行匹配,在匹配成功的情况下将目标信息安全数据库中与攻击信息对应的属性信息确定为该攻击信息的属性信息。
步骤315、信息检测设备基于属性信息生成告警信息。
其中,告警信息用于提示待检测编程文本中存在攻击信息。
在本申请实施例中,将攻击信息的属性信息进行存储入告警生成器中,告警生成器根据存储的属性信息生成告警信息;并且,还可以与现有的CVE漏洞进行对比,使得告警信息的描述更加精细化
在本申请其他实施例中,参照图5所示,通过对待检测编程文本进行词法分析和语法分析后,生成待检测编程文本对应的抽象语法树,再对抽象语法树进行遍历并对抽象语法树对应的代码进行运行(即虚拟运行),得到运行后的编程信息;此外,还通过对待检测编程文件中的代码直接运行,得到输出信息;之后将编程信息和输出信息进行匹配,在编程信息和输出信息匹配的情况下,说明待检测编程文本注入攻击成功,在编程信息和输出信息不匹配的情况下,说明待检测编程文本注入攻击失败。
本申请的实施例所提供的信息检测方法,通过对待检测编程文本对应的语法结构树进行分析可以精确还原出完整代码,并对还原出的完整代码进行运行得到第二输出信息,之后将第一输出信息和第二输出信息进行比对就可以知道待检测编程文本中攻击信息是否注入成功,这种方案对于任何待检测编程文本都是适用的,从而解决了相关技术中检测注入的恶意代码是否攻击成功的检测方法,仅能检测出具有固定格式的恶意代码的问题,扩大了检测攻击是否成功的广泛适用性,且提高了检测精度。
基于前述实施例,本申请的实施例提供一种信息检测装置,该装置可以应用于图1、2和4对应的实施例提供的信息检测方法中,参照图6所示,该装置4可以包括:获取单元41、处理单元42和确定单元43,其中:
获取单元41,用于获取待检测编程文本对应的第一输出信息;其中,第一输出信息是待检测编程文本运行后得到的;
处理单元42,用于对待检测编程文本进行解析,生成待检测编程文本对应的语法结构树;
处理单元42,还用于对语法结构树进行分析,并基于分析结果确定第二输出信息;
确定单元43,用于基于第一输出信息和第二输出信息,确定待检测编程文本中攻击信息是否注入成功。
在本申请实施例中,处理单元42还用于执行以下步骤:
基于目标词法文件对待检测编程文本进行词法分析,得到待检测编程文本的字词;其中,目标词法文件是待检测编程文本所采用的编程语言对应的词法文件;
基于编程语言对应的目标语法文件对字词进行语法分析,得到待检测编程文本中变量之间的层级关系和变量之间的关联方式;
基于待检测编程文本中的变量、层级关系和关联方式,生成语法结构树;其中,语法结构树中的节点关联了与节点具有对应关系的待检测编程文本的函数。
在本申请实施例中,处理单元42还用于执行以下步骤:
对语法结构树进行分析,确定语法结构树中每一节点对应的目标变量、目标变量之间的目标关联方式和目标变量对应的目标函数;
基于目标函数、目标变量和目标关联方式,生成目标编程文本;
基于目标编程文本确定第二输出信息;其中,第二输出信息是目标编程文本运行后得到的。
在本申请实施例中,确定单元43还用于执行以下步骤:
基于第二输出信息,确定待检测编程文本中的攻击信息的攻击类型;
基于攻击类型、第一输出信息和第二输出信息,确定待检测编程文本中攻击信息是否注入成功。
在本申请实施例中,确定单元43还用于执行以下步骤:
在攻击类型为第一攻击类型,且第一输出信息与第二输出信息匹配的情况下,确定待检测编程文本中攻击信息注入失败;其中,第一攻击类型表征获取待检测编程文本所在的第一设备中的信息;
在攻击类型为第一攻击类型,且第一输出信息与第二输出信息不匹配的情况下,确定待检测编程文本中攻击信息注入成功;
在攻击类型为第二攻击类型,且第一输出信息与第二输出信息匹配的情况下,确定待检测编程文本对应的设备的行为信息;
基于设备的行为信息,确定待检测编程文本中攻击信息是否注入成功。
在本申请实施例中,确定单元43还用于执行以下步骤:
在第二攻击类型表征对待检测编程文本所在的第一设备中的目标文件或系统进行了操作时,基于第一设备和第一设备对应的第二设备所产生的行为信息,确定待检测编程文本中攻击信息是否注入成功;
在第二攻击类型表征在第一设备中加载了恶意文件时,基于第二设备所产生的行为信息,确定待检测编程文本中攻击信息是否注入成功。
在本申请实施例中,确定单元43还用于执行以下步骤:
基于攻击信息的攻击类型,从目标信息安全数据库中确定攻击信息的属性信息;
基于属性信息生成告警信息。
需要说明的是,本实施例中各个单元所执行的步骤的具体实现过程,可以参照图1、2和4对应的实施例提供的信息检测方法中的实现过程,此处不再赘述。
本申请的实施例所提供的信息检测装置,通过对待检测编程文本对应的语法结构树进行分析可以精确还原出完整代码,并对还原出的完整代码进行运行得到第二输出信息,之后将第一输出信息和第二输出信息进行比对就可以知道待检测编程文本中攻击信息是否注入成功,这种方案对于任何待检测编程文本都是适用的,从而解决了相关技术中检测注入的恶意代码是否攻击成功的检测方法,仅能检测出具有固定格式的恶意代码的问题,扩大了检测攻击是否成功的广泛适用性,且提高了检测精度。
基于前述实施例,本申请的实施例提供一种信息检测设备,该设备可以应用于图1、2和4对应的实施例提供的信息检测方法,参照图7所示,该设备5可以包括处理器51、存储器52和通信总线53;
通信总线53用于实现处理器51和存储器52之间的通信连接;
处理器51用于执行存储器52中存储的信息检测程序,以实现以下步骤:
获取待检测编程文本对应的第一输出信息;其中,第一输出信息是待检测编程文本运行后得到的;
对待检测编程文本进行解析,生成待检测编程文本对应的语法结构树;
对语法结构树进行分析,并基于分析结果确定第二输出信息;
基于第一输出信息和第二输出信息,确定待检测编程文本中攻击信息是否注入成功。
在本申请的其他实施例中,处理器51用于执行存储器52中的对待检测编程文本进行解析,生成待检测编程文本对应的语法结构树,以实现以下步骤:
基于目标词法文件对待检测编程文本进行词法分析,得到待检测编程文本的字词;其中,目标词法文件是待检测编程文本所采用的编程语言对应的词法文件;
基于编程语言对应的目标语法文件对字词进行语法分析,得到待检测编程文本中变量之间的层级关系和变量之间的关联方式;
基于待检测编程文本中的变量、层级关系和关联方式,生成语法结构树;其中,语法结构树中的节点关联了与节点具有对应关系的待检测编程文本的函数。
在本申请的其他实施例中,处理器51用于执行存储器52中的对语法结构树进行分析,并基于分析结果确定第二输出信息,以实现以下步骤:
对语法结构树进行分析,确定语法结构树中每一节点对应的目标变量、目标变量之间的目标关联方式和目标变量对应的目标函数;
基于目标函数、目标变量和目标关联方式,生成目标编程文本;
基于目标编程文本确定第二输出信息;其中,第二输出信息是目标编程文本运行后得到的。
在本申请的其他实施例中,处理器51用于执行存储器52中的基于第一输出信息和第二输出信息,确定待检测编程文本中攻击信息是否注入成功,以实现以下步骤:
基于第二输出信息,确定待检测编程文本中的攻击信息的攻击类型;
基于攻击类型、第一输出信息和第二输出信息,确定待检测编程文本中攻击信息是否注入成功。
在本申请的其他实施例中,处理器51用于执行存储器52中的基于攻击类型、第一输出信息和第二输出信息,确定待检测编程文本中攻击信息是否注入成功,以实现以下步骤:
在攻击类型为第一攻击类型,且第一输出信息与第二输出信息匹配的情况下,确定待检测编程文本中攻击信息注入失败;其中,第一攻击类型表征获取待检测编程文本所在的第一设备中的信息;
在攻击类型为第一攻击类型,且第一输出信息与第二输出信息不匹配的情况下,确定待检测编程文本中攻击信息注入成功;
在攻击类型为第二攻击类型,且第一输出信息与第二输出信息匹配的情况下,确定待检测编程文本对应的设备的行为信息;
基于设备的行为信息,确定待检测编程文本中攻击信息是否注入成功。
在本申请的其他实施例中,处理器51用于执行存储器52中的基于行为信息,确定待检测编程文本中攻击信息是否注入成功,以实现以下步骤:
在第二攻击类型表征对第一设备中的目标文件或系统进行了操作时,基于第一设备和第一设备对应的第二设备所产生的行为信息,确定待检测编程文本中攻击信息是否注入成功;
在第二攻击类型表征在第一设备中加载了恶意文件时,基于第二设备所产生的行为信息,确定待检测编程文本中攻击信息是否注入成功。
在本申请的其他实施例中,处理器51用于执行存储器52中的基于第二输出信息,确定待检测编程文本的攻击类型之后,以实现以下步骤:
基于攻击信息的攻击类型,从目标信息安全数据库中确定攻击信息的属性信息;
基于属性信息生成告警信息。
需要说明的是,本实施例中处理器所执行的步骤的具体实现过程,可以参照图1、2和4对应的实施例提供的信息检测方法中的实现过程,此处不再赘述。
本申请的实施例所提供的信息检测设备,通过对待检测编程文本对应的语法结构树进行分析可以精确还原出完整代码,并对还原出的完整代码进行运行得到第二输出信息,之后将第一输出信息和第二输出信息进行比对就可以知道待检测编程文本中攻击信息是否注入成功,这种方案对于任何待检测编程文本都是适用的,从而解决了相关技术中检测注入的恶意代码是否攻击成功的检测方法,仅能检测出具有固定格式的恶意代码的问题,扩大了检测攻击是否成功的广泛适用性,且提高了检测精度。
基于前述实施例,本申请的实施例提供一种计算机可读存储介质,该计算机可读存储介质存储有一个或者多个程序,该一个或者多个程序可被一个或者多个处理器执行,以实现图1、2和4对应的实施例提供的信息检测方法的步骤。
需要说明的是,上述计算机可读存储介质可以是只读存储器(Read Only Memory,ROM)、可编程只读存储器(Programmable Read-Only Memory,PROM)、可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,EPROM)、电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性随机存取存储器(Ferromagnetic Random Access Memory,FRAM)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(Compact Disc Read-Only Memory,CD-ROM)等存储器;也可以是包括上述存储器之一或任意组合的各种电子设备,如移动电话、计算机、平板设备、个人数字助理等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本申请各个实施例所描述的方法。
本申请是参照本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (10)
1.一种信息检测方法,其特征在于,所述方法包括:
获取待检测编程文本对应的第一输出信息;其中,所述第一输出信息是所述待检测编程文本运行后得到的;
对所述待检测编程文本进行解析,生成所述待检测编程文本对应的语法结构树;
对所述语法结构树进行分析,并基于分析结果确定第二输出信息;
基于所述第一输出信息和所述第二输出信息,确定所述待检测编程文本中攻击信息是否注入成功。
2.根据权利要求1所述的方法,其特征在于,所述对所述待检测编程文本进行解析,生成所述待检测编程文本对应的语法结构树,包括:
基于目标词法文件对所述待检测编程文本进行词法分析,得到所述待检测编程文本的字词;其中,所述目标词法文件是所述待检测编程文本所采用的编程语言对应的词法文件;
基于所述编程语言对应的目标语法文件对所述字词进行语法分析,得到所述待检测编程文本中变量之间的层级关系和所述变量之间的关联方式;
基于所述待检测编程文本中的变量、所述层级关系和所述关联方式,生成所述语法结构树;其中,所述语法结构树中的节点关联了与所述节点具有对应关系的所述待检测编程文本的函数。
3.根据权利要求1所述的方法,其特征在于,所述对所述语法结构树进行分析,并基于分析结果确定第二输出信息,包括:
对所述语法结构树进行分析,确定所述语法结构树中每一节点对应的目标变量、所述目标变量之间的目标关联方式和所述目标变量对应的目标函数;
基于所述目标函数、所述目标变量和所述目标关联方式,生成目标编程文本;
基于所述目标编程文本确定所述第二输出信息;其中,所述第二输出信息是所述目标编程文本运行后得到的。
4.根据权利要求1所述的方法,其特征在于,所述基于所述第一输出信息和所述第二输出信息,确定所述待检测编程文本中攻击信息是否注入成功,包括:
基于所述第二输出信息,确定所述待检测编程文本中的所述攻击信息的攻击类型;
基于所述攻击类型、所述第一输出信息和所述第二输出信息,确定所述待检测编程文本中攻击信息是否注入成功。
5.根据权利要求4所述的方法,其特征在于,所述基于所述攻击类型、所述第一输出信息和所述第二输出信息,确定所述待检测编程文本中攻击信息是否注入成功,包括:
在所述攻击类型为第一攻击类型,且所述第一输出信息与所述第二输出信息匹配的情况下,确定所述待检测编程文本中攻击信息注入失败;其中,所述第一攻击类型表征获取所述待检测编程文本所在的第一设备中的信息;
在所述攻击类型为第一攻击类型,且所述第一输出信息与所述第二输出信息不匹配的情况下,确定所述待检测编程文本中攻击信息注入成功;
在所述攻击类型为第二攻击类型,且所述第一输出信息与所述第二输出信息匹配的情况下,确定所述待检测编程文本对应的设备的行为信息;
基于所述设备的行为信息,确定所述待检测编程文本中攻击信息是否注入成功。
6.根据权利要求5所述的方法,其特征在于,所述基于所述设备的行为信息,确定所述待检测编程文本中攻击信息是否注入成功,包括:
在所述第二攻击类型表征对所述第一设备中的目标文件或系统进行了操作时,基于所述第一设备和所述第一设备对应的第二设备所产生的所述行为信息,确定所述待检测编程文本中攻击信息是否注入成功;
在所述第二攻击类型表征在所述第一设备中加载了恶意文件时,基于所述第二设备所产生的所述行为信息,确定所述待检测编程文本中攻击信息是否注入成功。
7.根据权利要求4所述的方法,其特征在于,所述方法还包括:
基于所述攻击信息的攻击类型,从目标信息安全数据库中确定所述攻击信息的属性信息;
基于所述属性信息生成告警信息。
8.一种信息检测装置,其特征在于,所述装置包括:
获取单元,用于获取待检测编程文本对应的第一输出信息;其中,所述第一输出信息是所述待检测编程文本运行后得到的;
处理单元,用于对所述待检测编程文本进行解析,生成所述待检测编程文本对应的语法结构树;
所述处理单元,还用于对所述语法结构树进行分析,并基于分析结果确定第二输出信息;
确定单元,用于基于所述第一输出信息和所述第二输出信息,确定所述待检测编程文本中攻击信息是否注入成功。
9.一种信息检测设备,其特征在于,所述设备包括:处理器、存储器和通信总线;
所述通信总线用于实现所述处理器和所述存储器之间的通信连接;
所述处理器用于执行所述存储器中存储的信息检测程序,以实现如权利要求1~8任一项所述的信息检测方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有一个或者多个程序,所述一个或者多个程序可被一个或者多个处理器执行,以实现如权利要求1~8任一项所述的信息检测方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211406179.1A CN115906077A (zh) | 2022-11-10 | 2022-11-10 | 一种信息检测方法、装置、设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211406179.1A CN115906077A (zh) | 2022-11-10 | 2022-11-10 | 一种信息检测方法、装置、设备及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115906077A true CN115906077A (zh) | 2023-04-04 |
Family
ID=86477819
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211406179.1A Pending CN115906077A (zh) | 2022-11-10 | 2022-11-10 | 一种信息检测方法、装置、设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115906077A (zh) |
-
2022
- 2022-11-10 CN CN202211406179.1A patent/CN115906077A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108763928B (zh) | 一种开源软件漏洞分析方法、装置和存储介质 | |
US20040205411A1 (en) | Method of detecting malicious scripts using code insertion technique | |
Carmony et al. | Extract Me If You Can: Abusing PDF Parsers in Malware Detectors. | |
US8635602B2 (en) | Verification of information-flow downgraders | |
KR101972825B1 (ko) | 하이브리드 분석 기술을 이용한 임베디드 기기 취약점 자동 분석 방법, 장치 및 그 방법을 실행하는 컴퓨터 프로그램 | |
US8572747B2 (en) | Policy-driven detection and verification of methods such as sanitizers and validators | |
CN111368303B (zh) | 一种PowerShell恶意脚本的检测方法及装置 | |
CN116340939A (zh) | webshell检测方法、装置、设备及存储介质 | |
CN112817877B (zh) | 异常脚本检测方法、装置、计算机设备和存储介质 | |
CN115168861A (zh) | 数据安全验证方法、装置、设备及存储介质 | |
CN113067792A (zh) | 一种xss攻击识别方法、装置、设备及介质 | |
CN114036526A (zh) | 漏洞测试方法、装置、计算机设备和存储介质 | |
CN114091031A (zh) | 基于白规则的类加载防护方法及装置 | |
JP2007233432A (ja) | アプリケーションの脆弱性検査方法および装置 | |
CN116305131B (zh) | 脚本静态去混淆方法及系统 | |
CN109299610B (zh) | 安卓系统中不安全敏感输入验证识别方法 | |
CN116881921A (zh) | 一种基于afl的二进制命令注入漏洞检测方法及系统 | |
CN116361793A (zh) | 代码检测方法、装置、电子设备及存储介质 | |
CN115906077A (zh) | 一种信息检测方法、装置、设备及计算机可读存储介质 | |
CN115310087A (zh) | 一种基于抽象语法树的网站后门检测方法和系统 | |
CN111752570B (zh) | 一种编译方法、装置、终端及计算机可读存储介质 | |
CN113392016A (zh) | 对程序异常情况处理的规约生成方法、装置、设备及介质 | |
CN115774873A (zh) | 一种跨站脚本攻击的检测方法、装置、设备及存储介质 | |
CN112084499A (zh) | 一种基于语法分析的0day攻击检测方法、装置、设备及介质 | |
US20240045955A1 (en) | Identifying security events in programming code for logging |
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 |