一种安全漏洞检测的方法以及装置与流程

文档序号:11216776阅读:1387来源:国知局
一种安全漏洞检测的方法以及装置与流程

本发明涉及应用程序测试领域,尤其涉及一种安全漏洞检测的方法以及装置。



背景技术:

随着移动互联网与智能手机的普及,移动客户端应用安全正变得越来越重要,苹果研发操作系统(英文全称:iphoneoperationsystem,英文缩写:ios)目前将近占据了国内智能手机操作系统的30%的份额,一般而言,ios应用的安全性高于安卓应用,但是很多ios用户会使用越狱工具来获取手机的最高权限,这将导致一系列安全问题。

目前业界研究ios应用漏洞审计的工具主要由开放安全(英文全称:opensecurity)公司开发的开源应用程序(英文全称:application,英文缩写:app)安全审计框架(英文全称:mobilesecurityframework,英文缩写:mobsf),这个框架提供了ios在线上传和审计的功能,输出的报告内容包含了ios应用信息,应用代码分析,应用文件分析内容等,可直接点击报告中的文件列表来查看苹果程序应用文件(英文全称:iphoneapplication,英文缩写:ipa)包的文件内容。

然而通过现有的安全审计框架无法检测到ios应用运行中生成的数据文件安全性,而在实际应用中,ios应用会在运行过程中生成不安全的数据文件,这些不安全的数据文件将构成对用户信息安全的威胁。



技术实现要素:

本发明实施例提供了一种安全漏洞检测的方法以及装置,可以在应用程序运行的过程中对生成的数据文件进行漏洞检测,从而极大地减小了不安全的数据文件对用户信息安全所构成的威胁,提升了方案的安全性和实用性。

有鉴于此,本发明第一方面提供一种安全漏洞检测的方法,包括:

服务器确定待检测应用程序;

所述服务器将所述待检测应用程序安装至与所述服务器相连的检测终端,使得所述检测终端运行所述待检测应用程序;

所述服务器获取所述待检测应用程序在运行过程中产生的数据文件;

所述服务器从所述应用程序的数据文件中提取目标关键信息;

所述服务器判断所述目标关键信息是否满足预置的漏洞确认条件,若是,则所述服务器确定所述待检测应用程序存在安全漏洞。

第二方面,本方面实施例还提供一种服务器,包括:

确定模块,用于确定待检测应用程序;

安装模块,用于将所述确定模块确定的所述待检测应用程序安装至与所述服务器相连的检测终端,使得所述检测终端运行所述待检测应用程序;

获取模块,用于所述安装模块将所述待检测应用程序安装至与所述服务器相连的检测终端之后,获取所述待检测应用程序在运行过程中产生的数据文件;

提取模块,用于从所述获取模块获取的所述应用程序的数据文件中提取目标关键信息;

判断模块,用于判断所述提取模块提取的所述目标关键信息是否满足预置的漏洞确认条件,若是,则所述服务器确定所述待检测应用程序存在安全漏洞。

第三方面,本方面实施例还提供一种服务器,包括:输入装置、输出装置、存储器和处理器;

所述处理器用于执行所述存储器中的程序,具体如下步骤:

确定待检测应用程序;

将所述待检测应用程序安装至与所述服务器相连的检测终端,使得所述检测终端运行所述待检测应用程序;

控制所述输入模块获取所述待检测应用程序在运行过程中产生的数据文件;

从所述应用程序的数据文件中提取目标关键信息;

判断所述目标关键信息是否满足预置的漏洞确认条件,若是,则所述服务器确定所述待检测应用程序存在安全漏洞。

从以上技术方案可以看出,本发明实施例具有以下优点:

本发明实施例中,提供了一种安全漏洞检测的方法,该方法主要应用于ios中,服务器确定待检测应用程序,再将待检测应用程序安装至与服务器相连的检测终端,使得检测终端运行待检测应用程序,然后获取待检测应用程序在运行过程中产生的数据文件,接着从应用程序的数据文件中提取目标关键信息,最后判断目标关键信息是否满足预置的漏洞确认条件,若是,则服务器确定待检测应用程序存在安全漏洞。通过上述方法进行安全漏洞的检测,可以在应用程序运行的过程中对生成的数据文件进行漏洞检测,从而极大地减小了不安全的数据文件对用户信息安全所构成的威胁,提升了方案的安全性和实用性。

附图说明

图1为本发明实施例中安全漏洞检测的方法一个实施例示意图;

图2为本发明实施例中安全漏洞检测的审计架构示意图;

图3为本发明实施例中数据文件安全检测的流程示意图;

图4为本发明实施例中网络传输安全检测的流程示意图;

图5为本发明实施例中安全漏洞检测的方法另一个实施例示意图;

图6为本发明实施例中静态安全检测的流程示意图;

图7为本发明实施例中自定义安全漏洞检测方法的流程示意图;

图8为本发明实施例中安全漏洞检测的整体审计架构示意图;

图9a为本发明应用场景中应用程序审计报告的代码分析示意图;

图9b为本发明应用场景中应用程序审计报告的数据安全分析示意图;

图9c为本发明应用场景中应用程序审计报告的网络安全分析示意图;

图9d为本发明应用场景中应用程序审计报告的开放端口分析示意图;

图9e为本发明应用场景中应用程序审计报告的其他内容分析示意图;

图9f为本发明应用场景中应用程序审计报告的自定义分析示意图;

图10为本发明实施例中服务器一个实施例示意图;

图11为本发明实施例中服务器另一个实施例示意图;

图12为本发明实施例中服务器另一个实施例示意图;

