一种移动应用程序动态加载行为监控方法及装置制造方法及图纸

技术编号:20363908 阅读:63 留言:0更新日期:2019-02-16 16:59
本发明专利技术提供一种移动应用程序动态加载行为监控方法及装置,重点对Android应用程序的动态加载行为进行监控。本发明专利技术通过对Android系统的Native层API进行监控,在记录监控日志的同时对应用程序动态加载的文件进行备份。该方法包括监控控制、动态加载行为监控和监控日志生成三个部分;对32位和64位的Android应用程序均提出相应的监控方法;对用户指定的应用程序或PID进程及其子进程进行监控。通过本发明专利技术的方法,解决了传统方法对Android应用程序的动态加载行为监控不全的问题,为进一步的恶意软件检测以及代码分析工作提供了方法基础和技术支持。同时,本发明专利技术提出的方法,只要稍作修改,即可以实现对Android Native层任意系统函数调用的监控。

【技术实现步骤摘要】
一种移动应用程序动态加载行为监控方法及装置
本专利技术属于Android应用程序监控
,使用的主要方法是进程注入和InlineHook,特别涉及一种移动应用程序动态加载行为监控方法及装置。
技术介绍
近年来,移动设备在人们的工作和生活中变得越来越受欢迎,根据中国互联网络信息中心(CNNIC)发布的第四十次《中国互联网络发展状况统计报告》显示,截至2017年6月,中国网民规模达到7.51亿,占全球网民总数的五分之一。其中,手机网民规模达7.24亿,较2016年底增加2830万人。网民中使用手机上网的比例由2016年底的95.1%提升至96.3%。而台式电脑、笔记本电脑的使用率均出现下降,手机不断挤占其他个人上网设备的使用。随着移动设备和移动互联网的快速发展,Google推出的Android操作系统已然成为世界上最受欢迎的操作系统。数据显示,截止2017年底Android在全球智能手机市场上的份额占到了86%。但是,伴随着Android智能设备的广泛应用,诸多的安全风险也随之而来。移动设备包含用户的许多隐私数据,比如联系人信息、短信、电子邮件以及信用卡号等,同时通过移动设备还可以获取用户的地理位置,发送付费短信以及拨打电话等。另外,在线支付的功能也给人们带来了很多的便利,因此,手机更加成为人们生活中必不可少的工具,移动设备的安全问题也就更加重要。同时,由于Android操作系统的普遍性和自身源码的开放性,其已成为犯罪分子针对移动设备进行恶意攻击的主要攻击目标。针对Android平台的恶意应用程序数量也在飞速增加,目前已有超过一百万种的恶意应用程序是针对Android设备的。恶意应用程序是针对移动设备进行安全攻击的主要载体,它们伪装成正常和有用的应用程序,隐藏在后台执行的恶意操作,进而威胁用户的隐私及安全。恶意应用程序要实现恶意行为,就必须要通过调用Android系统提供的应用程序编程接口(ApplicationProgrammingInterface,API)来完成。Native层和Java层是通过Java本地接口(JavaNativeInterface,JNI)技术来进行相互通信的。通过对Native层的API进行监控,不仅可以监控到应用程序在Native层的行为,而且能监控到其在Java层的行为。Android系统的快速发展,使Android恶意应用程序也从简单变为复杂,从单纯的dex恶意应用程序转变为elf(Linux系统上的可执行程序)恶意应用程序。目前,大多数的恶意应用程序都是通过将elf格式的文件注入系统进程来达到恶意攻击的目的,而so文件正是elf文件的一种。针对Native层API进行监控,能够更全面的捕获应用程序的行为。例如,对于应用程序动态加载dex文件的行为,在Java层和Native层都能够监控到;而对于应用程序动态加载so文件的行为,在Java层是无法监控到的,而在Native层可以监控到。因此,针对Native层API进行监控是必要的。综上所述,基于Native层API对Android应用程序进行监控,对恶意应用程序的行为分析、避免用户的数据泄露及财产损失具有重要意义。目前,针对Android恶意应用程序的分析主要有两种方法:静态分析方法和动态分析方法。静态分析方法通过分析静态代码来检测Android应用程序是否包含异常信息流或调用结构,是否和恶意代码的模式相匹配,是否请求获取额外的非必须的权限,或者是否调用恶意应用程序经常使用的API。但是,这些方法并不能总是精确地检测出恶意应用程序,因为控制流和数据流的动态变化并是静态方法能够决定的;而且不一定有些权限被申请或代码中进行系统API调用就一定为恶意应用程序,这些都要结合应用程序的上下文的API调用来决定的。此外,攻击者可以使用普遍存在的技术,比如代码混淆和代码变形来逃避静态模式匹配并欺骗检测器。由于静态分析方法自身的局限性,所以越来越多的研究人员开始进行Android应用程序的动态分析研究。动态分析方法提供了检测Android恶意应用程序的补充方法。动态分析主要就是通过Android的日志系统来获取应用程序在运行过程中的动态行为特征及系统API调用情况等,进而判断应用程序是否具有恶意性。此外,近几年来,随着机器学习的兴起,许多研究人员也将机器学习的方法应用到了恶意应用程序的检测方面。目前,动态分析方法中专门针对Native层API的监控并不多,存在对应用程序动态加载行为监控不全的问题,并且都是在较低的Android系统版本上实现的,兼容性也不够好。
技术实现思路
为了克服上述现有技术的缺点,本专利技术的目的在于提供一种移动应用程序动态加载行为监控方法及装置,一方面,本专利技术监控方法易部署,兼容性好,即不需要对Android系统源码或应用程序进行修改,兼容Android32位和64位应用程序;另一方面,本专利技术监控方法具有良好的完备性和实用性,克服了传统方法对应用程序的动态加载行为监控不全、过于陈旧、对新版Android系统支持不好的缺点,支持Android4.0以上的各个系统版本。为了实现上述目的,本专利技术采用的技术方案是:一种移动应用程序动态加载行为监控方法,包括:在Android设备开机后,执行初始化脚本,对系统关键函数进行拦截替换;用户指定要监控的应用程序UID或其对应的PID进程,对相应的应用程序或PID进程的动态加载行为进行监控;记录并输出监控日志;对用户指定的应用程序或PID进程动态加载的文件进行备份。所述执行初始化脚本,对系统关键函数进行拦截替换包括:在Android设备开机后,执行初始化脚本文件,通过进程追踪函数来向Zygote进程和Zygote64进程注入so文件,对特定系统关键函数进行拦截替换,完成应用程序动态加载行为监控的初始化工作。其中,所述进程追踪函数包括但不限于Ptrace函数。所述特定系统关键函数包括但不限于动态链接库文件加载函数、动态符号解析函数、Native层dex文件加载函数。用户指定要监控的应用程序UID或其对应的PID进程,对相应的应用程序或PID进程的动态加载行为进行监控包括:支持用户以两种方式指定要监控的应用程序:(1)在用户指定要监控的应用程序的UID后,启动相应的应用程序,对相应的应用程序的动态加载行为进行监控;(2)在启动相应的应用程序后,用户指定要监控的应用程序对应的PID进程,对相应的PID进程及其子进程的动态加载行为进行监控。所述监控的动态加载行为包括但不限于so动态共享库文件的加载、so动态共享库文件的调用、dex可执行文件的加载。所述记录并输出监控日志包括:在用户指定的应用程序运行时,会调用被拦截系统函数的监控函数,在监控函数中完成对用户指定应用程序或PID进程的监控,以特定格式记录监控日志。所述监控日志包括但不限于以下内容:so文件全路径文件名、动态加载so文件的操作时间戳、从so文件中获取的函数或变量名称、动态符号解析的操作时间戳、dex文件全路径文件名、动态加载dex文件的操作时间戳。所述对用户指定的应用程序或PID进程动态加载的文件进行备份包括:在用户指定的应用程序运行时,会调用被拦截系统函数的监控函数,在监控函数中完成对动态加载文件的备份,将备份文件保存在本文档来自技高网
...

