《移动智能终端安全》课件第11章.pptx

上传人(卖家):momomo 文档编号:7608542 上传时间:2024-04-17 格式:PPTX 页数:65 大小:2.92MB
下载 相关 举报
《移动智能终端安全》课件第11章.pptx_第1页
第1页 / 共65页
《移动智能终端安全》课件第11章.pptx_第2页
第2页 / 共65页
《移动智能终端安全》课件第11章.pptx_第3页
第3页 / 共65页
《移动智能终端安全》课件第11章.pptx_第4页
第4页 / 共65页
《移动智能终端安全》课件第11章.pptx_第5页
第5页 / 共65页
点击查看更多>>
资源描述

1、第11章 组件通信漏洞挖掘11.1 定制定制ROM及刷入测试机及刷入测试机ROM的定制及测试机的刷入分为以下两步进行:(1)修改Android源码Framework层的相关函数,将Extras的Key和value绑定应用程序包名并输出到日志中。定制ROM流程如下:下载相应的ROM。下载签名工具并解压,将解压生成的文件夹命名为“APKMake”。第11章 组件通信漏洞挖掘 将ROM内的所有文件用WinZip或WinRar解压到某一文件夹,将该文件夹命名为“NewROM”。进入NewROM文件夹,进入dataapp目录,观察是否有需要的程序,不需要的删除即可。还可以添加自己需要的默认安装软件。进入

2、NewROM文件夹,进入systemapp目录,删除不需要的组件或添加需要的组件。删除、添加软件完毕,将ROM文件夹(NewROM)拖动到APKMake/APKMake.bat即可(重新打包、自动签名)。在APKMake目录中打包签名完成后自动会生成NewROM.zip,此为定制好的ROM。第11章 组件通信漏洞挖掘 如果Recovery已经准备好,请严格按以下步骤操作刷入ROM:a.把ROM文件复制到SD卡,重命名为update.zip。系统更新选择重启Recovery或关机,按住电源键和音量增加键启动手机,进入Recovery模式。b.清除所有用户数据,在Recovery中选择将updat

3、e.zip刷入的系统。c.重新启动刷入的系统。第11章 组件通信漏洞挖掘(2)针对用户需要检测的某个Android应用程序,在测试机上自动安装和启动。利用ADB工具安装APK程序到指定的Android设备,开启并与Android端的Socket连接,然后进行初始化工作,包括创建漏洞数据库和获取APK包名(Package Name)。漏洞数据库记载了常见的错误、错误描述信息和错误的解决办法等。第11章 组件通信漏洞挖掘11.2 暴露组件检测暴露组件检测暴露组件检测流程分为以下七步:(1)检测待测应用程序中组件暴露的风险,并记录暴露组件的详细信息。暴露组件的定义为:待测应用程序中某个组件的配置信息

4、中,组件exported属性为true或该组件的配置中包含Intent-filter标签,则定义该组件为暴露组件。组件类型包括Activity、Service和Broadcast Receiver,每个组件的配置信息均包括组件名、组件exported属性值、Action和Category等信息。第11章 组件通信漏洞挖掘(2)针对每个暴露组件,根据该暴露组件配置信息中的Action和Category信息,结合Android推荐的Extras的Key与value构造测试数据。(3)将构造好的测试数据写入Intent中,对该暴露组件进行Fuzz测试,检测暴露组件的通信漏洞,同时记录系统日志。(4)

5、依次对下一个暴露组件重复步骤(2)和(3)进行测试,直至测完待测应用程序的所有暴露组件。(5)分析测试完成后的所有日志信息,提取出该待测应用程序真实的Extras详细信息。Extras详细信息包括Extras的Key和value、数据类型信息和具体的触发函数等。第11章 组件通信漏洞挖掘(6)根据真实的Extras的Key和value信息,结合每个暴露组件配置信息中的Action和Category信息,为该待测应用程序重新构造测试数据,并再次进行测试和记录系统日志。(7)通过分析第二次测试返回的数据和日志信息,生成检测报告。对日志的分析过程为:利用应用程序的PID(进程号)过滤出属于该待测应用

6、程序的日志信息,从关键字“Exception”、“Error”中提取出错误信息,然后与漏洞数据库中的数据进行匹配,得到包括风险结果和漏洞检测结果的检测报告。检测报告具体内容为暴露组件可能出现的风险、漏洞描述、漏洞的详情和解决办法等。第11章 组件通信漏洞挖掘漏洞信息的分析共有两方面:第一是通过分析日志内容,判断是否有信息泄露和程序崩溃等其他错误发生,比如出现空指针异常引起的拒绝服务等错误;第二是根据目标组件返回的数据信息,判断是否有隐私数据泄露。第11章 组件通信漏洞挖掘11.2.1 Broadcast Receiver暴露组件检测暴露组件检测Broadcast Receiver用于处理发送和

