CN111177729A - 一种程序漏洞的测试方法以及相关装置 - Google Patents

一种程序漏洞的测试方法以及相关装置 Download PDF

Info

Publication number
CN111177729A
CN111177729A CN201911302863.3A CN201911302863A CN111177729A CN 111177729 A CN111177729 A CN 111177729A CN 201911302863 A CN201911302863 A CN 201911302863A CN 111177729 A CN111177729 A CN 111177729A
Authority
CN
China
Prior art keywords
program
tested
plug
target
data
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.)
Granted
Application number
CN201911302863.3A
Other languages
English (en)
Other versions
CN111177729B (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.)
Tencent Cloud Computing Beijing Co Ltd
Original Assignee
Tencent Cloud Computing Beijing 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 Tencent Cloud Computing Beijing Co Ltd filed Critical Tencent Cloud Computing Beijing Co Ltd
Priority to CN201911302863.3A priority Critical patent/CN111177729B/zh
Publication of CN111177729A publication Critical patent/CN111177729A/zh
Application granted granted Critical
Publication of CN111177729B publication Critical patent/CN111177729B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请公开了一种程序漏洞的测试方法以及相关装置,通过确定满足预设条件的目标插件;然后将所述目标插件注入所述待测试程序中,以获取所述待测试程序的通信数据包;并根据预设规则对所述通信数据包进行描述,以得到针对所述待测试程序的攻击数据;进而根据所述攻击数据对所述待测试程序进行自动攻击,以测试得到所述待测试程序的程序漏洞。从而实现了对使用复杂加密通信协议的程序进行辅助分析和自动化攻击,可以依据预设规则的框架,减少大量的重复代码编写,大大提高了程序漏洞测试的效率。

Description

