安卓应用文件的隐私泄露监控方法技术

技术编号:14130714 阅读:144 留言:0更新日期:2016-12-09 19:19
本发明专利技术公开了一种安卓应用文件的隐私泄露监控方法,其实现步骤是:1.将安卓应用文件中的Dalvik字节码文件进行转换生成Jimple格式文件;2.解析Jimple格式文件生成程序的控制流,进行组件内隐私泄露检测;3.检测安卓文件中的Intent,进行组件间隐私泄露检测;4.将策略实施代码模块连同隐私泄露检测结果嵌入到应用文件中;5.安装运行嵌入处理过的应用,并对应用程序实施动态监控。本发明专利技术提高了用户隐私泄露检测的精准度,增强了系统的安全性防御,从一定程度上减少了用户隐私泄露的危险,可用于对安卓应用文件的检测与保护。

【技术实现步骤摘要】

本专利技术涉及计算机
,更进一步涉及移动设备安全
中的一种安卓应用文件的隐私泄露监控方法。本专利技术通过对安卓平台上的应用程序进行静态分析检测与动态拦截,有效地控制和减少了应用程序中存在的隐私信息泄露。
技术介绍
安卓系统是目前最流行的移动智能操作系统,安卓系统安全机制贯穿了Linux操作系统内核、运行时、应用程序框架等体系结构,涉及到应用程序组件等功能模块的实现,力求保护用户信息、移动设备以及无线网络的安全。安卓安全模型继承了安全的Linux内核,通过沙箱机制隔离进程资源,借助独特的内存管理机制与高效的进程间通信机制很大程度上改善了移动终端设备处理器性能和内存容量带来的限制。在应用程序层面,安卓系统使用显式定义且经用户授权的应用权限控制机制,系统化地规范并强制各类应用程序的行为准则和权限许可,系统还引入应用程序签名机制定义程序之间的信任关系与资源共享的权限。虽然安卓系统提供很多安全机制来保护系统和用户环境的安全,但系统仍存在一些安全问题,如应用程序申请的权限声明粒度不够细,从而恶意应用可以借助粗粒度的权限声明执行恶意操作。安卓移动应用存在很多安全威胁,最为常见的就是用户隐私信息泄露问题。所谓隐私泄露就是恶意应用在未经用户允许的情况下,擅自将涉及到用户隐私的数据信息借助网络等通信手段传播出去的行为。这些用户隐私包括通讯录、电话记录、照片、账号密码以及地理位置等方面信息。一些应用程序为了实现其功能,需要访问手机里的敏感资源,调用系统服务,所以在这类应用程序运行的过程中就存在读取并发送隐私信息的可能,对用户隐私造成威胁。复旦大学申请的专利“基于静态分析的Android应用日志中信息泄漏隐患的检测方法”(专利申请号CN201210228277.0,公开号CN102737190B)中公开了一种基于静态分析的Android应用日志中信息泄漏隐患的检测方法。该方法包括预处理应用文件,制定权限-操作映射表来识别私密信息,构建函数调用图来跟踪数据流传播路径,检测日志记录点防止隐私信息写入日志系统。该方法的不足之处是,检测隐私泄露途径过于单一,只局限于日志文件的隐私泄露检测。中国人民解放军理工大学申请的专利“一种安卓数据泄露的恶意应用检测方法”(专利申请号CN201410855161.9,公开号CN104504337A)中公开了一种安卓数据泄露的恶意应用检测方法。该方法先获取函数调用图,构建隐私数据读取函数集合和隐私数据发送函数集合,对函数调用图进行遍历,通过检测函数调用图中与隐私数据读取函数所对应节点直接或间接连通的节点是否存在隐私泄露来确定该应用是否为安卓数据泄露的恶意应用。该方法的不足之处是,检测的隐私数据类型有限,检测的数据发送方式只涉及到传统最常用的途径。西安电子科技大学申请的专利“安卓应用文件的安全性检测方法”(专利申请号CN201510953538.9,公开号CN105550594A)中公开了一种安卓应用文件的安全性检测方法。该方法包括中间语言格式文件转换,提取并标记输入输出函数,创建Main函数来生成过程间控制流图,制定污点传播规则,根据过程见控制流图生成污点访问路径,然后依照污点传播规则找出数据泄露的路径。该方法存在的不足之处是,无法检测隐式组件间通信行为。
技术实现思路
本专利技术的目的在于针对上述现有方法的不足,提出一种安卓应用文件的隐私泄露监控方法,通过对应用程序实施组件内和组件间隐私泄露分析检测,以提高检测泄露的精准度,并且辅以敏感请求的拦截,为用户提供可靠的安全防护。为实现上述目的,本专利技术的技术方案包括如下步骤:(1)转换安卓应用文件格式:使用插件工具Dexpler,将安卓应用文件中Dalvik字节码格式文件转换成Jimple中间语言格式文件;(2)提取Jimple中间语言格式文件sources/sinks信息:(2a)解析转换后的Jimple中间语言格式文件,获取Jimple中间语言格式文件的初始信息,通过分析生命周期函数和回调函数生成main主函数;(2b)利用工具Soot,构造Jimple中间语言格式文件的过程间控制流图,利用工具Heros,构造Jimple中间语言格式文件的程序调用图;(2c)使用自学习工具SuSi,获取Jimple中间语言格式文件中的sources/sinks函数集合;(3)检测组件内隐私泄露:(3a)使用流敏感分析方法,分析Jimple中间语言格式文件中所有的source函数调用点,检测所有被source函数赋值的对象,污点标记检测后的对象,向下跟踪污点标记对象;(3b)在污点跟踪的过程中,对发现的每一个污点标记对象,反向搜索污点标记对象的所有别名,分别对所有的别名进行污点标记跟踪;(3c)反向搜索污点标记对象所含数据传播的起始点,污点标记存储该数据的对象并向下跟踪,记录污点标记数据传播路径,直到再次跟踪到达初始进行污点标记的对象的语句,设置初始进行污点标记的对象为已向上搜索处理的状态,继续向下跟踪污点标记对象;(3d)确定所有调用sink函数的污点标记对象,得到污点标记对象所含数据由sources到sinks所经过的污点标记数据传播路径,记录所有组件内隐私泄露的污点标记数据传播路径信息,进一步检测组件间隐私泄露问题;(4)判断Jimple中间语言格式文件的初始信息是否存在组件间通信,若是,则执行步骤(5),否则,执行步骤(7);(5)创建组件间通信链:(5a)使用工具Epicc,对Jimple中间语言格式文件的函数进行分析,获取组件间通信函数及其参数;(5b)解析配置文件中声明的Intent Filter信息,将所有IntentFilter定义的组件设置为目标组件,将组件间通信函数定义的组件设置为源组件,对源组件和目标组件进行交叉匹配链接,生成组件间通信链;(6)检测组件间隐私泄露:(6a)定义一个帮助类对象,由帮助类对象来处理从源组件到目标组件的通信过程,帮助类对象中定义一个替换函数,替换函数中声明了一个目标组件对象,目标组件对象实现了目标组件的生命周期函数和回调函数的声明和调用工作;(6b)修改源组件代码,用帮助类对象定义的目标组件函数替换原有的通信函数;(6c)修改目标组件代码,定义一个新的以Intent为参数的构造函数,覆写一个getIntent函数显式获取通信中传递的Intent信息;(6d)利用步骤(5b)得到的组件间通信链对Jimple中间语言格式文件进行静态污点分析,利用流敏感分析方法,得到所有sources到sinks所经过的污点标记数据传播路径,记录所有组件间隐私泄露的污点标记数据传播路径信息;(7)嵌入策略实施代码模块:(7a)使用apk重打包技术,将步骤(3d)和步骤(6d)得到的污点标记数据传播路径信息连同策略实施代码模块嵌入到被检测的安卓应用文件中,将策略实施代码模块运行的优先级调整为最高级,得到嵌入处理的安卓应用文件;(7b)随机产生应用程序签名,对嵌入处理的安卓应用文件进行签名,生成新的安卓应用文件,保存新旧签名的映射关系信息;(8)拦截敏感调用操作:(8a)安装运行新的安卓应用文件,嵌入的策略实施代码模块检测应用程序的函数调用操作,若被检测应用程序执行的函数调用操作与存储的污点标记数据传播路径信息相符,拦截被检测本文档来自技高网
...
安卓应用文件的隐私泄露监控方法

