基于Xposed/Cydia框架抓取并分析app动态行为日志分享(一)
题目要求:本课题基于xposed框架和hook技术,通过hook安卓系统的关键函数,以此获取到安卓APP的动态行为,进而分析APP是否存在一些可疑的或泄露用户隐私的恶意操作。本课题要求掌握xposed框架和hook技术、安卓系统底层框架,能开发出原型系统,快速分析安卓APP的动态行为,分析其是否存在恶意操作,并形成分析报告,以web方式展现给用户。本课题的难点在于xposed框架学习和行为分析。
1 做什么
题目分析:
xposed框架:
Xposed框架是一款可以在不修改APK的情况下影响程序运行的框架服务,通过替换/system/bin/app_process程序控制zygote进程,使得app_process在启动过程中会加载XposedBridge.jar这个jar包,从而完成对Zygote进程及其创建的虚拟机的劫持。
hook技术:
android安全可以从三个层面考虑,一次是java虚拟机层,native层,还有linux kernel层,本次hook api是属于native层的。hook api之后就可以使得程序对原有系统函数的调用改为对我们自己编写的函数的调用,这既可以作为一种攻击手段,又可以在维持程序运行的情况下更新程序等等。
在Native层面,我认为可行的方案是对电话、短信的运行库so进行Hook(比如系统运行库\system\lib\libreference-ril.so或\system\lib\libril.so),如果注入自己的so到上述进程后,并通过dlopen()和dlsym()获取原有API地址,替换原有API地址为自己so中的API地址就可以达到Hook的目的。那么清楚Hook是什么了么,就是“狸猫换太子”。
获取到安卓APP的动态行为:
指我们使用xposed框架和hook技术对应用app进行获取该app应用在被用户动态点击时(即用户在使用该app所进行的操作,如常见的使用qq发消息、发文件、修改个人资料、更改签名等操作行为)该app调用到的android系统函数,这个就可以理解为获取安卓app的动态行为。
这里主要体现在与使用xposed框架和模板动态获取的应用app调用的android系统函数形成日志文件,日志文件里面记录了。
分析APP是否存在一些可疑的或泄露用户隐私的恶意操作:
通过前面我们获取到的动态行为日志文件,由我们另外准备好的android敏感函数库集合,对两个集合进行关键函数匹配,根据日志文件里面包含敏感函数数量来判断该app应用是否为存在恶意操作,并且获取这些敏感函数,生成分析报告:应用app名称、包含的敏感函数名,敏感函数名意思介绍。
2 主要思路
2.1 搭建环境
搭建相关的android开发环境,jdk开发环境、xposed/cydia框架、mysql数据库等
2.2 动态获取应用app的动态行为日志文件
通过xposed框架和hook技术获取,其中xposed框架里面的模块可以自己写也可以网上找相关的开源模块。
2.3 分析app动态行为日志文件
根据提前准备好的android敏感函数库,对应用app动态行为日志文件进行分析。这里要通过建模或者机器学习等其他方法进行分析。对应用app的日志文件分析根据建模规则形成分析报告。
2.4 web展示系统
根据分析报告,构建相关数据库表,web页面显示相关内容,这个主要用来展示分析结果。