一种安卓应用网络通信中隐私泄漏检测方法及系统转让专利

申请号 : CN201710339046.X

文献号 : CN107133519B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 李瑞轩李晶晶辜希武李玉华章衡韩洪木汤俊伟李水祥

申请人 : 华中科技大学

摘要 :

本发明公开了一种安卓应用网络通信中隐私泄漏检测方法及系统,包括:爬取待测安卓应用,构建待测应用集合;构建中间人攻击服务器,并初始化各测试机环境,配置多测试机分布式运行调度系统;分析待测应用APK文件,安装与APK文件对应的应用程序,并驱动应用程序运行;分析Burp Suite生成的日志文件,获取存在SSL中间人攻击的应用集合;对收集的应用程序运行过程中产生的网络数据包文件进行分析,结合存在SSL中间人攻击的应用集合识别网络数据包文件中的隐私泄漏类型。本发明使用灵活,全程自动化,不需要修改安卓系统和安卓应用程序结构,能够更全面、更准确的检测安卓应用在网络通信过程中隐私泄露行为。

权利要求 :

1.一种安卓应用网络通信中隐私泄漏检测方法,其特征在于,包括:S1、爬取待测安卓应用,构建待测应用集合;

S2、构建中间人攻击服务器,并初始化各测试机环境,配置多测试机分布式运行调度系统;

S3、分析所述待测应用集合中的APK文件,获取与所述APK文件对应的应用程序的包名和主Activity信息;

S4、根据所述包名和主Activity信息,安装与所述APK文件对应的应用程序,并基于UI自动化遍历框架驱动所述应用程序运行;

S5、分析Burp Suite生成的日志文件,获取存在SSL中间人攻击的应用集合;

S6、对收集的当前应用程序运行过程中产生的网络数据包文件进行分析,结合所述存在SSL中间人攻击的应用集合识别所述网络数据包文件中的隐私泄漏类型;

步骤S1具体包括以下子步骤:

S1.1、选取M个目标应用市场,分析各目标应用市场按照类别划分的列表页URL特征、详细应用页面URL特征、应用下载URL特征,其中,M为正整数;

S1.2、分析所述列表页URL特征、所述详细应用页面URL特征以及所述应用下载URL特征,基于ID或包名探测方式构建HTTP请求,下载各目标应用市场中各类别的N个待测安卓应用,其中,N为正整数;

S1.3、将所述N个待测安卓应用的APK文件采用FASTDFS文件框架分布式存储到不同的服务器上,并将安卓应用相关信息存储到数据库中。

2.根据权利要求1所述的方法,其特征在于,步骤S3具体包括以下子步骤:S3.1、基于Android SDK自带的AAPT工具分析各待测安卓应用;

S3.2、提取待测安卓应用的权限集合,判断是否存在联网权限;

S3.3、若存在联网权限,则提取待测安卓应用的包名与主Activity名。

3.根据权利要求1所述的方法,其特征在于,步骤S4具体包括以下子步骤:S4.1、基于Accessibility Service提供的接口获取当前待测安卓应用运行过程中的GUI界面信息,并根据预先制定的GUI界面分类规则识别与所述GUI界面信息对应的GUI界面类型;

S4.2、采用与所述GUI界面类型对应的控件集处理方式,并将最终处理后的可操作控件事件投入任务列表;

S4.3、采用启发式深度优先遍历算法,对所述任务列表中的控件事件进行用户动作模拟,并判断当前GUI界面状态是否发生变化,若发生变化,则跳转执行步骤S4.1;若没有变化,则判断所述任务列表是否为空,若为空,表示当前GUI界面处理完毕,返回到上一层界面继续任务列表中的控件事件,若不为空,继续执行所述任务列表中的控件事件。

4.根据权利要求1所述的方法,其特征在于,步骤S5具体包括以下子步骤:S5.1、实时监控SSLListener插件生成的日志信息,提取Burp Suite监听端口、HTTPS请求成功的网络数据包的时间戳与主机域名信息;

S5.2、根据所述监听端口、所述时间戳和所述主机域名信息,采用模糊正则匹配的方式获取目标待测安卓应用包名,作为存在SSL中间人攻击的应用集合,其中,所述目标待测安卓应用包名对应的应用存在中间人攻击风险。

