Apk文件安全检测方法及装置的制造方法

文档序号:10655923阅读:711来源:国知局
Apk文件安全检测方法及装置的制造方法
【专利摘要】本发明公开了一种APK文件安全检测方法及装置,包括:利用反编译工具对APK文件进行反编译处理得到代码,静态分析代码,得到第一服务端API信息;安装APK文件,动态模拟执行APK中的功能,抓取得到第二服务端API信息;合并第一服务端API信息和第二服务端API信息,利用安全扫描器对合并后服务端API信息进行安全检查。根据本发明提供的APK文件安全检测方法及装置,通过静态分析和动态模拟执行的方式从APK中最大可能的获取服务端API信息,利用安全扫描器对获取的服务端API信息进行安全检查,从而提高了安全扫描器针对该APK所连接的服务安全性的评估效果,减少了由于APK服务端存在安全问题,而导致的用户信息泄密等问题。
【专利说明】
APK文件安全检测方法及装置
技术领域
[0001]本发明涉及智能终端软件领域,尤其涉及一种APK文件安全检测方法及装置。
【背景技术】
[0002]随着移动智能终端的发展,移动平台上的安全问题也日益突出。移动应用存在的安全隐患直接威胁到移动智能终端用户的信息安全,除了移动应用客户端存在的安全性,还包括移动应用客户端所连接的服务器端的安全性。移动应用服务器端的安全隐患严重时可直接导致数据泄露,造成经济损失。为避免移动应用服务器端存在安全隐患,通过漏洞扫描技术检测移动应用中服务端API安全漏洞。
[0003]扫描APK中服务端API的安全漏洞就需要涉及到服务端API信息的提取,现有技术通过以下方式从APK中提取服务端API:
[0004]I)通过Web安全扫描工具根据用户输入的URL作为起始URL,采用爬虫的方式去收集更多的URL,然后进行扫描。但由于APK中服务端API信息中所包含的URL往往都是孤岛链接,无法通过爬虫的方式去获取。当该服务端API不能被爬虫发现,也就无法进行安全扫描,从而导致不能察觉到漏洞的存在。
[0005]2)通过用户手动给执行APK的模拟器或真实设备设置代理,然后用户手动去触发APK中的按键,执行APK程序,通过刚刚设置的代理服务器抓取服务端API信息。此方法虽然可以得到服务端API信息,但需要人工介入,无法实现大规模的自动化测试。

【发明内容】

