基于动态监控的Android应用程序风险评估方法

文档序号:6544802阅读:319来源:国知局
基于动态监控的Android应用程序风险评估方法
【专利摘要】本发明公开了一种基于动态监控的Android应用程序风险评估方法,属于信息安全【技术领域】。该方法首先动态注入监控代码到ServiceManager系统进程中,通过监控应用程序申请服务来达到监控行为的目的;然后根据应用程序的行为特征,包括是否执行敏感操作,是否在后台运行,操作频率是否超过一定阈值等特征,确定应用程序的风险等级,本发明将风险分为5个等级,同时为了提高效率和准确度,设立了白名单和黑名单机制。本发明能够预测未知(恶意)软件的恶意性,检测Android平台的安全隐患。
【专利说明】基于动态监控的Android应用程序风险评估方法
【技术领域】
[0001]本发明涉及一种基于动态监控的Android应用程序风险评估方法,属于信息安全【技术领域】。
【背景技术】
[0002]移动互联网飞速发展,智能终端成为人们生活或者工作的一个重要接入点,承载着越来越多的用户个人隐私数据。作为全球最活跃的移动终端平台,Android平台是恶意攻击者的首要目标。目前Android平台上的软件种类繁多,恶意软件层出不穷且隐蔽性很强。另外,一些公司出于业务的需求和对大数据分析的需要,会利用应用程序在后台收集用户的隐私数据。
[0003]常用的恶意软件的检测方法主要是通过特征码来检测,但这种方法具有一定的局限性。恶意程序数量庞大且不断增长,同时可能衍生诸多恶意变种,通过特征码检测恶意软件需要更大的特征数据库,更重要的是特征码检测无法检测未知恶意程序。

【发明内容】

[0004]发明目的:为了弥补通过特征码检测恶意软件的缺点,有效检测Android平台的安全隐患。本发明提出一种基于Android动态监控的应用程序风险评估方法。
[0005]技术方案:一种基于Android动态监控的应用程序风险评估方法,整体架构可分为两大模块:动态监控模块和风险评估模块。
[0006]动态监控模块将监控代码注入系统目标进程ServiceManager的内存空间,拦截进程间通信的Binder IPC数据,收集应用程序申请服务的行为特征信息。动态监控代码的注入包括以下步骤:
[0007]步骤1:查找Android系统进程ServiceManager的进程号PID,以此进程作为目标进程;
[0008]步骤2:调用ptrace函数调试目标进程,在目标进程中开辟内存空间,将监控代码拷贝到内存空间中;
[0009]步骤3:修改目标进程的寄存器状态,使CPU跳转执行监控代码;
[0010]步骤4:在目标进程中的监控代码解析ELF文件格式,查找GOT表地址,定位外部函数ioctl表项地址;
[0011]步骤5:修改GOT表中iotcl的表项内容,替换为钩子函数myloctl地址;
[0012]步骤6:当应用程序发起某项请求服务时,拦截到该应用程序的Binder IPC数据,对数据进行解析;
[0013]步骤7:记录应用程序发起的敏感行为操作。
[0014]风险评估模块在动态监控的基础上,完成对Android应用程序的风险评估,并给出对应的风险等级。首先通过动态监控收集相应的特征信息,然后根据应用程序的行为是否涉及敏感操作、申请服务的频率、是否在用户不知情的情况下运行等因素,对未知的样本进行风险等级划分。风险评估包括以下步骤:
[0015]步骤1:在动态监控的过程中收集应用程序敏感行为特征;
[0016]步骤2:根据风险等级划分标准,无敏感操作行为,风险等级为O ;有敏感操作行为,但是在白名单中,风险等级为I ;有敏感操作行为,且运行在前台,风险等级为2 ;有敏感操作行为,监听手机事件,且运行在后台,频率没有超过阈值,风险等级为3 ;有敏感操作行为,监听手机事件,且运行在后台,频率超过阈值,风险等级为4 ;
[0017]步骤3:在风险等级评估中,风险等级为4的将加入黑名单;风险等级评估开始先检测黑名单,如果不在黑名单中再按步骤2中的标准进行等级划分;一旦风险等级被划分为4将不能下降该等级。
[0018]本发明的有益效果如下:
[0019]本方法可以对Android平台的应用程序进行实时监控,记录应用程序的所有敏感行为操作,在此基础上,通过风险等级的划分,能够预测未知(恶意)软件的恶意性,检测Android平台的安全隐患。
【专利附图】