5.根据权利要求1所述的方法,其特征在于,步骤S6具体包括以下子步骤:S6.1、采用jnetpcap.jar包对生成的网络数据包文件进行解析,构建HTTP请求数据包,以JOSN的数据格式保存;

S6.2、采用词袋模型对JSON格式的网络数据包进行预处理;

S6.3、采用TF-IDF方法进行特征提取,过滤掉停用词和低频词;

S6.4、根据选择的特征、特征出现的词频以及隐私泄漏标签,生成ARFF文件,并由训练好的分类器对各待测安卓应用的网络数据包进行预测是否存在隐私泄漏;

S6.5、针对存在隐私泄漏的待测安卓应用,采用基于模糊正则匹配的方式判断隐私泄漏类型。

6.根据权利要求3所述的方法,其特征在于,所述预先制定的GUI界面分类规则包括:欢迎界面、列表界面、弹出框界面、输入界面、详细界面和其他界面。

7.一种安卓应用网络通信中隐私泄漏检测系统,其特征在于,包括:爬取模块,用于爬取待测安卓应用,构建待测应用集合;

初始化模块,用于构建中间人攻击服务器,并初始化各测试机环境,配置多测试机分布式运行调度系统;

第一分析模块,用于分析所述待测应用集合中的APK文件,获取与所述APK文件对应的应用程序的包名和主Activity信息;

应用程序安装模块,用于根据所述包名和主Activity信息,安装与所述APK文件对应的应用程序,并基于UI自动化遍历框架驱动所述应用程序运行;

第二分析模块,用于分析Burp Suite生成的日志文件,获取存在SSL中间人攻击的应用集合;

判断模块,用于对收集的当前应用程序运行过程中产生的网络数据包文件进行分析,结合所述存在SSL中间人攻击的应用集合识别所述网络数据包文件中的隐私泄漏类型;

所述爬取模块通过以下步骤实现爬取待测安卓应用,构建待测应用集合:S1.1、选取M个目标应用市场,分析各目标应用市场按照类别划分的列表页URL特征、详细应用页面URL特征、应用下载URL特征,其中,M为正整数;

S1.2、分析所述列表页URL特征、所述详细应用页面URL特征以及所述应用下载URL特征,基于ID或包名探测方式构建HTTP请求,下载各目标应用市场中各类别的N个待测安卓应用,其中,N为正整数;

S1.3、将所述N个待测安卓应用的APK文件采用FASTDFS文件框架分布式存储到不同的服务器上,并将安卓应用相关信息存储到数据库中。

说明书 :

一种安卓应用网络通信中隐私泄漏检测方法及系统

技术领域

[0001] 本发明属于移动安全和界面自动化测试技术领域,更具体地,涉及一种安卓应用网络通信中隐私泄漏检测方法及系统。

背景技术