一种程序漏洞的测试方法以及相关装置
技术领域
本申请涉及计算机技术领域,尤其涉及一种程序漏洞的测试方法以及相关装置。
背景技术
随着互联网技术的发展,网络安全越来越受到人们的重视,其中在程序开发过程中对于程序漏洞的检测尤为重要。
一般的漏洞检测以动态调试为主,即通过逆向分析找到通信协议加密解密的代码处,通过挂接调试器或者插件注入的方式,实时获取协议发送加密前和收到解密后的数据,通过打印纠错信息的方式,输出到DebugView等工具并进行人工分析。
但是,上述过程仅针对单一的应用程序,由于在大量程序的检测过程中,不同程序可能采用不同的加密方式和协议结构,采用手工逐一逆向分析的方法无法满足多种应用程序的漏洞检测,且耗时较多,影响程序漏洞检测的效率。
发明内容
有鉴于此,本申请第一方面提供一种漏洞测试的方法,可以应用于漏洞检测系统或游戏漏洞检测程序运行过程中,具体包括:确定满足预设条件的目标插件,所述预设条件基于所述目标插件与待测试程序的匹配信息确定;
将所述目标插件注入所述待测试程序中,以获取所述待测试程序的通信数据包;
根据预设规则对所述通信数据包进行描述,以得到针对所述待测试程序的攻击数据,所述预设规则基于所述通信包中通信协议与目标字段的对应关系确定,所述攻击数据基于所述目标字段对应的边界值数据确定;
根据所述攻击数据对所述待测试程序进行自动攻击,以测试得到所述待测试程序的程序漏洞。
优选的,在本申请一些可能的实现方式中,所述确定满足预设条件的目标插件,包括:
加载插件数据库中的多个插件;
基于所述多个插件分别尝试获取所述待测试程序的进程信息,并尝试打开所述待测试程序的进程句柄以执行注入操作;
若完成注入,则确定对应的插件为所述目标插件。
优选的,在本申请一些可能的实现方式中,所述确定对应的插件为所述目标插件,包括:
确定所述目标插件与所述待测试程序的版本号对应关系;
若存在对应关系,则确定对应的插件为所述目标插件。
优选的,在本申请一些可能的实现方式中,所述将所述目标插件注入所述待测试程序中,包括:
确定所述待测试程序的关键函数,所述关键函数包括网络发包加密函数和收包解密函数;
将所述目标插件的输入地址与所述关键函数挂钩,以将所述目标插件注入所述待测试程序中。
优选的,在本申请一些可能的实现方式中,所述根据预设规则对所述通信数据包进行描述,以得到针对所述待测试程序的攻击数据,包括:
获取所述通信数据包的协议号;
遍历历史数据中是否存在关于所述协议号的描述语句;
若不存在,则根据预设规则对所述通信数据包进行描述,以得到针对所述待测试程序的攻击数据。
优选的,在本申请一些可能的实现方式中,所述方法还包括:
若历史数据中存在关于所述协议号的描述语句,则根据所述描述语句对所述通信数据包进行展开,以确定所述目标字段;
根据所述目标字段生成对应的边界值数据,以确定所述攻击数据。
优选的,在本申请一些可能的实现方式中,所述漏洞测试的方法应用于终端设备,所述终端设备为区块链节点中的区块节点设备。
本申请第二方面提供一种漏洞测试的装置,包括:确定单元,用于确定满足预设条件的目标插件,所述预设条件基于所述目标插件与待测试程序的匹配信息确定;
注入单元,用于将所述目标插件注入所述待测试程序中,以获取所述待测试程序的通信数据包;
描述单元,用于根据预设规则对所述通信数据包进行描述,以得到针对所述待测试程序的攻击数据,所述预设规则基于所述通信包中通信协议与目标字段的对应关系确定,所述攻击数据基于所述目标字段对应的边界值数据确定;
测试单元,用于根据所述攻击数据对所述待测试程序进行自动攻击,以测试得到所述待测试程序的程序漏洞。
优选的,在本申请一些可能的实现方式中,所述确定单元,具体用于加载插件数据库中的多个插件;
所述确定单元,具体用于基于所述多个插件分别尝试获取所述待测试程序的进程信息,并尝试打开所述待测试程序的进程句柄以执行注入操作;
所述确定单元,具体用于若完成注入,则确定对应的插件为所述目标插件。
优选的,在本申请一些可能的实现方式中,所述确定单元,具体用于确定所述目标插件与所述待测试程序的版本号对应关系;
所述确定单元,具体用于若存在对应关系,则确定对应的插件为所述目标插件。
优选的,在本申请一些可能的实现方式中,所述注入单元,具体用于确定所述待测试程序的关键函数,所述关键函数包括网络发包加密函数和收包解密函数;
所述注入单元,具体用于将所述目标插件的输入地址与所述关键函数挂钩,以将所述目标插件注入所述待测试程序中。
优选的,在本申请一些可能的实现方式中,所述描述单元,具体用于获取所述通信数据包的协议号;
所述描述单元,具体用于遍历历史数据中是否存在关于所述协议号的描述语句;
所述描述单元,具体用于若不存在,则根据预设规则对所述通信数据包进行描述,以得到针对所述待测试程序的攻击数据。
优选的,在本申请一些可能的实现方式中,所述描述单元,还用于若历史数据中存在关于所述协议号的描述语句,则根据所述描述语句对所述通信数据包进行展开,以确定所述目标字段;
所述描述单元,还用于根据所述目标字段生成对应的边界值数据,以确定所述攻击数据。
本申请第三方面提供一种计算机设备,包括:存储器、处理器以及总线系统;所述存储器用于存储程序代码;所述处理器用于根据所述程序代码中的指令执行上述第一方面或第一方面任一项所述的漏洞测试的的方法。
本申请第四方面提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面或第一方面任一项所述的漏洞测试的的方法。
从以上技术方案可以看出,本申请实施例具有以下优点:
通过确定满足预设条件的目标插件,所述预设条件基于所述目标插件与待测试程序的匹配信息确定;然后将所述目标插件注入所述待测试程序中,以获取所述待测试程序的通信数据包;并根据预设规则对所述通信数据包进行描述,以得到针对所述待测试程序的攻击数据;进而根据所述攻击数据对所述待测试程序进行自动攻击,以测试得到所述待测试程序的程序漏洞。从而实现了对使用复杂加密通信协议的程序进行辅助分析和自动化攻击,可以依据预设规则的框架,减少大量的重复代码编写;对通信协议进行数据定义后,可以快速对协议进行描述,一方面可以快速解析协议,另一方面,在进行协议攻击的时候,可以根据协议描述快速生成对应的攻击数据,对协议进行攻击,并得到程序漏洞测试的结果,大大提高了程序漏洞测试的效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为漏洞测试系统运行的网络架构图;
图2为一种漏洞测试的流程架构图;
图3为本申请实施例提供的一种漏洞测试的方法的流程图;
图4为本申请实施例提供的另一种漏洞测试的方法的流程图;
图5为本申请实施例提供的另一种漏洞测试的方法的流程图;
图6为本申请实施例提供的一种漏洞测试的界面示意图;
图7为本申请实施例提供的漏洞测试装置的结构示意图;
图8为本申请实施例提供的另一种漏洞测试装置的结构示意图;
图9A为本申请实施例提供的一种数据共享系统示意图;
图9B为本申请实施例提供的数据共享系统中的区块组成示意图;
图9C为本申请实施例提供的区块链节点的数据传输响应示意图。
具体实施方式
本申请实施例提供了一种漏洞测试的方法以及相关装置,可以应用于漏洞检测系统或游戏漏洞检测程序运行过程中,通过确定满足预设条件的目标插件,所述预设条件基于所述目标插件与待测试程序的匹配信息确定;然后将所述目标插件注入所述待测试程序中,以获取所述待测试程序的通信数据包;并根据预设规则对所述通信数据包进行描述,以得到针对所述待测试程序的攻击数据;进而根据所述攻击数据对所述待测试程序进行自动攻击,以测试得到所述待测试程序的程序漏洞。从而实现了对使用复杂加密通信协议的程序进行辅助分析和自动化攻击,可以依据预设规则的框架,减少大量的重复代码编写;对通信协议进行数据定义后,可以快速对协议进行描述,一方面可以快速解析协议,另一方面,在进行协议攻击的时候,可以根据协议描述快速生成对应的攻击数据,对协议进行攻击,并得到程序漏洞测试的结果,大大提高了程序漏洞测试的效率。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“对应于”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
应理解,本申请提供的漏洞测试方法可以应用于可应用于漏洞测试系统的运行过程中,具体的,漏洞测试系统可以运行于如图1所示的网络架构中,如图1所示,是漏洞测试系统运行的网络架构图,如图可知,漏洞测试系统可以提供与多个信息源的漏洞测试,通过收集不同用户在不同终端上运行过程中多个程序的攻击数据,基于这些数据与服务器进行交互,从而检测得到相关的程序漏洞;可以理解的是,图1中示出了多种用户交互的终端设备,在实际场景中可以有更多或更少种类的终端设备参与到漏洞测试的过程中,具体数量和种类因实际场景而定,此处不做限定;另外,图1中示出了一个服务器,但在实际场景中,也可以有多个服务器的参与,特别是在多信息源交互的场景中,具体服务器数量因实际场景而定。
可以理解的是,上述漏洞测试系统可以运行于个人移动终端,也可以运行于服务器,还可以作为运行于第三方设备以提供漏洞测试,以得到漏洞测试的结果;具体的漏洞测试系统可以是以一种程序的形式在上述设备中运行,也可以作为上述设备中的系统部件进行运行,还可以作为云端服务程序的一种,具体运作模式因实际场景而定,此处不做限定。
应当注意的是,本申请提供的漏洞测试方法还可以应用于终端自身在非联网状态下的漏洞检测,具体形式应实际场景而定。
随着互联网技术的发展,网络安全越来越受到人们的重视,其中在程序开发过程中对于程序漏洞的检测尤为重要。
一般的漏洞检测以动态调试为主,即通过逆向分析找到通信协议加密解密的代码处,通过挂接调试器或者插件注入的方式,实时获取协议发送加密前和收到解密后的数据,通过打印纠错信息的方式,输出到DebugView等工具并进行人工分析。
但是,上述过程仅针对单一的应用程序,由于在大量程序的检测过程中,不同程序可能采用不同的加密方式和协议结构,采用手工逐一逆向分析的方法无法满足多种应用程序的漏洞检测,且耗时较多,影响程序漏洞检测的效率。
为了解决上述问题,本申请提出了一种漏洞测试的方法,该方法应用于图2所示的漏洞测试的流程框架中,如图2所示,是一种漏洞测试的流程架构图,图中示出了漏洞测试的逻辑过程,首先在插件数据库里捕捉与待测试程序对应的目标插件,然后基于该插件对待测试程序进行关键函数的解析,进而注入待测试程序内,然后根据预设的协议描述规则将待测试程序的通信包数据进行协议解析,以得到目标字段;进一步的,根据目标字段生成相关的攻击数据,进而对待测试程序进行自动攻击,从而实现对于待测试程序的漏洞测试。
可以理解的是,此处待测试程序可以是游戏,具体的游戏类型可以是网络游戏,也可以是单机游戏,不同种类的游戏对应于不同的攻击方式,例如网络游戏的攻击策略为与游戏服务器进行交互,检测收发包情况以确定漏洞;具体的形式因实际场景而定,此处不做限定。
可以理解的是,本申请所提供的方法可以为一种程序的写入,以作为硬件系统中的一种处理逻辑,也可以作为一种漏洞测试装置,采用集成或外接的方式实现上述处理逻辑。作为一种实现方式,该漏洞测试装置通过确定满足预设条件的目标插件,所述预设条件基于所述目标插件与待测试程序的匹配信息确定;然后将所述目标插件注入所述待测试程序中,以获取所述待测试程序的通信数据包;并根据预设规则对所述通信数据包进行描述,以得到针对所述待测试程序的攻击数据;进而根据所述攻击数据对所述待测试程序进行自动攻击,以测试得到所述待测试程序的程序漏洞。从而实现了对使用复杂加密通信协议的程序进行辅助分析和自动化攻击,可以依据预设规则的框架,减少大量的重复代码编写;对通信协议进行数据定义后,可以快速对协议进行描述,一方面可以快速解析协议,另一方面,在进行协议攻击的时候,可以根据协议描述快速生成对应的攻击数据,对协议进行攻击,并得到程序漏洞测试的结果,大大提高了程序漏洞测试的效率。
结合上述流程架构,下面将对本申请中漏洞测试的方法进行介绍,请参阅图3,图3为本申请实施例提供的一种漏洞测试的方法的流程图,本申请实施例至少包括以下步骤:
301、确定满足预设条件的目标插件。
本实施例中,预设条件基于所述目标插件与待测试程序的匹配信息确定,即选取与待测试程序匹配度较高的目标插件。可以理解的是,匹配信息可以基于通过插件是否可以打开待测试程序或者通过插件是否能注入待测试文件来进行判断。
可选的,插件可以是来源于插件数据库中的储存的插件,插件数据库可以是包含历史数据中心使用过的插件,还可以包含基于待测试程序确定的多个版本下的不同插件形式;具体的,通过加载插件数据库中的多个插件;然后基于所述多个插件分别尝试获取所述待测试程序的进程信息,并尝试打开所述待测试程序的进程句柄以执行注入操作;若完成注入,则确定对应的插件为所述目标插件。
可以理解的是,由于一般程序存在多个版本的问题,特别是游戏,每款游戏都会有一个单独的插件,并且由于游戏更新频繁,内部函数地址常常会变化,不同版本下可能都适用于同一插件,但是为了保证插件的准确性,还可以是对目标插件的版本号与待测试程序的版本号的对应关系进行进一步的确定;即确定所述目标插件与所述待测试程序的版本号对应关系;若存在对应关系,则确定对应的插件为所述目标插件。
可选的,还可以在每个插件写入一个对应的配置文件,里面记录了通过特征码方式在主程序中搜索到的特定函数地址,便于以后的捕捉过程。
302、将所述目标插件注入所述待测试程序中,以获取所述待测试程序的通信数据包。
本实施例中,针对于网络游戏的漏洞测试中,由于涉及程序与应用服务器的信息交互,可以通过该通信过程进行漏洞的搜寻,具体的,可以通过确定所述待测试程序的关键函数,然后将所述目标插件的输入地址与所述关键函数挂钩,以将所述目标插件注入所述待测试程序中。其中,关键函数包括网络发包加密函数和收包解密函数,具体的函数形式因实际场景而定,此处不做限定。
可选的,由于每个被分析程序的加解密函数结构都不同,在插件开发时需要在逆向工程的基础上进行定制开发,以适应不同函数的参数特点。
303、根据预设规则对所述通信数据包进行描述,以得到针对所述待测试程序的攻击数据。
本实施例中,预设规则基于所述通信包中通信协议与目标字段的对应关系确定,所述攻击数据基于所述目标字段对应的边界值数据确定;其中,通信协议往往以二进制内容的方式呈现,可以参照表1所示的描述符及其对应的意义对通信协议进行描述,描述符即为目标字段的一种呈现形式;对于边界值数据,若边界值为数值可以去最大值与最小值进行相关程序计算,若边界值为字符,可以选取字符长度的极值运行相应情况。
表1二进制协议中描述符及其对应的意义
Figure BDA0002322301550000091
Figure BDA0002322301550000101
可选的,通过上述通信协议描述的过程,可以实现各种通信协议的自动可识别内容的生成,便于进行漏洞分析,但是,为进一步的提升测试效率,对于历史记录中已经描述过的通信协议可以进行储存,使得再次需要描述时,直接调用即可。具体的,通过获取所述通信数据包的协议号;然后遍历历史数据中是否存在关于所述协议号的描述语句;若不存在,则根据预设规则对所述通信数据包进行描述,以得到针对所述待测试程序的攻击数据。对应的,若历史数据中存在关于所述协议号的描述语句,则根据所述描述语句对所述通信数据包进行展开,以确定所述目标字段;根据所述目标字段生成对应的边界值数据,以确定所述攻击数据。
304、根据所述攻击数据对所述待测试程序进行自动攻击,以测试得到所述待测试程序的程序漏洞。
本实施例中,主动调用发包函数,将自动生成的边界类数据,并按照协议描述指定的结构,即攻击数据,进行数据收拢和加密,直接发送到游戏服务器,并观察是否存在异常或漏洞。
结合上述实施例可知,通过确定满足预设条件的目标插件,所述预设条件基于所述目标插件与待测试程序的匹配信息确定;然后将所述目标插件注入所述待测试程序中,以获取所述待测试程序的通信数据包;并根据预设规则对所述通信数据包进行描述,以得到针对所述待测试程序的攻击数据;进而根据所述攻击数据对所述待测试程序进行自动攻击,以测试得到所述待测试程序的程序漏洞。从而实现了对使用复杂加密通信协议的程序进行辅助分析和自动化攻击,可以依据预设规则的框架,减少大量的重复代码编写;对通信协议进行数据定义后,可以快速对协议进行描述,一方面可以快速解析协议,另一方面,在进行协议攻击的时候,可以根据协议描述快速生成对应的攻击数据,对协议进行攻击,并得到程序漏洞测试的结果,大大提高了程序漏洞测试的效率。
上述实施例介绍了漏洞测试的主要方法,下面结合上述漏洞测试的方法以程序产品运行的逻辑角度对本申请实施例进行说明,即上述漏洞测试的方法应用于一种分析工具中,以对游戏进行漏洞测试,如图4所示,图4为本申请实施例提供的另一种漏洞测试的方法的流程图,首先运行该分析工具后,会加载插件数据库所有支持的插件。由于每款游戏都会有一个单独的插件,并且由于游戏更新频繁,内部函数地址常常会变化,因此,每个插件还有一个对应的配置文件,里面记录了通过特征码方式在主程序中搜索到的特定函数地址,若没有及时更新,将导致插件失效。分析程序启动后,先通过插件的导出函数读取插件名称和版本信息,将名称显示到程序下拉选择框中,以指示所有的插件加载完毕。
在运行完分析工具,并运行好待分析程序后,在下拉框选择需要分析的程序名称,点击“开始捕捉”后程序自动将插件DLL注入到待分析程序中。此时,可以采用如图5所示的捕捉步骤,图5为本申请实施例提供的另一种漏洞测试的方法的流程图;图中,首先会检查是否存在特定进程,再尝试打开进程句柄,再测试是否能成功注入。若能成功注入,则根据配置文件制定的地址挂钩相应的关键函数,如版本无误,就可以开始正式进行分析了。对应的,若上述判断过程某一步骤存在否的情况,则提示该插件不能与待测试游戏匹配。
分析程序成功挂钩被分析程序的网络发包加密函数和收包解密函数后,便可以获取到明文的通信数据包。并通过如图6所示的界面进行显示,图6为本申请实施例提供的一种漏洞测试的界面示意图。
可选的,由于每个被分析程序的加解密函数结构都不同,在插件开发时需要在逆向工程的基础上进行定制开发,以适应不同函数的参数特点。
在拿到明文通信协议后,使用消息队列将协议二进制内容发送到分析程序的前端显示处。此时已经可以通过数据解释器进行简单分析。对于不能解释的通信协议,采用上述图3对应实施例中表1所示的描述符对通信协议进行描述,进而得到可识别的版本。具体的,当捕获到通信数据包后,首先获取数据包的协议号,然后通过查询已经分析过的协议配置文件,看是否存在协议描述语句。若不存在,首先需要对程序进行逆向分析,获取到协议的字段意义,再通过描述语法添加到配置文件中。若已存在描述语法,则程序依据描述信息,将原始数据包进行展开操作(若需要),并将数据展示在分析工具的界面上。同时根据数据包的描述,按照不同字段生成对应的边界值类数据。
为进一步对漏洞进行确定,可主动调用发包函数,将自动生成的边界类数据,并按照协议描述指定的结构,进行数据收拢和加密,直接发送到游戏服务器,并观察是否存在异常或漏洞。
可以理解的是,该分析工具可以进行多个程序的漏洞测试过程,即每增加一条协议描述,则对整套协议的分析就更进一步,如需继续分析和攻击,继续执行上述步骤即可。
通过上述实施例,一方面可以快速解析协议,另一方面,在进行协议攻击的时候,可以根据协议描述快速生成对应的攻击数据,对协议进行攻击,大大提高了漏洞测试的效率。
为了更好的实施本申请实施例的上述方案,下面还提供用于实施上述方案的相关装置。请参阅图7,图7为本申请实施例提供的漏洞测试装置的结构示意图,漏洞测试装置700包括:
确定单元701,用于确定满足预设条件的目标插件,所述预设条件基于所述目标插件与待测试程序的匹配信息确定;
注入单元702,用于将所述目标插件注入所述待测试程序中,以获取所述待测试程序的通信数据包;
描述单元703,用于根据预设规则对所述通信数据包进行描述,以得到针对所述待测试程序的攻击数据,所述预设规则基于所述通信包中通信协议与目标字段的对应关系确定,所述攻击数据基于所述目标字段对应的边界值数据确定;
测试单元704,用于根据所述攻击数据对所述待测试程序进行自动攻击,以测试得到所述待测试程序的程序漏洞。
优选的,在本申请一些可能的实现方式中,所述确定单元701,具体用于加载插件数据库中的多个插件;
所述确定单元701,具体用于基于所述多个插件分别尝试获取所述待测试程序的进程信息,并尝试打开所述待测试程序的进程句柄以执行注入操作;
所述确定单元701,具体用于若完成注入,则确定对应的插件为所述目标插件。
优选的,在本申请一些可能的实现方式中,所述确定单元701,具体用于确定所述目标插件与所述待测试程序的版本号对应关系;
所述确定单元701,具体用于若存在对应关系,则确定对应的插件为所述目标插件。
优选的,在本申请一些可能的实现方式中,所述注入单元702,具体用于确定所述待测试程序的关键函数,所述关键函数包括网络发包加密函数和收包解密函数;
所述注入单元702,具体用于将所述目标插件的输入地址与所述关键函数挂钩,以将所述目标插件注入所述待测试程序中。
优选的,在本申请一些可能的实现方式中,所述描述单元703,具体用于获取所述通信数据包的协议号;
所述描述单元703,具体用于遍历历史数据中是否存在关于所述协议号的描述语句;
所述描述单元703,具体用于若不存在,则根据预设规则对所述通信数据包进行描述,以得到针对所述待测试程序的攻击数据。
优选的,在本申请一些可能的实现方式中,所述描述单元703,还用于若历史数据中存在关于所述协议号的描述语句,则根据所述描述语句对所述通信数据包进行展开,以确定所述目标字段;
所述描述单元703,还用于根据所述目标字段生成对应的边界值数据,以确定所述攻击数据。
通过确定满足预设条件的目标插件,所述预设条件基于所述目标插件与待测试程序的匹配信息确定;然后将所述目标插件注入所述待测试程序中,以获取所述待测试程序的通信数据包;并根据预设规则对所述通信数据包进行描述,以得到针对所述待测试程序的攻击数据;进而根据所述攻击数据对所述待测试程序进行自动攻击,以测试得到所述待测试程序的程序漏洞。从而实现了对使用复杂加密通信协议的程序进行辅助分析和自动化攻击,可以依据预设规则的框架,减少大量的重复代码编写;对通信协议进行数据定义后,可以快速对协议进行描述,一方面可以快速解析协议,另一方面,在进行协议攻击的时候,可以根据协议描述快速生成对应的攻击数据,对协议进行攻击,并得到程序漏洞测试的结果,大大提高了程序漏洞测试的效率。
本申请实施例还提供了一种漏洞测试装置,请参阅图8,图8是本申请实施例提供的另一种漏洞测试装置的结构示意图,该漏洞测试装置800可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processing units,CPU)822(例如,一个或一个以上处理器)和存储器832,一个或一个以上存储应用程序842或数据844的存储介质830(例如一个或一个以上海量存储设备)。其中,存储器832和存储介质830可以是短暂存储或持久存储。存储在存储介质830的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对漏洞测试装置中的一系列指令操作。更进一步地,中央处理器822可以设置为与存储介质830通信,在漏洞测试装置800上执行存储介质830中的一系列指令操作。
漏洞测试装置800还可以包括一个或一个以上电源826,一个或一个以上有线或无线网络接口850,一个或一个以上输入输出接口858,和/或,一个或一个以上操作系统841,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
上述实施例中由漏洞测试装置所执行的步骤可以基于该图7所示的漏洞测试装置结构。
本申请实施例中还提供一种计算机可读存储介质,该计算机可读存储介质中存储有漏洞测试指令,当其在计算机上运行时,使得计算机执行如前述图2至图6所示实施例描述的方法中漏洞测试装置所执行的步骤。
本申请实施例中还提供一种包括漏洞测试指令的计算机程序产品,当其在计算机上运行时,使得计算机执行如前述图2至图6所示实施例描述的方法中漏洞测试装置所执行的步骤。
本申请实施例还提供了一种漏洞测试系统,所述漏洞测试系统可以包含图7所描述实施例中的漏洞测试装置,或者图8所描述的漏洞测试装置。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
本申请中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,漏洞测试装置,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-onlymemory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
另外,上述漏洞测试的方法和装置还可以应用于数据共享系统中,参见图9A所示的数据共享系统,数据共享系统900是指用于进行节点与节点之间数据共享的系统,该数据共享系统中可以包括多个节点901,多个节点901可以是指数据共享系统中各个客户端,其中,每个客户端运行于基于本申请方法对应的终端设备上。每个节点901在进行正常工作可以接收到输入信息,并基于接收到的输入信息维护该数据共享系统内的共享数据。为了保证数据共享系统内的信息互通,数据共享系统中的每个节点之间可以存在信息连接,节点之间可以通过上述信息连接进行信息传输。例如,当数据共享系统中的任意节点接收到输入信息时,数据共享系统中的其他节点便根据共识算法获取该输入信息,将该输入信息作为共享数据中的数据进行存储,使得数据共享系统中全部节点上存储的数据均一致。
对于数据共享系统中的每个节点,均具有与其对应的节点标识,而且数据共享系统中的每个节点均可以存储有数据共享系统中其他节点的节点标识,以便后续根据其他节点的节点标识,将生成的区块广播至数据共享系统中的其他节点。每个节点中可维护一个如下表所示的节点标识列表,将节点名称和节点标识对应存储至该节点标识列表中。其中,节点标识可为IP(Internet Protocol,网络之间互联的协议)地址以及其他任一种能够用于标识该节点的信息,表2中仅以IP地址为例进行说明。
表2节点与节点标识对应关系
节点名称 节点标识
节点1 117.114.151.174
节点2 117.116.189.145
节点N 119.123.789.258
数据共享系统中的每个节点均存储一条相同的区块链。区块链由多个区块组成,参见图9B,区块链由多个区块组成,创始块中包括区块头和区块主体,区块头中存储有输入信息特征值、版本号、时间戳和难度值,区块主体中存储有输入信息;创始块的下一区块以创始块为父区块,下一区块中同样包括区块头和区块主体,区块头中存储有当前区块的输入信息特征值、父区块的区块头特征值、版本号、时间戳和难度值,并以此类推,使得区块链中每个区块中存储的区块数据均与父区块中存储的区块数据存在关联,保证了区块中输入信息的安全性。
在生成区块链中的各个区块时,参见图9C,区块链所在的节点在接收到输入信息时,对输入信息进行校验,完成校验后,将输入信息存储至内存池中,并更新其用于记录输入信息的哈希树;之后,将更新时间戳更新为接收到输入信息的时间,并尝试不同的随机数,多次进行特征值计算,使得计算得到的特征值可以满足下述公式:
SHA256(SHA256(version+prev_hash+merkle_root+ntime+nbits+x))<TARGET
其中,SHA256为计算特征值所用的特征值算法;version(版本号)为区块链中相关区块协议的版本信息;prev_hash为当前区块的父区块的区块头特征值;merkle_root为输入信息的特征值;ntime为更新时间戳的更新时间;nbits为当前难度,在一段时间内为定值,并在超出固定时间段后再次进行确定;x为随机数;TARGET为特征值阈值,该特征值阈值可以根据nbits确定得到。
这样,当计算得到满足上述公式的随机数时,便可将信息对应存储,生成区块头和区块主体,得到当前区块。随后,区块链所在节点根据数据共享系统中其他节点的节点标识,将新生成的区块分别发送给其所在的数据共享系统中的其他节点,由其他节点对新生成的区块进行校验,并在完成校验后将新生成的区块添加至其存储的区块链中。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (10)