图13为本发明实施例中服务器另一个实施例示意图;

图14为本发明实施例中服务器另一个实施例示意图;

图15为本发明实施例中服务器另一个实施例示意图;

图16为本发明实施例中服务器的一个结构示意图。

具体实施方式

本发明实施例提供了一种安全漏洞检测的方法以及装置,用于在应用程序运行的过程中对生成的数据文件进行漏洞检测,从而极大地减小了不安全的数据文件对用户信息安全所构成的威胁,提升了方案的安全性和实用性。

本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

应理解,本发明实施例可以应用于ios,ios是由苹果公司开发的操作系统,它主要是给苹果手机(英文全称:iphone)、苹果多媒体播放设备(英文全称:ipodtouch)以及苹果平板电脑(英文全称:ipad)使用。ios的系统架构分为四个层次:核心操作系统层、核心服务层、媒体层和可轻触层。ios是安全性非常高的系统,从打开设备的那一刻起,ios就能提供内置的安全性。ios专门设计了低层级的硬件和固件功能,用以防止恶意软件和病毒,同时还设计有高层级的源代码开放(英文全称:opensource,英文缩写:os)功能,有助于在访问个人信息和企业数据时确保安全性。为了保护用户的隐私,从日历、通讯录、提醒事项和照片获取位置信息的应用程序(英文全称:application,英文缩写:app)必须先获得用户的许可。用户还可以设置密码锁,以防止有人未经授权访问设备,并进行相关配置,允许设备在多次尝试输入密码失败后删除所有数据。该密码还会为存储的邮件自动加密和提供保 护,并能允许第三方app为其存储的数据加密。ios支持加密网络通信,它可供app用于保护传输过程中的敏感信息。

然而,虽然ios具有如此多的安全性功能,但是许多用户依旧会通过使用“越狱”工具来获取设备的最高权限,“越狱”就是破解系统,破解之后就能免费安装苹果软件商店里的收费app,还能安装在苹果软件商店里被禁止的一些涉及到系统底层的app。

在这样的一个环境下,对于用户在“越狱”后的设备上安装app时,就需要有安全漏洞的检测方式,以保证用户信息的安全。

请参阅图1,本发明实施例中安全漏洞检测的方法一个实施例包括:

101、服务器确定待检测应用程序;

本实施例中,用户可以通过终端设备向服务器发起应用程序的检测指令,服务器能够根据检测指令,确定待检测的应用程序。

如果是在ios的环境下检测应用程序,那么这类应用程序是苹果应用程序文件(英文全称:iphoneapplication,英文缩写:ipa),ipa可安装于使用ios的设备中。而检测应用程序的目的是为了检测安全漏洞,并测试在硬件、软件和协议的具体实现,或系统安全策略上是否存在的缺陷,从而防止攻击者在未授权的情况下访问或破坏系统。安全漏洞是受限制的计算机、组件、应用程序或其他联机资源的无意中留下的不受保护的入口点。

102、服务器将待检测应用程序安装至与服务器相连的检测终端,使得检测终端运行待检测应用程序;

本实施例中,服务器确定了待检测的应用程序后,将该待检测应用程序安装至与该服务器相连的检测终端,检测终端会运行待检测应用程序,

如果是在ios的环境下检测应用程序,那么检测终端就可以是一台经过越狱后的ios设备,例如越狱后的iphone或者ipad,因为越狱后的苹果设备能够获取苹果公司ios的最高权限,用户使用越狱这种技术及软件可以获取到ios的最高权限。

103、服务器获取待检测应用程序在运行过程中产生的数据文件;

本实施例中,服务器可以获取待检测应用程序在运行过程中产生的数据文件,从而实现动态安全漏洞检测过程的自动化。其中,数据文件通常是为 应用程序的配置文件或者是数据存储文件。

104、服务器从应用程序的数据文件中提取目标关键信息;

本实施例中,服务器获取了待检测应用程序在运行过程中生成的数据文件后,再从应用程序的数据文件中提取目标关键信息,目标关键信息是用于确定应用程序是否有安全漏洞的一个重要信息。

105、服务器判断目标关键信息是否满足预置的漏洞确认条件,若是,则服务器确定待检测应用程序存在安全漏洞。

本实施例中,服务器进而判断目标关键信息是否满足预置的漏洞确认条件,如果目标关键信息满足预置的漏洞确认条件,那么服务器就确定待检测应用程序确实存在安全漏洞。

为了便于更好地理解如何实现动态安全漏洞检测,还可以参考一种具体的安全漏洞检测的审计架构,请参阅图2,图2为本发明实施例中安全漏洞检测的审计架构示意图,系统专门编写了一个提供基础功能支持的自动化审计接口,包括了基于移动设备第三方库(英文全称:libimobiledevice)实现的app安装与卸载,以及应用截屏功能的实现,其中,libimobiledevice库主要用于第三方访问ios设备的接口封装。还有使用安全外壳协议(英文全称:secureshell,英文缩写:ssh)进行连接,以实现文件的上传和下载,执行ios系统命令等功能。此外,自动化审计接口还封装了一些常用接口,例如有应用日志(英文全称:log)的获取,动态生成文件的拉取,和类转储(英文全称:classdump)等功能,由此便于检测时调用。

