一款Android漏洞测试套件 – AndroidVTS

一款Android漏洞测试套件 – AndroidVTS。


概述
为了Android安全社区能够繁荣发展,NowSecure的研究人员开发出了一款名叫AndroidVTS的Android漏洞测试套件,用户可以通过这个测试软件来测试设备当前所存在的安全漏洞。
在AndroidVTS的帮助下,终端用户不仅了解当前设备中所存在的攻击面,而且还可以在不影响系统稳定性的情况下扫描出系统中的漏洞。
必要性
当一个漏洞被发现之后,Google会收到相应的漏洞报告,Google的技术人员在对漏洞进行了验证和分析之后,便会发布相应的更新补丁。通常情况下,Nexus系列会是第一批收到更新通知的设备,因为Nexus设备使用的是最接近原生Android的操作系统。我们要知道,技术人员从发现一个漏洞,到开发出相应的漏洞补丁,最后再将补丁部署到设备上,整个过程通常需要花费一年以上的时间,而且有的问题甚至永远无法得到解决。比如说漏洞CVE-2014-3153(Towelroot),这个漏洞在2014年5月底被发现,而技术人员花费了数月时间才将该漏洞的更新补丁部署到当时的旗舰手机Nexus5上。这也就意味着,广大Android用户在这段时间里都有可能受到攻击,而更加严重的是,用户甚至都不知道自己的Android设备存在这个漏洞。因此,AndroidVTS可以帮助用户发现自己的Android设备中所存在的安全漏洞,这是非常有意义的。
一个补丁的生命周期
像三星、HTC以及其他的OEM厂商会对自家手机的Android系统进行深度定制,而且很多Android手机的系统还与通信运营商有着密切的关系,所以这就会让更新补丁的部署变得更加困难。OEM厂商首先会从Google那里获取到更新补丁,然后再花好几周或几个月的时间对设备进行测试。最终,厂商再将更新补丁推送给终端用户。处理完这个漏洞之后,OEM厂商又要开始着手处理下一个漏洞了,这就是一个补丁的生命周期。
检测实现
AndroidVTS目前所能检测的漏洞如下:
ZipBug9950697
Zip Bug 8219321 / Master keys
Zip Bug 9695860
Jar Bug 13678484 / Android FakeID
CVE 2013-6282 / put/get_user
CVE_2011_1149 / PSNueter / Ashmem Exploit
[CVE_2014_3153 / Futex bug / Towelroot] (http://seclists.org/oss-sec/2014/q2/467)
CVE 2014-3847 / WeakSauce
StumpRoot
Stagefright bugs
[x509 Serialization bug] (https://securityintelligence.com/one-class-to-rule-them-all-new-android-serialization-vulnerability-gives-underprivileged-apps-super-status/)
[PingPong root - CVE-2015-3636] (https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2015-3636)
Stagefright – CVE-2015-6602
[Samsung Remote Code Execution as System] (https://code.google.com/p/google-security-research/issues/detail?id=489)
CVE-2015-6608
CVE-2015-1474
CVE-2015-1528
CVE-2015-6616
项目构建
你可以直接将该项目导入至AndroidStudio中,或者使用gradle进行项目构建。为了正确构建项目,你首先需要安装AndroidSDK和NDK,local.properties文件如下所示:
cat local.properties
## This file is automatically generated by Android Studio.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must *NOT* be checked into Version Control Systems,
# as it contains information specific to your localconfiguration.
#
# Location of the SDK. This is only used by Gradle.
# For customization when using a Version Control System, pleaseread the
# header note.
#Tue Aug 18 12:32:42 EDT 2015
sdk.dir=/Users/fuzion24/bin/android_sdk_home
ndk.dir=/Users/fuzion24/bin/android_ndk
使用测试签名密钥来构建调式APK:
./gradlew assembleDebug
构建并安装调试版本:
./gradlew installDebug
构建发布版本(未签名)
./gradlew assembleRelease