1.一种程序漏洞的测试方法,其特征在于,包括:
确定满足预设条件的目标插件,所述预设条件基于所述目标插件与待测试程序的匹配信息确定;
将所述目标插件注入所述待测试程序中,以获取所述待测试程序的通信数据包;
根据预设规则对所述通信数据包进行描述,以得到针对所述待测试程序的攻击数据,所述预设规则基于所述通信包中通信协议与目标字段的对应关系确定,所述攻击数据基于所述目标字段对应的边界值数据确定;
根据所述攻击数据对所述待测试程序进行自动攻击,以测试得到所述待测试程序的程序漏洞。
2.根据权利要求1所述的方法,其特征在于,所述确定满足预设条件的目标插件,包括:
加载插件数据库中的多个插件;
基于所述多个插件分别尝试获取所述待测试程序的进程信息,并尝试打开所述待测试程序的进程句柄以执行注入操作;
若完成注入,则确定对应的插件为所述目标插件。
3.根据权利要求2所述的方法,其特征在于,所述确定对应的插件为所述目标插件,包括:
确定所述目标插件与所述待测试程序的版本号对应关系;
若存在对应关系,则确定对应的插件为所述目标插件。
4.根据权利要求1所述的方法,其特征在于,所述将所述目标插件注入所述待测试程序中,包括:
确定所述待测试程序的关键函数,所述关键函数包括网络发包加密函数和收包解密函数;
将所述目标插件的输入地址与所述关键函数挂钩,以将所述目标插件注入所述待测试程序中。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述根据预设规则对所述通信数据包进行描述,以得到针对所述待测试程序的攻击数据,包括:
获取所述通信数据包的协议号;
遍历历史数据中是否存在关于所述协议号的描述语句;
若不存在,则根据预设规则对所述通信数据包进行描述,以得到针对所述待测试程序的攻击数据。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
若历史数据中存在关于所述协议号的描述语句,则根据所述描述语句对所述通信数据包进行展开,以确定所述目标字段;
根据所述目标字段生成对应的边界值数据,以确定所述攻击数据。
7.根据权利要求1所述的方法,其特征在于,所述漏洞测试的方法应用于终端设备,所述终端设备为区块链节点中的区块节点设备。
8.一种程序漏洞的测试装置,其特征在于,包括:
确定单元,用于确定满足预设条件的目标插件,所述预设条件基于所述目标插件与待测试程序的匹配信息确定;
注入单元,用于将所述目标插件注入所述待测试程序中,以获取所述待测试程序的通信数据包;
描述单元,用于根据预设规则对所述通信数据包进行描述,以得到针对所述待测试程序的攻击数据,所述预设规则基于所述通信包中通信协议与目标字段的对应关系确定,所述攻击数据基于所述目标字段对应的边界值数据确定;
测试单元,用于根据所述攻击数据对所述待测试程序进行自动攻击,以测试得到所述待测试程序的程序漏洞。
9.一种计算机设备,其特征在于,所述计算机设备包括处理器以及存储器:
所述存储器用于存储程序代码;所述处理器用于根据所述程序代码中的指令执行权利要求1至7任一项所述的程序漏洞的测试方法。
10.一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述权利要求1至7任一项所述的程序漏洞的测试方法。
CN201911302863.3A 2019-12-17 2019-12-17 一种程序漏洞的测试方法以及相关装置 Active CN111177729B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911302863.3A CN111177729B (zh) 2019-12-17 2019-12-17 一种程序漏洞的测试方法以及相关装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911302863.3A CN111177729B (zh) 2019-12-17 2019-12-17 一种程序漏洞的测试方法以及相关装置