本发明实施例中,提供了一种安全漏洞检测的方法,该方法主要应用于ios中,服务器确定待检测应用程序,再将待检测应用程序安装至与服务器相连的检测终端,使得检测终端运行待检测应用程序,然后获取待检测应用程序在运行过程中产生的数据文件,接着从应用程序的数据文件中提取目标关键信息,最后判断目标关键信息是否满足预置的漏洞确认条件,若是,则服务器确定待检测应用程序存在安全漏洞。通过上述方法进行安全漏洞的检测,可以在应用程序运行的过程中对生成的数据文件进行漏洞检测,从而极大地减小了不安全的数据文件对用户信息安全所构成的威胁,提升了方案的安全性和实用性。

为了便于介绍,下面将针对目标关键信息中所携带的不同信息分别进行描述,下面将从服务器的角度对本发明实施例中安全漏洞检测的方法进行描述:

一、目标关键信息包括目标关键字;

可选地,在上述图1对应的实施例的基础上,本发明实施例提供的安全漏洞检测的方法第一个可选实施例中,目标关键信息包括目标关键字;

服务器判断目标关键信息是否满足预置的漏洞确认条件,可以包括:

服务器将目标关键字与预存储的关键字进行比对;

若目标关键字与预存储的关键字一致,则服务器确定目标关键信息满足漏洞确认条件。

本实施例中,将介绍一种数据文件安全检测的方法,通过该方法可以分析与处理用于应用程序中的数据文件,检测明文传输或者存储敏感数据的漏洞,以及数据文件未保护缺点。服务器采用关键字检测方法对数据文件中存储的明文敏感信息进行检测,具体可以是通过文本搜索命令(英文全称:grep)对数据文件进行遍历查找是否存在指定的关键字。

具体为,服务器在遍历应用程序中的所有数据文件,当得到一个目标关键字“age.”时,则与预存储在服务器后台的关键字进行比对,且当比对得到服务器后台的关键字中也正有“age.”时,则服务器确定目标关键信息是敏感信息,并满足漏洞确认条件。

需要说明的是,应用程序中的数据文件可以是指采用以下后缀的文件:例如.plist,或者.db,或者.xml,或者.txt,或者.sqlite3,也可以是应用程序的配置文件,或者是数据存储文件,故此处不对数据文件的具体内容进行限定。

其次,本发明实施例中,将目标关键信息设定为是目标关键字,于是本方案的一种具体实现方式可是为,服务器将目标关键字与预存储的关键字进行比对,若目标关键字与预存储的关键字一致,则确定目标关键信息满足漏洞确认条件,从而找出应用程序的安全漏洞。通过上述方法对应用程序的数据文件中存储的明文敏感信息进行检测,不但可以清楚地通过明文信息确实是否存在安全漏洞,还可以通过简单的比对方式来实现,使得方案更加的容易操作,提升方案的实用性和可行性。

二、目标关键信息包括文件保护级别;

可选地,在上述图1对应的实施例的基础上,本发明实施例提供的安全漏洞检测的方法第二个可选实施例中,目标关键信息包括文件保护级别;

服务器判断目标关键信息是否满足预置的漏洞确认条件,可以包括:

服务器判断文件保护级别是否低于预置级别;

若文件保护级别低于预置级别,则服务器确定目标关键信息满足漏洞确认条件。

本实施例中,将介绍另一种数据文件安全检测的方法,当目标关键信息为数据文件的文件保护级别时,服务器首先获取各个数据文件对应的文件保护级别,再判断文件保护级别是否低于预置级别,如果低于了预置级别,那么服务器就可以确定目标关键信息满足漏洞确认条件,换言之,即确定当前的应用程序可能存在安全漏洞。

具体为,可以使用保护类查看器(英文全称:protectionclassviewer)对数据文件的文件保护级别进行检测,当文件保护级别为无保护网络仿真文件(英文全称:networksimulatorfileprotectionnone,英文缩写:nsfileprotectionnone)时,则表示文件未使用安全的应用程序编程接口(英文全称:applicationprogramminginterface,英文缩写:api)进行保护,在越狱的情况下,数据文件随时可以被访问,存在着信息泄露的风险。当文件保护级别为完成保护网络仿真文件(英文全称:networksimulatorfileprotectioncomplete,英文缩写:nsfileprotectioncomplete)或更高的级别时,则数据文件受到保护,无法被访问。

为了便于理解,请参阅图3,图3为本发明实施例中数据文件安全检测的流程示意图,如图所示,首先用户操作ios的应用程序,此时可以进入数据文件的动态检测,在服务器器中的数据审计模块将下载该ipa的所有文件到本地,并过滤提取数据文件的列表,也就是说从所有的文件中找到应用程序的配置文件,或者是数据存储文件等,制成列表的格式进行检测。服务器将针对每个数据文件的文件保护级别做检测,具体为判断文件保护级别是否为nsfileprotectionnone,若是,则可能存在安全漏洞,可以对nsfileprotectionnone的数据文件做记录。服务器也可以读取数据文件里所包含的内容,具体 为检测数据文件中是否存在了绑定特征,该绑定特征可以是目标关键字,若存在,则可能存在安全漏洞,可以对存在绑定特征的数据文件做记录,最后根据所有安全漏洞记录过的内容,输出对应的数据文件安全检测结果。

其次,本发明实施例中,将目标关键信息设定为是文件保护级别,于是本方案的另一种具体实现方式可是为,服务器判断文件保护级别是否低于预置级别,若文件保护级别低于预置级别,则确定目标关键信息满足漏洞确认条件。通过上述方法先获取应用程序中数据文件的文件保护级别,如果文件保护级别没有达到预置级别,就可以对该数据文件进行修改,相反地,达到预置级别的数据文件就不能被轻易更改,从而更具有安全性,使得安全漏洞的检测条件有了另一种实现方式,以此提升方案的实用性和灵活性。

三、目标关键信息包括用户隐私数据;

可选地,在上述图1对应的实施例的基础上,本发明实施例提供的安全漏洞检测的方法第三个可选实施例中,目标关键信息包括用户隐私数据;

服务器判断目标关键信息是否满足预置的漏洞确认条件,可以包括:

服务器判断用户隐私数据与预置数据库中隐私数据是否匹配;

若用户隐私数据与预置数据库中隐私数据不匹配,则服务器确定目标关键信息满足漏洞确认条件。

本实施例中,将介绍一种网络传输安全检测的方法,网络传安全检测主要用于分析和处理应用程序在运行过程中生成的网络请求,可以检测明文传输敏感信息。当目标关键信息为用户隐私数据,服务器判断用户隐私数据与预置数据库中隐私数据是否匹配,若用户隐私数据与预置数据库中隐私数据不匹配,则服务器确定目标关键信息满足漏洞确认条件。

具体为,服务器获取应用程序发起的所有网络请求,网络请求中就包含了用户的用户隐私数据,例如用户名、密码、手机号码或邮箱地址等隐私数据,这些隐私数据可以通过超文本传送协议(英文全称:hypertexttransferprotocol,英文缩写:http)进行明文传输。假设服务器从网络请求中获取到了用户名“peter123”,则需要判断该用户名是否与预置数据库中的隐私数据匹配,如果预置数据库中的用户名也有“peter123”,可以认为匹配成功,否则服务器确定用户隐私数据满足漏洞确认条件,且该应用程序可能存在安全 漏洞。

为了便于理解,请参阅图4,图4为本发明实施例中网络传输安全检测的流程示意图,如图所示,首先用户操作ios的应用程序,此时可以进入网络传输的动态检测,服务器通过钩子函数获取应用程序的网络请求,网络请求可以是发送邮件或者好友申请等请求,根据网络请求将网络请求对应的代码输出至系统日志,服务器通过解析系统日志中的网络请求来匹配该网络请求中的特征,并输出相应的网络传输安全检测结果。

其次,本发明实施例中,将目标关键信息设定为用户隐私数据,于是本方案的另一种具体实现方式可是为,服务器判断用户隐私数据与预置数据库中隐私数据是否匹配,若用户隐私数据与预置数据库中隐私数据不匹配,则确定目标关键信息满足漏洞确认条件。通过上述方法可以在网络传输的过程中避免用户的隐私数据遭到恶意截获,同时可以使得用户及时发现上述情况,并给予相应的处理,从而提升了方案的安全性,以及更好地保护了用户的隐私数据,增强用户体验。

可选地,在上述图1对应的第三个实施例的基础上,本发明实施例提供的安全漏洞检测的方法第四个可选实施例中,服务器判断用户隐私数据与预置数据库中隐私数据是否匹配之前,还可以包括:

服务器通过钩子函数hook获取待检测应用程序在运行过程中产生的网络请求;

服务器从应用程序的网络请求中提取用户隐私数据。

本实施例中,服务器可以通过钩子函数(英文全称:hookfunction,英文缩写:hook)获取应用程序发送的所有网络请求,然后在系统日志里打印出来,利用脚本去读取系统日志提取应用程序的网络请求中的用户隐私数据,最后进行数据的特征匹配,当匹配到有例如“username”、“password”或“email”等用户隐私数据时,则输出存在风险的安全提示。

具体地,可以通过一个简单的应用程序登录请求在系统日志中的示例来理解本实施例中,请参阅如下程序段:

以上应用程序在登录过程明文传输了用户名和密码,当用户处于不安全的网络环境中,就容易受到中间人的攻击,从而导致敏感信息泄露,因此,需要通过比对这些敏感信息来确定应用程序是否处于一个安全的运行环境。

再次,本发明实施例中,服务器在判断用户隐私数据与预置数据库中隐私数据是否匹配之前,还可以通过hook获取待检测应用程序在运行过程中产生的网络请求,再从应用程序的网络请求中提取用户隐私数据。以此说明了一种具体的解决方式,从而提升了方案的实用性。

请参阅图5,本发明实施例中安全漏洞检测的方法另一个实施例包括:

201、服务器确定待检测应用程序;

本实施例中,服务器根据应用程序被触发时生成的指令,确定待检测的应用程序。

202、服务器将待检测应用程序安装至与服务器相连的检测终端,使得检测终端运行待检测应用程序;

本实施例中,服务器确定了待检测的应用程序后,将该待检测应用程序安装至与该服务器相连的检测终端,检测终端会运行待检测应用程序,

203、服务器获取待检测应用程序在运行过程中产生的数据文件;

本实施例中,服务器获取待检测应用程序在运行过程中生成的数据文件,其过程与上述图1对应的实施例中步骤103类似,故此处不作赘述。

204、服务器从应用程序的数据文件中提取目标关键信息;

本实施例中,服务器获取了待检测应用程序在运行过程中生成的数据文件后,再从应用程序的数据文件中提取目标关键信息,其中,目标关键信息可以是目标关键字、文件保护级别和用户隐私数据中的至少一项。

205、服务器根据第一预置检测内容服务器判断目标关键信息是否满足预置的漏洞确认条件,其中,第一预置检测内容为自定义配置的应用程序的漏洞确认规则。

本实施例中,服务器预先存储了至少一种预置检测内容,预置检测内容用于告知服务器在检测安全漏洞时应遵循的规则,例如,只进行数据文件的安全漏洞检测,或者只进行网络传输的安全漏洞检测,或者两者都进行,当然,在实际应用中,除了这两种动态检测安全漏洞的方式以外,还可以通过设置其他的预置检测内容来丰富其检测内容,此处不作限定。

当服务器选择了第一预置检测内容作为检测安全漏洞的规则时,则服务器根据第一预置检测内容服务器判断目标关键信息是否满足预置的漏洞确认条件,第一预置检测内容即为自定义配置的应用程序的动态漏洞确认规则,如果目标关键信息满足预置的漏洞确认条件,那么服务器就确定待检测应用程序确实存在安全漏洞。

再次,本发明实施例中,服务器可以根据第一预置检测内容服务器判断目标关键信息是否满足预置的漏洞确认条件,其中,第一预置检测内容是用户自定义配置的应用程序漏洞确认规则,由此,用户不但可以根据实际情况修改应用程序漏洞确认的规则,以提升方案的实际运行效率,还可以根据需要增添或者删除一些漏洞确认的规则,对某些安全性较低的应用程序可以增添更多的检测规则,而对某些安全性较高的应用程序可以删除一些功能性不强的检测规则,从而增加方案的实用性和灵活性。

可选地,在上述图1以及图1对应的第一至第四个中任一项实施例的基础上,本发明实施例提供的安全漏洞检测的方法第五个可选实施例中,服务器获取待检测应用程序在运行过程中产生的数据文件之前,还可以包括:

服务器获取待检测应用程序的二进制文件;

服务器通过预设命令获取二进制文件的目标文件信息;

服务器判断目标文件信息是否满足预置的漏洞确认条件,若是,则服务 器确定待检测应用程序存在安全漏洞。

本实施例中,服务器获取待检测应用程序在运行过程中产生的数据文件,可以理解为是运行过程中进行的动态检测,然而在实际应用中,也可以在动态检测之前进行静态检测,需要说明的是,静态检测的发生时间可以是在动态检测之前,也可以是在动态检测之后,还可以是与动态检测同时进行,此处不作限定。

具体地,服务器先获取待检测应用程序的二进制文件(英文全称:binary,英文缩写:bin),二进制文件的用途依系统或应用而定。其后缀为“.bin”,bin有多种含义,包括虚拟光驱格式.bin,用于科研计算的数据格式为bin格式。另外文件传输协议(英文全称:filetransferprotocol,英文缩写:ftp)在传送文件时也有bin这种格式,其他的通常使用bin格式,例如图像文件、压缩文件或者可执行文件等。

服务器通过预设命令获取bin文件的目标文件信息,其中,预设命令可以是otool命令、string命令或xxd命令等,otool命令主要用于otool查看程序依赖哪些动态库信息,反编代码段,string命令主要用于操作字符串,xxd命令主要用于用二进制或十六进制显示文件的内容,因此服务器可以通过不同的命令获取bin文件的不同信息,这些信息称为目标文件信息,包括bin文件的头部信息、加载命令、段、链接信息、字符串以及汇编代码等信息,最后,服务器再判断这些目标文件信息是否满足预置的漏洞确认条件,即根据目标文件信息的特征与预置的文件信息的漏洞特征进行匹配和对比,如果匹配上了,说明待检测应用程序存在着安全漏洞。

为了便于理解,请参阅图6,图6为本发明实施例中静态安全检测的流程示意图,如图所示,首先上传ipa的文件,此时可以进入安全漏洞的静态检测,服务器解压缩ipa文件,并通过读取info.plist文件获取相应的应用信息。再采用otool命令反编译bin文件信息,具体操作可以包括检测加密缺陷,检测不安全随机数和检测不安全编译。服务器还需对bin文件汇编代码进行分析,具体操作可以是通过特征与常见漏洞特征进行匹配来检测。采用string提取bin文件字符串,具体操作可以是通过第三方库进行检测,匹配字符串与第三方库中存储的字符串是否一致来进行检测,最后,服务器还可以采用现有 技术对私有api进行检测,故此处不作赘述。

进一步地,本发明实施例中,服务器不但进行动态安全漏洞的检测,而且还能够进一步地进行静态安全漏洞的检测。实现方式可以为,服务器获取待检测应用程序的二进制文件,并通过预设命令获取二进制文件的目标文件信息,最后判断目标文件信息是否满足预置的漏洞确认条件,若是,则确定待检测应用程序存在安全漏洞。通过上述具体的实现方式,为本发明提供了更为安全且全面的检测方案,有利于提升安全漏洞的可靠性和实用性。

可选地,在上述图1以及图1对应的第一至第五个中任一项实施例的基础上,本发明实施例提供的安全漏洞检测的方法第六个可选实施例中,服务器判断目标文件信息是否满足预置的漏洞检测条件,可以包括:

服务器根据第二预置检测内容判断目标文件信息是否满足预置的漏洞确认条件,其中,第二预置检测内容为自定义配置的应用程序的动态漏洞确认规则。

本实施例中,服务器在对待检测应用程序做静态安全漏洞检测的时候,仍然可以根据预置的规则来操作,假设确定采用预置检测规则中的第二预置检测内容,则服务器根据第二预置检测内容判断目标文件信息是否满足预置的漏洞确认条件,其中,第二预置检测内容为自定义配置的应用程序的动态漏洞确认规则。

具体地,自定义配置检测规则主要用于扩展已有的检测规则,可以通过修改一个直译式脚本语言对象表示法(英文全称:javascriptobjectnotation,英文缩写:json)格式的文件,来实现自定义检测规则的配置,当系统启动时,会事先匹配配置文件中的漏洞检测规则,

