• 141
安卓系统作为当前最大的手机操作系统,需要高安全的要求。本文实现了一个安卓APP安全性在线分析系统,用户将应用程序的APK上传至后端,由后端主机进行测试运算,节约资源并提高效率。该系统的后端利用静态分析和动态分析相结合的方法对目标APP进行评估。运用反汇编技术生成权限图谱、Smali语法树,判断目标APP是否存过大权限和危险的函数调用,之后获取控件布局信息并进行分析归类,通过自动化脚本对目标APP的所有功能进行遍历,获得数据交互过程中产生的网络流量包,提取http流量,判断是否有存在漏洞,进行全面的测试。最后采用SemanticUI框架设计交互界面分别从静态分析、动态分析、程序性能三大方面给出详细的测评结果。
1  引言
近期关于Andorid机恶意APP的新闻也层出不穷,大量的恶意代码通过感染热门的应用程序,在移动终端系统上执行恶意行为,给用户带来了巨大的安全威胁。因此寻有效的方法检测出恶意代码的存在,保护使用Android手机的用户安全,这对于手机制造商、手机软件研发者和用户本身来说显得十分必要且紧迫。
本文首先介绍了安卓APP安全性在线分析系统的整体思路,然后介绍了静态检测的实现,其中也对使用的动态监测进行了介绍,最后本文探讨了如何将检测结果展示到前端,并对可视化的方法逐一进行了展示。
2  整体架构
本系统设计采用动静结合的测试评估方案,对软件安全性能进行评价,系统分三部分实现,分别为:静态检测模块、动态检测模块和可视化展示模块,此外在静态模块加入了软件的运行性能检测的功能,他们的关系如图1
所示:
图1 整体架构关系图
用户选择待测试的安卓APP,并将APK导入系统,测试系统对其进行反汇编分析,在线安装APP后,进行测试,其中包括静态分析,逆向分析和动态分
析,最后将生成报告以web页面的形式
展示,该web后端基于django框架。
3  静态检测模块
3.1  性能分析模块
adb是androidsdk里的一个工具,调
用adb获取APP相关的各种数据。我们
通过调用abd(AndroidDebugBridge)评估
APP性能,获取APP的开机时间、CPU占
用、内存占用和流量使用情况。
3.2  smali图谱分析模块
我们在对基于安卓平台的恶意代码
进行逆向分析时,首先要利用工具对恶
意代码进行反汇编后,通过对其关键部
分进行分析和研究,进而掌握其破坏性
和感染方式等特征(贾菲,刘威,基于
Android平台恶意代码逆向分析技术的
研究:信息网络安全,2014)。apktool
可以对APK文件进行反编译,反编译
APK成功后会生成一系列目录与文件。
其中Smali目录下存放了程序所有的反
汇编代码,res目录存放程序中所有的资
源文件,由于这些目录的子目录和文件
和开发时保持一致,所以我们可以对其
代码进行静态分析,由此我们可得到函
数及权限信息。通过分析smali代码的语
法结构,提取出所有方法和所有字段,
据此生成一棵smali语法树,这样即可以
为用户提供信息参考。该模块通过遍历
APP反汇编后的smali代码,分析其语言
结构,提取出APP对应的类和相应的方
法,返回给前端页面,以可视化的树图
展示给用户。
3.3  静态风险检测模块
对于APP的权限信息,我们可以直
接通过python正则匹配获取,只需提取
userpermission中的值即可。在这个模
块,系统会去分析反汇编后的manifest.
xml文件,得到APP中的包名、版本信
息、组件信息、intent信息和权限信息
等等,同时针对可能存在的配置风险及
漏洞进行报告。
4  动态检测模块
4.1  自动化测试分析模块
要想全面有效的分析一个APP的安
全性,单纯的通过静态分析,那么获取
APP
线
• 142
的信息是很有限的。传统的APP 测试方法是用手工点击APP 触发控件事件,在这里,我们采用了效率更高的方法——基于APPium 框架进行自动化测试分析,它分为界面分析和动态执行两个阶段。
界面分析阶段,我们会调用uiautomatorviewer 的api 接口,获取窗口列表和界面的控件信息,进行分析后得到界面上存在的可触发控件。
动态执行阶段,我们会提取控件的id 或class ,然后调用appium 脚本自动触发控件点击事件运行APP 。APPium 框架同时支持Android ,IOS ,FirefoxOS 并且可以用任何开发语言来进行编写测试用例。通过自动化测试,我们可以将人力资源适当地从烦躁的重复性工作中释放出来。
有的时候,用户不希望程序自动遍历所有的activity ,只是想根据自己的需求让程序完成特定的功能,对于这种情况,本系统设计设计了脚本录制的功能。
4.2  流量截取模块
在APP 运行过程中,势必会和后台产生各种各样的数据交互,因此会产生大量的网络数据包。文献(肖卫,张源,杨珉,安卓应用软件中Intent 数据验证漏洞的检测方法:小型微型计算机系统,2017)提出通过静态数据流分析技术跟踪应用软件对Intent 对象的数据访问,识别是否存在畸形数据
的验证漏洞。我们通过scapy 嗅探获取到这些数据包,对APP 的流量进行监控,用户便可以通过这些截取的流量初步判断APP 前后端交互的安全性。
为了实时获取流量,我们准备了一块无线网卡,使用kalilinux 搭建了一个热点,手机连接这个热点后再进行自动化测试,这样产生的流量都会流经电脑搭建的无线网卡上,我们只要编写脚本嗅探通过这个网卡的流量即可。侦听流量的Wifi 需要借用开源的aircrack-ng 套件,将需要搭建WiFi 的网卡设置为监听模式(用以之后的网络抓包监听),使用Airbase-ng 工具建立AP 热点,修改本地DHCP 的配置文件并启动dhcp 服务器,将这块网卡上的流量转发到另一块能连接网络的网卡,以使连接到这个WiFi 的手机能够正常接入网络。
在线代码运行器4.3  注入测试模块
在APP 和后台服务器交互的过程中,也许后台存在不安全的web 接口,最典型的,就是有可能存在sql 注入漏洞。http 请求主要有GET 和POST 两种,在对后台进行请求的时候,通常会携带一对key-value 参数,因此,我们可以改变这些参数的值去进行试探。在本平台中,我们会对这种接口进行注入测试,我们尝试输入各种危险字符,进行模糊测试(何远,张玉清,张光华,基于黑盒遗传算法的Android 驱动漏洞挖掘:计算机学报,2017)根据服务器返回的结果判断是否安全。
5  可视化展示模块
为了优化使用体验,该平台采用web 界面与用户交互,生成的报告也以web 文档的方式与用户交互,用户可以在线选择apk 进行分析并获取报告。我们在本地运行了一个服务
器,用户下载源码并配置环境之后可以通过浏览器进入平台首页。根据提示进行静态或动态分析。报告使用了javascript 进行绘图,通过ajax 与后台交互,实时将报告显示在web 前端页面上。整个web 平台基于tornado 框架,tornado 的整个架构如图2
所示。
图2 tornado架构
报告模板采用echart.js 进行可视化,使用echart.js 的原因是该图形库方便快捷,并且展现的图像生动形象,非常适合web 端的可视化展示,下面是我们用js 对进行权限分布后可视化展示的结果,如图3
所示。
图3 分析可视化
6  总结
本安卓APP 安全性分析系统可以应用于各类型的待检测APP ,为用户提供准确可靠的安全性评估报告。该系统将传统的静态检测与动态检测相结合,测试待检测APP 潜在的风险,生成的报告以web 文本呈现,交互性好,更加美观直接,便于用户阅读理解。
除了常见的APP 高危权限、隐私窃取等安全问题的评估,报告还会给出APP 运行性能的评估,包括启动时间、占用CPU 和内存情况等,方便用户更好的选择;此外,在动态检测方面,通过编写基于APPium 框架进行自动化测试脚本,自动触发控件运行APP,通过scapy 嗅探获取流量数据
包,从而判断APP 前后端交互的安全性。
基金项目:国家级大学生创新创业训练计划项目。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。