【技术保护点】
1.一种移动应用程序动态加载行为监控方法,其特征在于,包括如下步骤:在Android设备开机后,执行初始化脚本,对系统关键函数进行拦截替换;用户指定要监控的应用程序UID或其对应的PID进程,对相应的应用程序或PID进程的动态加载行为进行监控;记录并输出监控日志;对用户指定的应用程序或PID进程动态加载的文件进行备份。

【技术特征摘要】
1.一种移动应用程序动态加载行为监控方法,其特征在于,包括如下步骤:在Android设备开机后,执行初始化脚本,对系统关键函数进行拦截替换;用户指定要监控的应用程序UID或其对应的PID进程,对相应的应用程序或PID进程的动态加载行为进行监控;记录并输出监控日志;对用户指定的应用程序或PID进程动态加载的文件进行备份。2.根据权利要求1所述移动应用程序动态加载行为监控方法,其特征在于,所述执行初始化脚本,对系统关键函数进行拦截替换包括:在Android设备开机后,执行初始化脚本文件,通过进程追踪函数向Zygote进程和Zygote64进程注入so文件,对特定系统关键函数进行拦截替换,完成应用程序动态加载行为监控的初始化工作。3.根据权利要求1所述移动应用程序动态加载行为监控方法,其特征在于,以如下两种方式之一指定要监控的应用程序:(1)在用户指定要监控的应用程序的UID后,启动相应的应用程序,对相应的应用程序的动态加载行为进行监控;(2)在启动相应的应用程序后,用户指定要监控的应用程序对应的PID进程,对相应的PID进程及其子进程的动态加载行为进行监控。4.根据权利要求1所述移动应用程序动态加载行为监控方法,其特征在于,所述记录并输出监控日志包括:在用户指定的应用程序运行时,调用被拦截系统函数的监控函数,在监控函数中完成对用户指定应用程序或PID进程的监控,以特定格式记录监控日志;所述对用户指定的应用程序或PID进程动态加载的文件进行备份包括:在用户指定的应用程序运行时,调用被拦截系统函数的监控函数,在监控函数中完成对动态加载文件的备份,将备份文件保存在特定的系统目录中。5.一种移动应用程序动态加载行为监控装置,其特征在于,包括:监控控制单元,用于在Android设备开机后,执行初始化脚本,对系统关键函数进行拦截替换;动态加载行为监控单元,用于用户指定要监控的应用程序UID或其对应的PID进程,对相应的应用程序或PID进程的动态加载行为进行监控;监控日志生成及文件备份单元,用于记录并输出监控日志,同时对用户指定的应用程序或PID进程动态加载的文件进行备份。6.根据权利要求5所述移动应用程序动态加载行为监控装置,其特征在于,所述监控控制单元具体包括:注入so模块:用于通过进程追踪函数来向Zygote进程和Zygote64进程注入so文件;Hook模块:用于对特定系统关键函数进行拦截替换,在Android设备开机后,执行初始化脚本文件,通过进程追踪函数来向Zygote进程和Zygote64进程注入so文件,对特定系统关键函数进行拦截替换,完成应用程序动态加载行为监控的初始化工作。7.根据权利要求6所述移动应用程序动态加载行为监控装置,其特征在于,所述注入so模块通过ptrace函数来附着进程,然后向宿主进程注入so文件,从而达到监控以及宿主进程关键函数挂钩的目的,具体包括以下步骤:(11)使用ptrace函数attach上目标进程;(12)使目标进程装载用来注入的libxxx.so文件;(13)使目标进程的执行流程跳转到注入的代码块并执行,实现监控;(14)使用ptrace函数的detach释放目标进程;所述Hook模块在注入so模块将so文件成功注入目标进程后,执行注入的so文件中的函数,实现监控,具体包括以下步骤:(21)获取要监控的原系统函数的入口地址;(22)保存原系统函数的若干条汇编指令;(23)用跳转指令替换原系统函数头部的前若干条汇编指令,改变原系统函数执行流程,使原系统函数在执行时首先跳转到自定义的代理函数执行;(24)对原系统函数使用到的寄存器值进行保存;(25)执行自定义的代理函数,实现监控;(26)恢复(24)中保存的寄存器值,并将(22)中保存的原系统函数前若干条指令写回;(27)执行原系统函数的正常调用流程,保存函数返回值;(28)重新用(23)中的跳转指令替换原系统函数的前若干条指令,使得该系统函数在下一次被调用时,依旧能够跳转到自定义的代理函数中去;(29)代理函数返回(27)中保存的原系统函数返回值,目的是保证代理函数和原系统函数的执行效果相同,代理函数执行完毕。8.根据权利要求7所述移动应用程序动态加载行为监控装置,其特征在于,所述动态加载行为监控单元具体包括:动态加载so文件监控模块:用于对指定的应用程序或PID进程的so文件动态加载行为进行监控;调用so文件监控模块:用于对指定的应用程序或PID进程的so文件调用行为进行监控;动态加载dex文件监控模块:用于对指定的应用程序或PID进程的dex文件动态加载行为进行监控。9.根据权利要求8所述移动应用程序动态加载行为监控装置,其特征在于,所述动态加载so文件监控模块用于监控应用程序动态加载的so文件的全路径文件名、操作时间戳以及操作进程的pid、uid,针对32位和64位的Android应用程序分别采用不同的监控方法,具体包括以下步骤:针对32位的Android应用程序:(31)执行dlopen函数;(32)执行libhook_dlopen_32.so文件中的hook_dlopen;(33)判断dlopen函数是Arm格式还是Thumb格式,如果是Arm格式,则跳转到(34);否则,跳转到(35);(34)执行Arm格式对应的跳转指令,跳转到(36);(35)执行Thumb格式对应的跳转指令,跳转到(36);(36)执行my_dlopen;(38)写回dlopen函数被替换掉的原本的前三条汇编指令;(39)执行orig_dlopen,保存返回值;(310)重新用相应的跳转指令替换dlopen函数的前三条汇编指令,使得下一次调用dlopen函数时,仍然执行相应的跳转指令,跳转到my_dlopen;(311)返回o...

【专利技术属性】
技术研发人员:陶敬王平辉韩婷白云鹏王铮李佳璇郑宁栾庆鑫孙立远柳哲林杰
申请(专利权)人:西安交通大学
类型:发明
国别省市:陕西,61

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

1