CN106203113A - 安卓应用文件的隐私泄露监控方法 - Google Patents
安卓应用文件的隐私泄露监控方法 Download PDFInfo
- Publication number
- CN106203113A CN106203113A CN201610533236.0A CN201610533236A CN106203113A CN 106203113 A CN106203113 A CN 106203113A CN 201610533236 A CN201610533236 A CN 201610533236A CN 106203113 A CN106203113 A CN 106203113A
- Authority
- CN
- China
- Prior art keywords
- file
- stain
- function
- android
- application program
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Health & Medical Sciences (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Bioethics (AREA)
- Virology (AREA)
- Medical Informatics (AREA)
- Databases & Information Systems (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种安卓应用文件的隐私泄露监控方法,其实现步骤是:1.将安卓应用文件中的Dalvik字节码文件进行转换生成Jimple格式文件;2.解析Jimple格式文件生成程序的控制流,进行组件内隐私泄露检测;3.检测安卓文件中的Intent,进行组件间隐私泄露检测;4.将策略实施代码模块连同隐私泄露检测结果嵌入到应用文件中;5.安装运行嵌入处理过的应用,并对应用程序实施动态监控。本发明提高了用户隐私泄露检测的精准度,增强了系统的安全性防御,从一定程度上减少了用户隐私泄露的危险,可用于对安卓应用文件的检测与保护。
Description
技术领域
本发明涉及计算机技术领域,更进一步涉及移动设备安全技术领域中的一种安卓应用文件的隐私泄露监控方法。本发明通过对安卓平台上的应用程序进行静态分析检测与动态拦截,有效地控制和减少了应用程序中存在的隐私信息泄露。
背景技术
安卓系统是目前最流行的移动智能操作系统,安卓系统安全机制贯穿了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)安装运行新的安卓应用文件,嵌入的策略实施代码模块检测应用程序的函数调用操作,若被检测应用程序执行的函数调用操作与存储的污点标记数据传播路径信息相符,拦截被检测应用程序的敏感调用,按调用类型分别拦截被检测应用程序的系统调用和拦截被检测应用程序的组件间通信调用,生成被检测应用程序调用请求,发送到策略决策应用程序;
(8b)策略决策应用程序判断被检测应用程序敏感调用请求是否符合策略语言定义的规则,若是,策略决策应用程序返回允许执行的状态信息到被检测应用程序,否则,策略决策应用程序返回拒绝执行的状态信息到被检测应用程序;
(8c)策略实施代码模块根据步骤(8b)返回的状态信息实施允许或拒绝被检测应用程序敏感调用请求的操作。
本发明与现有技术相比具有以下优点:
第一,本发明通过解析转换后的Jimple中间语言格式文件,获取安卓应用文件的初始信息,通过分析生命周期函数和回调函数生成main主函数,克服了现有技术中安卓应用程序多入口点难以分析检测的问题,使得本发明简化了分析安卓应用文件的工作难度,降低了分析所需要花费的时间和空间成本。
第二,本发明通过使用流敏感分析方法,得到所有sources到sinks的污点标记数据传播路径,克服了现有技术中检测隐私泄露途径过于单一的问题,使得本发明具有通用性更好的优点。
第三,本发明通过使用自学习工具SuSi,获取安卓应用文件中的sources/sinks函数集合,使用流敏感分析方法,分析Jimple中间语言格式文件中所有的source函数调用点,克服了现有技术中检测的隐私数据类型有限,检测的数据发送方式只涉及到传统最常用的途径的问题,使得本发明具有检测隐私泄漏数据较为全面的优点。
第四,本发明分别通过检测组件内隐私泄露与检测组件间隐私泄露,记录所有隐私泄露的污点标记数据传播路径信息,克服了现有技术中无法检测隐式组件间通信行为的问题,本发明提高了隐私泄露检测的覆盖面和精准度。
附图说明
图1为本发明的流程图。
具体实施方式
下面结合图1对本发明的具体实施步骤做进一步的详细描述。
步骤1,转换安卓应用文件格式。
使用插件工具Dexpler,将安卓应用文件中Dalvik字节码格式文件转换成Jimple中间语言格式文件。
在静态分析时中间语言形式的文件相比源代码文件执行效率更高。Jimple是一种3地址代码格式,它不基于栈且有数据类型,只含有15类指令语句。这种3地址代码对赋值语句进行了限制,要求等号左边最多有一个引用变量而等号右边最多有两个引用变量,每条语句只能包含一个操作,因此涉及到嵌套操作的语句需要借助一些临时变量拆分简单语句。例如一个语句中同时包含“+”操作和“-”操作,那么需要定义一个新的临时变量记录“+”操作的结果,接下来执行相关的“-”操作,使得该语句拆分成“+”和“-”两个语句。
本发明使用工具Dexpler将Dalvik字节码文件直接转化为Jimple语言文件,在语言转换的过程中,还会产生一些额外的无用代码,这部分代码对程序检测不会造成影响,故忽略不计。
步骤2,提取Jimple中间语言格式文件sources/sinks信息。
解析转换后的Jimple中间语言格式文件,获取Jimple中间语言格式文件的初始信息,通过分析生命周期函数和回调函数生成main主函数。
初始信息包括布局文件、可执行代码文件以及含有定义活动、服务、广播接收器、内容提供器的四类组件的配置文件。
分析生命周期函数和回调函数生成main主函数是指,分析应用文件的生命周期函数和回调函数中存在的简单类型数据和函数调用信息,判断被分析的函数属于Android组件哪一个子类,根据Android生命周期特点,创建生成相应的主函数,将分析得到的信息写入主函数中。
利用工具Soot,构造Jimple中间语言格式文件的过程间控制流图,利用工具Heros,构造Jimple中间语言格式文件的程序调用图。
工具Soot的作用就是用来生成过程间控制流图,Soot不仅支持java字节码转化为Jimple语言,还支持安卓Dalvik字节码向Jimple格式的转化。Soot需要解析文件生成的主函数作为入口点通过利用相应的调用图构造算法来创建安卓应用的控制流图。因此,本发明利用Soot来构造控制流图。在得到应用的控制流图之后,还需要进一步分析生成相关的程序调用图,工具Heros是在工具Soot的基础上进行开发的,具有很好的兼容性和很高的执行效率,因此,本发明使用Heros对控制流进行再处理生成相应的调用流图。
使用自学习工具SuSi,获取Jimple中间语言格式文件中的sources/sinks函数集合。
数据流分析很大程度上依赖于检测应用得到的sources/sinks数据集,这些数据检测的精准度直接影响到数据流分析的结果,本发明采用自动机器学习工具SuSi来识别应用中存在的sources和sinks信息,SuSi是目前检测sources/sinks数据最全面的一款软件,精准度达到90%以上。这一工具有一个很明显的优势:当Android系统版本升级时,可能会增加一些新的API,这些API又会包含新的sources和sinks,在借助工具SuSi的情况下,能够在不需要人工参与的环境里分析新的源代码并更新已有sources/sinks列表数据。SuSi以安卓应用文件源码作为输入参数来分析应用中存在的sources/sinks数据集合,它包含数百个sources/sinks方法,比平时进行数据流分析涉及到的方法要全面很多。
步骤3,检测组件内隐私泄露。
使用流敏感分析方法,分析Jimple中间语言格式文件中所有的source函数调用点,检测所有被source函数赋值的对象,污点标记检测后的对象,向下跟踪污点标记对象。
流敏感分析方法的具体步骤如下:
第1步,在一个赋值语句中,若等号右边为source函数或污染标记对象,则将等号左边的对象设置为污点标记状态;
第2步,在对象赋值的过程中,向后分析污点标记对象的所有别名,将别名经行污点标记分析。
在污点跟踪的过程中,对发现的每一个污点标记对象,反向搜索污点标记对象的所有别名,分别对所有的别名进行污点标记跟踪。
反向搜索污点标记对象所含数据传播的起始点,污点标记存储该数据的对象并向下跟踪,记录污点标记数据传播路径,直到再次跟踪到达初始进行污点标记的对象的语句,设置初始进行污点标记的对象为已向上搜索处理的状态,继续向下跟踪污点标记对象。
确定所有调用sink函数的污点标记对象,得到污点标记对象所含数据由sources到sinks所经过的污点标记数据传播路径,记录所有组件内隐私泄露的污点标记数据传播路径信息,进一步检测组件间隐私泄露问题。
步骤4,判断Jimple中间语言格式文件的初始信息是否存在组件间通信,若是,则执行步骤5,否则,执行步骤7。
组件间通信是指,一个组件通过定义Intent对象来声明与另一个组件进行数据交互活动,组件通过定义IntentFilter对象来接收Intent传送的数据。
步骤5,创建组件间通信链。
使用工具Epicc,对Jimple中间语言格式文件的函数进行分析,获取组件间通信函数及其参数。
解析配置文件中声明的Intent Filter信息,将所有IntentFilter定义的组件设置为目标组件,将组件间通信函数定义的组件设置为源组件,对源组件和目标组件进行交叉匹配链接,生成组件间通信链。
在组件间通信过程中调用通信方法时,执行流程可能涉及到应用框架层甚至更底层的代码调用,这部分数据流路径信息无法通过静态污点分析检测得到,存在间断的情况,这就需通过人工定义的方法来替换已有的通信方法,来实现显式的组件间通信过程。
步骤6,检测组件间隐私泄露。
定义一个帮助类对象,由帮助类对象来处理从源组件到目标组件的通信过程,帮助类对象中定义一个替换函数,替换函数中声明了一个目标组件对象,目标组件对象实现了目标组件的生命周期函数和回调函数的声明和调用工作。
修改源组件代码,用帮助类对象定义的目标组件函数替换原有的通信函数。
修改目标组件代码,定义一个新的以Intent为参数的构造函数,覆写一个getIntent函数显式获取通信中传递的Intent信息。
在修改涉及到调用应用框架层代码的方法时,通过帮助类的方法在应用层来显式地执行所有功能,这样在数据流分析的过程中就不存在了间断问题,从而实现了整个隐私信息泄露的路径跟踪流程,即源组件获取敏感信息,通过通信方法传播到目标组件,目标组件借助与外界联系发送敏感数据。
利用步骤5得到的组件间通信链对Jimple中间语言格式文件进行静态污点分析,利用流敏感分析方法,得到所有sources到sinks所经过的污点标记数据传播路径,记录所有组件间隐私泄露的污点标记数据传播路径信息。
步骤7,嵌入策略实施代码模块。
使用apk重打包技术,将步骤3和步骤6得到的污点标记数据传播路径信息连同策略实施代码模块嵌入到被检测的安卓应用文件中,将策略实施代码模块运行的优先级调整为最高级,得到嵌入处理的安卓应用文件。
将策略实施代码模块运行的优先级调整为最高级的具体步骤如下:检测待嵌入处理的安卓应用文件的配置文件,如果待嵌入处理的安卓应用文件中没有定义程序启动类信息,则在待嵌入处理的安卓应用文件的配置文件中,将程序入口点定义为嵌入的策略实施代码模块,策略实施代码模块获得先于其他部分运行的优先级,否则,追溯启动类的继承关系,找到该类继承的最上层的根类,修改最上层的根类的定义,应用程序直接继承嵌入的策略实施代码模块相关类,策略实施代码模块获得最高的运行优先级。
新生成的应用文件相对原文件大小会有一定的增加,除了策略实施代码和静态检测信息外,还存在一部分由于文件格式转换所产生的无用代码,但这部分代码相对于整个文件大小来说,影响可以忽略不计。考虑到有些应用文件比较小,嵌入代码可能会对应用的性能影响比较大,本发明针对这类应用先检测其是否存在隐私泄露行为,若不存在则不执行嵌入操作,从而保证应用的性能不受干扰。
随机产生应用程序签名,对嵌入处理的安卓应用文件进行签名,生成新的安卓应用文件,保存新旧签名的映射关系信息。
签名生成新的安卓应用文件的具体步骤是,验证旧签名是否已存在具有映射关系的新证书,若有,则用与应用程序原证书具有映射关系的新证书签名嵌入处理的安卓应用文件;否则,产生一个新证书签名嵌入处理的安卓应用文件,并建立新证书与原证书的映射关系。
步骤8,拦截敏感调用操作。
安装运行新的安卓应用文件,嵌入的策略实施代码模块检测应用程序的函数调用操作,若被检测应用程序执行的函数调用操作与存储的污点标记数据传播路径信息相符,拦截被检测应用程序的敏感调用,按调用类型分别拦截被检测应用程序的系统调用和拦截被检测应用程序的组件间通信调用,生成被检测应用程序调用请求,发送到策略决策应用程序。
拦截被检测应用程序的系统调用的具体步骤如下:
第1步,在安卓系统标准C函数库Bionic libc初始化系统调用的过程中,分析系统调用类型,如果这些系统调用无论如何都需要执行,则执行不拦截操作;
第2步,拦截到libc库函数的系统调用并重定向到策略实施代码模块。
拦截被检测应用程序的组件间通信调用的具体步骤如下:
第1步,访问服务管理应用ServiceManager,查询用来连接与目标组件进行通信的Binder handle;
第2步,运行应用程序时,检测所有涉及到的Binder handle,拦截相关的组件通信调用,重定向发送到策略实施模块。
策略决策应用程序判断被检测应用程序敏感调用请求是否符合策略语言定义的规则,若是,策略决策应用程序返回允许执行的状态信息到被检测应用程序,否则,策略决策应用程序返回拒绝执行的状态信息到被检测应用程序。
策略语言定义的规则是指,采用事件-条件-动作的形式进行编写的规则,支持基数约束和时间约束,基数约束设置执行请求操作的最多次数,时间约束设置执行请求操作的最长时间。
例如,检测到一个系统事件E,当E满足使得OSL条件C为true的条件时允许其执行,接下来会执行动作A。动作A用来声明事件是否被允许执行和需要额外执行的动作。额外的动作可以包含诸如向用户申请权限或是通过弹出窗口报告威胁行为等内容。默认情况下,事件是允许执行的,但在有相关禁止规则时就需要对事件进行阻止操作了。策略规则存储在策略决策应用中,是一个可扩展的数据库,可以通过向该应用中添加策略文件或修改已有策略文件来实时更新现有的策略规则,从而更好地实现用户的需求。
策略实施代码模块根据返回的状态信息实施允许或拒绝被检测应用程序敏感调用请求的操作。
本发明实际测试了发送短信的监控效果,通过定义策略决策规则“每天向指定号码发送短信次数最多为5次”来进行测试,实验结果表明在向该号码发送短信的前5次,都没有出现任何提示或警告,在第6发送短信时,用户会收到发送次数过多的警告并询问用户是否继续发送。
Claims (10)
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)安装运行新的安卓应用文件,嵌入的策略实施代码模块检测应用程序的函数调用操作,若被检测应用程序执行的函数调用操作与存储的污点标记数据传播路径信息相符,拦截被检测应用程序的敏感调用,按调用类型分别拦截被检测应用程序的系统调用和拦截被检测应用程序的组件间通信调用,生成被检测应用程序调用请求,发送到策略决策应用程序;
(8b)策略决策应用程序判断被检测应用程序敏感调用请求是否符合策略语言定义的规则,若是,策略决策应用程序返回允许执行的状态信息到被检测应用程序,否则,策略决策应用程序返回拒绝执行的状态信息到被检测应用程序;
(8c)策略实施代码模块根据步骤(8b)返回的状态信息实施允许或拒绝被检测应用程序敏感调用请求的操作。
2.根据权利要求1所述的安卓应用文件的隐私泄露监控方法,其特征在于,步骤(2a)中所述的初始信息包括布局文件、可执行代码文件以及含有定义活动、服务、广播接收器、内容提供器的四类组件的配置文件。
3.根据权利要求1所述的安卓应用文件的隐私泄露监控方法,其特征在于,步骤(2a)中所述的分析生命周期函数和回调函数生成main主函数是指,分析应用文件的生命周期函数和回调函数中存在的简单类型数据和函数调用信息,判断被分析的函数属于Android组件哪一个子类,根据Android生命周期特点,创建生成相应的主函数,将分析得到的信息写入主函数中。
4.根据权利要求1所述的安卓应用文件的隐私泄露监控方法,其特征在于,步骤(3a)中所述的流敏感分析方法的具体步骤如下:
第1步,在一个赋值语句中,若等号右边为source函数或污染标记对象,则将等号左边的对象设置为污点标记状态;
第2步,在对象赋值的过程中,向后分析污点标记对象的所有别名,将别名经行污点标记分析。
5.根据权利要求1所述的安卓应用文件的隐私泄露监控方法,其特征在于,步骤(4)中所述的组件间通信是指,一个组件通过定义Intent对象来声明与另一个组件进行数据交互活动,组件通过定义IntentFilter对象来接收Intent传送的数据。
6.根据权利要求1所述的安卓应用文件的隐私泄露监控方法,其特征在于,步骤(7a)中所述的将策略实施代码模块运行的优先级调整为最高级的具体步骤如下:检测待嵌入处理的安卓应用文件的配置文件,如果待嵌入处理的安卓应用文件中没有定义程序启动类信息,则在待嵌入处理的安卓应用文件的配置文件中,将程序入口点定义为嵌入的策略实施代码模块,策略实施代码模块获得先于其他部分运行的优先级,否则,追溯启动类的继承关系,找到该类继承的最上层的根类,修改最上层的根类的定义,应用程序直接继承嵌入的策略实施代码模块相关类,策略实施代码模块获得最高的运行优先级。
7.根据权利要求1所述的安卓应用文件的隐私泄露监控方法,其特征在于,步骤(7b)中所述的签名生成新的安卓应用文件的具体步骤是,验证旧签名是否已存在具有映射关系的新证书,若有,则用与应用程序原证书具有映射关系的新证书签名嵌入处理的安卓应用文件;否则,产生一个新证书签名嵌入处理的安卓应用文件,并建立新证书与原证书的映射关系。
8.根据权利要求1所述的安卓应用文件的隐私泄露监控方法,其特征在于,步骤(8a)中所述的拦截被检测应用程序的系统调用的具体步骤如下:
第1步,在安卓系统标准C函数库Bionic libc初始化系统调用的过程中,分析系统调用类型,如果这些系统调用无论如何都需要执行,则执行不拦截操作;
第2步,拦截到libc库函数的系统调用并重定向到策略实施代码模块。
9.根据权利要求1所述的安卓应用文件的隐私泄露监控方法,其特征在于,步骤(8a)中所述的拦截被检测应用程序的组件间通信调用的具体步骤如下:
第1步,访问服务管理应用ServiceManager,查询用来连接与目标组件进行通信的Binder handle;
第2步,运行应用程序时,检测所有涉及到的Binder handle,拦截相关的组件通信调用,重定向发送到策略实施模块。
10.根据权利要求1所述的安卓应用文件的隐私泄露监控方法,其特征在于,步骤(8b)中所述的策略语言定义的规则是指,采用事件-条件-动作的形式进行编写的规则,支持基数约束和时间约束,基数约束设置执行请求操作的最多次数,时间约束设置执行请求操作的最长时间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610533236.0A CN106203113B (zh) | 2016-07-08 | 2016-07-08 | 安卓应用文件的隐私泄露监控方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610533236.0A CN106203113B (zh) | 2016-07-08 | 2016-07-08 | 安卓应用文件的隐私泄露监控方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106203113A true CN106203113A (zh) | 2016-12-07 |
CN106203113B CN106203113B (zh) | 2018-11-16 |
Family
ID=57473222
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610533236.0A Active CN106203113B (zh) | 2016-07-08 | 2016-07-08 | 安卓应用文件的隐私泄露监控方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106203113B (zh) |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106845235A (zh) * | 2017-01-11 | 2017-06-13 | 中科院微电子研究所昆山分所 | 一种基于机器学习方法的安卓平台回调函数检测方法 |
CN107103240A (zh) * | 2017-04-20 | 2017-08-29 | 中国科学院信息工程研究所 | 一种基于上下文信息的Android组件间隐私泄露行为识别方法及系统 |
CN107122660A (zh) * | 2017-03-29 | 2017-09-01 | 中国科学院信息工程研究所 | 一种Android应用软件用户隐私信息泄露检测方法 |
CN107623738A (zh) * | 2017-09-28 | 2018-01-23 | 中南大学 | 一种面向安卓应用的WebView桥接口污点映射及分析方法 |
CN107908955A (zh) * | 2017-11-30 | 2018-04-13 | 华中科技大学 | 一种基于中间语言分析的控制流完整性保护方法及系统 |
CN108256338A (zh) * | 2018-02-27 | 2018-07-06 | 中南大学 | 一种基于扩展API改写的Chrome扩展敏感数据跟踪方法 |
CN109145603A (zh) * | 2018-07-09 | 2019-01-04 | 四川大学 | 一种基于信息流的Android隐私泄露行为检测方法和技术 |
CN109214212A (zh) * | 2018-10-25 | 2019-01-15 | 国家电网有限公司 | 信息防泄露方法及装置 |
CN109766246A (zh) * | 2019-02-02 | 2019-05-17 | 北京字节跳动网络技术有限公司 | 用于监控应用的方法和装置 |
CN112632551A (zh) * | 2021-03-11 | 2021-04-09 | 北京邮电大学 | 一种第三方库信息泄露检测方法及装置 |
CN112887388A (zh) * | 2021-01-20 | 2021-06-01 | 每日互动股份有限公司 | 基于沙箱环境的数据处理系统 |
CN112948824A (zh) * | 2021-03-31 | 2021-06-11 | 支付宝(杭州)信息技术有限公司 | 一种基于隐私保护的程序通信方法、装置及设备 |
CN113627744A (zh) * | 2021-07-21 | 2021-11-09 | 南方医科大学第七附属医院(佛山市南海区第三人民医院) | 新发重大传染病社区防控信息管理系统、方法和存储介质 |
WO2021232279A1 (zh) * | 2020-05-20 | 2021-11-25 | 深圳市欢太科技有限公司 | 文件泄露漏洞的检测方法、装置、电子设备及存储介质 |
CN113836585A (zh) * | 2021-11-25 | 2021-12-24 | 南京大学 | 一种针对用户数据的全自动数据隐私保护系统 |
CN113946873A (zh) * | 2021-12-21 | 2022-01-18 | 天津联想协同科技有限公司 | 离盘文件追溯方法、装置、终端及存储介质 |
CN114091028A (zh) * | 2022-01-19 | 2022-02-25 | 南京明博互联网安全创新研究院有限公司 | 一种基于数据流的Android应用信息泄露检测方法 |
WO2023201621A1 (zh) * | 2022-04-21 | 2023-10-26 | 山石网科通信技术股份有限公司 | 隐私信息泄露的检测方法、装置及电子设备 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110414222B (zh) * | 2019-06-18 | 2020-08-14 | 北京邮电大学 | 一种基于组件关联的应用隐私泄露问题检测方法和装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110239204A1 (en) * | 2010-03-29 | 2011-09-29 | Gm Global Technology Operations, Inc. | Method and apparatus for analyzing software |
CN102737190A (zh) * | 2012-07-04 | 2012-10-17 | 复旦大学 | 基于静态分析的Android应用日志中信息泄漏隐患的检测方法 |
CN104834859A (zh) * | 2015-04-24 | 2015-08-12 | 南京邮电大学 | 一种Android应用中恶意行为的动态检测方法 |
CN105550594A (zh) * | 2015-12-17 | 2016-05-04 | 西安电子科技大学 | 安卓应用文件的安全性检测方法 |
CN105608003A (zh) * | 2015-12-17 | 2016-05-25 | 西安电子科技大学 | 基于控制流分析和数据流分析的Java程序静态分析方法 |
-
2016
- 2016-07-08 CN CN201610533236.0A patent/CN106203113B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110239204A1 (en) * | 2010-03-29 | 2011-09-29 | Gm Global Technology Operations, Inc. | Method and apparatus for analyzing software |
CN102737190A (zh) * | 2012-07-04 | 2012-10-17 | 复旦大学 | 基于静态分析的Android应用日志中信息泄漏隐患的检测方法 |
CN104834859A (zh) * | 2015-04-24 | 2015-08-12 | 南京邮电大学 | 一种Android应用中恶意行为的动态检测方法 |
CN105550594A (zh) * | 2015-12-17 | 2016-05-04 | 西安电子科技大学 | 安卓应用文件的安全性检测方法 |
CN105608003A (zh) * | 2015-12-17 | 2016-05-25 | 西安电子科技大学 | 基于控制流分析和数据流分析的Java程序静态分析方法 |
Cited By (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106845235A (zh) * | 2017-01-11 | 2017-06-13 | 中科院微电子研究所昆山分所 | 一种基于机器学习方法的安卓平台回调函数检测方法 |
CN106845235B (zh) * | 2017-01-11 | 2019-09-13 | 中科院微电子研究所昆山分所 | 一种基于机器学习方法的安卓平台回调函数检测方法 |
CN107122660A (zh) * | 2017-03-29 | 2017-09-01 | 中国科学院信息工程研究所 | 一种Android应用软件用户隐私信息泄露检测方法 |
CN107122660B (zh) * | 2017-03-29 | 2020-05-22 | 中国科学院信息工程研究所 | 一种Android应用软件用户隐私信息泄露检测方法 |
CN107103240A (zh) * | 2017-04-20 | 2017-08-29 | 中国科学院信息工程研究所 | 一种基于上下文信息的Android组件间隐私泄露行为识别方法及系统 |
CN107103240B (zh) * | 2017-04-20 | 2020-02-11 | 中国科学院信息工程研究所 | 一种基于上下文信息的Android组件间隐私泄露行为识别方法及系统 |
CN107623738B (zh) * | 2017-09-28 | 2019-08-16 | 中南大学 | 一种面向安卓应用的WebView桥接口污点映射及分析方法 |
CN107623738A (zh) * | 2017-09-28 | 2018-01-23 | 中南大学 | 一种面向安卓应用的WebView桥接口污点映射及分析方法 |
CN107908955A (zh) * | 2017-11-30 | 2018-04-13 | 华中科技大学 | 一种基于中间语言分析的控制流完整性保护方法及系统 |
CN107908955B (zh) * | 2017-11-30 | 2019-11-12 | 华中科技大学 | 一种基于中间语言分析的控制流完整性保护方法及系统 |
CN108256338B (zh) * | 2018-02-27 | 2021-04-27 | 中南大学 | 一种基于扩展API改写的Chrome扩展敏感数据跟踪方法 |
CN108256338A (zh) * | 2018-02-27 | 2018-07-06 | 中南大学 | 一种基于扩展API改写的Chrome扩展敏感数据跟踪方法 |
CN109145603A (zh) * | 2018-07-09 | 2019-01-04 | 四川大学 | 一种基于信息流的Android隐私泄露行为检测方法和技术 |
CN109214212B (zh) * | 2018-10-25 | 2020-11-03 | 国家电网有限公司 | 信息防泄露方法及装置 |
CN109214212A (zh) * | 2018-10-25 | 2019-01-15 | 国家电网有限公司 | 信息防泄露方法及装置 |
CN109766246A (zh) * | 2019-02-02 | 2019-05-17 | 北京字节跳动网络技术有限公司 | 用于监控应用的方法和装置 |
WO2021232279A1 (zh) * | 2020-05-20 | 2021-11-25 | 深圳市欢太科技有限公司 | 文件泄露漏洞的检测方法、装置、电子设备及存储介质 |
CN112887388A (zh) * | 2021-01-20 | 2021-06-01 | 每日互动股份有限公司 | 基于沙箱环境的数据处理系统 |
CN112887388B (zh) * | 2021-01-20 | 2022-09-16 | 每日互动股份有限公司 | 基于沙箱环境的数据处理系统 |
CN112632551A (zh) * | 2021-03-11 | 2021-04-09 | 北京邮电大学 | 一种第三方库信息泄露检测方法及装置 |
CN112632551B (zh) * | 2021-03-11 | 2021-09-28 | 北京邮电大学 | 一种第三方库信息泄露检测方法及装置 |
CN112948824B (zh) * | 2021-03-31 | 2022-04-26 | 支付宝(杭州)信息技术有限公司 | 一种基于隐私保护的程序通信方法、装置及设备 |
CN112948824A (zh) * | 2021-03-31 | 2021-06-11 | 支付宝(杭州)信息技术有限公司 | 一种基于隐私保护的程序通信方法、装置及设备 |
CN113627744A (zh) * | 2021-07-21 | 2021-11-09 | 南方医科大学第七附属医院(佛山市南海区第三人民医院) | 新发重大传染病社区防控信息管理系统、方法和存储介质 |
CN113627744B (zh) * | 2021-07-21 | 2024-02-09 | 南方医科大学第七附属医院(佛山市南海区第三人民医院) | 新发重大传染病社区防控信息管理系统、方法和存储介质 |
CN113836585A (zh) * | 2021-11-25 | 2021-12-24 | 南京大学 | 一种针对用户数据的全自动数据隐私保护系统 |
CN113946873A (zh) * | 2021-12-21 | 2022-01-18 | 天津联想协同科技有限公司 | 离盘文件追溯方法、装置、终端及存储介质 |
CN114091028A (zh) * | 2022-01-19 | 2022-02-25 | 南京明博互联网安全创新研究院有限公司 | 一种基于数据流的Android应用信息泄露检测方法 |
CN114091028B (zh) * | 2022-01-19 | 2022-04-19 | 南京明博互联网安全创新研究院有限公司 | 一种基于数据流的Android应用信息泄露检测方法 |
WO2023201621A1 (zh) * | 2022-04-21 | 2023-10-26 | 山石网科通信技术股份有限公司 | 隐私信息泄露的检测方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN106203113B (zh) | 2018-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106203113B (zh) | 安卓应用文件的隐私泄露监控方法 | |
CN103593605B (zh) | 一种基于权限使用行为的安卓平台应用程序动态分析系统 | |
CN100461132C (zh) | 基于源代码静态分析的软件安全代码分析器及其检测方法 | |
Yang et al. | Leakminer: Detect information leakage on android with static taint analysis | |
CN104766012B (zh) | 基于动态污点追踪的数据安全动态检测方法及系统 | |
US9141801B2 (en) | Apparatus and method for analyzing permission of application for mobile devices and detecting risk | |
CN102945203B (zh) | 一种用于移动互联网应用的代码安全测试方法 | |
CN103577324B (zh) | 移动应用中隐私信息泄露的静态检测方法 | |
CN105022958B (zh) | 一种安卓应用中基于代码库安全规约的应用程序漏洞检测分析方法 | |
CN109145603A (zh) | 一种基于信息流的Android隐私泄露行为检测方法和技术 | |
CN111695119B (zh) | 一种基于细粒度静态污点分析与符号执行的web漏洞检测方法 | |
CN103875003A (zh) | 用于在移动网络环境中把应用列入白名单的系统和方法 | |
CN103890770A (zh) | 在移动网络环境中将应用列入白列表的系统和方法 | |
CN107103240B (zh) | 一种基于上下文信息的Android组件间隐私泄露行为识别方法及系统 | |
CN103927473A (zh) | 检测移动智能终端的源代码安全的方法、装置及系统 | |
KR20090065183A (ko) | 셀트 문법 형식의 셀이눅스 보안정책 자동 생성 장치 및방법 | |
CN104392177A (zh) | 基于安卓平台的病毒取证系统及其方法 | |
CN104504337A (zh) | 一种安卓数据泄露的恶意应用检测方法 | |
CN107145376A (zh) | 一种主动防御方法和装置 | |
CN113158251B (zh) | 应用程序隐私泄露检测方法、系统、终端及介质 | |
CN105653946A (zh) | 基于组合事件行为触发的Android恶意行为检测系统及其检测方法 | |
Lubuva et al. | A review of static malware detection for Android apps permission based on deep learning | |
Yu et al. | CoCo: Efficient Browser Extension Vulnerability Detection via Coverage-guided, Concurrent Abstract Interpretation | |
Ravi et al. | Non-inference: An information flow control model for location-based services | |
Zhang et al. | Contextual approach for identifying malicious Inter-Component privacy leaks in Android apps |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |