一种漏洞检测的方法及检测终端与流程

文档序号:12917423阅读:252来源:国知局
一种漏洞检测的方法及检测终端与流程

本发明涉及网络技术领域,尤其涉及一种漏洞检测的方法和检测终端。



背景技术:

在移动互联网时代,许多网络操作都可以在移动终端上完成,这也导致一些安全风险随之转移到移动终端的平台上,容易造成用户信息被窃取或者泄露,从而引起许多不安全因素。

为了防止移动终端在传输网络数据时因为被恶意的中间人监听,从而导致网络数据被窃取,目前已研发了利用加密技术确保数据在网络上传输时不会被截取或者窃听。具体为,在传输控制协议(英文全称:transmissioncontrolprotocol,英文缩写:tcp)/网际协议(英文全称:internetprotocol,英文缩写:ip)协议与各种应用层协议之间加入安全套接层(英文全称:securesocketlayer,英文缩写:ssl),从而提升网络数据在传输过程中的安全性。

然而,在实际应用中,尽管可以采用ssl加密技术来提升网络数据在传输过程中的安全性,但是无论对于苹果操作系统(英文全称:iphoneoperationsystem,英文缩写:ios)还是安卓操作系统,亦或是其他类型的操作系统,仍有可能遭到中间人的恶意窃听。而且针对ios而言,如想要检测是否有中间人监听需通过大量的手工代码分析来确定,代码的复杂度较大,会大大增加分析成本,不利于检测的效率。



技术实现要素:

本发明实施例提供了一种漏洞检测的方法及检测终端,用于检测应用程序是否存中间人监听,保证检测结果的准确性,并且可以节省人工检测分析程序代码的成本,提升检测的效率,从而增强方案的实用性。

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

接收应用程序发起的第一网络请求,其中,所述第一网络请求为访问第一站点的网络请求,所述第一站点为所述应用程序申请访问的站点,所述第一网络请求中被注入第二网络请求,所述第二网络请求为访问第二站点的网络请求,所述第二站点为预置的异常站点;

根据所述第一网络请求以及所述第二网络请求开启所述第一站点以及第二站点;

判断目标系统函数是否被调用;

若是,则确定所述应用程序存在安全漏洞。

第二方面,本方面实施例还提供一种检测终端,包括:

接收模块,用于接收应用程序发起的第一网络请求,其中,所述第一网络请求为访问第一站点的网络请求,所述第一站点为所述应用程序申请访问的站点,所述第一网络请求中被注入第二网络请求,所述第二网络请求为访问第二站点的网络请求,所述第二站点为预置的异常站点;

开启模块,用于根据所述接收模块接收的所述第一网络请求以及所述第二网络请求开启所述第一站点以及第二站点;

判断模块,用于所述开启模块开启所述第一站点以及所述第二站点之后,判断目标系统函数是否被调用;

第一确定模块,用于若所述判断模块判断得到所述目标系统函数被调用,则确定所述应用程序存在安全漏洞。

第三方面,本方面实施例还提供一种检测终端,包括:存储器、收发器、处理器以及总线系统;

其中,所述存储器用于存储程序;

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

控制所述收发器接收应用程序发起的第一网络请求,其中,所述第一网络请求为访问第一站点的网络请求,所述第一站点为所述应用程序申请访问的站点,所述第一网络请求中被注入第二网络请求,所述第二网络请求为访问第二站点的网络请求,所述第二站点为预置的异常站点;

根据所述第一网络请求以及所述第二网络请求开启所述第一站点以及第二站点;

判断目标系统函数是否被调用;

若是,则确定所述应用程序存在安全漏洞。

所述总线系统用于连接所述存储器、所述收发器以及所述处理器,以使所述存储器、所述收发器以及所述处理器进行通信。

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

本发明实施例中,提供了一种漏洞检测的方法,检测终端接收应用程序发起的第一网络请求,其中,第一网络请求为访问第一站点的网络请求,第一站点为应用程序申请访问的站点,第一网络请求中被注入第二网络请求,第二网络请求为访问第二站点的网络请求,第二站点为预置的异常站点。检测终端根据第一网络请求以及第二网络请求开启第一站点以及第二站点,检测终端判断目标系统函数是否被调用,若是,则确定应用程序存在安全漏洞。通过上述方式检测ssl是否存中间人监听,可以节省人工检测分析程序代码的成本,并且能够提升检测的效率,从而增强方案的实用性。

