团队介绍
360 Vulpecker团队隶属于360信息安全部门,致力于利用Android应用和系统层以及其他Android安全研究中的漏洞。通过对CTS框架的研究,我们编写了一份关于漏洞检测的文档,以下是文章的全文。
CTS是兼容性测试套件的全称。Google开发CTS框架的意义在于,让各种安卓设备厂商开发出兼容性更好的设备。手机安全检测有一些模块。本文以此为主题,对漏洞检测进行研究。包括如何下载和编译,如何调度和使用安全模块。
1.中旅运营流程
1.1下载并编译Android CTS源代码,
通过gitclone可以下载并编译https://android.googlesource.com/platform/CTS-bxxxxxxx, cts,或者下载并编译完整的Android源代码。编译源代码后,可以编译cts。命令是制作cts;在/home/venscor/androidsource/leak/out/host/Linux-x86/CTS下生成几个关于CTS的文件,CTS-traded可以在其中启动CTS测试程序。
1.2CTS操作环境
Android官网对CTS运行环境有严格的要求,但目前我们关注的是安全模块的测试,所以只需要基本的测试环境。比如打开adb,允许adb安装apk,不设置锁屏。
1.3中旅运营流程
从源代码可以看出,cts-tradefed实际上是一个脚本文件。首先,做一些环境检查。满足运行环境后,转到android-cts/tool/ directory加载对应的jar文件,从android-cts/lib加载所有需要的库文件。最后,加载android-cts/testcase/目录下的所有jar文件,然后执行。
CTS控制台功能在兼容性控制台类中实现,该类也是程序的加载点
1.4启动脚本进入电流互感器测试程序控制台
CTS测试套件由多个计划组成,计划可以由多个子计划和模块组成。我们只关心CTS和安全相关的东西,也就是安全相关的模块。有四个与安全相关的测试模块:
CtsAppSecurityHostTestCases
CtsJdwpSecurityHostTestCases
安全主机测试案例
安全测试案例
其中CtsAppSecurityHostTestCases和CtsJdwpSecurityHostTestCases不包含CVE,实际上是一些App层安全检测和安全策略检测。我们可以跳过这两个模块,重点分析CtsSecurityHostTestCases和CtsSecurityTestCases。
2.综合运输系统中的安全模块
2.1 CtsSecurityHostTestCases模块
对应于CtsSecurityHostTestCases模块的源代码路径位于:。/hostsidests/security。也就是说,它是通过在cts控制台中输入run cts-module ctssecurityhost testcases来加载的。
CtsSecurityHostTestCases主要测试Linux内核和各种驱动的漏洞,都是C/C++中用于漏洞检测的PoC。
2.1.1测试流程
您可以通过运行cts-module ctssecurityhost测试用例来测试整个模块,也可以通过运行cts-module ctssecurityhost测试用例-test来测试特定的方法。比如测试CVE_2016_8451,可以通过-testandroid . security . cts . POC 16 _ 12 # testpoccve _ 2016 _ 8451来做。
我们通过一个例子来看具体的测试过程,以CVE_2016_8460的检测为例,详细分析测试过程。在CTS下,运行CTS-module ctssecurityhost test cases-testandroid . security . CTS . POC 16 _ 12 # test pocve _ 2016 _ 8460。程序将运行到CtsSecurityHostTestCases模块下的testPocCVE_2016_8460()函数。
其实这个测试过程就是把CtsSecurityHostTestCases模块下的可执行文件CVE _ 2016 _ 8460推送到手机的sd卡上,然后执行这个可执行文件,也就是执行poc测试程序。
2.1.2成果管理
CTS测试完成后,将生成可视化结果,这些结果以xml格式存储在cts/android-cts/results目录中。打包格式。因此,安全模块的结果管理是相同的。
结果页面中只有两个结果。一个是通过,表示测试通过,说明没有漏洞。第二,失败。这一结果可能有两个原因。一是测试环境有问题,二是有漏洞。您可以在报告的边缘看到详细的显示。
2.1.3添加和剥离测试用例
根据CtsSecurityHostTestCases模块的测试原理,在添加新的测试用例时,可以完全剥离CTS的测试框架,直接用C/c++编写测试代码,编译后添加到/data/local/tmp目录中,然后修改执行权限,即可执行。
CtsSecurityHostTestCases模块中已有的漏洞检测代码,我们也可以直接使用。我们可以下载CTS的源代码来查看漏洞检测PoC的代码,我们可以自己编译或者直接使用CTS编译的可执行文件来检测相应的漏洞。
2.2安全测试案例模块
CtsSecurityTestCases模块基于动态检测,使用Java或JNI触发漏洞,直到数据传输到底层漏洞位置。这个模块的源代码路径是。测试/测试/安全性。
2.2.1测试流程
测试流程与CtsSecurityHostTestCases模块一致,实际上是CTS框架的测试流程。以运行cts - module的方式测试整个模块,并使用测试模块中的特定方法来执行测试。使用运行模块
以下以cve_2016_3755为例描述该模块的操作过程。
首先,在CTS框架中输入run CTS-module ctssecuritytestcases-testandroid . security . CTS . stagethreet # teststagethreet _ CVE _ 2016 _ 3755。
然后,CTS框架会找到teststage错愕_cve_2016_3755()方法并执行测试。
2.2.2成果管理
CtsSecurityTestCases模块也由CTS的统一结果管理。因此,上面的CtsSecurityHostTestCases模块是一样的。测试结果出现在xml文件中,通过表示成功没有漏洞,失败给出失败原因。
测试结果的监控采用assertXXX()方法,漏洞情况由测试过程中的行为决定。例如:
2.2.3添加和剥离测试用例
添加案例:要在这种模式下添加案例,您需要知道如何触发漏洞。CtsSecurityTestCases模块应该是基于Android上的JUnit测试程序,所以你要知道你可以按照JUnit的编写方式添加测试代码,然后构建。其实在编写测试代码的时候,如果能脱离CTS的源代码依赖或者参考CTS的jar,应该可以直接脱离CTS架构。
剥离案例:加上一个道理,我们需要让提取的代码独立可执行。
3.总结
在安卓手机碎片化严重的今天,各个手机厂商的代码质量也是良莠不齐。因此,安卓手机的安全性存在于复杂的生态环境中,因此有必要对安卓手机的脆弱性进行检测。本文考察了Google的官方开源CTS框架,研究了Android手机的漏洞检测。希望能为Anroid安全研究吸引更多的帮助。
最近几天最热门的安全新闻,看这里!
▼▼▼
1.《cts测试 使用CTS进行漏洞检测及原理浅析》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《cts测试 使用CTS进行漏洞检测及原理浅析》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/yule/1238358.html