LinkedIn最近开源了他的静态分析工具QARK,该工具用于分析那些用Java语言开发的Android应用中的潜在安全缺陷。QARK 全称 Quick Android Review Kit。这个工具用来寻找与 Android 应用相关的安全漏洞,包括检查源代码和打包的 APKs。这个工具还可以创建“Proof-of-Concept”可部署的 APKs 或 ADB 命令,能够利用许多它发现的漏洞。不需要 root 测试设备,因为这个工具专注于在其它安全环境下能被利用的漏洞。
QARK对安全缺陷的分析范围包括:
不经意公开的组件
保护不当的公开组件
易被窃听或嗅探的Intent
不当的x.509格式的证书校验
不当地创建“全局可读”或者“全局可写”文件
可能泄露敏感数据的Activity组件
是否正确使用Sticky Intent
不安全地创建Pending Intent
发送未经安全保护的Broadcast Intent
源代码中嵌入了私钥
使用了弱或不当的加密解密算法
使用了有潜在安全问题的WebView配置项
对其他应用公开的Preference Activity
触屏劫持
允许备份的应用
允许调试模式的应用
应用中使用的过时的API,其中包含了已知的缺陷
当QARK指出一个潜在缺陷的时候,会针对该缺陷,提供概要解释和一条详细解释的链接。它还可以创建可测试的APK文件和若干ADB命令,这些文件和命令能让你知道该缺陷会产生怎样的危害。
未来,LinkedIn打算扩展QARK,使它能够分析Bound Service和Content Provider缺陷,与Java/Android无关的缺陷,解析ODEX文件,改进自身的扩展性,动态分析等等。
当QARK可以被集成到Android工具链中,自动探测到问题和缺陷的时候,作者建议同时继续对应用进行人工审查,因为还有其他类型的缺陷是静态分析无能为力的,而且还有许多缺陷未能完全覆盖。
qark项目地址是:https://github.com/linkedin/qark
搭建qark的使用环境需要以下几个前提条件:
1)安装JDK,版本1.7及以上
2)安装python 2.7.6 ,下载python源码进行编译时,记得加上SSL库和zlib库进行编译安装。可以参考文章:http://www.linuxdown.net/install/soft/2015/0107/3765.html
3)OSX or Ubuntu Linux (Others may work, but not fully tested)
命令:python qark.py --source 1 --pathtoapk /root/soft/app/needtest.apk --exploit 1 --install 1
加粗部分是你需要进行安全检测的APK的路径
python qark.py --source 2 -c /Users/foo/qark/sampleApps/goatdroid/goatdroid --manifest /Users/foo/qark/sampleApps/goatdroid/goatdroid/AndroidManifest.xml --exploit 1 --install 1
错误一:import error no module named _curses
解决方法:下载python2.7.6源码,在编译安装python之前,执行命令apt-get install libncurses5 libncurses5-dev libncursesw5;如果已安装python,重新安装编译执行python即可。
错误二:ImportError: No module named pkg_resources
解决方案:需要安装pyhton的setuptools,命令如下:wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python
错误三:p1.stdin.write(common.args.accept terms) TypeError: must be string or buffer, not None
解决方案:再重新执行一遍qark的检测命令就行,因为第一次需要使用qark需要下载Android SDK环境,建议使用qark自己下载,不用自己设定已安装的。