7、接收广播,分为发送广播安全和接收广播安全。假如攻击者动态注册一个Action为com.test.broadcast的广播接收者,并且拥有最高的优先级,若在上述程序中使用sendBroadcast()发送广播,则攻击者的确无法通过abortBroadcast()终止,但可以优先响应该实例发送的广播;但是假如上述程序使用sendOrderedBroadcast()发送,则Broadcast Receiver实例有可能永远无法收到自己发送的广播。当然,上述问题也是可以避免的。第11章 组件通信漏洞挖掘11.2.2 Activity暴露组件检测暴露组件检测正如Android开发文档所说,Android

8、系统组件在制定Intent过滤器(intent-filter)后,默认可以被外部程序访问。这意味着Android系统组件容易被其他程序进行串谋攻击。现在的问题是,如何防止Activity被外部使用呢?第11章 组件通信漏洞挖掘Android所有组件声明时可以通过指定android:exported属性值为“false”来设置组件不能被外部程序调用。此处的外部程序是指签名不同、用户ID不同的程序。签名相同且用户ID相同的程序在执行时共享同一个进程空间,彼此之间没有组件访问限制。如果希望Activity能够被特定程序访问,则不可以使用android:exported属性,而通过使用android:

9、permission属性来指定一个权限字符串,声明举例如下:第11章 组件通信漏洞挖掘第11章 组件通信漏洞挖掘声明的Activity在被调用时,Android系统检查调用者是否具有com.test.permission.MyActivity权限,如果不具备则触发一个Security Exception安全异常。如果需要启动该Activity,则必须在AndroidManifest.xml文件中加入以下声明:第11章 组件通信漏洞挖掘11.2.3 Service暴露组件检测暴露组件检测Service组件是Android系统中的后台进程,主要的功能是在后台进行一些耗时的操作。与其他Android

10、组件一样,当声明Service时指定了Intent过滤器,该Service默认可以被外部访问。可以访问的方法有以下几种:(1)startService():启动服务,可以被用来实现串谋攻击。(2)bindService():绑定服务,可以被用来实现串谋攻击。(3)stopService():停止服务,对程序功能进行恶意破坏。第11章 组件通信漏洞挖掘恶意的stopService()破坏程序的执行环境,直接影响程序的正常运行。如果需要杜绝Service组件被人恶意启动或停止,则可使用Android系统的权限机制来对调用者进行控制。如果Service组件不想被程序外的其他组件访问,可直接设置其an

11、droid:exported属性为“false”。第11章 组件通信漏洞挖掘11.3 测试数据的构造测试数据的构造11.3.1 记录暴露组件的记录暴露组件的Action和和Category信息信息Android应用组件分为Activity、Service、Broadcast Receiver和Content Provider 四种类型。每个应用可由不同类型的多个组件组成。(1)Activity:应用界面,负责与用户进行交互。(2)Service:后台处理程序,也可作为应用的守护程序在开机时启动,用来执行某些需要持续运行的操作。第11章 组件通信漏洞挖掘(3)Broadcast Receiver

12、:监听符合特定条件的消息广播,是时间驱动程序的理想手段。(4)Content Provider:使用相同的数据接口存储和共享数据,往往通过URI来实现对该组件的定位。应用及其组件的特征描述存储在名为AndroidManifest的xml文件中,以便系统在应用安装和运行的过程中获取必要的信息。该文件也为KMDroid测试应用组件提供有用信息。第11章 组件通信漏洞挖掘除了Content Provider外,其他三种组件之间的通信均需要Intent消息来实现。Intent是ICC过程的消息传递媒介,其具体内容如表11-1所示。Intent消息既可通过设定Component name来显示指定目标组

13、件的名称,也可设定Action、Category等描述目标组件特性的标签,然后交给系统判断由哪个组件处理这个消息。在AndroidManifest文件中,如果应用组件声明的子元素中的Action、Category标签与Intent消息所携带的相匹配,则此组件可以接收该Intent消息。第11章 组件通信漏洞挖掘第11章 组件通信漏洞挖掘11.3.2 依据依据Extras表构造测试数据表构造测试数据本节利用多种工具配合完成对源码的分析工作。其具体分析步骤如下:(1)解压apk文件(zip文件格式),得到编码过的AndroidManifest.xml及二进制文件classes.dex。(2)利用a