[0002] 安卓移动设备承载着用户越来越多的隐私数据,不安全的网络通信将导致用户隐私泄漏。据统计,安卓应用网络通信过程中约67%采用HTTP协议,约20%采用HTTPS协议。由于HTTP协议的明文传输,一旦HTTP网络请求中包含用户的隐私数据(如通讯录、短信、日历和照片等),将存在隐私泄漏。同时,SSL协议的错误使用也将导致用户面临中间人攻击、隐私泄漏的风险。
[0003] 目前针对安卓应用中隐私泄露问题,主要采用以下方式:(1)对安卓系统Dalvik虚拟机、Binder驱动和文件系统进行修改,以跟踪污点数据是否在网络传输、文件写入等泄漏点处传播。然而该系统需要修改安卓底层系统,且只能解决安卓原生应用中的网络传输的隐私泄露问题,具有一定的局限性。(2)在第一种方式的基础上集成模拟器伪装、事件触发、fuzzing测试、智能输入和智能搜索等功能实现大规模的、自动化的检测安卓应用内的隐私泄露行为。然而,该方式中主要以Monkey发送伪随机事件为主,由于伪随机事件的不确定性,存在效率低、覆盖率低等缺点。
[0004] 目前针对安卓应用中网络通信安全性问题,RFCs 2818、2246和3280文档明确规定安卓SSL协议中证书链合法当且仅当满足如下三个条件:(1)证书链中的每个证书未过期;(2)根证书必须来自于可信的证书机构,且存在于客户端可信证书机构的列表中;(3)当证书链中存在多个证书时,需要验证每个证书的合法性。其规定主机名合法当且仅当:客户端连接的服务器的完全限定的DNS名称能够匹配证书中构建的服务器标识符列表。目前为检测安卓应用程序中错误使用SSL的情况主要有以下方式:通过扩展Androguard静态分析框架,提取安卓应用反编译后的代码中的URLS链接(HTTP和HTTPS)验证其域名证书的有效性从而判断应用是否存在SSL误用漏洞。然而,该方式基于静态提取URLS链接,不能有效获取动态URLS链接,同时需要安全专家运行应用手工确认从而避免误报。针对上述方式的高误报、人工验证的缺陷,出现了一种改进方式:结合动静态分析技术检测安卓应用能否抵抗中间人攻击来确认SSL调用的正确性。静态分析过程中,通过控制流、数据流分析技术构建可能存在SSL误用漏洞的目标组件集合与布局文件中所有的输入文本值类型集合;动态运行过程中,通过adb命令安装、启动应用后,循环发送“adb shell am start-n packageName/targetActivity”命令跳转到指定的目标Activity组件并穷尽遍历该Activity组件的UI控件,同时开启MIMT代理(Burp Suite proxy)监控所有HTTPS流量并且尝试去发起一个MIMT攻击,记录攻击结果。该系统侧重分析安卓应用SSL安全性,由于直接跳转到指定Activity组件,缺乏一定的上下文信息导致一部分的Activity组件跳转失败。
[0005] 综上所述,目前关于安卓应用网络通信过程中隐私泄漏的检测分别从HTTP和HTTPS展开,已有的解决方案均能在一定程度上检测。但从实施的角度来看,已有的解决方案依赖于修改安卓系统或安卓应用程序结构;动态分析依赖于静态反编译技术指导;不能有效检测加固应用。因此,从实施性和通用性角度来看,已有的解决方案有待改进。

发明内容