附图说明

图1为本发明实施例中ssl证书欺骗攻击的示意图;

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

图3为本发明实施例中ssl的中间人漏洞检测原理示意图;

图4为本发明应用场景中检测ssl中间人漏洞的页面提示示意图;

图5为本发明实施例中检测终端一个实施例示意图;

图6为本发明实施例中检测终端另一个实施例示意图;

图7为本发明实施例中检测终端另一个实施例示意图;

图8为本发明实施例中检测终端另一个实施例示意图;

图9为本发明实施例中检测终端另一个实施例示意图;

图10为本发明实施例中检测终端另一个实施例示意图;

图11为本发明实施例中检测终端另一个实施例示意图;

图12为本发明实施例中检测终端一个结构示意图。

具体实施方式

本发明实施例提供了一种漏洞检测的方法及检测终端,用于检测应用程序是否存中间人监听,保证检测结果的准确性,并且可以节省人工检测分析程序代码的成本,提升检测的效率,从而增强方案的实用性。

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

应理解,本发明实施例主要可以应用于ios,ios是由苹果公司开发的操作系统,它主要是给苹果手机(英文全称:iphone)、苹果多媒体播放设备(英文全称:ipodtouch)以及苹果平板电脑(英文全称:ipad)使用。ios的系统架构分为四个层次:核心操作系统层、核心服务层、媒体层和可轻触层。

ios应用程序在进行数据传输时,很容易遭到中间人攻击(英文全称:man-in-the-middleattack,英文缩写:mitm),中间人攻击,顾名思义,就是攻击者插入到原本直接通信的双方,让双方以为还在直接跟对方通讯,但实际上双方的通信对方已变成了中间人,信息已经是被中间人获取或篡改。

本发明可以针对在ios应用程序的场景下,对常见的攻击手段进行安全漏洞检测,其中,常见的攻击手段有,ssl证书欺骗攻击,此类攻击较为简单常见,请参阅图1,图1为本发明实施例中ssl证书欺骗攻击的示意图,攻击者首先通过地址解析协议(英文全称:addressresolutionprotocol,英文缩写:arp)欺骗或者域名系统(英文全称:domainnamesystem,英文缩写:dns)劫持甚至网关劫持等,将客户端的访问重定向到攻击者的机器,让客户端机器与攻击者机器建立超文本传输安全协议(英文全称:hypertexttransferprotocoloversecuresocketlayer,英文缩写:https)连接(使用伪造证书),而攻击者机器再跟服务端连接。常见的攻击手段还可以是,利用在同一无线保真(英文全称:wirelessfidelity,英文缩写:wifi)的环境下通过中间人攻击的方式去伪造证书给受害者,再由攻击者与服务器交互,从中窃取受害者发给服务器的敏感信息。这类方法通常应用在金融场所,比如银行或者交易所等,因为这些地方经常涉及到敏感的网络操作,往往更容易窃取到敏感数据。

需要说明的是,ios应用程序在进行数据传输时遭遇到的攻击手段还有其他的方式,上述的攻击手段仅为其中两种常见的方式,此处不作限定。

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

101、接收应用程序发起的第一网络请求,其中,第一网络请求为访问第一站点的网络请求,第一站点为应用程序申请访问的站点,第一网络请求中被注入第二网络请求,第二网络请求为访问第二站点的网络请求,第二站点为预置的异常站点;

本实施例中,检测终端接收应用程序发起的第一网络请求,第一网络请求中被注入了第二网络请求,第一网络请求是访问第一站点的网络请求,第一站点为应用程序申请访问的站点,第二网络请求为访问第二站点的网络请求,第二站点为预置的异常站点。

例如,用户打开浏览器,欲访问a网站,此时a网站即为第一站点,访问a网站的请求也就是第一网络请求,而在访问a网站时后台也会根据第一网络请求中注入的第二网络请求去访问b网站,b网站是开发人员预先建立的异常站点,用户不会在显示界面看到打开b网站的过程。

102、根据第一网络请求以及第二网络请求开启第一站点以及第二站点;

本实施例中,检测终端可以根据第一网络请求以及第二网络请求,开启第一站点和第二站点,其中,第一站点可以显示在界面上,第二站点可以只在后台打开,而不用显示在界面上。