【附图说明】
[0020]图1为本发明实施例的整体架构图。
【具体实施方式】
[0021]下面结合具体实施例,进一步阐明本发明,应理解这些实施例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
[0022]如图1所示为本发明的整体架构图,包括动态监控模块和风险评估模块。
[0023]动态监控模块将监控代码注入系统目标进程ServiceManager的内存空间,拦截进程间通信的Binder IPC数据,收集应用程序申请服务的行为特征信息。动态监控代码的注入包括以下步骤:
[0024]步骤1:查找Android系统进程ServiceManager的进程号PID,以此进程作为目标进程;
[0025]步骤2:调用ptrace函数调试目标进程,在目标进程中开辟内存空间,将监控代码拷贝到内存空间中;
[0026]步骤3:修改目标进程的寄存器状态,使CPU跳转执行监控代码;
[0027]步骤4:在目标进程中的监控代码解析ELF文件格式,查找GOT表地址,定位外部函数ioctl表项地址;
[0028]步骤5:修改GOT表中iotcl的表项内容,替换为钩子函数myloctl地址;
[0029]步骤6:当应用程序发起某项请求服务时,拦截到该应用程序的Binder IPC数据,对数据进行解析;
[0030]步骤7:记录应用程序发起的敏感行为操作。
[0031]首先定义敏感行为如下:[0032]
【权利要求】
1.一种基于Android动态监控的应用程序风险评估方法,其特征在于,整体架构可分为两大模块:动态监控模块和风险评估模块; 动态监控模块将监控代码注入系统目标进程ServiceManager的内存空间,拦截进程间通信的Binder IPC数据,收集应用程序申请服务的行为特征信息; 风险评估模块在动态监控的基础上,完成对Android应用程序的风险评估,并给出对应的风险等级;首先通过动态监控收集相应的特征信息,然后根据应用程序的行为是否涉及敏感操作、申请服务的频率、是否在用户不知情的情况下运行的因素,对未知的样本进行风险等级划分。
2.如权利要求1所述的基于Android动态监控的应用程序风险评估方法,其特征在于,动态监控代码的注入包括以下步骤: 步骤1:查找Android系统进程ServiceManager的进程号PID,以此进程作为目标进程; 步骤2:调用ptrace函数调试目标进程,在目标进程中开辟内存空间,将监控代码拷贝到内存空间中; 步骤3:修改目标进程的寄存器状态,使CPU跳转执行监控代码; 步骤4:在目标进程中的监控代码解析ELF文件格式,查找GOT表地址,定位外部函数ioctl表项地址; 步骤5:修改GOT表中iotcl的表项内容,替换为钩子函数myloctl地址; 步骤6:当应用程序发起某项请求服务时,拦截到该应用程序的Binder IPC数据,对数据进行解析; 步骤7:记录应用程序发起的敏感行为操作。
3.如权利要求1或2所述的基于Android动态监控的应用程序风险评估方法,其特征在于,风险评估包括以下步骤: 步骤1:在动态监控的过程中收集应用程序敏感行为特征; 步骤2:根据风险等级划分标准,无敏感操作行为,风险等级为O ;有敏感操作行为,但是在白名单中,风险等级为I ;有敏感操作行为,且运行在前台,风险等级为2 ;有敏感操作行为,监听手机事件,且运行在后台,频率没有超过阈值,风险等级为3 ;有敏感操作行为,监听手机事件,且运行在后台,频率超过阈值,风险等级为4 ; 步骤3:在风险等级评估中,风险等级为4的将加入黑名单;风险等级评估开始先检测黑名单,如果不在黑名单中再按步骤2中的标准进行等级划分;一旦风险等级被划分为4将不能下降该等级。
【文档编号】G06F21/56GK103927485SQ201410169808
【公开日】2014年7月16日 申请日期:2014年4月24日 优先权日:2014年4月24日
【发明者】秦中元, 郑勇鑫 申请人:东南大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1