[0006] 针对现有技术的以上缺陷或改进需求,本发明的目的在于提供了一种安卓应用网络通信中隐私泄漏检测方法及系统,由此解决现有技术中的隐私泄漏检测在实施性和通用性方面存在的局限性。
[0007] 为实现上述目的,按照本发明的一个方面,提供了一种安卓应用网络通信中隐私泄漏检测方法,包括:
[0008] S1、爬取待测安卓应用,构建待测应用集合;
[0009] S2、构建中间人攻击服务器,并初始化各测试机环境,配置多测试机分布式运行调度系统;
[0010] S3、分析所述待测应用集合中的APK文件,获取与所述APK文件对应的应用程序的包名和主Activity信息;
[0011] S4、根据所述包名和主Activity信息,安装与所述APK文件对应的应用程序,并基于UI自动化遍历框架驱动所述应用程序运行;
[0012] S5、分析Burp Suite生成的日志文件,获取存在SSL中间人攻击的应用集合;
[0013] S6、对收集的当前应用程序运行过程中产生的网络数据包文件进行分析,结合所述存在SSL中间人攻击的应用集合识别所述网络数据包文件中的隐私泄漏类型。
[0014] 优选地,步骤S1具体包括以下子步骤:
[0015] S1.1、选取M个目标应用市场,分析各目标应用市场按照类别划分的列表页URL特征、详细应用页面URL特征、应用下载URL特征,其中,M为正整数;
[0016] S1.2、分析所述列表页URL特征、所述详细应用页面URL特征以及所述应用下载URL特征,基于ID或包名探测方式构建HTTP请求,下载各目标应用市场中各类别的N个待测安卓应用,其中,N为正整数;
[0017] S1.3、将所述N个待测安卓应用的APK文件采用FASTDFS文件框架分布式存储到不同的服务器上,并将安卓应用相关信息存储到数据库中。
[0018] 优选地,步骤S3具体包括以下子步骤:
[0019] S3.1、基于Android SDK自带的AAPT工具分析各待测安卓应用;
[0020] S3.2、提取待测安卓应用的权限集合,判断是否存在联网权限;
[0021] S3.3、若存在联网权限,则提取待测安卓应用的包名与主Activity名。
[0022] 优选地,步骤S4具体包括以下子步骤:
[0023] S4.1、基于Accessibility Service提供的接口获取当前待测安卓应用运行过程中的GUI界面信息,并根据预先制定的GUI界面分类规则识别与所述GUI界面信息对应的GUI界面类型;
[0024] S4.2、采用与所述GUI界面类型对应的控件集处理方式,并将最终处理后的可操作控件事件投入任务列表;
[0025] S4.3、采用启发式深度优先遍历算法,对所述任务列表中的控件事件进行用户动作模拟,并判断当前GUI界面状态是否发生变化,若发生变化,则跳转执行步骤S4.1;若没有变化,则判断所述任务列表是否为空,若为空,表示当前GUI界面处理完毕,返回到上一层界面继续任务列表中的控件事件,若不为空,继续执行所述任务列表中的控件事件。
[0026] 优选地,步骤S5具体包括以下子步骤:
[0027] S5.1、实时监控SSLListener插件生成的日志信息,提取Burp Suite监听端口、HTTPS请求成功的网络数据包的时间戳与主机域名信息;
[0028] S5.2、根据所述监听端口、所述时间戳和所述主机域名信息,采用模糊正则匹配的方式获取目标待测安卓应用包名,作为存在SSL中间人攻击的应用集合,其中,所述目标待测安卓应用包名对应的应用存在中间人攻击风险。
[0029] 优选地,步骤S6具体包括以下子步骤:
[0030] S6.1、采用jnetpcap.jar包对生成的网络数据包文件进行解析,构建HTTP请求数据包,以JOSN的数据格式保存;
[0031] S6.2、采用词袋模型对JSON格式的网络数据包进行预处理;
[0032] S6.3、采用TF-IDF方法进行特征提取,过滤掉停用词和低频词;
[0033] S6.4、根据选择的特征、特征出现的词频以及隐私泄漏标签,生成ARFF文件,并由训练好的分类器对各待测安卓应用的网络数据包进行预测是否存在隐私泄漏;
[0034] S6.5、针对存在隐私泄漏的待测安卓应用,采用基于模糊正则匹配的方式判断隐私泄漏类型。
[0035] 优选地,所述预先制定的GUI界面分类规则包括:欢迎界面、列表界面、弹出框界面、输入界面、详细界面和其他界面。
[0036] 按照本发明的另一方面,提供了一种安卓应用网络通信中隐私泄漏检测系统,包括:
[0037] 爬取模块,用于爬取待测安卓应用,构建待测应用集合;
[0038] 初始化模块,用于构建中间人攻击服务器,并初始化各测试机环境,配置多测试机分布式运行调度系统;
[0039] 第一分析模块,用于分析所述待测应用集合中的APK文件,获取与所述APK文件对应的应用程序的包名和主Activity信息;
[0040] 应用程序安装模块,用于根据所述包名和主Activity信息,安装与所述APK文件对应的应用程序,并基于UI自动化遍历框架驱动所述应用程序运行;
[0041] 第二分析模块,用于分析Burp Suite生成的日志文件,获取存在SSL中间人攻击的应用集合;
[0042] 判断模块,用于对收集的当前应用程序运行过程中产生的网络数据包文件进行分析,结合所述存在SSL中间人攻击的应用集合识别所述网络数据包文件中的隐私泄漏类型。
[0043] 总体而言,本发明方法与现有技术方案相比,能够取得下列有益效果:
[0044] 1、本发明从不安全的HTTPS和HTTP明文传输两方面分析,能够更全面、更准确的检测安卓应用在网络通信过程中隐私泄露行为,使用方法灵活,全程自动化,不需要修改安卓系统和安卓应用程序结构,同时不依赖于静态分析指导应用程序动态运行,对应用市场批量检测新上架应用具有一定的意义。
[0045] 2、本发明旨在动态驱动安卓应用运行,实时进行攻击测试来判断是否存在SSL误用漏洞,同时收集网络数据包并采用机器学习算法进行隐私数据泄露判断。
[0046] 3、首次提出基于安卓应用GUI界面的类型进行控件集处理策略,并提出启发式深度遍历算法,描述了GUI界面状态、GUI界面转化以及GUI节点树的扩充过程,保证动态运行能够触发尽可能多的网络交互事件。
[0047] 4、不需要修改安卓系统或安卓应用程序结构,自动化、大规模动态检测安卓应用网络通信中的隐私泄漏问题,可作为应用市场对新上架应用的安全审计操作。
[0048] 5、本发明全面考虑到HTTPS和HTTP的安全问题,并对生成的网络数据包进行分类。具有较高的准确率和效率。

