针对Android车载终端系统的漏洞检测系统及方法与流程

文档序号:20840152发布日期:2020-05-22 17:23阅读:446来源:国知局
针对Android车载终端系统的漏洞检测系统及方法与流程

本发明涉及软件安全技术领域,尤其涉及一种针对android车载终端系统的漏洞检测系统及方法。



背景技术:

现有的android系统攻击取证工具主要包括rain工具和droidforensics工具。其中,rain实现了可按需进程间信息流跟踪的可修复攻击取证。该工具有选择地提供指令级详细日志,同时最小化运行时开销。用系统调用级别的记录和重放技术以及按需动态信息流跟踪(dift)来满足这些相互冲突的目标。rain会持续监视和记录系统调用事件和其他数据,以便在构建逻辑起源图时进行后续重放。当它在图中检测到任何异常事件时,它会从事件中执行基于重放的dift,以删除任何不需要的依赖项。rain是一个基于内核的系统。它能够记录,重放和分析用户级进程的活动,但无法监视内核活动,因为它信任内核。如果内核遭到破坏,rain将无法再创建可靠的起源数据。同时,由于rain记录了各种系统调用以支持可重放执行,因此额外的存储开销过大。

droidforensics是一款通过多层取证记录准确重建android攻击的工具,基于多层取证日志技术,从三个层面捕获重要的android事件,分别是在androidapi层面捕获应用程序高级语义、binder层面捕获应用程序之间的交互、系统调用层面记录系统调用等低级事件。但是内核级攻击可能会使droidforensics失效,并且如果恶意软件使用了与droidforensics相同的系统调用会引入虚假因果关系。

现有的android系统攻击取证技术主要在两个方面进行信息记录,一方面是记录系统调用信息,另一方面是记录指令序列信息。为了确保记录准确的系统攻击信息,指令级日志理想地记录所有程序的所有cpu指令的执行,然而这样的系统也会产生巨大的运行时开销,因此在实际计算环境中是不切实际的。由于许多攻击最终需要使用系统调用访问敏感资源和设备,所以实际系统中主要关注系统调用信息,其运行时开销较低,然而它们的依赖性模糊,很难仅用系统调用信息准确获得攻击因果关系。

由此可见,现有的android系统攻击取证工具只关注了系统调用信息和指令序列信息,且无法平衡取证粒度与系统开销之间的矛盾,对内核级攻击也难以取证。如rain为了满足低运行时间开销和细粒度因果关系信息的需求,只监控感兴趣的系统调用信息,如:记录打开,读取,写入文件操作和连接,recv,发送网络操作相关的系统调用,并进行按需重放攻击,但是这种方式可能存在完整性的问题,因为无法保证系统攻击过程中的所有系统事件都被记录。



技术实现要素:

针对现有技术中的问题,本发明实施例提供一种针对android车载终端系统的漏洞检测系统及方法。

具体地,本发明实施例提供了以下技术方案:

第一方面,本发明实施例提供了一种针对android车载终端系统的漏洞检测系统,包括:漏洞库模块、漏洞触发自动化测试模块、漏洞触发过程取证模块和漏洞触发过程分析模块;

其中,所述漏洞库模块、所述漏洞触发自动化测试模块和所述漏洞触发过程取证模块设置在待测android车载终端系统上,所述漏洞触发过程分析模块设置在独立于所述待测android车载终端系统的外部检测设备上;

所述漏洞库模块,用于存储漏洞信息库和漏洞验证脚本库,所述漏洞信息库中存储有与车载终端系统相关的已知漏洞信息,所述漏洞验证脚本库中存储有与所述漏洞信息库中的漏洞信息相对应的漏洞验证程序;

所述漏洞触发自动化测试模块,用于从所述漏洞信息库和所述漏洞验证脚本库中获取漏洞信息和相对应的漏洞验证程序后,通过adb命令将相应漏洞验证程序传输到待测android车载终端系统rom中,以在待测android车载终端系统rom中通过执行漏洞验证程序来执行漏洞触发自动化测试;

所述漏洞触发过程取证模块,用于在所述漏洞触发自动化测试模块进行漏洞触发自动化测试时,对每一个漏洞验证程序的执行过程进行监控并获取漏洞触发过程中的监控数据;其中,所述监控数据包括设备日志、执行过程指令序列和系统调用信息;

所述漏洞触发过程分析模块,用于接收所述漏洞触发过程取证模块发送的监控数据,并对监控数据中包含的设备日志、执行过程指令序列和系统调用信息进行分析,获取待测android车载终端系统中被触发的漏洞的细节信息。

进一步地,所述漏洞触发过程分析模块,具体用于:

对设备日志进行分析获取系统日志和内核日志,并根据系统日志和内核日志获取漏洞触发特征和漏洞利用特征;

对执行过程指令序列进行分析获取漏洞触发约束条件和漏洞触发因果图;