14、xmlprinter2解码AndroidManifest.xml,解析其中的组件信息。(3)利用Dex2jar工具处理classes.dex文件,得到jar文件,解压得到.class文件。第11章 组件通信漏洞挖掘(4)利用jad反编译.class文件,得到相应的Java源码文件。(5)配合AndroidManifest分析所得组件名称,从对应文件夹中找到其源码。Android的Intent消息中所包含的Extra项的名称和类型都可以通过源码分析直接获得,源码分析的伪代码如图11-1所示。第11章 组件通信漏洞挖掘图11-1 解析Extra信息的伪代码第11章 组件通信漏洞挖掘通过上述的具体分

15、析可知被测目标组件是否会从Intent消息中获取Extra项数据以及Extra的type和name的内容。KMDroid使用ADB Tools中的am命令发送Intent并支持Int型、String型、Boolean型三类Extra项的测试,在初步统计中发现这三类测试涵盖了大部分情况。针对这三类测试数据,本节设计了三种测试数据产生模式,如表11-2所示。第11章 组件通信漏洞挖掘第11章 组件通信漏洞挖掘KMDroid在测试应用时对Intent消息的Extra类型进行统计,以验证利用am命令测试Int、String、Boolean这三类数据的合理性,如表11-3所示。在140个应用中,共发现6

16、495个被处理的Extra项。第11章 组件通信漏洞挖掘本实验共测试Activity组件3314个,Server组件374个,Receiver组件282个。根据组件的运行结果可以分为两类:第一类是Intent消息顺利发出,并被接收;第二类是组件使用一定的安全策略,拒绝非授权消息来源。第11章 组件通信漏洞挖掘11.4 基于基于Fuzzing测试的通信漏洞挖掘测试的通信漏洞挖掘Android的四大组件Activity、Service、Broadcast Receiver、Content Provider中的Activity、Service和Broadcast Receiver之间可以通过Inte

17、nt消息互相传递消息和启动组件。Activity可以通过向Service组件发送Intent消息来启动服务;Service组件也可以向Activity组件发送Intent消息来打开用户界面;Broadcast Receiver可以接收来自其他组件的广播消息触发对应的操作。第11章 组件通信漏洞挖掘1.Robotium测试测试Robotium是一款国外的Android自动化测试框架,主要针对Android平台的应用进行黑盒自动化测试,提供模拟各种手势操作(点击、长按、滑动等)、查找和断言机制的API,能够对各种控件进行操作。Robotium结合Android官方提供的测试框架可达到对应用程序进行

18、自动化测试的目的。另外,Robotium 4.0版本支持对Web View的操作,对Activity、Dialog、Toast、Menu同样支持。通过使用Robotium,可以为Android应用写出强大的和稳定的自动化黑盒测试用例,既支持纯Android应用,也支持混合应用(含H5页面)。Robotium支持Windows/Mac OS X/Linux平台,支持Android Studio/Eclipse工具,并支持录制Java脚本和使用Jar包开发测试用例。第11章 组件通信漏洞挖掘Robotium的优点如下:(1)支持纯Android应用、混合应用。(2)无需对应用有深入的了解。(3)该

19、框架可以自动处理多个Android的Activity。(4)可以快速写出测试用例。(5)由于是运行时绑定UI组件的,所以测试用例具有较好的健壮性。(6)改善了测试代码的可读性,容易读懂测试过程。(7)测试用例执行得非常快。第11章 组件通信漏洞挖掘Robotium的缺点如下:(1)不支持所有的视图和对象。(2)与单元测试相比,速度更慢。Robotium白盒测试是在有源码的情况下,对APK进行自动化测试,好处是不需要对APK重新签名,对自动化测试代码更容易维护。APK的UI变化不会导致对测试代码的全面改动,但它的局限性在于更依赖APK源代码。第11章 组件通信漏洞挖掘2.Fuzzing测试测试F

20、uzzing测试(模糊测试)是一种基于缺陷注入的自动化软件漏洞挖掘技术。Fuzzing测试通过自动生成测试数据、构造测试用例、执行测试用例和捕获程序异常等一系列工作,来挖掘软件中存在的漏洞和缺陷。Fuzzing测试通过对随机数据、协议库、启发式攻击等多种方式进行结合来发现软件中尚未发现的数据或者代码中的错误。第11章 组件通信漏洞挖掘1)早期的Fuzzing技术早期的Fuzzing技术主要利用随机生成的方式产生测试用例,并利用测试用例对软件进行测试。此类随机生成的方式除了投入成本低、部署快速的特点以外,还具有以下优点:(1)可用性高,无需获得目标程序的源代码就可以测试。(2)复用性好,如测试F