[0006]本发明的发明目的是针对现有技术的缺陷,提供了一种APK文件安全检测方法及装置,用于解决现有技术中无法对APK服务端API接口进行安全性验证等问题。
[0007]根据本发明的一个方面,提供了一种APK文件安全检测方法,包括:利用反编译工具对APK文件进行反编译处理得到代码,静态分析代码,得到第一服务端API信息;安装APK文件,动态模拟执行APK中的功能,抓取得到第二服务端API信息;合并第一服务端API信息和第二服务端API信息,利用安全扫描器对合并后服务端API信息进行安全检查。
[0008]根据本发明的另一个方面,还提供了一种APK文件安全检测装置,包括:静态分析模块,用于利用反编译工具对APK文件进行反编译处理得到代码,静态分析代码,得到第一服务端API信息;动态模拟模块,用于安装APK文件,动态模拟执行APK中的功能,抓取得到第二服务端API信息;安全检查模块,用于合并第一服务端API信息和第二服务端API信息,利用安全扫描器对合并后服务端API信息进行安全检查。
[0009]根据本发明提供的APK文件安全检测方法及装置,通过静态分析和动态模拟执行的方式从APK中最大可能的获取服务端API信息,利用安全扫描器对获取的服务端API信息进行安全检查,从而提高了安全扫描器针对该APK服务端安全性的评估效果,减少了由于APK服务端存在安全问题,而导致的用户信息泄密等问题。
【附图说明】
[0010]图1为本发明提供的APK文件安全检测方法实施例的流程图;
[0011]图2为图1中静态分析获取服务端API信息实施例的流程图;
[0012]图3为图1中动态模拟获取服务端API信息实施例的流程图;
[0013]图4为本发明提供的APK文件安全检测装置实施例的功能框图。
【具体实施方式】
[0014]为充分了解本发明之目的、特征及功效,借由下述具体的实施方式,对本发明做详细说明,但本发明并不仅仅限于此。
[0015]图1为本发明提供的APK文件安全检测方法实施例的流程图,如图1所示,本实施例的方法具体包括如下步骤:
[0016]步骤SlOl,利用反编译工具对APK文件进行反编译处理得到代码,静态分析代码,得到第一服务端API信息。
[0017]通过步骤SlOl,静态分析反编译得到的代码,得到第一服务端API信息具体包括了如下步骤,可参照图2所示:
[0018]步骤SlOll,利用反编译工具对APK文件进行反编译处理,得到反编译后的代码。
[0019]APK(Android Package)文件即Android安装包,是类似Symbian Sis或Sisx的文件格式。将APK文件直接传到Andro i d模拟器或Andro id手机中执行即可安装C3APK文件和sis—样,通过android sdk编译,工程文件会打包为安装程序文件,格式为APK。
[0020]APK反编译工具可以将APK文件中的源文件和资源反编译出来,得到源文件和资源文件。现有常用的反编译工具如apktool、easyapk、apkdb、doapk等。利用这些反编译工具对APK文件进行反编译处理,可以得到反编译后的代码。
[0021 ] 步骤S1012,提取代码中的URL地址信息要素。
[0022]利用自动化分析程序,可以由APK反编译代码中提取URL地址信息要素。
[0023]URL地址信息要素包括了协议头、域名、端口、虚拟目录、文件名等要素。协议头用于通知浏览器如何处理将要打开的文件,如111^口,111^口8、;1^口、;1^16、116¥8等。域名中包含一个或一个以上的后缀应该以Com,cn等顶级域名结尾,或为某IP地址。端口一般在域名或IP地址后。虚拟目录为到达该URL的路径,不同级目录间以斜线分隔。文件名为到达该URL地址的文件本身的名称,当URL地址以斜线结尾时,文件名为虚拟目录中最后一个目录的默认文件,一般为index.html 或 default.htm。
[0024]步骤S1013,对URL地址信息要素进行正则匹配,得到URL地址信息。
[0025]通过S1012得到URL地址信息要素后,对该URL地址信息要素进行正则匹配,正则匹配需要包括URL地址信息要素,按照正确的顺序进行排列,如(http I ftp I https):\八/[\w\-_] + (\.[\w\-_] + ) + ( [\w\-\.,i?' = %&amp ;: /?\+#]*[\w\-\@?~ = %&amp ;/?\+#])?该正则匹配表达式仅为举例,实施时根据具体需要,编写对应的正则匹配表达式。通过正则匹配,将原零散的URL地址信息要素进行整理,得到正确顺序的URL地址信息。
[0026]步骤S1014,利用语义分析引擎,完善URL地址信息,得到第一服务端API信息。
[0027]语义分析是对结构上正确的文字或代码进行上下文有关性质的审查,进行类型审查,审查有无语义错误等。通过步骤S103得到URL地址信息后,利用语义分析引擎,进一步完善URL地址信息,保证URL地址信息的正确性。
[0028]API(Applicat1n Programming Interface,应用程序编程接口),为程序代码相互调用的接口,包括客户端的接口和服务器端的接口。本实施例中主要为得到服务器端的接口,也就是APK连接服务器端时调用的接口,连接网络的接口。从APK反编译代码中得到的URL地址信息即服务器端调用的接口信息,即第一服务端API信息。
[0029]步骤S102,安装APK文件,动态模拟执行APK中的功能,抓取得到第二服务端API信息。
[0030]通过步骤S102,动态模拟执行APK中的功能,抓取得到第二服务端API信息具体包括了如下步骤,可参照图3所示:
[0031]步骤S1021,在模拟终端上安装APK文件,将模拟终端连入预先设置的代理服务器。
[0032]模拟终端可采用模拟移动终端设备或模拟虚拟机。模拟移动终端设备可以采用在PC端接入移动终端设备,使该移动终端设备与PC端相连,并在该移动终端设备上安装APK文件。移动终?而设备包括智H纟手机、平板电脑、移动互联网设备(MID ,Mobile InternetDevices)或可穿戴式智能设备等。模拟虚拟机可以在PC端安装如安卓虚拟机,安卓虚拟机可以在PC端模拟运行Android系统,任何在移动设备端执行的操作均可在安卓虚拟机上执行。安卓虚拟机上可以安装APK文件。
[0033]在模拟终端上安装APK文件后,还将该模拟终端连入预先设置的代理服务器。
[0034]步骤S1022,通过调试桥工具,动态模拟执行APK中所有的功能,由预先设置的代理服务器抓取所有网络请求。
[0035]调试桥工具adb(Android Debug Bridge),通过adb可以方便的调试Android程序,可以直接操作管理安卓虚拟机或者真实的android移动终端设备。通过调试桥工具可以动态模拟执行APK中所有的功能,如利用模拟点击的方式完成该APK中所有按钮的遍历,或模拟完成手指滑动等功能,以触发APK中所有需要连接网络执行服务器端的功能。在执行过程中,由于该模拟终端通过预先设置的代理服务器连接服务器端的网络,触发APK中所有需要连接服务器端网络的功能时,代理服务器会记录相关联网的服务请求,从而抓取所有与服务器端网络相关的请求。
[0036]步骤S1023,从网络请求中得到第二服务端API信息。
[0037]由抓取的网络请求中进一步提取或直接获取服务器端的接口。本实施例中主要为得到服务器端的接口,即第二服务端API信息。
[0038]以上步骤SlOl和步骤S102之间没有先后执行的限定顺序,两个步骤可以按照实施例所述的情况执行,也可以两个步骤同时并列执行,或步骤S102先执行,步骤SlOl后执行,对得到的第一服务端API信息和第二服务端API信息不影响。可根据实际实施情况设定,此处不做具体限定。
[0039]步骤S103,合并第一服务端API信息和第二服务端API信息,利用安全扫描器对合并后服务端API信息进行安全检查。
[0040]通过以上2个步骤,得到第一服务端API信息和第二服务端API信息,将第一服务端API信息和第二服务端API信息进行合并,剔除重复部分的服务端API信息,得到最后的服务端API信息。利用安全扫描器对合并后的服务端API信息进行安全检查。
[0041]根据本发明提供的APK文件安全检测方法,通过静态分析和动态模拟执行的方式从APK中最大可能的获取服务器端的服务端API信息,利用安全扫描器对获取的服务端API信息进行安全检查,从而提高了安全扫描器针对该APK服务器端安全性的评估效果,减少了由于APK服务器端存在安全问题,而导致的用户信息泄密等问题。
[0042]图4为本发明提供的APK文件安全检测装置实施例的功能框图,如图4所示,本实施例装置中包含以下模块:
[0043]静态分析模块201,用于利用反编译工具对APK文件进行反编译处理得到代码,静态分析代码,得到第一服务端API信息。
[0044]静态分析模块201具体还包括以下模块:
[0045]反编译模块2011,用于利用反编译工具对APK文件进行反编译处理,得到反编译后的代码。
[0046]APK(Android Package)文件即Android安装包,是类似Symbian Sis或Sisx的文件格式。将APK文件直接传到Andro i d模拟器或Andro id手机中执行即可安装C3APK文件和sis—样,通过android sdk编译,工程文件会打包为安装程序文件,格式为APK。
[0047]APK反编译工具可以将APK文件中的源文件和资源反编译出来,得到的源文件和资源文件。现有常用的反编译工具如apktoo1、easyapk、apkdb、doapk等。反编译模块2011利用这些反编译工具对APK文件进行反编译处理,可以得到反编译后的代码。
[0048]提取模块2012,用于提取代码中的URL地址信息要素。
[0049]提取模块2012可以利用自动化分析程序,由APK反编译代码中提取URL地址信息要素。
[0050]URL地址信息要素包括了协议头、域名、端口、虚拟目录、文件名等要素。协议头用于通知浏览器如何处理将要打开的文件,如111^口,111^口8、;1^口、;1^16、116¥8等。域名中包含一个或一个以上的后缀应该以Com,cn等顶级域名结尾,或为某IP地址。端口一般在域名或IP地址后。虚拟目录为到达该URL的路径,不同级目录间以斜线分隔。文件名为到达该URL地址的文件本身的名称,当URL地址以斜线结尾时,文件名为虚拟目录中最后一个目录的默认文件,一般为index.html 或 default.htm。
[0051 ] 匹配模块2013,用于对URL地址信息要素进行正则匹配,得到URL地址信息。
[0052]执行提取模块2012得到URL地址信息要素后,匹配模块2013对该URL地址信息要素进行正则匹配,正则匹配需要包括URL地址信息要素,按照正确的顺序进行排列,如(httpftp I https): //[\w\-_] + (\.[\w\-_] + ) + ( [\w\-\.,i?' = %&amp ;: /?\+#]*[\w\-\@?~=%&/?\+#]) ?该正则匹配表达式仅为举例,实施时根据具体需要,编写对应的正则匹配表达式。匹配模块2013通过正则匹配,将原零散的URL地址信息要素进行整理,得到正确顺序的URL地址信息。
[0053]分析模块2014,用于利用语义分析引擎,完善URL地址信息,得到第一服务端API信息。
[0054]语义分析是对结构上正确的文字或代码进行上下文有关性质的审查,进行类型审查,审查有无语义错误等。执行匹配模块2013得到URL地址信息后,分析模块2014利用语义分析引擎,进一步完善URL地址信息,保证URL地址信息的正确性。
[0055]API(Applicat1n Programming Interface,应用程序编程接口),为程序代码相互调用的接口,包括客户端的接口和服务器端的接口。本实施例中主要为得到服务器端的接口,也就是APK连接服务器端时调用的接口,连接网络的接口。执行上述模块后从APK反编译代码中得到的URL地址信息即服务器端调用的接口信息,即第一服务端API信息。
[0056]动态模拟模块202,用于安装APK文件,动态模拟执行APK中的功能,抓取得到第二服务端API信息。
[0057]动态模拟模块202具体还包括以下模块:
[0058]连接模块2021,用于在模拟终端上安装APK文件,将模拟终端连入预先设置的代理服务器;
[0059]模拟终端可采用模拟移动终端设备或模拟虚拟机。模拟移动终端设备可以采用在PC端接入移动终端设备,使该移动终端设备与PC端相连,并在该移动终端设备上安装APK文件。移动终?而设备包括智H纟手机、平板电脑、移动互联网设备(MID ,Mobile InternetDevices)或可穿戴式智能设备等。模拟虚拟机可以在PC端安装如安卓虚拟机,安卓虚拟机可以在PC端模拟运行Android系统,任何在移动设备端执行的操作均可在安卓虚拟机上执行。安卓虚拟机上可以安装APK文件。
[0060]执行连接模块2021在模拟终端上安装APK文件后,还将该模拟终端连入预先设置的代理服务器。
[0061]调试抓取模块2022,通过调试桥工具,动态模拟执行APK中所有的功能,由预先设置的代理服务器抓取所有网络请求;从网络请求中得到第二服务端API信息。
[0062]调试桥工具adb(Android Debug Bridge),通过adb可以方便的调试Android程序,可以直接操作管理安卓虚拟机或者真实的android移动终端设备。调试抓取模块2022利用调试桥工具可以动态模拟执行APK中所有的功能,如利用模拟点击的方式完成该APK中所有按钮的遍历,或模拟完成手指滑动等功能,以触发APK中所有需要连接网络执行服务器端的功能。在执行过程中,由于该模拟终端通过预先设置的代理服务器连接服务器端的网络,执行调试抓取模块2022触发APK中所有需要连接服务器端网络的功能时,代理服务器会记录相关联网的服务请求,从而抓取所有与服务器端网络相关的请求。
[0063]调试抓取模块2022由抓取的网络请求中可进一步提取或直接获取服务器端的接口。本实施例中主要为得到服务器端的接口,即第二服务端API信息。
[0064]以上静态分析模块201和动态模拟模块202之间没有先后执行的限定顺序,两个模块可以按照实施例所述的情况执行,也可以两个模块同时并列执行,或动态模拟模块202先执行,静态分析模块201后执行,对得到的第一服务端API信息和第二服务端API信息不影响。可根据实际实施情况设定,此处不做具体限定。
[0065]安全检查模块203,用于合并第一服务端API信息和第二服务端API信息,利用安全扫描器对合并后服务端API信息进行安全检查。
[0066]通过执行静态分析模块201和动态模拟模块202,得到第一服务端API信息和第二服务端API信息,安全检查模块203将第一服务端API信息和第二服务端API信息进行合并,剔除重复部分的服务端API信息,得到最后的服务端API信息,并利用安全扫描器对合并后的服务端API信息进行安全检查。
[0067]根据本发明提供的APK文件安全检测装置,通过静态分析和动态模拟执行的方式从APK中最大可能的获取服务器端的服务端API信息,利用安全扫描器对获取的服务端API信息进行安全检查,从而提高了安全扫描器针对该APK服务器端安全性的评估效果,减少了由于APK服务器端存在安全问题,而导致的用户信息泄密等问题。
[0068]本发明中所提到的各种模块、电路均为由硬件实现的电路,虽然其中某些模块、电路集成了软件,但本发明所要保护的是集成软件对应的功能的硬件电路,而不仅仅是软件本身。
[0069]本领域技术人员应该理解,附图或实施例中所示的装置结构仅仅是示意性的,表示逻辑结构。其中作为分离部件显示的模块可能是或者可能不是物理上分开的,作为模块显示的部件可能是或者可能不是物理模块。
[0070]最后,需要注意的是:以上列举的仅是本发明的具体实施例子,当然本领域的技术人员可以对本发明进行改动和变型,倘若这些修改和变型属于本发明权利要求及其等同技术的范围之内,均应认为是本发明的保护范围。
【主权项】
1.一种APK文件安全检测方法,其特征在于,包括: 利用反编译工具对APK文件进行反编译处理得到代码,静态分析所述代码,得到第一服务端API信息; 安装APK文件,动态模拟执行APK中的功能,抓取得到第二服务端API信息; 合并所述第一服务端API信息和所述第二服务端API信息,利用安全扫描器对合并后服务端API信息进行安全检查。2.根据权利要求1所述的方法,其特征在于,所述利用反编译工具对APK文件进行反编译处理得到代码,静态分析所述代码,得到第一服务端API信息进一步包括: 利用反编译工具对所述APK文件进行反编译处理,得到反编译后的代码; 提取所述代码中的URL地址信息要素; 对所述URL地址信息要素进行正则匹配,得到URL地址信息; 利用语义分析引擎,完善所述URL地址信息,得到第一服务端API信息。3.根据权利要求2所述的方法,其特征在于,所述URL地址信息要素包括协议头、域名、端口、虚拟目录、文件名。4.根据权利要求1所述的方法,其特征在于,所述安装APK文件,动态模拟执行APK中的功能,抓取得到第二服务端API信息进一步包括: 在模拟终端上安装APK文件,将所述模拟终端连入预先设置的代理服务器; 通过调试桥工具,动态模拟执行APK中所有的功能,由预先设置的代理服务器抓取所有网络请求; 从所述网络请求中得到第二服务端API信息。5.根据权利要求4所述的方法,其特征在于,所述模拟终端为模拟移动终端设备或模拟虚拟机。6.一种APK文件安全检测装置,其特征在于,包括: 静态分析模块,用于利用反编译工具对APK文件进行反编译处理得到代码,静态分析所述代码,得到第一服务端API信息; 动态模拟模块,用于安装AH(文件,动态模拟执行AH(中的功能,抓取得到第二服务端AP If目息; 安全检查模块,用于合并所述第一服务端信息和所述第二服务端API信息,利用安全扫描器对合并后服务端API信息进行安全检查。7.根据权利要求6所述的装置,其特征在于,所述静态分析模块还包括: 反编译模块,用于利用反编译工具对所述APK文件进行反编译处理,得到反编译后的代码; 提取模块,用于提取所述代码中的URL地址信息要素; 匹配模块,用于对所述URL地址信息要素进行正则匹配,得到URL地址信息; 分析模块,用于利用语义分析引擎,完善所述URL地址信息,得到第一服务端API信息。8.根据权利要求7所述的装置,其特征在于,所述URL地址信息要素包括协议头、域名、端口、虚拟目录、文件名。9.根据权利要求6所述的装置,其特征在于,所述动态模拟模块还包括: 连接模块,用于在模拟终端上安装APK文件,将所述模拟终端连入预先设置的代理服务器; 调试抓取模块,通过调试桥工具,动态模拟执行APK中所有的功能,由预先设置的代理服务器抓取所有网络请求;从所述网络请求中得到第二服务端API信息。10.根据权利要求9所述的装置,其特征在于,所述模拟终端为模拟移动终端设备或模拟虚拟机。
【文档编号】G06F21/56GK106022127SQ201610304189
【公开日】2016年10月12日
【申请日】2016年5月10日
【发明人】汪德嘉, 沈杰, 张瑞钦
【申请人】江苏通付盾科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1