【技术保护点】
一种安卓应用文件的隐私泄露监控方法,包括如下步骤:(1)转换安卓应用文件格式:使用插件工具Dexpler,将安卓应用文件中Dalvik字节码格式文件转换成Jimple中间语言格式文件;(2)提取Jimple中间语言格式文件sources/sinks信息:(2a)解析转换后的Jimple中间语言格式文件,获取Jimple中间语言格式文件的初始信息,通过分析生命周期函数和回调函数生成main主函数;(2b)利用工具Soot,构造Jimple中间语言格式文件的过程间控制流图,利用工具Heros,构造Jimple中间语言格式文件的程序调用图;(2c)使用自学习工具SuSi,获取Jimple中间语言格式文件中的sources/sinks函数集合;(3)检测组件内隐私泄露:(3a)使用流敏感分析方法,分析Jimple中间语言格式文件中所有的source函数调用点,检测所有被source函数赋值的对象,污点标记检测后的对象,向下跟踪污点标记对象;(3b)在污点跟踪的过程中,对发现的每一个污点标记对象,反向搜索污点标记对象的所有别名,分别对所有的别名进行污点标记跟踪;(3c)反向搜索污点标记对象所含数据传播的起始点,污点标记存储该数据的对象并向下跟踪,记录污点标记数据传播路径,直到再次跟踪到达初始进行污点标记的对象的语句,设置初始进行污点标记的对象为已向上搜索处理的状态,继续向下跟踪污点标记对象;(3d)确定所有调用sink函数的污点标记对象,得到污点标记对象所含数据由sources到sinks所经过的污点标记数据传播路径,记录所有组件内隐私泄露的污点标记数据传播路径信息,进一步检测组件间隐私泄露问题;(4)判断Jimple中间语言格式文件的初始信息是否存在组件间通信,若是,则执行步骤(5),否则,执行步骤(7);(5)创建组件间通信链:(5a)使用工具Epicc,对Jimple中间语言格式文件的函数进行分析,获取组件间通信函数及其参数;(5b)解析配置文件中声明的Intent Filter信息,将所有IntentFilter定义的组件设置为目标组件,将组件间通信函数定义的组件设置为源组件,对源组件和目标组件进行交叉匹配链接,生成组件间通信链;(6)检测组件间隐私泄露:(6a)定义一个帮助类对象,由帮助类对象来处理从源组件到目标组件的通信过程,帮助类对象中定义一个替换函数,替换函数中声明了一个目标组件对象,目标组件对象实现了目标组件的生命周期函数和回调函数的声明和调用工作;(6b)修改源组件代码,用帮助类对象定义的目标组件函数替换原有的通信函数;(6c)修改目标组件代码,定义一个新的以Intent为参数的构造函数,覆写一个getIntent函数显式获取通信中传递的Intent信息;(6d)利用步骤(5b)得到的组件间通信链对Jimple中间语言格式文件进行静态污点分析,利用流敏感分析方法,得到所有sources到sinks所经过的污点标记数据传播路径,记录所有组件间隐私泄露的污点标记数据传播路径信息;(7)嵌入策略实施代码模块:(7a)使用apk重打包技术,将步骤(3d)和步骤(6d)得到的污点标记数据传播路径信息连同策略实施代码模块嵌入到被检测的安卓应用文件中,将策略实施代码模块运行的优先级调整为最高级,得到嵌入处理的安卓应用文件;(7b)随机产生应用程序签名,对嵌入处理的安卓应用文件进行签名,生成新的安卓应用文件,保存新旧签名的映射关系信息;(8)拦截敏感调用操作:(8a)安装运行新的安卓应用文件,嵌入的策略实施代码模块检测应用程序的函数调用操作,若被检测应用程序执行的函数调用操作与存储的污点标记数据传播路径信息相符,拦截被检测应用程序的敏感调用,按调用类型分别拦截被检测应用程序的系统调用和拦截被检测应用程序的组件间通信调用,生成被检测应用程序调用请求,发送到策略决策应用程序;(8b)策略决策应用程序判断被检测应用程序敏感调用请求是否符合策略语言定义的规则,若是,策略决策应用程序返回允许执行的状态信息到被检测应用程序,否则,策略决策应用程序返回拒绝执行的状态信息到被检测应用程序;(8c)策略实施代码模块根据步骤(8b)返回的状态信息实施允许或拒绝被检测应用程序敏感调用请求的操作。...

