自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

【技術(shù)分享】使用CTS進(jìn)行漏洞檢測(cè)及原理淺析

移動(dòng)開(kāi)發(fā) 開(kāi)發(fā)
關(guān)于手機(jī)安全方面的檢測(cè),本文以此為主題,進(jìn)行了漏洞檢測(cè)方面的研究。包括如何下載編譯,以及分析了其中的security模塊是如何調(diào)度使用的。

 [[197327]]

團(tuán)隊(duì)介紹

360 Vulpecker團(tuán)隊(duì) 隸屬360信息安全部,致力于Android應(yīng)用和系統(tǒng)層漏洞挖掘以及其他Android方面的安全研究。我們通過(guò)對(duì)CTS框架的研究,編寫(xiě)了一個(gè)關(guān)于漏洞檢測(cè)方面的文檔,以下為文章的全文。

CTS 全稱 Compatibility Test Suite(兼容性測(cè)試),Google開(kāi)發(fā)CTS框架的意義在于讓各類(lèi)Android設(shè)備廠商能夠開(kāi)發(fā)出兼容性更好的設(shè)備。其中有一些模塊的關(guān)于手機(jī)安全方面的檢測(cè),本文以此為主題,進(jìn)行了漏洞檢測(cè)方面的研究。包括如何下載編譯,以及分析了其中的security模塊是如何調(diào)度使用的。

1. CTS運(yùn)行流程

1.1  下載編譯Android CTS源碼

通過(guò)git clone https://android.googlesource.com/platform/cts -b xxxxxxx 可以下載cts并且進(jìn)行編譯,或者可以下載完整的Android 源碼進(jìn)行編譯,編譯好源碼之后再編譯CTS,命令是make cts;在/home/venscor/AndroidSource/least/out/host/linux-x86/cts下生成關(guān)于CTS的幾個(gè)文件,其中cts-tradefed可以啟動(dòng)CTS測(cè)試程序。

1.2   CTS 運(yùn)行環(huán)境

Android官網(wǎng)上對(duì)CTS運(yùn)行環(huán)境要求嚴(yán)格,但是我們目前關(guān)注的是測(cè)試安全模塊,所以只要基本的測(cè)試環(huán)境就可以了。例如打開(kāi)adb,允許adb安裝apk,不設(shè)置鎖屏等。

1.3  CTS運(yùn)行流程

在源碼中可以看到,cts-tradefed實(shí)際上是個(gè)腳本文件。首先做些環(huán)境檢查,滿足運(yùn)行環(huán)境后,去android-cts/tool/目錄下加載對(duì)應(yīng)的jar文件,從android-cts/lib加載所有的需要庫(kù)文件。***,加載android-cts/testcase/目錄下的所有jar文件,然后執(zhí)行。

CTS console功能的實(shí)現(xiàn)在CompatibilityConsole類(lèi)中,也是程序的加載點(diǎn)

1.4  啟動(dòng)腳本進(jìn)入CTS測(cè)試程序的console

CTS測(cè)試套件由很多plans組成,plans又可以由很多subplan和modules組成,我們只關(guān)心和CTS和安全相關(guān)的的東西,即和安全相關(guān)的modules。其中 和安全相關(guān)的測(cè)試模塊 有4個(gè):

CtsAppSecurityHostTestCases

CtsJdwpSecurityHostTestCases

CtsSecurityHostTestCases

CtsSecurityTestCases

其中,CtsAppSecurityHostTestCases、CtsJdwpSecurityHostTestCases不包含CVE,其實(shí)是一些App層安全檢測(cè)和安全策略檢測(cè),我們可以先跳過(guò)這兩個(gè)模塊著重分析CtsSecurityHostTestCases和CtsSecurityTestCases。

2. CTS中的安全模塊

2.1 CtsSecurityHostTestCases模塊

CtsSecurityHostTestCases模塊對(duì)應(yīng)的源碼路徑在:./hostsidetests/security。即在cts console中通過(guò)輸入run cts --module CtsSecurityHostTestCasess加載起來(lái)的。

CtsSecurityHostTestCases主要測(cè)試Linux內(nèi)核和各類(lèi)驅(qū)動(dòng)的漏洞,都是以C/C++實(shí)現(xiàn)的漏洞檢測(cè)PoC。

2.1.1 測(cè)試流程

可以通過(guò)run cts --module CtsSecurityHostTestCases來(lái)測(cè)試整個(gè)模塊,也可以通過(guò)run cts --module CtsSecurityHostTestCases –test 來(lái)測(cè)試具體的方法。例如要測(cè)試CVE_2016_8451,可以通過(guò)--test android.security.cts.Poc16_12#testPocCVE_2016_8451來(lái)進(jìn)行。

下面我們通過(guò)一個(gè)例子看具體的測(cè)試流程,以對(duì)CVE_2016_8460的檢測(cè)為例,來(lái)具體分析下測(cè)試過(guò)程。在CTS下,運(yùn)行run cts --module CtsSecurityHostTestCases --test android.security.cts.Poc16_12#testPocCVE_2016_8460。程序?qū)⑦\(yùn)行到CtsSecurityHostTestCases模塊下的testPocCVE_2016_8460()函數(shù)。

其實(shí)這個(gè)測(cè)試過(guò)程,就是將CtsSecurityHostTestCases模塊下對(duì)應(yīng)的可執(zhí)行文件CVE_2016_8460 push到手機(jī)的sdcard,然后執(zhí)行此可執(zhí)行文件,即執(zhí)行poc檢測(cè)程序。

2.1.2 結(jié)果管理

CTS測(cè)試完成后,會(huì)生成可視化的結(jié)果,結(jié)果存在cts/android-cts/results目錄下,分別有xml格式和.zip打包格式。所以對(duì)安全模塊的結(jié)果管理也是一樣的。

結(jié)果頁(yè)面里面只有兩種結(jié)果,一是pass,表示測(cè)試通過(guò),說(shuō)明不存在漏洞。二是fail,出現(xiàn)這種結(jié)果,可能原因有兩種,一是測(cè)試環(huán)境有問(wèn)題,二是存在漏洞,可以看報(bào)告邊上的詳細(xì)顯示。

2.1.3 添加與剝離testcase

按照CtsSecurityHostTestCases模塊的測(cè)試原理,添加新的測(cè)試case時(shí),完全可以剝離CTS的測(cè)試框架,直接使用C/C+編寫(xiě)測(cè)試代碼,編譯完成后添加到/data/local/tmp目錄然后修改執(zhí)行權(quán)限,執(zhí)行即可。

對(duì)于CtsSecurityHostTestCases模塊中現(xiàn)有的對(duì)漏洞的檢測(cè)代碼,也可以直接為我們所用。我們可以下載CTS的源碼查看漏洞檢測(cè)PoC的代碼,可以自己編譯也可以直接使用CTS編譯好的可執(zhí)行文件來(lái)檢測(cè)對(duì)應(yīng)的漏洞。

2.2 CtsSecurityTestCases模塊

CtsSecurityTestCases模塊基于動(dòng)態(tài)檢測(cè),采用的是觸發(fā)漏洞來(lái)檢測(cè)的方式,使用Java或者JNI來(lái)觸發(fā)漏洞,直到數(shù)據(jù)被傳遞到底層漏洞位置。這個(gè)模塊所在源碼的路徑是.test/test/security。

2.2.1 測(cè)試流程

測(cè)試流程和CtsSecurityHostTestCases模塊一致,其實(shí)這也是CTS框架的測(cè)試流程。測(cè)試整個(gè)模塊采用run cts --module的方式,而使用測(cè)試模塊里面具體的方法來(lái)執(zhí)行測(cè)試時(shí)。使用run cts --module <module> --test <package.class>的方式。

以下以檢測(cè)cve_2016_3755為例說(shuō)明此模塊運(yùn)行過(guò)程。

首先,在CTS框架中輸入run cts --module CtsSecurityTestCases --test android.security.cts. StagefrightTest#testStagefright_cve_2016_3755。

然后,CTS框架會(huì)找到testStagefright_cve_2016_3755()方法并執(zhí)行測(cè)試。

2.2.2 結(jié)果管理

CtsSecurityTestCases模塊也受CTS統(tǒng)一的結(jié)果管理。所以上面CtsSecurityHostTestCases模塊一樣。測(cè)試結(jié)果出現(xiàn)在xml文件中,pass表示成功不存在漏洞,fail給出失敗原因。

對(duì)測(cè)試結(jié)果的監(jiān)控都是通過(guò)assertXXX()方法來(lái)進(jìn)行的,通過(guò)測(cè)試過(guò)程中的行為來(lái)確定漏洞情況。例如:

2.2.3添加與剝離testcase

添加case:在這模式下添加case,需要知道知道怎么觸發(fā)漏洞。CtsSecurityTestCases模塊應(yīng)該是基于Android上的JUnit測(cè)試程序的,所以要知道應(yīng)該可以按照編寫(xiě)JUnit的方式添加測(cè)試的代碼,然后重新build。其實(shí),編寫(xiě)測(cè)試代碼時(shí)候如果可以脫離CTS的源碼依賴或者可以引用CTS的jar,應(yīng)該可以直接脫離CTS架構(gòu)。

剝離case:和添加一個(gè)道理,需要讓提取的代碼脫離依賴可執(zhí)行。

3. 總結(jié)

在Android手機(jī)碎片化嚴(yán)重的今天,各個(gè)手機(jī)廠商的代碼質(zhì)量也是良莠不齊。所以Android手機(jī)的安全生存在較為復(fù)雜的生態(tài)環(huán)境,因此Android手機(jī)方面的漏洞檢測(cè)是十分必要的。本文對(duì)谷歌官方開(kāi)源的CTS框架進(jìn)行了調(diào)研,對(duì)Android手機(jī)的漏洞檢測(cè)方面進(jìn)行了研究。希望能拋磚引玉,對(duì)Anroid安全研究能帶來(lái)更多的幫助。

 

責(zé)任編輯:張子龍 來(lái)源: 推酷
相關(guān)推薦

2011-04-13 15:01:39

2012-03-20 16:31:13

2022-09-04 21:08:50

響應(yīng)式設(shè)計(jì)Resize

2009-07-06 09:23:51

Servlet定義

2023-12-18 09:39:13

PreactHooks狀態(tài)管理

2019-05-17 09:20:01

2010-06-03 18:54:57

Hadoop

2013-06-04 13:38:27

2022-11-24 15:02:05

APP

2015-07-05 18:46:46

2023-12-01 16:21:42

2010-08-06 13:30:31

FlexBuilder

2013-12-02 13:55:23

任意跳轉(zhuǎn)漏洞漏洞檢測(cè)DOM跳轉(zhuǎn)漏洞

2020-10-15 12:00:01

Python 開(kāi)發(fā)編程語(yǔ)言

2015-01-29 09:54:12

2013-07-17 17:05:08

2019-02-26 15:15:16

DNS漏洞IP

2019-04-02 08:30:03

2009-08-27 14:21:02

C# interfac

2020-08-05 08:21:41

Webpack
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)