对系统调用信息进行分析获取用户级api调用信息和内核级api调用信息,并根据用户级api调用信息和内核级api调用信息确定漏洞特征和漏洞所在模块。

进一步地,所述漏洞触发过程分析模块在根据系统日志和内核日志获取漏洞触发特征和漏洞利用特征时,具体用于:

对系统日志进行进程爆炸、高频率文件读写和socket通信扫描以捕捉漏洞触发特征;

扫描内核日志中的活动信息和内核状态获取内核崩溃信息,并根据内核崩溃信息确定漏洞利用特征。

进一步地,所述漏洞触发过程分析模块在对执行过程指令序列进行分析获取漏洞触发约束条件和漏洞触发因果图时,具体用于:

对执行过程指令序列进行分析,为不同类型的漏洞验证程序制定不同的iibug和iiexploit谓词,基于符号执行的形式化验证方法,分析漏洞触发约束条件,生成漏洞触发因果图。

进一步地,所述漏洞触发过程分析模块在根据用户级api调用信息和内核级api调用信息确定漏洞特征和漏洞所在模块时,具体用于:

根据用户级api调用信息,构建api调用链,计算加权的漏洞特征值,通过分析调用栈建立api调用森林;

根据内核级api调用信息,通过过滤和溯源确定漏洞所在模块,并通过调用栈分析确定系统脆弱点。

进一步地,所述漏洞验证脚本库中还存储第一映射表,所述第一映射表中存储有漏洞验证程序返回值与漏洞触发结果的对应关系;所述漏洞触发结果包括漏洞触发成功或漏洞触发失败;

相应地,所述漏洞触发自动化测试模块还用于在漏洞触发自动化测试结束后收集漏洞验证程序运行结果,根据所述漏洞验证程序运行结果查询所述第一映射表,确定相应漏洞是否触发成功。

进一步地,所述漏洞信息库中存储有从标准漏洞库中收集的漏洞以及从已有的车载终端系统挖掘的漏洞,并存储有与相应漏洞对应的漏洞编号、漏洞评分和漏洞描述信息。

进一步地,所述漏洞验证脚本库中存储有从互联网收集的或自主编写的与漏洞信息库中漏洞对应的漏洞验证程序。

进一步地,所述针对android车载终端系统的漏洞检测系统,还包括:

车载终端系统漏洞检测结果展示模块,用于向用户展示漏洞检测报告,所述漏洞检测报告中包括漏洞触发结果、漏洞触发因果图和api调用森林。

第二方面,本发明实施例还提供了一种基于如第一方面所述的针对android车载终端系统的漏洞检测系统的漏洞检测方法,包括:

启动漏洞触发自动化测试模块,使得漏洞触发自动化测试模块从漏洞信息库和漏洞验证脚本库中获取漏洞信息和相对应的漏洞验证程序后,通过adb命令将相应漏洞验证程序传输到待测android车载终端系统rom中,以在待测android车载终端系统rom中通过执行漏洞验证程序来执行漏洞触发自动化测试;

启动漏洞触发过程取证模块,使得漏洞触发过程取证模块在所述漏洞触发自动化测试模块进行漏洞触发自动化测试时,对每一个漏洞验证程序的执行过程进行监控并获取漏洞触发过程中的监控数据,同时使得漏洞触发过程取证模块将获取的监控数据发送给漏洞触发过程分析模块;

启动漏洞触发过程分析模块,使得漏洞触发过程分析模块在接收到所述漏洞触发过程取证模块发送的监控数据后,对监控数据中包含的设备日志、执行过程指令序列和系统调用信息进行分析,获取待测android车载终端系统中被触发的漏洞的细节信息。

由上面技术方案可知,本发明实施例提供的针对android车载终端系统的漏洞检测系统及方法,由于基于漏洞触发过程进行指令序列、系统调用信息和设备日志的取证,因此能够获得较为全面的漏洞分析结果,例如通过对内核日志进行分析,能够获取与内核崩溃相关的漏洞特征信息。此外,由于车载终端系统是定制化的android系统,有着针对性强、运作方式简单的特点,所以其性能往往不是很强,而漏洞触发过程取证模块在漏洞触发过程中获取到的信息量通常是非常大的,针对该问题,本发明实施例将漏洞触发过程取证模块获得的取证信息交由独立于车载终端系统的外部检测设备上的漏洞触发过程分析模块进行漏洞详细分析,从而能够同时提高待测android车载终端系统的性能和漏洞分析的性能,从而很好地解决了现有技术中无法平衡取证粒度与系统开销之间矛盾的问题。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明一实施例提供的针对android车载终端系统的漏洞检测系统的结构示意图;

图2为本发明一实施例提供的针对android车载终端系统的漏洞检测系统的系统架构图;

图3时本发明一实施例提供的针对android车载终端系统漏洞触发取证检测流程示意图;