Publications (2)

Publication Number Publication Date
CN111177729A true CN111177729A (zh) 2020-05-19
CN111177729B CN111177729B (zh) 2023-03-10

Family

ID=70650184

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911302863.3A Active CN111177729B (zh) 2019-12-17 2019-12-17 一种程序漏洞的测试方法以及相关装置

Country Status (1)

Country Link
CN (1) CN111177729B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111859399A (zh) * 2020-07-29 2020-10-30 网宿科技股份有限公司 一种基于oval的漏洞检测方法及装置
WO2021135532A1 (zh) * 2020-07-21 2021-07-08 平安科技(深圳)有限公司 云网络漏洞挖掘方法、装置、电子设备及介质
CN113111005A (zh) * 2021-05-06 2021-07-13 腾讯科技(深圳)有限公司 应用程序测试方法和装置
CN113297062A (zh) * 2020-06-01 2021-08-24 阿里巴巴集团控股有限公司 测试方法及装置、电子设备、存储介质
CN113660265A (zh) * 2021-08-16 2021-11-16 北京天融信网络安全技术有限公司 一种网络攻击测试方法、装置、电子设备及存储介质
CN114978644A (zh) * 2022-05-13 2022-08-30 北京百度网讯科技有限公司 软件的配网功能的测试方法和装置

Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140373158A1 (en) * 2013-06-18 2014-12-18 International Business Machines Corporation Detecting security vulnerabilities on computing devices
US20150040229A1 (en) * 2013-08-05 2015-02-05 Netflix, Inc. Dynamic security testing
CN104363236A (zh) * 2014-11-21 2015-02-18 西安邮电大学 一种自动化漏洞验证的方法
CN106951784A (zh) * 2017-02-23 2017-07-14 南京航空航天大学 一种面向XSS漏洞检测的Web应用逆向分析方法
CN107239702A (zh) * 2016-03-29 2017-10-10 腾讯科技(深圳)有限公司 一种安全漏洞检测的方法以及装置
CN107346391A (zh) * 2016-05-06 2017-11-14 阿里巴巴集团控股有限公司 一种生成概念验证数据的方法及系统
CN107454081A (zh) * 2017-08-07 2017-12-08 四川长虹电器股份有限公司 自动生成poc脚本的方法
CN108647517A (zh) * 2018-05-17 2018-10-12 华中科技大学 一种Android混合应用代码注入的漏洞检测系统及方法
CN108664793A (zh) * 2017-03-30 2018-10-16 腾讯科技(深圳)有限公司 一种检测漏洞的方法和装置
CN108875368A (zh) * 2017-05-10 2018-11-23 北京金山云网络技术有限公司 一种安全检测方法、装置及系统
US20190188382A1 (en) * 2017-12-19 2019-06-20 Nec Corporation Of America System and method for detecting suspicious actions of a software object
CN110222510A (zh) * 2019-06-13 2019-09-10 江苏亨通工控安全研究院有限公司 一种漏洞检测方法、装置及计算机系统
CN110365641A (zh) * 2019-05-31 2019-10-22 阿里巴巴集团控股有限公司 跨站脚本攻击漏洞检测方法、设备及计算机可读介质
CN110460612A (zh) * 2019-08-15 2019-11-15 中国平安财产保险股份有限公司 安全测试方法、设备、存储介质及装置
CN110516448A (zh) * 2019-09-02 2019-11-29 杭州安恒信息技术股份有限公司 一种灰盒测试方法、装置、设备及可读存储介质