103、判断目标系统函数是否被调用;

本实施例中,检测终端在根据第一网络请求以及第二网络请求开启第一站点以及第二站点之后,利用目标系统函数是否被调用来确定应用程序是否存在安全漏洞。

其中,目标系统函数主要用于写入ssl的信息,ssl为网络通信提供安全及数据完整性的一种安全协议。ssl协议位于位于网络通讯协议与各种应用层协议之间,网络通讯协议为传输控制协议(英文全称:transmissioncontrolprotocol,英文缩写:tcp)/网络之间互连的协议(英文全称:internetprotocol,英文缩写:ip),为数据通讯提供安全支持。ssl协议可分为两层:其一,ssl记录协议,如tcp。ssl记录协议建立在可靠的传输协议之上,为高层协议提供数据封装、压缩、加密等基本功能的支持;其二,ssl握手协议,它建立在ssl记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法和交换加密密钥等。

104、若是,则检测终端确定应用程序存在安全漏洞。

本实施例中,如果检测终端检测到目标系统函数确实被调用了,那么便可以确定该应用程序存在着安全漏洞。

本发明实施例中,提供了一种漏洞检测的方法,检测终端接收应用程序发起的第一网络请求,其中,第一网络请求为访问第一站点的网络请求,第一站点为应用程序申请访问的站点,第一网络请求中被注入第二网络请求,第二网络请求为访问第二站点的网络请求,第二站点为预置的异常站点。检测终端根据第一网络请求以及第二网络请求开启第一站点以及第二站点,检测终端判断目标系统函数是否被调用,若是,则确定应用程序存在安全漏洞。通过上述方式检测ssl是否存中间人监听,可以节省人工检测分析程序代码的成本,并且能够提升检测的效率,从而增强方案的实用性。

可选地,在上述图2对应的实施例的基础上,本发明实施例提供的漏洞检测的方法第一个可选实施例中,接收应用程序对应的第一网络请求,可以包括:

通过钩子函数hook从预置应用程序编程接口api中调用第一网络请求的api;

调用第一网络请求的api所对应的登录请求函数;

根据登录请求函数,对第一网络请求注入第二网络请求。

本实施例中,检测终端先通过钩子函数hook从预置的应用程序编程接口(英文全称:applicationprogramminginterface,英文缩写:api)中确定第一网络请求的api,预置api可以通过苹果公司推出的官方文档获取到,然后调用第一网络请求的api所对应的登录请求函数,通过登录请求函数对第一网络请求注入访问异常站点的第二网络请求。

如果检测终端需要对第一网络请求注入第二网络请求,需要采用钩子函数(英文全称:hook)来获取第一网络请求相关的api。通常情况下,会先建立一个预置api库,预置api库中存储有不同的api。由于hook可以通过监视指定函数来注入自定义的函数,从而获取原函数的变量等信息,或者修改原函数的处理逻辑,因此可以采用hook从预置api中监控和调用与第一网络请求相关的api,考虑到覆盖面问题,可将常用第三方库afnetworking也添加到监控中,这些api包括:

nsurlconnection类中支持sendsynchronousrequest的方法、connectionwithrequest的方法和start的方法,

uiapplication类中支持openurl的方法和canopenurl的方法;

uiwebview类中支持loaddata的方法、loadrequest的方法和loadhtmlstring的方法;

cfnetwork类中支持cfreadstreamcreateforhttprequest的方法和cfhttpmessagecopyserializedmessage的方法;

常用第三方库afnetworking中,afhttprequestoperation类中支持initwithrequest的方法,afurlsessionmanger类中支持datataskwithrequest的方法等。

检测终端可以使用基于cydiasubstrace的hook框架对上述api进行监控,在实际应用中,除了可以使用hook框架进行进行api监控,还可以使用frida框架等。

然而在调用第一网络请求的api所对应的登录请求函数时,也可以采用hook函数来提取和监控登录请求函数,并且在监控登录请求函数的时候,能够改写相应的代码,使得在第一网络请求中被注入第二网络请求。

其次,本发明实施例中,说明了检测终端在第一网络请求中注入第二网络请求的方法,检测终端从预置应用程序编程接口api中确定第一网络请求的api,然后通过钩子函数hook监控并调用第一网络请求的api所对应的登录请求函数,最后检测终端根据登录请求函数,通过改写代码的方式对第一网络请求注入第二网络请求。一方面该操作方式简单便利,另一方面为本方案提供了具体的实现手段,从而提升方案的实用性。