图4为本发明一实施例提供的针对android车载终端系统的漏洞检测方法的流程图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例主要研究android车载终端系统漏洞触发过程的取证方法以及分析方法,有利于帮助系统漏洞以提高车载终端操作系统的安全性。下面将通过具体实施例对本实施例提供的针对android车载终端系统的漏洞检测系统及方法进行详细说明。

图1示出了本发明实施例提供的针对android车载终端系统的漏洞检测系统的结构示意图。如图1所示,本发明实施例提供的针对android车载终端系统的漏洞检测系统,包括:漏洞库模块11、漏洞触发自动化测试模块12、漏洞触发过程取证模块13和漏洞触发过程分析模块14;

其中,所述漏洞库模块11、所述漏洞触发自动化测试模块12和所述漏洞触发过程取证模块13设置在待测android车载终端系统上,所述漏洞触发过程分析模块14设置在独立于所述待测android车载终端系统的外部检测设备上;

所述漏洞库模块11,用于存储漏洞信息库和漏洞验证脚本库,所述漏洞信息库中存储有与车载终端系统相关的已知漏洞信息,所述漏洞验证脚本库中存储有与所述漏洞信息库中的漏洞信息相对应的漏洞验证程序;

所述漏洞触发自动化测试模块12,用于从所述漏洞信息库和所述漏洞验证脚本库中获取漏洞信息和相对应的漏洞验证程序后,通过adb命令将相应漏洞验证程序传输到待测android车载终端系统rom中,以在待测android车载终端系统rom中通过执行漏洞验证程序来执行漏洞触发自动化测试;

所述漏洞触发过程取证模块13,用于在所述漏洞触发自动化测试模块进行漏洞触发自动化测试时,对每一个漏洞验证程序的执行过程进行监控并获取漏洞触发过程中的监控数据;其中,所述监控数据包括设备日志、执行过程指令序列和系统调用信息;所述漏洞触发过程取证模块13还用于将所述监控数据发送给独立于所述待测android车载终端系统的外部检测设备上漏洞触发过程分析模块14,由所述漏洞触发过程分析模块14对监控数据进行详细分析;

所述漏洞触发过程分析模块14,用于接收所述漏洞触发过程取证模块13发送的监控数据,并对监控数据中包含的设备日志、执行过程指令序列和系统调用信息进行分析,获取待测android车载终端系统中被触发的漏洞的细节信息。

在本实施例中,由于车载终端系统一般是定制化的android系统,有着针对性强、运作方式简单的特点,所以其性能往往不是很强,而漏洞触发过程取证模块在漏洞触发过程中获取到的信息量通常是非常大的,针对该问题,本发明实施例将漏洞库模块11、漏洞触发自动化测试模块12和漏洞触发过程取证模块13设置在待测车载终端系统上,而将漏洞触发过程分析模块14设置在独立于所述待测车载终端系统的外部检测设备上,从而使得漏洞库模块11、漏洞触发自动化测试模块12和漏洞触发过程取证模块13在待测android车载终端系统上执行漏洞触发自动化测试和漏洞触发过程取证,并使得漏洞触发过程取证模块13将获得的取证信息交由独立于车载终端系统的外部检测设备上的漏洞触发过程分析模块14进行漏洞详细分析,从而能够同时提高待测android车载终端系统的性能和漏洞分析的性能。

在本实施例中,需要说明的是,漏洞触发自动化测试模块12通过调用漏洞库模块11中的漏洞信息和漏洞验证程序在待测车载终端系统上执行漏洞验证程序,以触发待测车载终端系统中的漏洞,同时,漏洞触发过程取证模块13在漏洞触发自动化测试模块12执行漏洞触发自动化测试过程中进行相关信息的取证,并将获得的取证信息交由独立于车载终端系统的外部检测设备上的漏洞触发过程分析模块14进行漏洞详细分析。

在本实施例中,需要说明的是,漏洞信息库中的漏洞信息是从cve、cnnvd、cavd等标准漏洞库收集的或从已有车载终端系统中挖掘的相关漏洞,此外,漏洞信息库中记录有漏洞编号、漏洞评分、漏洞描述等信息。其中,漏洞触发自动化测试模块12在进行测试时先遍历该漏洞信息库,获取所有要检测的漏洞相关信息。

在本实施例中,需要说明的是,漏洞验证脚本库中的漏洞验证程序poc是从互联网收集或自主编写的与漏洞信息库中的漏洞相对应的漏洞验证程序。其中,漏洞触发自动化测试模块12在进行测试时先遍历该漏洞信息库,获取所有要检测的漏洞相关信息,然后再从漏洞验证脚本库中检索出与漏洞信息对应的漏洞验证程序poc,然后通过自动测试的方式注入系统中进行测试。