附图说明

[0049] 图1为本发明实施例公开的一种安卓应用网络通信中隐私泄漏检测的整体架构图;
[0050] 图2为本发明实施例公开的一种安卓应用网络通信中隐私泄漏检测方法的流程示意图;
[0051] 图3为本发明实施例公开的一种爬取待测安卓应用的方法流程示意图;
[0052] 图4为本发明实施例公开的一种UI自动化遍历方法的流程示意图;
[0053] 图5为本发明实施例公开的一种界面类型划分示意图;
[0054] 图6为本发明实施例公开的一种UI自动化遍历方法的具体实现代码示例图;
[0055] 图7为本发明实施例公开的一种对网络数据包文件分析的方法流程示意图。

具体实施方式

[0056] 为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
[0057] 以下首先就本发明所涉及的技术术语进行解释和说明:
[0058] 安卓:由Google主导开发的基于Linux内核的移动操作系统,以其开放的特性在移动操作系统市场上拥有较高的占有率。
[0059] 安卓应用程序:运行在安卓系统中的应用程序,主要由Java语言开发。
[0060] 隐私:用户存储在系统中的个人数据,在移动设备中主要包括联系人信息、通话记录、地理位置信息和设备相关信息等。
[0061] Activity:安卓应用程序四大组件之一,主要负责显示内容、与用户交互。在应用程序中,Activity通常表现为一个或者多个界面,用于显示一些控件并监听用户的事件做出响应,Activity之间可以通过Intent机制进行通信。
[0062] GUI界面:图形用户界面,允许用户通过点击图标、滑动屏幕或通过软键盘输入文本,以实现界面跳转或启动相应服务。
[0063] 控件:安卓应用GUI界面上显示的图标,比如按钮、文本框、输入框、图片等。
[0064] UI遍历:一种用于软件开发测试中检测软件性能与兼容性的方法,通过模拟用户点击界面元素实现GUI界面遍历。
[0065] GUI界面状态:标识运行过程中的每个GUI界面,由二元组表示,其中Activity组件名称表示该GUI界面所属的Activity,由该Activity的全限定名表示。
[0066] 任务:由二元组表示,表明该控件事件仅在该GUI界面状态下执行。
[0067] GUI节点:由二元组构成,表示遍历策略中的节点信息,每个节点保存了从根节点到当前节点执行的任务序列。
[0068] GUI界面转换:由二元组<任务,GUI节点>表示,用于描述遍历策略中节点的跳转关系,其中任务是父节点任务列表中的一个任务,GUI节点是执行该任务后跳转到的目的节点。
[0069] 以下结合具体实施例和附图对本发明所提供的安卓应用网络通信中隐私泄露检测方法做进一步说明。
[0070] 安卓应用网络通信中隐私泄漏产生的主要原因是不安全的HTTPS传输(侧重指SSL误用漏洞)和HTTP明文传输隐私数据。本发明提出一种自动化的、大规模安卓应用网络通信中隐私泄漏检测框架。它提出了针对不同的GUI界面类型的控件集处理策略,设计出启发式的深度遍历算法驱动应用运行,并收集产生的网络数据包,结合机器学习分类技术判断网络数据包中的隐私泄漏。
[0071] 如图1所示为本发明实施例公开的一种安卓应用网络通信中隐私泄漏检测的整体架构图。从图1可以看出,本发明的主要工作集中在以下三个部分:首先对待测应用分析,提取应用包名和主Activity信息启动应用运行,运行过程中根据控件特征识别GUI界面类型进行控件集处理生成任务列表,并按照深度优先的策略实现GUI界面的跳转,触发尽可能多的网络请求;其次,对正在运行的应用,实时收集产生的网络数据包,并对HTTPS网络请求进行中间人攻击测试;最后,采用机器学习的算法对收集到的网络数据包分析,采用关联分析技术对攻击测试的日志进行分析。
[0072] 如图2所示为本发明实施例公开的一种安卓应用网络通信中隐私泄漏检测方法的流程示意图;在图2所示的方法中包括以下步骤:
[0073] S1、爬取待测安卓应用,构建待测应用集合;
[0074] S2、构建中间人攻击服务器,并初始化各测试机环境,配置多测试机分布式运行调度系统;
[0075] S3、分析待测应用集合中的APK文件,获取与APK文件对应的应用程序的包名和主Activity信息;
[0076] S4、根据包名和主Activity信息,安装与APK文件对应的应用程序,并基于UI自动化遍历框架驱动应用程序运行;
[0077] S5、分析Burp Suite生成的日志文件,获取存在SSL中间人攻击的应用集合;
[0078] S6、对收集的当前应用程序运行过程中产生的网络数据包文件进行分析,结合上述存在SSL中间人攻击的应用集合识别网络数据包文件中的隐私泄漏类型。
[0079] 作为一种可选的实施方式,如图3所示为本发明实施例公开的一种爬取待测安卓应用的方法流程示意图,具体包括以下子步骤:
[0080] S1.1、选取M个目标应用市场,分析各目标应用市场按照类别划分的列表页URL特征、详细应用页面URL特征、应用下载URL特征,其中,M为正整数,M优选取值为10;
[0081] 例如,腾讯应用宝市场类别列表形式为:
[0082] http://sj.qq.com/myapp/category.htm?orgame=1&categoryId=122;
[0083] 详细应用页面URL特征为:
[0084] http://sj.qq.com/myapp/detail.htm?apkName=com.jingdong.app.mall;
[0085] 应用下载URL特征为:
[0086] http://imtt.dd.qq.com/16891/E00D69D73077FC37744E7856331D071A.apk?fsname=com.jingdong.app.mall_5.7.0_42153.apk&csr=4d5s。
[0087] S1.2、分析上述列表页URL特征、上述详细应用页面URL特征以及上述应用下载URL特征,基于ID或包名探测方式构建HTTP请求,下载各目标应用市场中各类别的N个待测安卓应用,其中,N为正整数,N优选取值为100;
[0088] 例如,根据应用市场类别列表URL的变化特点,以ID自增或包名的方式自动化发送请求,例如腾讯应用宝市场修改“categoryId”范围“110-130”都能获取到具体类别页面,然后针对具体的列表页面和详细应用页面,采用XPATH定位进行页面解析,获取应用基本信息和下载链接。
[0089] S1.3、将所述N个待测安卓应用的APK文件采用FASTDFS文件框架分布式存储到不同的服务器上,并将安卓应用相关信息存储到数据库中。其中,安卓相关信息可以包括市场名、应用名、下载量、存储路径等信息。
[0090] 作为一种可选的实施方式,步骤S2具体包括以下子步骤:
[0091] S2.1、在PC机端安装Burp Suite代理工具,并基于Burp Suite提供的扩展API实现SSLListener插件,监听HTTPS请求的状态,实时记录攻击测试结果;
[0092] S2.2、分别在测试设备上分别安装Burp Suite自签名的证书,并手工设置Proxy代理,代理IP为安装Burp Suite工具的PC机的静态IP,代理端口为依次从8080递增;
[0093] S2.3、基于RMI远程方法调用实现多台测试设备管理,包括测试设备状态管理、安卓应用分发、安卓应用安装、安卓应用运行等。
[0094] 作为一种可选的实施方式,步骤S3具体包括以下子步骤:
[0095] S3.1、基于Android SDK自带的AAPT(Android Asset Packaging Tool)工具分析各待测安卓应用;
[0096] 具体而言,安卓应用采用AAPT工具将资源文件与清单文件(Manifest.xml)打包到应用程序APK文件中。同样的,通过执行“aapt dump badging Manifest.xml”命令可从应用程序APK文件获取清单文件。
[0097] S3.2、提取待测安卓应用的权限集合,判断是否存在联网权限;
[0098] 具体而 言 ,提取 所有节点 信息 ,查 找“android.permission.internet”字符串,若存在,说明申请了联网权限。
[0099] S3.3、若存在联网权限,则提取待测安卓应用的包名与主Activity名。
[0100] 具体而言,提取清单文件中key为“package”的value值以及包含“android.intent.action.MAIN”和“android.intent.category.LAUNCHER”值的节点的名称信息。
[0101] 作为一种可选的实施方式,如图4所示为本发明实施例公开的一种UI自动化遍历方法的流程示意图,具体包括以下子步骤:
[0102] S4.1、基于Accessibility Service提供的接口获取当前待测安卓应用运行过程中的GUI界面信息,并根据预先制定的GUI界面分类规则识别与所述GUI界面信息对应的GUI界面类型;
[0103] 其中,预先制定的GUI界面分类规则可以采用以下方式实现:通过分析多个(如500个)应用的GUI界面截图,根据GUI界面的大小、控件特征将GUI界面类型分为欢迎界面、列表界面、弹出框界面、输入界面、详细界面和其他界面六大类,分类规则如图5所示。当GUI界面的面积小于手机屏幕面积时,GUI界面类型为弹出框界面;当GUI界面的面积等于手机屏幕面积时,若GUI界面中存在ImageView控件且占据整个手机屏幕,则为欢迎界面;若GUI界面中存在EditText、CheckBox和RadioButton控件时,则为输入界面;若GUI界面中存在相同子控件树或者ListView等列表控件,则为列表界面;若GUI界面中存在大量的图片、文字或者WebView控件,则为详细界面;若不匹配以上的判断规则,则为其他界面。
[0104] 其中,APPIUM移动应用测试框架Android版底层实现了Android SDK自带的原生测试工具Uiautomator,Uiautomator内部封装了获取当前界面控件树的Accessibility Service服务和执行界面控件操作的Accessibility Event服务,通过APPIUM提供的“getPageSource”函数获取当前界面的控件所有信息。根据制定的界面分类规则,对当前界面进行分类。
[0105] S4.2、采用与所述GUI界面类型对应的控件集处理方式,如控件裁剪、控件事件组合和输入控件的启发式输入,并将最终处理后的可操作控件事件投入任务列表;
[0106] 具体而言,当前界面状态用二元组标示,其中“GUI界面”包括所有控件信息。根据GUI界面的大小、特定控件特征将GUI界面划分为欢迎界面、列表界面、弹出框界面、输入框界面、详细界面和其他界面六大类。基于不同的界面类型给出如下的控件事件序列生成规则:
[0107] (1)当识别的界面为输入界面时,在控件树搜索TextView、RadioButton和CheckBox等控件叶子节点,获取该节点的text、content-desc和resource-id等信息,从而识别出该节点需要输入的信息类型,然后根据已有的输入库进行匹配,生成<控件1,EditText,“手机号码”>控件事件;同时获取该控件节点的兄弟节点、父节点或父节点的兄弟节点,结合控件的上下文信息匹配出对应的按钮节点,生成<控件2,“点击”,“”>控件事件,并将该两个控件事件封装成组合事件;
[0108] (2)当识别的GUI界面为列表界面时,对控件树中包含可滚动的列表控件(如ListView,RecyclerView或ExpandableListView)节点或者相同子控件树节点的路径生成路径摘要信息。对相同路径摘要信息的集合,由于其触发的是同一个事件处理监听器,故进行过滤处理,只对列表控件节点或相同子控件树下的多个子节点中的一个节点下的控件事件进行操作处理;
[0109] (3)当识别的界面为弹出框时,对界面的提示信息进行简单文本匹配,若提示为更新下载信息时,选择“取消”等拒绝按钮;对于广告弹出框,选择“关闭”等按钮;对于其他系统提示框,依照可操作控件在控件树的层次遍历顺序生成控件事件序列;
[0110] (4)当识别的界面为详细界面时,搜索界面上“返回”标志控件或添加返回事件码操作,直接返回到上一层GUI界面,对该界面的其他控件不进行处理;
[0111] (5)当识别的界面为欢迎界面时,对界面进行滑动操作(左滑,右滑,上滑和下滑),使页面跳转到真正的起始界面;
[0112] (6)当识别的界面为其他界面时,依照可操作控件在控件树的层次遍历顺序生成控件事件序列;
[0113] (7)针对每个界面上的不同控件事件处理优先级:输入事件>点击事件>滑动事件;
[0114] (8)针对每个界面上的同种控件事件处理优先级:遵守GUI控件树层次遍历序列前后顺序。
[0115] S4.3、采用启发式深度优先遍历算法,对所述任务列表中的控件事件进行用户动作模拟,并判断当前GUI界面状态是否发生变化,若发生变化,则跳转执行步骤S4.1;若没有变化,则判断所述任务列表是否为空,若为空,表示当前GUI界面处理完毕,返回到上一层界面继续任务列表中的控件事件,若不为空,继续执行所述任务列表中的控件事件。
[0116] 具体而言,应用程序从主Activity开始遍历,从任务列表中执行一个任务,界面将会发生状态改变,如界面跳转、界面刷新、弹出对话框或菜单栏等,根据GUI界面状态判断是否达到一个新的界面还是跳回到之前已经遍历过的界面。若为新界面,则重复进行界面识别、任务列表生成和控件事件模拟三个步骤;若是已遍历过的界面,判断该界面的任务列表是否处理完毕,若遍历完毕返回到其上一层界面,若没有则触发剩下的任务列表中的任务。循环往复,从而不断地对应用的界面方向矢量图进行动态扩充,直到主Activity任务列表为空遍历结束。启发式深度优先遍历算法的具体代码如图6所示。
[0117] 作为一种可选的实施方式,步骤S5具体包括以下子步骤:
[0118] S5.1、实时监控SSLListener插件生成的日志信息,提取Burp Suite监听端口、HTTPS请求成功的网络数据包的时间戳与主机域名信息;
[0119] S5.2、根据所述监听端口、所述时间戳和所述主机域名信息,采用模糊正则匹配的方式获取目标待测安卓应用包名,作为存在SSL中间人攻击的应用集合,其中,所述目标待测安卓应用包名对应的应用存在中间人攻击风险。
[0120] 作为一种可选的实施方式,如图7所示为本发明实施例公开的一种对网络数据包文件分析的方法流程示意图,具体包括以下子步骤:
[0121] S6.1、采用jnetpcap.jar包对生成的网络数据包文件进行解析,构建HTTP请求数据包,以JOSN(JavaScript Object Notation)的数据格式保存;
[0122] S6.2、采用词袋模型对JSON格式的网络数据包进行预处理;
[0123] 具体而言,即根据“:”、“{}”、“”、“->”等作为分割符,将一连串的字符串转化为一个个包含最小含义的单词,如“header”、“http”、“content-type”、“packageName”、“host”等。
[0124] S6.3、采用TF-IDF方法进行特征提取,过滤掉停用词和低频词;
[0125] 具体而言,即降低特征的维度,针对那些对分类作用不大的词去掉,如低频词(出现的次数小于5)以及“header”、“content-type”、“URL”等停用词。
[0126] S6.4、根据选择的特征、特征出现的词频以及隐私泄漏标签,生成ARFF文件,并由训练好的分类器对各待测安卓应用的网络数据包进行预测是否存在隐私泄漏;
[0127] 其中,分类器算法采用工具Weka中的C4.5决策树算法。
[0128] S6.5、针对存在隐私泄漏的待测安卓应用,采用基于模糊正则匹配的方式判断隐私泄漏类型。
[0129] 具体而言,如国际移动设备标识(International Mobile Equipment Identity,IMEI)、手机号码、邮编、性别等信息采用模糊的正则表达式进行匹配,从而判断具体的隐私泄漏类型。
[0130] 本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。