21、TP(File Transfer Protocol)的Fuzzing程序可以用来测试任意一个FTP服务器。(3)简单性好,无需过多了解目标程序。第11章 组件通信漏洞挖掘但是此时的Fuzzing技术也具有很多缺点:(1)由于未能对测试目标的协议进行建模分析,因此测试用例不能深入到软件内部,大量代码域不能被有效测试。(2)Fuzzing技术不可避免地会产生大量冗余测试输入、覆盖率低,因而很难发现软件的缺陷。第11章 组件通信漏洞挖掘2)Fuzzing技术的发展在之后的时间里,Fuzzing技术逐步向基于生成的测试模式和基于变异的测试模式两个方向发展。(1)基于生成的测试模式的主要思想是:测试人员

22、需要熟悉目标测试用例的协议结构,并构造出基本符合协议要求的测试用例。测试用例能够对目标程序进行更深层次的测试。(2)基于变异的测试模式相比于基于生成的测试模式而言更容易部署和实施。第11章 组件通信漏洞挖掘3)Fuzzing技术的研究现状目前阶段的Fuzzing技术已经发展出了另外一种测试模型,该模型利用人工智能自动对测试对象所采用的协议知识生成测试用例,并利用测试用例对程序进行测试。依照该模式生成的测试用例可以有效提高测试过程中的代码覆盖率。但该模型在协议学习部分仍不成熟,现阶段无法对所有的协议进行完整的学习。另外,利用基因生成算法、模拟退火算法等模型的Fuzzing技术也在不断发展。第11

23、章 组件通信漏洞挖掘Fuzzing测试的特点在于输入数据的非常规性和随机性,输入可以是完全随机或精心构造的。例如,一个程序接收用户姓名和年龄两个数据,一般来讲输入的姓名应该是字符串类型数据,年龄是整数数据,但是Fuzzing测试过程中可能会构造整数类型的名字输入和字符串类型的年龄输入,如果程序没有对输入数据进行验证,则会触发异常状态,导致不可预知的错误输出,在此过程中可能会存在安全漏洞,Fuzzing测试就达到了漏洞挖掘的目的。第11章 组件通信漏洞挖掘3.基于基于Fuzzing的的Android组件暴露漏洞检测框架组件暴露漏洞检测框架在本节中,我们设计了一个基于Fuzzing的Android

24、组件暴露漏洞检测框架。设计过程分为两个阶段:逆向和Fuzzing测试。逆向过程对组件暴露的模式进行分析,并将Intent消息携带的Extras数据作为源代码分析中的测试突破点;Fuzzing测试过程使用Robotium框架来执行测试用例从而进行漏洞测试。第11章 组件通信漏洞挖掘1)逆向(1)反编译模块。通过使用Android Killer实现对APK文件的反编译,得到APK的反编译Java源文件等。Android Killer是一款可视化的安卓应用逆向工具,集APK反编译、APK打包、APK签名、编码互转、ADB通信(应用安装、卸载、运行、设备文件管理)等特色功能于一身,支持logcat日志

25、输出、语法高亮、基于关键字(支持单行代码或多行代码段)项目内搜索,可自定义外部工具,是一款一站式逆向工具软件。第11章 组件通信漏洞挖掘(2)组件分析模块。APK反编译文件中含有AndroidManifest.xml文件,可对AndroidManifest.xml文件进行组件分析。组件分析的内容包括查找组件是否定义了intent-filter子元素,是否声明了android:permission权限,是否定义了android:exported属性以及该属性是否为“false”,判断组件是否暴露在外可以被其他组件调用以及分析Java源文件以获取Extras信息五大部分。第11章 组件通信漏洞挖掘

26、图11-2是逆向分析流程图,图11-3是根据组件名定位Java源文件的位置并对Java源文件中的Extras信息进行提取的流程图。第11章 组件通信漏洞挖掘图11-2 逆向分析流程图第11章 组件通信漏洞挖掘图11-3 提取Java的Extras信息流程图第11章 组件通信漏洞挖掘图11-4是根据组件配置属性来判断组件是否暴露在外的流程图。图11-4 组件暴露判断流程图第11章 组件通信漏洞挖掘图11-5是对Java源文件中的Extras信息提取的伪代码。图11-5 提取Extras信息的伪代码第11章 组件通信漏洞挖掘组件分析模块生成的组件分析结果文件如图11-6所示。组件分析所得的信息如表