在本实施例中,需要说明的是,可以通过人工阅读和修改代码将poc程序返回值与漏洞触发结果关联并标准化,然后将编译好的poc可执行文件和其执行结果信息录入漏洞验证脚本库。

在本实施例中,需要说明的是,漏洞触发自动化测试模块12在从漏洞信息库和漏洞验证脚本库中获取漏洞信息和poc文件后,通过adb(androiddebugbridge)命令将poc文件传输到待测车载终端系统rom中,然后执行,执行结束后收集poc程序运行结果,通过于漏洞验证脚本库中的执行结果进行比对,确定漏洞是否触发成功。

在本实施例中,需要说明的是,漏洞触发过程取证模块13在进行车载终端系统漏洞自动化测试时,对每一个poc的执行过程(即漏洞触发过程)进行监控,在漏洞触发时监控、收集相关数据,包括设备日志、执行过程指令序列、系统调用信息。

在本实施例中,需要说明的是,漏洞触发过程分析模块14分别对漏洞触发过程中的指令序列、系统调用信息和设备日志进行分析,从而可以获得较为详细的漏洞信息。

例如,对于设备日志来说,由于设备日志记录了系统操作和消息事件,因此通过分析设备日志可以理解、整理操作系统的活动以及诊断相应问题。在本实施例中,设备日志可以包括系统日志和内核日志两种日志。对于系统日志来说,由于溢出攻击和竞争态攻击是漏洞利用中最常见的两个类型,这两种攻击常常通过大量的进程操作进行文件读写、socket操作,在频繁的操作中让使系统出现破绽,从而进行进一步的漏洞利用操作。这种攻击过程在系统日志中可以体现,例如,漏洞触发过程分析模块14通过对系统日志进行进程爆炸、高频率文件读写和socket通信扫描可以捕捉到漏洞触发的特征。对于内核日志来说,一般情况下,除了信息泄露和权限提升,拒绝服务也是常见的漏洞利用目的之一。当漏洞攻击通过内核崩溃法达到拒绝服务的目的时,难以从系统日志中获得足够的有效信息,这时就要取证内核日志。扫描内核日志中的活动信息和内核状态可以精确发现内核崩溃的信息,从而发现该漏洞利用的特征。由此可知,通过对设备日志中的系统日志和内核日志进行分析,可以获取漏洞触发特征以及漏洞利用特征。

又如,对于指令序列来说,指令序列存在于系统内存中,分析漏洞进程内存,获取内存执行过程中的指令序列,为不同类型的poc制定不同的iibug和iiexploit谓词,基于符号执行的形式化验证方法,分析漏洞触发约束条件,生成漏洞触发因果图。

又如,对于系统调用信息来说,系统调用信息即为api调用信息,漏洞利用程序与普通程序一样,都是通过函数调用实现各种功能。由于网络上许多漏洞描述不详细,系统中漏洞所处位置信息模糊,系统调用信息的取证可以帮助定位漏洞触发位置,获取漏洞详细信息。本实施例在系统调用信息方面关注以下两种:

a、用户级api调用

在漏洞验证程序poc运行时,例如,按漏洞类型hook特定api,其中包括androidapi、nativeapi,并根据调用时间先后构建api调用链,计算加权的漏洞特征值,再通过分析调用栈建立api调用森林,可以提供直观的漏洞利用api调用图。

b、内核级api调用

由于许多漏洞都出现在系统内核中的各种驱动程序中,而用户、漏洞利用者无权直接调用内核中的api,但可以通过各种方式触发漏洞,进而通过hook内核api,并过滤和溯源可发现漏洞所在模块,再通过调用栈分析可发现系统脆弱点。

由上面技术方案可知,本发明实施例提供的针对android车载终端系统的漏洞检测系统,由于基于漏洞触发过程进行指令序列、系统调用信息和设备日志的取证,因此能够获得较为全面的漏洞分析结果,例如通过对内核日志进行分析,能够获取与内核崩溃相关的漏洞特征信息。此外,由于车载终端系统是定制化的android系统,有着针对性强、运作方式简单的特点,所以其性能往往不是很强,而漏洞触发过程取证模块在漏洞触发过程中获取到的信息量通常是非常大的,针对该问题,本发明实施例将漏洞触发过程取证模块获得的取证信息交由独立于车载终端系统的外部检测设备上的漏洞触发过程分析模块进行漏洞详细分析,从而能够同时提高待测android车载终端系统的性能和漏洞分析的性能,从而很好地解决了现有技术中无法平衡取证粒度与系统开销之间矛盾的问题。

进一步地,基于上述实施例的内容,在本实施例中,所述漏洞触发过程分析模块14,具体用于:

对设备日志进行分析获取系统日志和内核日志,并根据系统日志和内核日志获取漏洞触发特征和漏洞利用特征;

对执行过程指令序列进行分析获取漏洞触发约束条件和漏洞触发因果图;