可选地,在上述图2以及图2对应的第一个实施例的基础上,本发明实施例提供的漏洞检测的方法第二个可选实施例中,根据登录请求函数对所述第一网络请求注入所述第二网络请求之前,还可以包括:

从预置的异常站点集合中选取第二站点,预置的异常站点集合中的各异常站点为证书无效、或证书伪造、或证书缺失的站点;

根据第二站点生成第二网络请求。

本实施例中,检测终端在将第二网络请求注入第一网络请求之前,还需要从预置的异常站点集合中选取第二站点,最终根据第二站点生成该站点对应的第二网络请求。

其中,异常站点集合中的各个异常站点可以是证书无效的站点,或者证书伪造的站点,也可以是证书缺失的站点。而本发明中所提及的证书实际上是一种数字证书,数字证书就是互联网通讯中标志通讯各方身份信息的一串数字,提供了一种在网络上验证通信实体身份的方式,数字证书不是数字身份证,而是身份认证机构盖在数字身份证上的一个章或印(或者说加在数字身份证上的一个签名)。它是由证书授权(英文全称:certificateauthority,英文缩写:ca)中心发行的,人们可以在网上用它来识别对方的身份。

数字证书里存有很多数字和英文,当使用数字证书进行身份认证时,它将随机生成128位的身份码,每份数字证书都能生成相应但每次都不可能相同的数码,从而保证数据传输的保密性,即相当于生成一个复杂的密码。

数字证书绑定了公钥及其持有者的真实身份,它类似于现实生活中的居民身份证,所不同的是数字证书不再是纸质的证照,而是一段含有证书持有者身份信息并经过认证中心审核签发的电子数据,可以更加方便灵活地运用在电子商务和电子政务中。

再次,本发明实施例中,检测终端可以从预置的异常站点集合中选取第二站点,并根据第二站点生成第二网络请求。由于这里的预置的异常站点集合中各个不合法的站点是提前设置好的,也就是说,虽然无法通过证书验证,但是事实上不会对用户的信息安全造成威胁,只是为了开启证书验证的测试,从而可以在后台检测是否存在ssl的中间人漏洞,在多个预置的异常站点集合中选取第二站点,保证网络数据传输的安全性,第二站点不会恶意窃取用户信息,且能够实现本方案,从而提升了方案的实用性。

可选地,在上述图2、图2对应的第一个或第二个实施例的基础上,本发明实施例提供的漏洞检测的方法第三个可选实施例中,目标系统函数为安全套接层写入函数sslwrite;

判断目标系统函数是否被调用,可以包括:

通过hook监控安全套接层写入函数sslwrite是否被调用。

本实施例中,目标系统函数具体可以是安全套接层写入函数sslwrite,那么检测终端判断目标系统函数是否被调用的方式可以是,检测终端通过hook监控安全套接层写入函数sslwrite是否被调用。

具体地,可以通过hook框架监控sslwrite函数的代码,以此通过sslwrite函数的代码检测请求的域名是否是我们注入的域名,从而确定出是否存在ssl中间人漏洞。

其次,本发明实施例中,具体提出了一种通过监控安全套接层写入函数是否被调用,从而来确定应用程序是否存在安全漏洞。使得方案具备了更可行的实施方式,提升方案的可行性和可操作性。

可选地,在上述图2、图2对应的第一至第三个实施例中任一项的基础上,本发明实施例提供的漏洞检测的方法第四个可选实施例中,检测终端通过hook监控安全套接层写入函数sslwrite是否被调用,可以包括:

通过hook获取sslwrite;

通过sslwrite,监控sslwrite是否包含被注入的第二网络请求。

本实施例中,检测终端通过hook监控安全套接层写入函数sslwrite是否被调用,具体可以检测终端是先通过hook获取sslwrite,再通过sslwrite监控是否包含被注入的第二网络请求。其中,监控所述sslwrite具体可以是监控其中是否包含被注入的第二站点的链接,第二站点即为预置的异常站点。第二站点的链接指向一个目标的连接,目标则是第二站点对应的网页,因此可以理解为第二站点的链接即为异常站点的网址。