Patent Citations (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140373158A1 (en) * 2013-06-18 2014-12-18 International Business Machines Corporation Detecting security vulnerabilities on computing devices
US20150040229A1 (en) * 2013-08-05 2015-02-05 Netflix, Inc. Dynamic security testing
CN104363236A (zh) * 2014-11-21 2015-02-18 西安邮电大学 一种自动化漏洞验证的方法
CN107239702A (zh) * 2016-03-29 2017-10-10 腾讯科技(深圳)有限公司 一种安全漏洞检测的方法以及装置
CN107346391A (zh) * 2016-05-06 2017-11-14 阿里巴巴集团控股有限公司 一种生成概念验证数据的方法及系统
CN106951784A (zh) * 2017-02-23 2017-07-14 南京航空航天大学 一种面向XSS漏洞检测的Web应用逆向分析方法
CN108664793A (zh) * 2017-03-30 2018-10-16 腾讯科技(深圳)有限公司 一种检测漏洞的方法和装置
CN108875368A (zh) * 2017-05-10 2018-11-23 北京金山云网络技术有限公司 一种安全检测方法、装置及系统
CN107454081A (zh) * 2017-08-07 2017-12-08 四川长虹电器股份有限公司 自动生成poc脚本的方法
US20190188382A1 (en) * 2017-12-19 2019-06-20 Nec Corporation Of America System and method for detecting suspicious actions of a software object
CN108647517A (zh) * 2018-05-17 2018-10-12 华中科技大学 一种Android混合应用代码注入的漏洞检测系统及方法
CN110365641A (zh) * 2019-05-31 2019-10-22 阿里巴巴集团控股有限公司 跨站脚本攻击漏洞检测方法、设备及计算机可读介质
CN110222510A (zh) * 2019-06-13 2019-09-10 江苏亨通工控安全研究院有限公司 一种漏洞检测方法、装置及计算机系统
CN110460612A (zh) * 2019-08-15 2019-11-15 中国平安财产保险股份有限公司 安全测试方法、设备、存储介质及装置
CN110516448A (zh) * 2019-09-02 2019-11-29 杭州安恒信息技术股份有限公司 一种灰盒测试方法、装置、设备及可读存储介质

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
NAOKI KUDO 等: "Access Control Mechanism to Mitigate Cordova Plugin Attacks in Hybrid Applications", 《JOURNAL OF INFORMATION PROCESSING》 *
徐飞: "网络安全评估的研究与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *
暴文莹: "基于Android平台的恶意代码注入攻击方法研究与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113297062A (zh) * 2020-06-01 2021-08-24 阿里巴巴集团控股有限公司 测试方法及装置、电子设备、存储介质
WO2021135532A1 (zh) * 2020-07-21 2021-07-08 平安科技(深圳)有限公司 云网络漏洞挖掘方法、装置、电子设备及介质
CN111859399A (zh) * 2020-07-29 2020-10-30 网宿科技股份有限公司 一种基于oval的漏洞检测方法及装置
CN113111005A (zh) * 2021-05-06 2021-07-13 腾讯科技(深圳)有限公司 应用程序测试方法和装置
CN113660265A (zh) * 2021-08-16 2021-11-16 北京天融信网络安全技术有限公司 一种网络攻击测试方法、装置、电子设备及存储介质
CN113660265B (zh) * 2021-08-16 2022-11-29 北京天融信网络安全技术有限公司 一种网络攻击测试方法、装置、电子设备及存储介质
CN114978644A (zh) * 2022-05-13 2022-08-30 北京百度网讯科技有限公司 软件的配网功能的测试方法和装置

Also Published As

Publication number Publication date
CN111177729B (zh) 2023-03-10

Similar Documents

Publication Publication Date Title
CN111177729B (zh) 一种程序漏洞的测试方法以及相关装置
US11113407B2 (en) System and methods for automated detection of input and output validation and resource management vulnerability
CN106294094B (zh) 游戏服务器的测试方法、客户端、服务器及系统
CN112463581B (zh) 一种对分布式系统进行模糊测试的方法及系统
CN108228444B (zh) 一种测试方法和装置
CN109600387B (zh) 攻击事件的追溯方法及装置、存储介质、计算机设备
CN109309655B (zh) 无状态通信安全签名方法、终端及服务器端
CN112685745B (zh) 一种固件检测方法、装置、设备及存储介质
CN113220572A (zh) 一种数据测试方法、装置及存储介质
JP2016099857A (ja) 不正プログラム対策システムおよび不正プログラム対策方法
CN113395287B (zh) 一种记录网络攻击ip和命令执行回显的方法和系统
US20140298002A1 (en) Method and device for identifying a disk boot sector virus, and storage medium
CN110955604A (zh) 一种信息显示方法、装置、服务器及存储介质
JP5698494B2 (ja) 携帯端末およびプログラム
CN113630418A (zh) 一种网络服务识别方法、装置、设备及介质
CN111597093B (zh) 一种异常处理方法、装置及其设备
CN114063606B (zh) Plc协议模糊测试方法及装置、电子设备、存储介质
CN114745216B (zh) 一种动态接入方法及装置
Karippara et al. Synthesis, analysis and visualization of networked executions
CN111786938B (zh) 防止恶意获取资源的方法、系统和电子设备
US12095815B2 (en) Monitoring apparatus, monitoring method, and program
Zulkarneev et al. Feedback-based Greybox Fuzzing of EtherCAT Industrial Protocol
CN117478570B (zh) 基于容器化技术的设备测试方法、装置及存储介质
CN110826069B (zh) 一种病毒处理方法、装置、设备及存储介质
CN107466035B (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