对系统调用信息进行分析获取用户级api调用信息和内核级api调用信息,并根据用户级api调用信息和内核级api调用信息确定漏洞特征和漏洞所在模块。

在本实施例中,正如上面所述,漏洞触发过程分析模块14分别对漏洞触发过程中的指令序列、系统调用信息和设备日志进行分析,从而可以获得较为详细的漏洞信息。

在本实施例中,对于设备日志来说,本实施例对设备日志进行分析获取系统日志和内核日志,并根据系统日志和内核日志获取漏洞触发特征和漏洞利用特征。具体来说,由于设备日志记录了系统操作和消息事件,因此通过分析设备日志可以理解、整理操作系统的活动以及诊断相应问题。在本实施例中,设备日志可以包括系统日志和内核日志两种日志。对于系统日志来说,由于溢出攻击和竞争态攻击是漏洞利用中最常见的两个类型,这两种攻击常常通过大量的进程操作进行文件读写、socket操作,在频繁的操作中让使系统出现破绽,从而进行进一步的漏洞利用操作。这种攻击过程在系统日志中可以体现,例如,漏洞触发过程分析模块14通过对系统日志进行进程爆炸、高频率文件读写和socket通信扫描可以捕捉到漏洞触发的特征。对于内核日志来说,一般情况下,除了信息泄露和权限提升,拒绝服务也是常见的漏洞利用目的之一。当漏洞攻击通过内核崩溃法达到拒绝服务的目的时,难以从系统日志中获得足够的有效信息,这时就要取证内核日志。扫描内核日志中的活动信息和内核状态可以精确发现内核崩溃的信息,从而发现该漏洞利用的特征。由此可知,通过对设备日志中的系统日志和内核日志进行分析,可以获取漏洞触发特征以及漏洞利用特征。

在本实施例中,对于指令序列来说,本实施例对执行过程指令序列进行分析获取漏洞触发约束条件和漏洞触发因果图。具体来说,由于指令序列存在于系统内存中,因此,分析漏洞进程内存,获取内存执行过程中的指令序列,为不同类型的poc制定不同的iibug和iiexploit谓词,基于符号执行的形式化验证方法,分析漏洞触发约束条件,生成漏洞触发因果图。

在本实施例中,对于系统调用信息来说,本实施例对系统调用信息进行分析获取用户级api调用信息和内核级api调用信息,并根据用户级api调用信息和内核级api调用信息确定漏洞特征和漏洞所在模块。具体来说,系统调用信息即为api调用信息,漏洞利用程序与普通程序一样,都是通过函数调用实现各种功能。由于网络上许多漏洞描述不详细,系统中漏洞所处位置信息模糊,系统调用信息的取证可以帮助定位漏洞触发位置,获取漏洞详细信息。本实施例在系统调用信息方面关注以下两种:

a、用户级api调用

在漏洞验证程序poc运行时,例如,按漏洞类型hook特定api,其中包括androidapi、nativeapi,并根据调用时间先后构建api调用链,计算加权的漏洞特征值,再通过分析调用栈建立api调用森林,可以提供直观的漏洞利用api调用图。

b、内核级api调用

由于许多漏洞都出现在系统内核中的各种驱动程序中,而用户、漏洞利用者无权直接调用内核中的api,但可以通过各种方式触发漏洞,进而通过hook内核api,并过滤和溯源可发现漏洞所在模块,再通过调用栈分析可发现系统脆弱点。

由此可见,本实施例通过基于漏洞触发取证的方法实现车载终端系统的漏洞检测,不同于常见的漏洞检测方案,本实施例提出自动化的漏洞触发方式和取证分析方法,通过自动化测试,可以批量地检测系统中是否存在0day、1day和其他漏洞;通过取证分析,可以发现、描绘漏洞触发的特征、计算特定漏洞的api带权特征、定位漏洞所处模块、溯源漏洞存在位置;通过分析漏洞触发过程中的api调用,建立漏洞触发api森林,给用户提供多维、直观的漏洞检测报告。

进一步地,基于上述实施例的内容,在本实施例中,所述漏洞触发过程分析模块14在根据系统日志和内核日志获取漏洞触发特征和漏洞利用特征时,具体用于:

对系统日志进行进程爆炸、高频率文件读写和socket通信扫描以捕捉漏洞触发特征;

扫描内核日志中的活动信息和内核状态获取内核崩溃信息,并根据内核崩溃信息确定漏洞利用特征。