再次,本发明实施例中,检测终端通hook监控安全套接层写入函数是否被调用的一种具体实现方式可以是,检测终端通过hook获取安全套接层写入函数的调用参数,再通过安全套接层写入函数的调用参数,监控安全套接层写入函数的调用参数是否包含被注入的第二网络请求。采用上述方式进一步为方案的实现提供了切实有效的方式,增强方案的可行性和实用性。

可选地,在上述图2、图2对应的第一至第四个实施例中任一项的基础上,本发明实施例提供的漏洞检测的方法第五个可选实施例中,根据登录请求函数对第一网络请求注入第二网络请求之前,还可以包括:

检测第一网络请求中是否已被注入第二网络请求;

若第一网络请求中已被注入第二网络请求,则停止对第一网络请求注入第二网络请求,并进行应用程序的漏洞检测;

若第一网络请求中未被注入第二网络请求,则确定在第一网络请求中注入第二网络请求。

本实施例中,在第一网络请求中注入第二网络请求这个步骤可以通过改写代码来实现,以使既可以用于应用程序请求访问一个站点,又可以用于应用程序请求访问预置的异常站点。然而,这段改写的代码会循环地在第一网络请求中注入第二网络请求,导致持续地在后台访问预置的异常站点。

因此,检测终端需要持续地通过检测第一网络请求中是否已被注入第二网络请求,如果第一网络请求还没有被注入第二网络请求,则可以确定在第一网络请求中注入第二网络请求,反之,如果第一网络请求中已经被注入了第二网络请求,那么就不在继续往第一网络请求中重复注入第二网络请求,而是直接进行后续的应用程序漏洞检测。

其次,本发明实施例中,为了避免出现异常站点的反复注入,还应设置一个循环的结束点,即不让第二网络请求再次被注入第一网络请求中,实现方式为,检测终端根据登录请求函数对第一网络请求注入第二网络请求之前,还可以检测第一网络请求中是否已被注入第二网络请求,若第一网络请求中已被注入第二网络请求,则停止对第一网络请求注入第二网络请求,并进行应用程序的漏洞检测,反之,若第一网络请求中未被注入第二网络请求,则确定在第一网络请求中注入第二网络请求。采用上述方法可以有效地防止异常站点反复被注入,解决了程序出现“死循环”的问题,提升方案的可行性和实用性。

可选地,在上述图2、图2对应的第一至第四个实施例中任一项的基础上,本发明实施例提供的漏洞检测的方法第五个可选实施例中,还可以包括:

若未调用目标系统函数,则检测终端确定应用程序为安全应用程序。

本实施例中,如果检测终端检测到应用程序没有调用目标系统函数,那么可以确定该应用程序为安全的应用程序。

具体地,检测应用程序是否存在ssl中间人漏洞,其实就是检测它是否做证书校验。假设现在某个应用程序要访问一个证书异常的站点,比如https://badcert-edell.tlsfun.de,那么有做证书校验和没有做证书校验的区别就如图3所示,请参阅图3,图3为本发明实施例中ssl的中间人漏洞检测原理示意图,主要在于最后判断是否调用了sslwrite函数,首先通过hook注入异常站点,并进行异常站点的访问请求,如果无证书校验,进而检测终端继续通过hook监控是否调用了sslwrite,若确定调用了sslwrite,则说明该应用程序存在安全漏洞。相反地,如果根据该异常站点的访问请求进行证书校验,但是没有通过校验,则检测终端通过hook监控sslwrite,确定没有调用sslwrite,说明该应用程序为安全的应用程序。

进一步地,本发明实施例中,当检测终端检测到应用程序没有调用目标系统函数,则可以确定该应用程序为安全的应用程序。通过检测是否调用目标系统函数来确定应用程序的安全性,不但更加直观地显示了应用程序的安全性,而且进一步地为方案提供了另一种实现方式,从而提升方案的灵活性。

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

用户甲想要通过qq浏览器来访问淘宝主页,该qq浏览器是具备证书校验功能的。当用户甲在qq浏览器的地址栏中输入了淘宝主页的地址“https://www.taobao.com/”,此时,在淘宝主页的地址中注入了一个异常站点的连接请求,为“https://badcertedell.tisfun.de/”,于是,qq浏览器将在显示页面上显示淘宝主页,而同时又在后台打开了这个异常站点。