其中,为了便于理解,请参阅下面的示例,通过下面的程序可以实现漏洞检测规则的配置,程序如下:

而采用本实施例中的方法配置漏洞检测规则的流程可以参考图7,图7为本发明实施例中自定义安全漏洞检测方法的流程示意图。首先,需要将审计系统做初始化处理,然后加载json文件,并通过json文件来配置自定义检测规则,其中,自定义检测规则可以包括bin文件的分析,文本文件的分析,数据库中文件的分析,网络请求的分析符合指定端口的检测,最后服务器将这个五种检测的结果进行汇总,并输出相应的检测报告。

需要说明的是,这五种自定义检测规则仅仅为一个示意,在实际应用中还可以合理的增加其他的检测规则,或者减少图中的一部分检测内容,此处不作限定。

更进一步地,本发明实施例中,针对静态安全漏洞的检测也可以通过自定义的方式来实现,用户可以通过扩展已有的检测规则来使的服务器完成相应的静态安全漏洞检测内容,也可以配置其他的检测规则以完成相应的检测内容,优化其检测能力,提升方案的实用性和可靠性。随着漏洞检测规则的更新与扩展,我们可以实现对增加新漏洞的发现能能力,优化已有的检测规则。

上述各个实施例的基础上,我们可以得出一个具体的审计框架,该审计框架仅仅为一个示意,并非对本发明方案的限定,请参阅图8,图8为本发明实施例中安全漏洞检测的整体审计架构示意图,本审计架构主要基于python语音和django框架开发,用户只需要在网站中上传需要检测的ipa安装包,服务器系统就会自动对该ipa进行安全检测,最终输出检测结果,同时用户可以上传多个应用程序进行批量检测,还可以自定义审计的内容,如,只进行静态分析或者私有api检测等,相比完整检测流程,检测速度更快。最后所有检测结果可以直接查看导出,或者批量删除。采用图8对应的审计架构, 可以检测以下三个主要项目,分别是:

(1)bin文件分析,包括有不安全编译风险的分析;不安全随机函数的分析;加密算法的分析;xcodeghost病毒加测;ibackdoor后门检测;youmi恶意软件开发包检测;afnetworking数据库的安全套接层(英文全称:securesocketslayer,英文缩写:ssl)中间人漏洞;第三方库检测;私有api检测;

(2)数据文件安全分析:不安全文件保护级别;文件明文存储敏感信息;

(3)网络传输安全分析:网络明文传输敏感信息。

为便于理解,下面以一个具体应用场景对本发明中一种安全漏洞检测的方法进行详细描述,具体为:

自2015年以来,随着ios上常用的第三方网络访问库afnetworking发生中间人漏洞,手机病毒xcodeghost的出现,以及在任意的传输控制协议(英文全称:transmissioncontrolprotocol,英文缩写:tcp)端口开启后门的ibackdoor安全事件的曝光等,曾经看起来似乎ios应用安全问题也逐渐受到关注。于是我们采用本发明方案中动态加静态的安全漏洞检测方案。以迅雷的ios版本审计报告为例进行说明。

在前端界面上显示了迅雷的基本文件信息,其中,基本文件信息中包括文件名称,例如为迅雷-5.9(越狱应用).ipa;应用名,例如为迅雷;数据包名,例如com.xunlei.ithunder;应用版本,例如为5.9.1.2268,文件大小,例如为38.53兆,多维标度分析,例如为14b328cfa07a80bd50c1836dfa326d;漏洞数目,例如4个;安全评级,例如危险;检测时间,例如2016/2/2215:39:49。

上述为前端显示界面所显示的内容,那么下面将具体针对迅雷中的各项检测信息进行分析。

请参阅图9a,图9a为本发明应用场景中应用程序审计报告的代码分析示意图,从图9a中得知,在检测项目为“不安全随机函数”中存在风险,且显示漏洞详情为,“若程序使用伪随机数进行加密可能导致被暴力破解,建议使用苹果的安全随机函数secrandomcopybytes,经检测发现程序使用以下不安全随机函数,random和srand”。此外,在检测项目为“afnetworkingssl中间人漏洞”中发现高危漏洞,具体为,“程序使用低版本第三方库afnetworking<v2.5.3,存在ssl中间人攻击的风险,可能导致网络传输的敏 感信息泄露,请尽快升级到2.5.3或其以上的版本”。

请参阅图9b,图9b为本发明应用场景中应用程序审计报告的数据安全分析示意图,从图9b中得知,在数据安全审计中存在多个检测项目,而检测方式主要是通过判断每个检测的文件是否为nsfileprotectionnone的文件等级,如果是,则表示该文件安全,反之,则可能存在风险。检测项目中的待检测文件可以是这几种类型:后缀名为.txt的文件,后缀名为.plist的文件,后缀名为.xml的文件。

请参阅图9c,图9c为本发明应用场景中应用程序审计报告的网络安全分析示意图,从图9c中得知,在网络安全审计中分别对网络请求进行检测,其中,get是指从服务器上获取数据,post是指向服务器传输数据。根据审计报告的内容可知,未通过网络请求检测到ssl中间人攻击漏洞。

请参阅图9d,图9d为本发明应用场景中应用程序审计报告的开放端口分析示意图,从图9d中得知,检测的内容还包括了开放端口的审计,迅雷开启了多个进程,进程名为ithunder,所有进程均通过tcp进行数据传输,其中,tcp连接状态显示为established时,标识打开一个连接,tcp连接状态显示为listen时,标识侦听来自远方的tcp端口的连接请求。