本实施例提供的漏洞触发过程分析模块14对系统日志进行进程爆炸、高频率文件读写和socket通信扫描以捕捉漏洞触发特征;此外,本实施例提供的漏洞触发过程分析模块14扫描内核日志中的活动信息和内核状态获取内核崩溃信息,并根据内核崩溃信息确定漏洞利用特征。需要说明的是,对于系统日志来说,由于溢出攻击和竞争态攻击是漏洞利用中最常见的两个类型,这两种攻击常常通过大量的进程操作进行文件读写、socket操作,在频繁的操作中让使系统出现破绽,从而进行进一步的漏洞利用操作。这种攻击过程在系统日志中可以体现,漏洞触发过程分析模块14通过对系统日志进行进程爆炸、高频率文件读写和socket通信扫描可以捕捉到漏洞触发的特征。对于内核日志来说,一般情况下,除了信息泄露和权限提升,拒绝服务也是常见的漏洞利用目的之一。当漏洞攻击通过内核崩溃法达到拒绝服务的目的时,难以从系统日志中获得足够的有效信息,这时就要取证内核日志。扫描内核日志中的活动信息和内核状态可以精确发现内核崩溃的信息,从而发现该漏洞利用的特征。由此可知,通过对设备日志中的系统日志和内核日志进行分析,可以获取漏洞触发特征以及漏洞利用特征。

进一步地,基于上述实施例的内容,在本实施例中,所述漏洞触发过程分析模块14在对执行过程指令序列进行分析获取漏洞触发约束条件和漏洞触发因果图时,具体用于:

对执行过程指令序列进行分析,为不同类型的漏洞验证程序制定不同的iibug和iiexploit谓词,基于符号执行的形式化验证方法,分析漏洞触发约束条件,生成漏洞触发因果图。

在本实施例中,由于指令序列存在于系统内存中,因此,分析漏洞进程内存,获取内存执行过程中的指令序列,为不同类型的poc制定不同的iibug和iiexploit谓词,基于符号执行的形式化验证方法,分析漏洞触发约束条件,生成漏洞触发因果图。

进一步地,基于上述实施例的内容,在本实施例中,所述漏洞触发过程分析模块14在根据用户级api调用信息和内核级api调用信息确定漏洞特征和漏洞所在模块时,具体用于:

根据用户级api调用信息,构建api调用链,计算加权的漏洞特征值,通过分析调用栈建立api调用森林;

根据内核级api调用信息,通过过滤和溯源确定漏洞所在模块,并通过调用栈分析确定系统脆弱点。

在本实施例中,系统调用信息即为api调用信息,漏洞利用程序与普通程序一样,都是通过函数调用实现各种功能。由于网络上许多漏洞描述不详细,系统中漏洞所处位置信息模糊,系统调用信息的取证可以帮助定位漏洞触发位置,获取漏洞详细信息。本实施例在系统调用信息方面关注用户级api调用和内核级api调用两方面api调用情况:

a、用户级api调用

在漏洞验证程序poc运行时,例如,按漏洞类型hook特定api,其中包括androidapi、nativeapi,并根据调用时间先后构建api调用链,计算加权的漏洞特征值,再通过分析调用栈建立api调用森林,可以提供直观的漏洞利用api调用图。

b、内核级api调用

由于许多漏洞都出现在系统内核中的各种驱动程序中,而用户、漏洞利用者无权直接调用内核中的api,但可以通过各种方式触发漏洞,进而通过hook内核api,并过滤和溯源可发现漏洞所在模块,再通过调用栈分析可发现系统脆弱点。

进一步地,基于上述实施例的内容,在本实施例中,所述漏洞验证脚本库中还存储第一映射表,所述第一映射表中存储有漏洞验证程序返回值与漏洞触发结果的对应关系;所述漏洞触发结果包括漏洞触发成功或漏洞触发失败;

相应地,所述漏洞触发自动化测试模块还用于在漏洞触发自动化测试结束后收集漏洞验证程序运行结果,根据所述漏洞验证程序运行结果查询所述第一映射表,确定相应漏洞是否触发成功。

在本实施例中,由于漏洞验证脚本库中存储有第一映射表,且第一映射表中存储有漏洞验证程序返回值与漏洞触发结果的对应关系;因此,漏洞触发自动化测试模块能够在漏洞触发自动化测试结束后,根据所述漏洞验证程序运行结果查询所述第一映射表,进而可以确定在本次漏洞检测过程中哪些漏洞被触发成功。

进一步地,基于上述实施例的内容,在本实施例中,针对android车载终端系统的漏洞检测系统,还包括:

车载终端系统漏洞检测结果展示模块,用于向用户展示漏洞检测报告,所述漏洞检测报告中包括漏洞触发结果、漏洞触发因果图和api调用森林。

在本实施例中,车载终端系统漏洞检测结果展示模块,可以以用户友好的视图向用户展示漏洞检测报告,报告中可以包括漏洞触发结果、漏洞触发因果图、系统api调用森林和其他相关信息。

下面结合图2和图3所示的系统架构图和漏洞触发取证检测流程示意图对本实施例提供的针对android车载终端系统的漏洞检测系统的工作过程给予详细说明。

