一种二进制漏洞检测系统、方法、电子设备及存储介质与流程

文档序号:33033134发布日期:2023-01-20 21:32阅读:69来源:国知局
一种二进制漏洞检测系统、方法、电子设备及存储介质与流程

1.本技术涉及漏洞挖掘技术领域,具体而言,涉及一种二进制漏洞检测系统、方法、电子设备及存储介质。


背景技术:

2.网络安全包含信息系统权限获取和数据泄露两个层面,事实上,这主要来自于网络安全漏洞的发现与利用,不同类型的漏洞获取,意味着不同等级的系统控制权取得和风险数据攫取。因此,对于网络安全来说,主动进行漏洞挖掘是网络安全体系构建中不可缺少的一环,只有主动开展漏洞挖掘工作,才能更好地构建安全防御体系。
3.现有的macos下二进制漏洞挖掘方法,首先需要大量的人力去逆向分析功能动态库的代码执行逻辑,再去进一步开展漏洞挖掘工作,并且如果使用mac提供的调试端口,会出现端口断开的现象,使得模糊测试过程不够稳定。


技术实现要素:

4.本技术实施例的目的在于提供一种二进制漏洞检测系统、方法、电子设备及存储介质,采用lldb测试接口进行模糊测试,无需逆向分析,且稳定性高,解决了现有方法需要大量人力进行逆向分析且稳定性不高的问题。
5.本技术实施例提供了一种二进制漏洞检测系统,所述系统包括:
6.控制模块,与lldb调试接口连接,用于调用所述lldb调试接口对测试样本进行模糊测试,并在测试过程中,监听进程状态,控制测试流程;
7.ui交互模块,与所述控制模块通信连接,用于打开或关闭所述测试样本。
8.在上述实现过程中,采用lldb调试接口进行模糊测试,依托于mac自有的lldb调试器,更加稳定可靠,且不再需要研究人员对程序或者动态库进行逆向分析,不要求研究人员掌握目标模块的初始化和实际运行流程,极大地降低了前期投入,解决了现有方法需要大量人力进行逆向分析且稳定性不高的问题。
9.进一步地,所述控制模块包括:
10.事件监听模块,用于监听进程状态并获取异常事件,分析所述异常事件原因并进行相应处理;
11.断点处理模块,用于在触发断点异常时,统计代码覆盖率,若所述代码覆盖率有新增,则保存样本并进行断点恢复。
12.在上述实现过程中,通过lldb调试接口提供的消息监听接口可获得进程的各种状态,并进行相应处理,并可对断点事件进行处理。
13.进一步地,所述事件监听模块包括:
14.崩溃事件模块,用于保存堆栈信息并保存触发所述崩溃事件的测试样本。
15.在上述实现过程中,进程崩溃时,需进行信息保存如保留堆栈信息和测试样本。
16.进一步地,所述事件监听模块包括:
17.超时事件模块,用于向所述ui交互模块发送关闭当前测试样本指令,以重置所述当前测试样本的计时器。
18.在上述实现过程中,超时事件,即文档打开的计时器超时,可通知ui交互模块关闭打开的文档,以进行计时器的重置。
19.本技术实施例还提供一种二进制漏洞检测方法,所述方法包括:
20.利用ui交互模块打开测试样本;
21.调用lldb调试接口对所述测试样本进行模糊测试,并在测试过程中,监听进程状态,控制测试流程。
22.在上述实现过程中,采用lldb调试接口进行模糊测试,依托于mac自有的lldb调试器,更加稳定可靠,且不再需要研究人员对程序或者动态库进行逆向分析,不要求研究人员掌握目标模块的初始化和实际运行流程,极大地降低了前期投入,解决了现有方法需要大量人力进行逆向分析且稳定性不高的问题。
23.进一步地,所述监听进程状态,控制测试流程,包括:
24.获取异常事件,分析所述异常事件原因并进行相应处理;
25.在触发断点异常时,统计代码覆盖率,若所述代码覆盖率有新增,则保存样本并进行断点恢复。
26.在上述实现过程中,通过lldb调试接口提供的消息监听接口可获得进程的各种状态,并进行相应处理,并可对断点事件进行处理。
27.进一步地,所述异常事件包括崩溃事件,所述获取异常事件,分析所述异常事件原因并进行相应处理,包括:
28.接收所述ui交互模块发送的崩溃事件;
29.保存堆栈信息并保存触发所述崩溃事件的测试样本。
30.在上述实现过程中,进程崩溃时,需进行信息保存如保留堆栈信息和测试样本。
31.进一步地,所述异常事件包括超时事件,所述获取异常事件,分析所述异常事件原因并进行相应处理,包括:
32.接收所述ui交互模块发送的超时事件;
33.向所述ui交互模块发送关闭当前测试样本指令,以重置所述当前测试样本的计时器。
34.在上述实现过程中,超时事件,即文档打开的计时器超时,可通知ui交互模块关闭打开的文档,以进行计时器的重置。
35.本技术实施例还提供一种电子设备,所述电子设备包括存储器以及处理器,所述存储器用于存储计算机程序,所述处理器运行计算机程序以使所述电子设备执行上述中任一项所述的二进制漏洞检测方法。
36.本技术实施例还提供一种可读存储介质,所述可读存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行上述中任一项所述的二进制漏洞检测方法。
附图说明
37.为了更清楚地说明本技术实施例的技术方案,下面将对本技术实施例中所需要使
用的附图作简单地介绍,应当理解,以下附图仅示出了本技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
38.图1为本技术实施例提供的一种二进制漏洞检测系统的结构框图;
39.图2为本技术实施例提供的二进制漏洞检测系统架构图;
40.图3为本技术实施例提供的二进制漏洞检测方法的流程图;
41.图4为本技术实施例提供的fuzz运行的整体流程图;
42.图5为本技术实施例提供的崩溃事件处理流程图;
43.图6为本技术实施例提供的超时事件处理流程图。
44.图标:
45.100-lldb调试接口;200-控制模块;300-ui交互模块。
具体实施方式
46.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行描述。
47.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本技术的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
48.实施例1
49.请参看图1,图1为本技术实施例提供的一种二进制漏洞检测系统的结构框图。该系统是基于lldb在macos下的二进制漏洞挖掘。二进制漏洞一般是指由编译语言所开发编译出的程序所存在的安全缺陷,这种缺陷可以导致攻击者恶意构造的数据进入程序相关处理代码时,改变程序原定的执行流程,从而实现破坏或获取超出原有的权限。二进制漏洞挖掘的主要对象是客户端应用软件和操作系统。
50.fuzz,即模糊测试,是一种软件测试技术,其核心思想是将自动或半自动生成的随机数据输入到一个程序中,并监视程序异常,如崩溃,断言(assertion)失败,以发现可能的程序错误,比如内存泄漏。
51.模糊测试工具主要分为两类,变异测试(mutation-based)以及生成测试(generation-based),本技术是基于数据变异的对应用层软件进行的模糊测试。
52.对于应用层软件的安全研究,利用目前常用的fuzz工具进行漏洞检测之前,需要花费大量的人力去逆向分析功能动态库的代码执行逻辑,了解动态库的初始化流程,功能接口的工作流程,才能配合现有的fuzz工具开展进一步的漏洞挖掘工作。此外,对于mac下的调试来说,没有很好的开源方案,在fuzz过程中,如果使用mac提供的调试端口,会出现端口断开的现象,使得fuzz过程不够稳定。
53.而本技术提供的二进制漏洞检测系统采用lldb调试接口100,不再要求研究人员对程序或者动态库进行逆向分析,不要求研究人员掌握目标模块的初始化和实际运行流程,极大地降低了前期投入;依托mac自有的lldb调试器,更加稳定可靠。
54.功能动态库(dylib),对于一些用户程序,可选取一个包含主要程序动态库,利用一些开源的fuzz工具,对功能接口进行漏洞挖掘。
55.所述系统包括但不限于:
56.控制模块200,与lldb调试接口100连接,用于调用所述lldb调试接口对测试样本进行模糊测试,并在测试过程中,监听进程状态,控制测试流程;
57.ui交互模块300,与所述控制模块200通信连接,用于打开或关闭所述测试样本。
58.如图2所示,为二进制漏洞检测系统架构图,该系统结合lldb、python和applescript,构建针对ui程序的fuzz工具。
59.其中,lldb调试接口100,可以在lldb中加载和执行python代码,从而通过控制模块200来接管调试权限,自动化地和lldb调试接口100的调试器交互来控制fuzz流程,示例地,本技术中的控制模块200可以是python控制层。
60.所述控制模块200包括:
61.事件监听模块,用于监听进程状态并获取异常事件,分析所述异常事件原因并进行相应处理;
62.具体地:
63.所述事件监听模块包括但不限于:
64.崩溃事件模块,用于保存堆栈信息并保存触发所述崩溃事件的测试样本;
65.进程崩溃时,需进行信息保存如保留堆栈信息和测试样本。
66.超时事件模块,用于向所述ui交互模块300发送关闭当前测试样本指令,以重置所述当前测试样本的计时器。
67.超时事件,即文档打开的计时器超时,可通知ui交互模块300关闭打开的文档,以进行计时器的重置。
68.还包括进程退出事件模块,来退出当前进程。
69.具体地:
70.通过lldb调试接口100提供的消息监听接口,可以在控制模块200中获取进程的各种状态,就fuzz而言,主要关注三个进程事件:进程退出事件、进程崩溃事件和超时事件。
71.在这三个事件中,都需要判断进程的停止原因,确认是否是崩溃引发的异常,如果是崩溃引发的异常就需要保存堆栈信息,保存样本,以及重新启动进程进入下一轮fuzz流程。
72.断点处理模块,用于在触发断点异常时,统计代码覆盖率,若所述代码覆盖率有新增,则保存样本并进行断点恢复。
73.通过lldb调试接口100提供的消息监听接口可获得进程的各种状态,并进行相应处理,并可对断点事件进行处理。
74.在处理断点事件的时候,需要统计代码覆盖率,然后根据代码覆盖率是否有新增,决定是否保存本次样本,以及如何变异数据。
75.覆盖率是通过对cc断点计数来判断是否有新增的。在lldb启动加载python脚本的时候,会对目标进程中用户指定的模块插入cc断点,之后进程在运行过程中,每触发一次断点异常,python脚本就会收到一次事件通知,从而更新代码覆盖率。
76.在python(控制模块200)初始化完成之后,将会主动调用applescript(ui交互模块300)来进行持久化的fuzz。
77.applescript主要和python进行通信,负责打开样本、等待信号和关闭样本三个功能。
78.applescript在启动之后,识别目标程序的窗口,然后等待python的消息,收到打开样本的指令就会点击软件打开指定样本,收到关闭样本的指令就会关闭当前打开的样本。
79.该系统有效缓解了mac下对二进制漏洞挖掘的限制,具体地,首先提高了fuzz过程的稳定性,相比于内核提供的应用程序调试端口,通过lldb提供的调试接口构建的fuzz工具将会更加稳定;其次,减少前期投入,不需要研究人员对程序或者动态库进行逆向分析,不要求研究人员掌握目标模块的初始化和实际运行流程;提升研究效率,现有的fuzz工具,逆向分析可能要占据二分之一甚至三分之二的时间,而且花费这么多时间并不能保证一定出成果。
80.本技术中的fuzz方法,省略了逆向分析的部分,极大地提升了研究效率,使得投入产出比能趋向于合理的水平;此外,节省下的时间可以用来扩大研究范围,能够进一步提升研究效率。
81.该系统采用lldb调试接口进行模糊测试,依托于mac自有的lldb调试器,更加稳定可靠,且不再需要研究人员对程序或者动态库进行逆向分析,不要求研究人员掌握目标模块的初始化和实际运行流程,极大地降低了前期投入,解决了现有方法需要大量人力进行逆向分析且稳定性不高的问题。
82.实施例2
83.本技术实施例提供一种二进制漏洞检测方法,如图3所示,为二进制漏洞检测方法的流程图,本技术提供了一种macos下快速fuzz的方法,基于lldb以及mac自带的applescript构建出无需逆向分析的fuzz工具,能极大地加快fuzz进度。该方法是一种通过lldb捕捉用户插桩点的方法,相比于内核提供的应用程序调试端口,通过lldb提供的调试接口构建的fuzz工具将会更加稳定。所述方法包括:
84.步骤s100:利用ui交互模块300打开测试样本;
85.步骤s200:调用lldb调试接口100对所述测试样本进行模糊测试,并在测试过程中,监听进程状态,控制测试流程。
86.采用lldb调试接口进行模糊测试,依托于mac自有的lldb调试器,更加稳定可靠,且不再需要研究人员对程序或者动态库进行逆向分析,不要求研究人员掌握目标模块的初始化和实际运行流程,极大地降低了前期投入,解决了现有方法需要大量人力进行逆向分析且稳定性不高的问题。
87.如图4所示,为fuzz运行的整体流程图。在测试开始之前,首先进行初始化,具体包括:
88.首先需要在python代码中导入lldb类,lldb调试接口100初始化调试环境;初始化覆盖率hashmap;初始化输入队列;初始化全局有效样本队列,负责保存在fuzz过程中能触发有效路径的样本;初始化当前样本探测队列,负责保存基于一个能触发新路径的样本而变异的系列样本;初始化样本保存目录和临时样本目录;启动applescript,打开ui交互通信通道;
89.启动目标进程。
90.在启动目标进程之后,对目标进程进行初始化,具体包括:
91.根据配置信息,对指定模块插入断点;从输入队列中取出一个初始样本,随机选择
一个变异算法,对样本进行数据变异;通知lldb调试接口100继续运行进程;设置ui交互计时器或者交互标志;通知applescript打开样本文件。
92.在进程启动之后,对目标模块插入断点,生成样本并向ui交互模块300发送消息以打开样本,同时启动计时器。
93.其中,步骤s200中,测试过程中,监听进程状态,控制测试流程,具体包括:
94.获取异常事件,分析所述异常事件原因并进行相应处理。
95.如图5所示,为崩溃事件处理流程图,具体地:
96.步骤s211:接收所述ui交互模块300发送的崩溃事件;
97.步骤s212:保存堆栈信息并保存触发所述崩溃事件的测试样本。
98.在收到进程崩溃事件之后,需要保存一些现场信息:
99.保存崩溃时候的堆栈信息,保存触发崩溃的样本,调用lldb调试接口100,重启进程。
100.如图6所示,为超时事件处理流程图,具体包括以下步骤:
101.步骤s221:接收所述ui交互模块300发送的超时事件;
102.步骤s222:向所述ui交互模块300发送关闭当前测试样本指令,以重置所述当前测试样本的计时器。
103.收到超时事件,代表着文档打开的计时器超时了,此时可以通知ui交互模块300关闭当前打开的文档,并重置相关的计时器,然后控制模块200继续事件监听。
104.在触发断点异常时,需要统计代码覆盖率,若所述代码覆盖率有新增,则保存样本并进行断点恢复。
105.在接收到断点异常事件之后,需要对覆盖率和样本做相应的处理:
106.将断点的偏移加入到覆盖率hashmap中;
107.将断点所在偏移的原始字节恢复;
108.保存样本,并将样本路径加入到全局有效样本队列和当前样本探测队列;
109.基于当前样本选择变异算法,生成新的样本,之后继续监听事件。
110.ui交互模块300由applescript来实现,在fuzz过程中和python(控制模块200)通信,负责文件的打开和关闭。
111.该方法有效缓解了mac下对二进制漏洞挖掘的限制,具体地,首先提高了fuzz过程的稳定性,相比于内核提供的应用程序调试端口,通过lldb提供的调试接口构建的fuzz工具将会更加稳定;其次,减少前期投入,不需要研究人员对程序或者动态库进行逆向分析,不要求研究人员掌握目标模块的初始化和实际运行流程;提升研究效率,现有的fuzz工具,逆向分析可能要占据二分之一甚至三分之二的时间,而且花费这么多时间并不能保证一定出成果。
112.本技术中的fuzz方法,省略了逆向分析的部分,极大地提升了研究效率,使得投入产出比能趋向于合理的水平;此外,节省下的时间可以用来扩大研究范围,能够进一步提升研究效率。
113.该方法采用lldb调试接口进行模糊测试,依托于mac自有的lldb调试器,更加稳定可靠,且不再需要研究人员对程序或者动态库进行逆向分析,不要求研究人员掌握目标模块的初始化和实际运行流程,极大地降低了前期投入,解决了现有方法需要大量人力进行
逆向分析且稳定性不高的问题。
114.本技术实施例还提供一种电子设备,所述电子设备包括存储器以及处理器,所述存储器用于存储计算机程序,所述处理器运行计算机程序以使所述电子设备执行实施例2所述的二进制漏洞检测方法。
115.本技术实施例还提供一种可读存储介质,所述可读存储介质中存储有计算机程序指令,所述计算机程序指令被一处理器读取并运行时,执行实施例2所述的二进制漏洞检测方法。
116.在本技术所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本技术的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
117.另外,在本技术各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
118.所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
119.以上所述仅为本技术的实施例而已,并不用于限制本技术的保护范围,对于本领域的技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
120.以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应所述以权利要求的保护范围为准。
121.需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备
所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1