由于异常站点的证书是无效的,于是弹出了一个对话框,请参阅图8,图8为本发明应用场景中检测ssl中间人漏洞的页面提示示意图,如图所示,对话框中为告警示意,并显示“此服务器的证书无效,您可能正在连接到一个伪装成‘https://badcertedell.tisfun.de/’的服务器,这会威胁到您的机密信息的安全。您仍要连接此服务器吗?”

显示这个页面提示,代表注入的请求未访问成功,该应用不存在ssl中间人漏洞,相反地,如果没有出现如图4类似的拦截,就会成功访问到证书异常的站点,也就说明了应用存在ssl有中间人漏洞。因此,用户甲本次访问的淘宝主页为安全的内容。

下面对本发明中的检测终端进行详细描述,请参阅图5,本发明实施例中的检测终端包括:

接收模块201,用于接收应用程序发起的第一网络请求,其中,所述第一网络请求为访问第一站点的网络请求,所述第一站点为所述应用程序申请访问的站点,所述第一网络请求中被注入第二网络请求,所述第二网络请求为访问第二站点的网络请求,所述第二站点为预置的异常站点;

开启模块202,用于根据所述接收模块201接收的所述第一网络请求以及所述第二网络请求开启所述第一站点以及第二站点;

判断模块203,用于所述开启模块202开启所述第一站点以及所述第二站点之后,判断目标系统函数是否被调用;

第一确定模块204,用于若所述判断模块203判断得到所述目标系统函数被调用,则确定所述应用程序存在安全漏洞。

本实施例中,接收模块201接收应用程序发起的第一网络请求,其中,所述第一网络请求为访问第一站点的网络请求,所述第一站点为所述应用程序申请访问的站点,所述第一网络请求中被注入第二网络请求,所述第二网络请求为访问第二站点的网络请求,所述第二站点为预置的异常站点,开启模块202根据所述接收模块201接收的所述第一网络请求以及所述第二网络请求开启所述第一站点以及第二站点,所述开启模块202开启所述第一站点以及所述第二站点之后,判断模块203判断目标系统函数是否被调用,若所述判断模块203判断得到所述目标系统函数被调用,则第一确定模块204确定所述应用程序存在安全漏洞。

本发明实施例中,提供了一种漏洞检测的方法,检测终端接收应用程序发起的第一网络请求,其中,第一网络请求为访问第一站点的网络请求,第一站点为应用程序申请访问的站点,第一网络请求中被注入第二网络请求,第二网络请求为访问第二站点的网络请求,第二站点为预置的异常站点。检测终端根据第一网络请求以及第二网络请求开启第一站点以及第二站点,检测终端判断目标系统函数是否被调用,若是,则确定应用程序存在安全漏洞。通过上述方式检测ssl是否存中间人监听,可以节省人工检测分析程序代码的成本,并且能够提升检测的效率,从而增强方案的实用性。

可选地,在上述图5所对应的实施例的基础上,请参阅图6,本发明实施例提供的检测终端的另一实施例中,

所述接收模块201包括:

第一调用单元2011,用于通过钩子函数hook从预置应用程序编程接口api中调用所述第一网络请求的api;

第二调用单元2012,用于调用所述第一调用单元2011调用的所述第一网络请求的api所对应的登录请求函数;

注入单元2013,用于根据所述第二调用单元2012调用的登录请求函数对所述第一网络请求注入所述第二网络请求。

其次,本发明实施例中,说明了检测终端在第一网络请求中注入第二网络请求的方法,检测终端从预置应用程序编程接口api中确定第一网络请求的api,然后通过钩子函数hook监控并调用第一网络请求的api所对应的登录请求函数,最后检测终端根据登录请求函数,通过改写代码的方式对第一网络请求注入第二网络请求。一方面该操作方式简单便利,另一方面为本方案提供了具体的实现手段,从而提升方案的实用性。

可选地,在上述图6所对应的实施例的基础上,请参阅图7,本发明实施例提供的检测终端的另一实施例中,

所述接收模块201还包括:

选取单元2014,用于所述注入单元2013根据所述登录请求函数对所述第一网络请求注入所述第二网络请求之前,从预置的异常站点集合中选取所述第二站点,所述预置的异常站点集合中的各异常站点为证书无效、或证书伪造、或证书缺失的站点;

生成单元2015,用于根据所述选取单元2014选取的所述第二站点生成所述第二网络请求。