请参阅图9e,图9e为本发明应用场景中应用程序审计报告的其他内容分析示意图,从图9e中得知,审计报告中的其他内容可以包括app日志审计,即下载app运行日志,查看classdump文件,以及进行私有api检测。其中,在私有api检测中发现了4个疑似私有api的业务。

请参阅图9f,图9f为本发明应用场景中应用程序审计报告的自定义分析示意图,从图9f中得知,为了便于检测安全漏洞的全面性,用户还可以自定义审计,自定义审计的检测项目可以是微信公众好密钥泄露,本地存储密码漏洞,数据库明文存储和明文传输密码的检测,针对该迅雷软件,得到其微信公众号密码泄露。

至此,整个安全漏洞审计的报告生成,用户可以通过查看报告来得知应用程序是否存在安全漏洞,以及安全漏洞的具体内容。解决了传统ios应用漏洞检测系统无法检测应用动态生成的数据与网络请求问题,并拥有可扩展的自定义审计功能与私有api检测功能,经测试相比传统工具拥有更高的准 确率。本系统可用于ios应用安全测试及ios应用提交苹果应用商店审核前的自查,能够有效提升ios应用安全性与审核通过率。

下面对本发明中的服务器进行详细描述,请参阅图10,本发明实施例中的服务器40包括:

确定模块401,用于确定待检测应用程序;

安装模块402,用于将所述确定模块401确定的所述待检测应用程序安装至与所述服务器相连的检测终端,使得所述检测终端运行所述待检测应用程序;

获取模块403,用于所述安装模块402将所述待检测应用程序安装至与所述服务器相连的检测终端之后,获取所述待检测应用程序在运行过程中产生的数据文件;

提取模块404,用于从所述获取模块403获取的所述应用程序的数据文件中提取目标关键信息;

判断模块405,用于判断所述提取模块404提取的所述目标关键信息是否满足预置的漏洞确认条件,若是,则所述服务器确定所述待检测应用程序存在安全漏洞。

本实施例中,确定模块401确定待检测应用程序,安装模块402将所述确定模块401确定的所述待检测应用程序安装至与所述服务器相连的检测终端,使得所述检测终端运行所述待检测应用程序,所述安装模块402将所述待检测应用程序安装至与所述服务器相连的检测终端之后,获取模块403获取所述待检测应用程序在运行过程中产生的数据文件,提取模块404从所述获取模块403获取的所述应用程序的数据文件中提取目标关键信息,判断模块405判断所述提取模块404提取的所述目标关键信息是否满足预置的漏洞确认条件,若是,则所述服务器确定所述待检测应用程序存在安全漏洞。

本发明实施例中,提供了一种安全漏洞检测的方法,该方法主要应用于ios中,服务器确定待检测应用程序,再将待检测应用程序安装至与服务器相连的检测终端,使得检测终端运行待检测应用程序,然后获取待检测应用程序在运行过程中产生的数据文件,接着从应用程序的数据文件中提取目标关键信息,最后判断目标关键信息是否满足预置的漏洞确认条件,若是,则服 务器确定待检测应用程序存在安全漏洞。通过上述方法进行安全漏洞的检测,可以在应用程序运行的过程中对生成的数据文件进行漏洞检测,从而极大地减小了不安全的数据文件对用户信息安全所构成的威胁,提升了方案的安全性和实用性。

可选地,在上述图10所对应的实施例的基础上,请参阅图11,本发明实施例提供的服务器的另一实施例中,所述目标关键信息包括目标关键字;

所述判断模块405包括:

比对单元4051,用于将所述目标关键字与所述预存储的关键字进行比对;

第一确定单元4052,用于若所述比对单元4051比对得到所述目标关键字与所述预存储的关键字一致,则确定所述目标关键信息满足所述漏洞确认条件。

其次,本发明实施例中,将目标关键信息设定为是目标关键字,于是本方案的一种具体实现方式可是为,服务器将目标关键字与预存储的关键字进行比对,若目标关键字与预存储的关键字一致,则确定目标关键信息满足漏洞确认条件,从而找出应用程序的安全漏洞。通过上述方法对应用程序的数据文件中存储的明文敏感信息进行检测,不但可以清楚地通过明文信息确实是否存在安全漏洞,还可以通过简单的比对方式来实现,使得方案更加的容易操作,提升方案的实用性和可行性。

可选地,在上述图10所对应的实施例的基础上,请参阅图12,本发明实施例提供的服务器的另一实施例中,所述目标关键信息包括文件保护级别;

所述判断模块405包括:

级别判断单元4053,用于判断所述文件保护级别是否低于预置级别;

第二确定单元4054,用于若所述级别判断单元4053判断得到所述文件保护级别低于预置级别,则确定所述目标关键信息满足所述漏洞确认条件。

其次,本发明实施例中,将目标关键信息设定为是文件保护级别,于是本方案的另一种具体实现方式可是为,服务器判断文件保护级别是否低于预置级别,若文件保护级别低于预置级别,则确定目标关键信息满足漏洞确认条件。通过上述方法先获取应用程序中数据文件的文件保护级别,如果文件保护级别没有达到预置级别,就可以对该数据文件进行修改,相反地,达到 预置级别的数据文件就不能被轻易更改,从而更具有安全性,使得安全漏洞的检测条件有了另一种实现方式,以此提升方案的实用性和灵活性。

可选地,在上述图10所对应的实施例的基础上,请参阅图13,本发明实施例提供的服务器的另一实施例中,所述目标关键信息包括用户隐私数据;

所述判断模块405包括:

数据判断单元4055,用于判断所述用户隐私数据与预置数据库中隐私数据是否匹配;