如图2所示,本实施例的主要目的是开发一个基于漏洞触发过程取证的android车载终端系统漏洞检测工具,该工具可以检测已连接的android车载终端系统中存在的漏洞,并通过自动化的漏洞触发取证将检测结果报告给用户。总体工作流程如下:首先,从车载终端系统漏洞库中获取漏洞信息与poc脚本,再通过漏洞触发自动化测试模块进行poc自动化测试,在测试过程中进行漏洞触发取证,最后通过漏洞触发过程分析模块分析取证信息,最后生成报告,并向用户展示。以上流程由图2中所示的5个模块构成,分别是漏洞库模块、漏洞触发自动化测试模块、漏洞触发过程取证模块、漏洞触发过程分析模块和漏洞检测结果展示模块。

其中,对于漏洞库模块,其中包含漏洞信息库和漏洞验证脚本库:

对于漏洞信息库,可以从cve、cnnvd、cavd等标准漏洞库收集或自主挖掘车载终端系统相关漏洞,记录漏洞编号、漏洞评分、漏洞描述等信息建立漏洞信息库。在进行漏洞触发检测时先遍历该库,获取所有要检测的漏洞相关信息。

对于漏洞验证脚本库,从互联网收集或自主编写漏洞信息库中漏洞对应的poc(漏洞验证程序),通过人工阅读、修改代码将poc程序返回值与漏洞触发结果关联并标准化。将编译好的poc可执行文件和其执行结果信息录入漏洞验证脚本库,在进行漏洞触发检测时遍历漏洞信息库,获取漏洞信息,再从漏洞验证脚本库中检索出相应的漏洞poc,通过自动测试的方式注入系统中进行测试。

其中,对于漏洞自动化测试模块,执行如下过程:

在漏洞信息库和漏洞验证脚本库中获取漏洞信息和poc文件后,通过adb(androiddebugbridge)命令将poc文件传输到车载终端系统rom中,然后执行。执行结束后收集poc程序运行结果,通过于漏洞验证脚本库中的执行结果进行比对,确定漏洞是否触发成功。

其中,对于漏洞触发过程取证模块,执行如下过程:

在进行车载终端系统漏洞自动化测试时,对每一个poc的执行过程(即漏洞触发过程)进行监控,在漏洞触发时监控、收集相关数据,包括设备日志、执行过程指令序列、系统调用信息。

其中,对于漏洞触发过程分析模块,执行如下过程:

由于车载终端系统是定制化的android系统,有着针对性强、运作方式简单的特点,所以其性能往往不是很强,同时,在自动化检测过程中,通过漏洞触发过程取证模块获取到的信息量通常较大,所以,取证模块获得的信息交由车载终端系统漏洞触发过程分析模块进行详细分析。在本模块,分别对指令序列、系统调用信息、和设备日志进行分析。

其中,对于漏洞检测结果展示模块,执行如下过程:

以用户友好的视图向用户展示漏洞检测报告。报告中包括漏洞触发结果、漏洞触发因果图、系统api调用森林和其他相关信息。

如图3所示,基于漏洞触发过程取证的android车载终端系统漏洞检测主要处理步骤如下:

用户将待测android车载终端系统连接到检测设备,通常是一台pc设备。检测设备将取证工具安装至待测android车载终端系统上,用户通过检测设备发布任务,漏洞触发自动化测试模块运行,遍历漏洞库模块,依次将漏洞对应的poc通过adb通道push到车载终端rom中,然后执行,poc执行过程中,漏洞触发过程取证模块通过取证工具监控执行过程指令序列、系统日志和系统调用信息。poc执行结束后,取证模块将获取的信息和poc执行结果一起传递给检测设备,交由检测设备上的漏洞触发过程分析模块进行分析。

其中,漏洞触发过程分析模块解析取证工具获得的信息,其中包括设备日志、指令序列和系统调用信息。具体分析流程如下:

i、设备日志:设备日志记录了系统操作和消息事件,通过分析设备日志可以理解、整理操作系统的活动、诊断问题。取证中需要获取两种设备日志,分别是系统日志和内核日志。

①系统日志:溢出攻击和竞争态攻击是漏洞利用中最常见的两个类型,这两种攻击常常通过大量的进程操作进行文件读写、socket操作,在频繁的操作中让使系统出现破绽,从而做进一步漏洞利用操作。这种攻击过程在系统日志中可以体现,分析模块对系统日志进行进程爆炸、高频率文件读写和socket通信扫描可以捕捉到漏洞触发的特征。

②内核日志:除了信息泄露和权限提升,拒绝服务也是常见的漏洞利用目的之一。当漏洞攻击通过内核崩溃法达到拒绝服务的目的时,难以从系统日志中获得足够的有效信息,这时就要取证内核日志。扫描内核日志中的活动信息和内核状态可以精确发现内核崩溃的信息,从而发现该漏洞利用的特征。