再次,本发明实施例中,检测终端可以从预置的异常站点集合中选取第二站点,并根据第二站点生成第二网络请求。由于这里的预置的异常站点集合中各个不合法的站点是提前设置好的,也就是说,虽然无法通过证书验证,但是事实上不会对用户的信息安全造成威胁,只是为了开启证书验证的测试,从而可以在后台检测是否存在ssl的中间人漏洞,在多个预置的异常站点集合中选取第二站点,保证网络数据传输的安全性,第二站点不会恶意窃取用户信息,且能够实现本方案,从而提升了方案的实用性。

可选地,在上述图5所对应的实施例的基础上,请参阅图8,本发明实施例提供的检测终端的另一实施例中,

所述目标系统函数为安全套接层写入函数sslwrite;

所述判断模块203包括:

监控单元2031,用于通过hook监控所述安全套接层写入函数sslwrite是否被调用。

其次,本发明实施例中,具体提出了一种通过监控安全套接层写入函数是否被调用,从而来确定应用程序是否存在安全漏洞。使得方案具备了更可行的实施方式,提升方案的可行性和可操作性。

可选地,在上述图8所对应的实施例的基础上,请参阅图9,本发明实施例提供的检测终端的另一实施例中,

所述监控单元2031包括:

获取子单元20311,用于通过所述hook获取所述sslwrite;

监控子单元20312,用于通过所述获取子单元20311获取的所述sslwrite,监控所述sslwrite是否包含被注入的所述第二网络请求。

再次,本发明实施例中,检测终端通hook监控安全套接层写入函数是否被调用的一种具体实现方式可以是,检测终端通过hook获取安全套接层写入函数的调用参数,再通过安全套接层写入函数的调用参数,监控安全套接层写入函数的调用参数是否包含被注入的第二网络请求。采用上述方式进一步为方案的实现提供了切实有效的方式,增强方案的可行性和实用性。

可选地,在上述图6所对应的实施例的基础上,请参阅图10,本发明实施例提供的检测终端的另一实施例中,

所述检测终端20还包括:

检测模块205,用于所述注入单元2013根据登录请求函数对所述第一网络请求注入所述第二网络请求之前,检测所述第一网络请求中是否已被注入所述第二网络请求;

停止模块206,用于若所述检测模块205检测得到所述第一网络请求中已被注入所述第二网络请求,则停止对所述第一网络请求注入所述第二网络请求,并进行所述应用程序的漏洞检测;

第二确定模块207,用于若所述检测模块205检测得到所述第一网络请求中未被注入所述第二网络请求,则确定在所述第一网络请求中注入所述第二网络请求。

其次,本发明实施例中,为了避免出现异常站点的反复注入,还应设置一个循环的结束点,即不让第二网络请求再次被注入第一网络请求中,实现方式为,检测终端根据登录请求函数对第一网络请求注入第二网络请求之前,还可以检测第一网络请求中是否已被注入第二网络请求,若第一网络请求中已被注入第二网络请求,则停止对第一网络请求注入第二网络请求,并进行应用程序的漏洞检测,反之,若第一网络请求中未被注入第二网络请求,则确定在第一网络请求中注入第二网络请求。采用上述方法可以有效地防止异常站点反复被注入,解决了程序出现“死循环”的问题,提升方案的可行性和实用性。

可选地,在上述图5至图10中任一个对应的实施例的基础上,请参阅图11,本发明实施例提供的检测终端的另一实施例中,

所述检测终端20还包括:

第三确定模块208,用于若未调用所述目标系统函数,则所述检测终端确定所述应用程序为安全应用程序。

进一步地,本发明实施例中,当检测终端检测到应用程序没有调用目标系统函数,则可以确定该应用程序为安全的应用程序。通过检测是否调用目标系统函数来确定应用程序的安全性,不但更加直观地显示了应用程序的安全性,而且进一步地为方案提供了另一种实现方式,从而提升方案的灵活性。

本发明实施例还提供了另一种检测终端,如图12所示,为了便于说明,仅示出了与本发明实施例相关的部分,具体技术细节未揭示的,请参照本发明实施例方法部分。该终端可以为包括手机、平板电脑、个人数字助理(英文全称:personaldigitalassistant,英文缩写:pda)、销售终端(英文全称:pointofsales,英文缩写:pos)、车载电脑等任意终端设备,以终端为手机为例:

图12示出的是与本发明实施例提供的终端相关的手机的部分结构的框图。参考图12,手机包括:射频(英文全称:radiofrequency,英文缩写:rf)电路310、存储器320、输入单元330、显示单元340、传感器350、音频电路360、无线保真(英文全称:wirelessfidelity,英文缩写:wifi)模块370、处理器380、以及电源390等部件。本领域技术人员可以理解,图12中示出的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

下面结合图12对手机的各个构成部件进行具体的介绍:

rf电路310可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器380处理;另外,将设计上行的数据发送给基站。通常,rf电路310包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(英文全称:lownoiseamplifier,英文缩写:lna)、双工器等。此外,rf电路310还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(英文全称:globalsystemofmobilecommunication,英文缩写:gsm)、通用分组无线服务(英文全称:generalpacketradioservice,gprs)、码分多址(英文全称:codedivisionmultipleaccess,英文缩写:cdma)、宽带码分多址(英文全称:widebandcodedivisionmultipleaccess,英文缩写:wcdma)、长期演进(英文全称:longtermevolution,英文缩写:lte)、电子邮件、短消息服务(英文全称:shortmessagingservice,sms)等。

存储器320可用于存储软件程序以及模块,处理器380通过运行存储在存储器320的软件程序以及模块,从而执行手机的各种功能应用以及数据处理。存储器320可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器320可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

输入单元330可用于接收输入的数字或字符信息,以及产生与手机的用户设置以及功能控制有关的键信号输入。具体地,输入单元330可包括触控面板331以及其他输入设备332。触控面板331,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板331上或在触控面板331附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板331可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器380,并能接收处理器380发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板331。除了触控面板331,输入单元330还可以包括其他输入设备332。具体地,其他输入设备332可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。

显示单元340可用于显示由用户输入的信息或提供给用户的信息以及手机的各种菜单。显示单元340可包括显示面板341,可选的,可以采用液晶显示器(英文全称:liquidcrystaldisplay,英文缩写:lcd)、有机发光二极管(英文全称:organiclight-emittingdiode,英文缩写:oled)等形式来配置显示面板341。进一步的,触控面板331可覆盖显示面板341,当触控面板331检测到在其上或附近的触摸操作后,传送给处理器380以确定触摸事件的类型,随后处理器380根据触摸事件的类型在显示面板341上提供相应的视觉输出。虽然在图12中,触控面板331与显示面板341是作为两个独立的部件来实现手机的输入和输入功能,但是在某些实施例中,可以将触控面板331与显示面板341集成而实现手机的输入和输出功能。

手机还可包括至少一种传感器350,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板341的亮度,接近传感器可在手机移动到耳边时,关闭显示面板341和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。

音频电路360、扬声器361,传声器362可提供用户与手机之间的音频接口。音频电路360可将接收到的音频数据转换后的电信号,传输到扬声器361,由扬声器361转换为声音信号输出;另一方面,传声器362将收集的声音信号转换为电信号,由音频电路360接收后转换为音频数据,再将音频数据输出处理器380处理后,经rf电路310以发送给比如另一手机,或者将音频数据输出至存储器320以便进一步处理。

wifi属于短距离无线传输技术,手机通过wifi模块370可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图12示出了wifi模块370,但是可以理解的是,其并不属于手机的必须构成,完全可以根据需要在不改变发明的本质的范围内而省略。

处理器380是手机的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器320内的软件程序和/或模块,以及调用存储在存储器320内的数据,执行手机的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器380可包括一个或多个处理单元;优选的,处理器380可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器380中。

手机还包括给各个部件供电的电源390(比如电池),优选的,电源可以通过电源管理系统与处理器380逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。

尽管未示出,手机还可以包括摄像头、蓝牙模块等,在此不再赘述。

在本发明实施例中,该终端所包括的处理器380还具有以下功能:

控制输入单元330接收应用程序发起的第一网络请求,其中,所述第一网络请求为访问第一站点的网络请求,所述第一站点为所述应用程序申请访问的站点,所述第一网络请求中被注入第二网络请求,所述第二网络请求为访问第二站点的网络请求,所述第二站点为预置的异常站点;

根据所述第一网络请求以及所述第二网络请求开启所述第一站点以及第二站点;

判断目标系统函数是否被调用;

若是,则确定所述应用程序存在安全漏洞。

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

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

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

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

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

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

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