27、11-4所示。第11章 组件通信漏洞挖掘图11-6 组件分析结果文件第11章 组件通信漏洞挖掘2)Fuzzing测试模块的实验(1)应用程序的配置。因为重新打包生成的被测应用需要debug签名才能使用Robotium框架进行测试,所以需要使用Java SDK自带的签名工具jarsigner对APK文件进行签名。对APK进行签名的命令如下:Jarsigner-verbose-keystore debug.keystore-storepass android-keypass android-digestalg SHAI-sigalg MD5withRSA-signedjar android_deb

28、ug.apk android.apk androiddebugkey。第11章 组件通信漏洞挖掘(2)测试用例生成模块。测试用例生成模块需要将逆向分析模块生成的组件信息与测试数据模板结合生成测试数据。测试数据模板如表11-5所示。第11章 组件通信漏洞挖掘第11章 组件通信漏洞挖掘根据表11-5所示的数据模板生成的测试数据包含如表11-6所示的信息。根据表11-6可以生成如图11-7所示的测试数据文件。文件中每条测试数据包含test_id(测试编号)、com_type(组件类型)、com_name(组件名)和extras_list(Extras数据数组),根据测试数据可以生成对应的测试用例。第

29、11章 组件通信漏洞挖掘第11章 组件通信漏洞挖掘图11-7 测试数据文件第11章 组件通信漏洞挖掘图11-7所示的为测试系统生成的测试数据文件中的每条测试数据的内容与表11-6中的定义相对应。通过逆向分析可得到组件接收到的Intent中Extra项的数据类型和名称。图11-8是根据组件分析结果结合数据模板生成测试用例的流程图。图11-9是测试用例流程图。第11章 组件通信漏洞挖掘图11-8 组件分析结果结合数据模板生成测试用例的流程图 第11章 组件通信漏洞挖掘这里使用Ruby语言编写代码生成器,自动生成测试用例代码。第11章 组件通信漏洞挖掘图11-9 测试用例流程图第11章 组件通信漏洞

30、挖掘图11-10是生成对Activity进行测试的Robotium测试用例代码骨架,根据骨架可以生成对应的Java测试用例代码。图11-11是对应生成Java代码的Ruby代码中的关键部分。图11-10 Robotium测试用例骨架第11章 组件通信漏洞挖掘图11-11 用于生成测试用例代码的Ruby代码第11章 组件通信漏洞挖掘(3)测试用例执行模块。使用adb install命令将被测Android应用程序APK文件和Fuzzing测试APK文件安装到模拟器中,并通过Ruby脚本执行adb命令进行Fuzzing测试。测试用例执行模块的流程图如图11-12所示。第11章 组件通信漏洞挖掘图1

31、1-12 测试用例执行模块流程图第11章 组件通信漏洞挖掘测试用例执行模块使用“adb”命令执行测试用例,图11-13是测试用例执行代码示例。图11-13 测试用例执行代码示例第11章 组件通信漏洞挖掘每条测试结果按照如表11-7所定义的结构来组织和收集。第11章 组件通信漏洞挖掘图11-14所示是根据表11-7收集到的测试结果文件内容。图11-14 测试结果文件内容第11章 组件通信漏洞挖掘(4)测试结果处理模块。测试结果处理模块将收集到的测试结果数据处理成html格式的测试报告。测试结果处理模块的关键代码如图11-15所示。图11-15 测试结果处理模块关键代码第11章 组件通信漏洞挖掘小小 结结本章主要讨论系统组件之间通信的漏洞挖掘问题。若要进行漏洞挖掘,首先要对实验所用的智能终端进行刷机,便于后续实验顺利进行,因此本章介绍的第一个问题是如何刷机对设备进行定制。组件通信安全更加强调的是暴露组件的通信安全问题,那么应该如何检测暴露组件呢?这是本章的第二个主题,即暴露组件的检测。检测出暴露组件后,即可针对暴露组件的Action、Category及Extras构造测试用例。本章最后介绍了使用所得测试用例通过Fuzzing测试框架进行漏洞挖掘的技术。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 大学
版权提示 | 免责声明

1,本文(《移动智能终端安全》课件第11章.pptx)为本站会员(momomo)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|