第三确定单元4056,用于若所述数据判断单元4055判断得到所述用户隐私数据与预置数据库中隐私数据不匹配,则确定所述目标关键信息满足所述漏洞确认条件。

其次,本发明实施例中,将目标关键信息设定为用户隐私数据,于是本方案的另一种具体实现方式可是为,服务器判断用户隐私数据与预置数据库中隐私数据是否匹配,若用户隐私数据与预置数据库中隐私数据不匹配,则确定目标关键信息满足漏洞确认条件。通过上述方法可以在网络传输的过程中避免用户的隐私数据遭到恶意截获,同时可以使得用户及时发现上述情况,并给予相应的处理,从而提升了方案的安全性,以及更好地保护了用户的隐私数据,增强用户体验。

可选地,在上述图13所对应的实施例的基础上,本发明实施例提供的服务器的另一实施例中,所述服务器40还包括:

所述获取模块403,还用于所述判断模块405判断所述用户隐私数据与预置数据库中隐私数据是否匹配之前,通过钩子函数hook获取所述待检测应用程序在运行过程中产生的网络请求;

所述提取模块404,还有用于从所述获取模块403获取的所述应用程序的网络请求中提取所述用户隐私数据。

再次,本发明实施例中,服务器在判断用户隐私数据与预置数据库中隐私数据是否匹配之前,还可以通过hook获取待检测应用程序在运行过程中产生的网络请求,再从应用程序的网络请求中提取用户隐私数据。以此说明了一种具体的解决方式,从而提升了方案的实用性。

可选地,在上述图10至13中任一项所对应的实施例的基础上,请参阅 图14,本发明实施例提供的服务器的另一实施例中,

所述判断模块包括:

第四确定单元4057,用于根据第一预置检测内容判断所述目标关键信息是否满足预置的漏洞确认条件,其中,所述第一预置检测内容为自定义配置的所述应用程序的漏洞确认规则。

再次,本发明实施例中,服务器可以根据第一预置检测内容服务器判断目标关键信息是否满足预置的漏洞确认条件,其中,第一预置检测内容是用户自定义配置的应用程序漏洞确认规则,由此,用户不但可以根据实际情况修改应用程序漏洞确认的规则,以提升方案的实际运行效率,还可以根据需要增添或者删除一些漏洞确认的规则,对某些安全性较低的应用程序可以增添更多的检测规则,而对某些安全性较高的应用程序可以删除一些功能性不强的检测规则,从而增加方案的实用性和灵活性。

可选地,在上述图10所对应的实施例的基础上,本发明实施例提供的服务器的另一实施例中,所述服务器40还包括:

所述获取模块403,还用于获取所述待检测应用程序在运行过程中产生的数据文件之前,获取所述待检测应用程序的二进制文件;

通过预设命令获取所述二进制文件的目标文件信息;

所述判断模块405,还用于判断所述目标文件信息是否满足预置的漏洞确认条件,若是,则所述服务器确定所述待检测应用程序存在安全漏洞。

进一步地,本发明实施例中,服务器不但进行动态安全漏洞的检测,而且还能够进一步地进行静态安全漏洞的检测。实现方式可以为,服务器获取待检测应用程序的二进制文件,并通过预设命令获取二进制文件的目标文件信息,最后判断目标文件信息是否满足预置的漏洞确认条件,若是,则确定待检测应用程序存在安全漏洞。通过上述具体的实现方式,为本发明提供了更为安全且全面的检测方案,有利于提升安全漏洞的可靠性和实用性。

可选地,在上述图10所对应的实施例的基础上,请参阅图15,本发明实施例提供的服务器的另一实施例中,所述服务器40还包括:

所述判断模块405包括:

信息判断单元4058,用于根据第二预置检测内容判断所述目标文件信息 是否满足预置的漏洞确认条件,其中,所述第一预置检测内容为自定义配置的所述应用程序的动态漏洞确认规则。

更进一步地,本发明实施例中,针对静态安全漏洞的检测也可以通过自定义的方式来实现,用户可以通过扩展已有的检测规则来使的服务器完成相应的静态安全漏洞检测内容,也可以配置其他的检测规则以完成相应的检测内容,优化其检测能力,提升方案的实用性和可靠性。随着漏洞检测规则的更新与扩展,我们可以实现对增加新漏洞的发现能能力,优化已有的检测规则。

图16是本发明实施例提供的一种服务器结构示意图,该服务器500可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(英文全称:centralprocessingunits,英文缩写:cpu)522(例如,一个或一个以上处理器)和存储器532,一个或一个以上存储应用程序542或数据544的存储介质530(例如一个或一个以上海量存储设备)。其中,存储器532和存储介质530可以是短暂存储或持久存储。存储在存储介质530的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器522可以设置为与存储介质530通信,在服务器500上执行存储介质530中的一系列指令操作。

服务器500还可以包括一个或一个以上电源526,一个或一个以上有线或无线网络接口550,一个或一个以上输入输出接口558,和/或,一个或一个以上操作系统541,例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm等等。

上述实施例中由服务器所执行的步骤可以基于该图16所示的服务器结构。

中央处理器522用于:

确定待检测应用程序;

将待检测应用程序安装至与服务器500相连的检测终端,使得检测终端运行待检测应用程序;

控制输入输出接口558获取待检测应用程序在运行过程中产生的数据文件;

从应用程序的数据文件中提取目标关键信息;

判断目标关键信息是否满足预置的漏洞确认条件,若是,则服务器500确定待检测应用程序存在安全漏洞。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

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

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

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