ii、指令序列:

指令序列存在于系统内存中,分析漏洞进程内存,获取内存执行过程中的指令序列,为不同类型的poc制定不同的iibug和iiexploit谓词,基于符号执行的形式化验证方法,分析漏洞触发约束条件,生成漏洞触发因果图。

iii、系统调用信息:

系统调用信息即api调用信息,漏洞利用程序与普通程序一样,都是通过函数调用实现各种功能。由于网络上许多漏洞描述不详细,系统中漏洞所处位置信息模糊,系统调用信息的取证可以帮助我们定位漏洞触发位置,获取漏洞详细信息。本实施例在系统调用信息方面关注以下两种:

①用户级api调用

在poc运行时,按漏洞类型hook特定api,其中包括androidapi、nativeapi,并根据调用时间先后构建api调用链,计算加权的漏洞特征值。再通过分析调用栈建立api调用森林,提供直观的漏洞利用api调用图。

②内核级api调用

许多漏洞都出现在系统内核中的各种驱动程序中,用户或漏洞利用者无权直接调用内核中的api,但可以通过各种方式触发漏洞。例如,通过hook内核api,并过滤和溯源可发现漏洞所在模块,再通过调用栈分析可发现系统脆弱点。

由于漏洞触发过程分析从大量信息中获得了有效内容,因此交由漏洞检测结果展示模块生成报告,可以便于用户查阅和理解。

由此可见,本实施例通过基于漏洞触发取证的方法实现车载终端系统的漏洞检测。不同于常见的漏洞检测方案,本实施例提出自动化的漏洞触发方式和取证分析方法,通过自动化测试,可以批量地检测系统中是否存在0day、1day和其他漏洞;通过取证分析,可以发现、描绘漏洞触发的特征、计算特定漏洞的api带权特征、定位漏洞所处模块、溯源漏洞存在位置;通过分析漏洞触发过程中的api调用,建立漏洞触发api森林,给用户提供多维、直观的漏洞检测报告。由此可知,本实施例具有两个独特优势,一个是多维漏洞触发过程取证方案,另一个是全面、开销低的漏洞取证分析方案。根据漏洞触发取证模块可知,本实施例监控了漏洞触发过程中的设备日志、系统调用信息、指令序列,多维地获取漏洞触发过程中的系统活动信息。根据漏洞触发过程分析模块可知,本实施例通过分析漏洞触发过程中获取的多维信息,在检测设备上静态地扫描日志中的进程爆炸、高频文件读写与socket通信,针对不同类型漏洞定制化的约束条件分析、生成漏洞触发因果图,计算带权的漏洞特征值,剥离内核api与用户api并构建api调用链与api调用森林。分析方向与维度全面,静态分析保证车载终端系统开销小。

需要说明的是,本实施例提供的针对android车载终端系统的漏洞检测系统,适用于车载终端漏洞检测和研究工作,安全研究部门、车载终端系统研发部门、个人研究者均可以使用本实施例提供的针对android车载终端系统的漏洞检测系统检测车载终端系统安全性。例如,安全监管部门、车企和个人可以使用本实施例提供的针对android车载终端系统的漏洞检测系统,对车载终端进行自动化漏洞检测,从中查找出存在的风险。

图4示出了本发明实施例提供的针对android车载终端系统的漏洞检测方法流程图。如图4所示,本发明实施例提供的针对android车载终端系统的漏洞检测方法包括:

步骤101:启动漏洞触发自动化测试模块,使得漏洞触发自动化测试模块从漏洞信息库和漏洞验证脚本库中获取漏洞信息和相对应的漏洞验证程序后,通过adb命令将相应漏洞验证程序传输到待测android车载终端系统rom中,以在待测android车载终端系统rom中通过执行漏洞验证程序来执行漏洞触发自动化测试;

步骤102:启动漏洞触发过程取证模块,使得漏洞触发过程取证模块在所述漏洞触发自动化测试模块进行漏洞触发自动化测试时,对每一个漏洞验证程序的执行过程进行监控并获取漏洞触发过程中的监控数据,同时使得漏洞触发过程取证模块将获取的监控数据发送给漏洞触发过程分析模块;

步骤103:启动漏洞触发过程分析模块,使得漏洞触发过程分析模块在接收到所述漏洞触发过程取证模块发送的监控数据后,对监控数据中包含的设备日志、执行过程指令序列和系统调用信息进行分析,获取待测android车载终端系统中被触发的漏洞的细节信息。

由于本实施例提供的针对android车载终端系统的漏洞检测方法,可以采用上述实施例所述的针对android车载终端系统的漏洞检测系统实现,其工作原理和有益效果类似,具体内容可参见上述实施例的介绍,此处不再详述。

此外,上述的存储器中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的入侵防御处理方法。

此外,在本发明中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

此外,在本发明中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1