【技术特征摘要】
1.一种安卓应用文件的隐私泄露监控方法,包括如下步骤:(1)转换安卓应用文件格式:使用插件工具Dexpler,将安卓应用文件中Dalvik字节码格式文件转换成Jimple中间语言格式文件;(2)提取Jimple中间语言格式文件sources/sinks信息:(2a)解析转换后的Jimple中间语言格式文件,获取Jimple中间语言格式文件的初始信息,通过分析生命周期函数和回调函数生成main主函数;(2b)利用工具Soot,构造Jimple中间语言格式文件的过程间控制流图,利用工具Heros,构造Jimple中间语言格式文件的程序调用图;(2c)使用自学习工具SuSi,获取Jimple中间语言格式文件中的sources/sinks函数集合;(3)检测组件内隐私泄露:(3a)使用流敏感分析方法,分析Jimple中间语言格式文件中所有的source函数调用点,检测所有被source函数赋值的对象,污点标记检测后的对象,向下跟踪污点标记对象;(3b)在污点跟踪的过程中,对发现的每一个污点标记对象,反向搜索污点标记对象的所有别名,分别对所有的别名进行污点标记跟踪;(3c)反向搜索污点标记对象所含数据传播的起始点,污点标记存储该数据的对象并向下跟踪,记录污点标记数据传播路径,直到再次跟踪到达初始进行污点标记的对象的语句,设置初始进行污点标记的对象为已向上搜索处理的状态,继续向下跟踪污点标记对象;(3d)确定所有调用sink函数的污点标记对象,得到污点标记对象所含数据由sources到sinks所经过的污点标记数据传播路径,记录所有组件内隐私泄露的污点标记数据传播路径信息,进一步检测组件间隐私泄露问题;(4)判断Jimple中间语言格式文件的初始信息是否存在组件间通信,若是,则执行步骤(5),否则,执行步骤(7);(5)创建组件间通信链:(5a)使用工具Epicc,对Jimple中间语言格式文件的函数进行分析,获取组件间通信函数及其参数;(5b)解析配置文件中声明的Intent Filter信息,将所有IntentFilter定义的组件设置为目标组件,将组件间通信函数定义的组件设置为源组件,对源组件和目标组件进行交叉匹配链接,生成组件间通信链;(6)检测组件间隐私泄露:(6a)定义一个帮助类对象,由帮助类对象来处理从源组件到目标组件的通信过程,帮助类对象中定义一个替换函数,替换函数中声明了一个目标组件对象,目标组件对象实现了目标组件的生命周期函数和回调函数的声明和调用工作;(6b)修改源组件代码,用帮助类对象定义的目标组件函数替换原有的通信函数;(6c)修改目标组件代码,定义一个新的以Intent为参数的构造函数,覆写一个getIntent函数显式获取通信中传递的Intent信息;(6d)利用步骤(5b)得到的组件间通信链对Jimple中间语言格式文件进行静态污点分析,利用流敏感分析方法,得到所有sources到sinks所经过的污点标记数据传播路径,记录所有组件间隐私泄露的污点标记数据传播路径信息;(7)嵌入策略实施代码模块:(7a)使用apk重打包技术,将步骤(3d)和步骤(6d)得到的污点标记数据传播路径信息连同策略实施代码模块嵌入到被检测的安卓应用文件中,将策略实施代码模块运行的优先级调整为最高级,得到嵌入处理的安卓应用文件;(7b)随机产生应用程序签名,对嵌入处理的安卓应用文件进行签名,生成新的安卓应用文件,保存新旧签名的映射关系信息;(8)拦截敏感调用操作:(8a)安装运行新的安卓应用文件,嵌入的策略实施代码模块检测应用程序的函数调用操作,若被检测应用程序执行的函数调用操作与存储的污点标记数据传播路径信息相符,拦截被检测应用程序的敏感调用,按调用类型分别拦截被检测应用程序的系统调用和拦截被检测应用程序的组件间通信调用,生成被检测应用程序调用请求,发送到策略决策应...

【专利技术属性】
技术研发人员:杨力张健杨超张冬冬王利军
申请(专利权)人:西安电子科技大学
类型:发明
国别省市:陕西;61

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1