偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

【技術分享】使用CTS進行漏洞檢測及原理淺析

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

 [[197327]]

團隊介紹

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

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

1. CTS運行流程

1.1  下載編譯Android CTS源碼

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

1.2   CTS 運行環(huán)境

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

1.3  CTS運行流程

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

CTS console功能的實現(xiàn)在CompatibilityConsole類中,也是程序的加載點

1.4  啟動腳本進入CTS測試程序的console

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

CtsAppSecurityHostTestCases

CtsJdwpSecurityHostTestCases

CtsSecurityHostTestCases

CtsSecurityTestCases

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

2. CTS中的安全模塊

2.1 CtsSecurityHostTestCases模塊

CtsSecurityHostTestCases模塊對應的源碼路徑在:./hostsidetests/security。即在cts console中通過輸入run cts --module CtsSecurityHostTestCasess加載起來的。

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

2.1.1 測試流程

可以通過run cts --module CtsSecurityHostTestCases來測試整個模塊,也可以通過run cts --module CtsSecurityHostTestCases –test 來測試具體的方法。例如要測試CVE_2016_8451,可以通過--test android.security.cts.Poc16_12#testPocCVE_2016_8451來進行。

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

其實這個測試過程,就是將CtsSecurityHostTestCases模塊下對應的可執(zhí)行文件CVE_2016_8460 push到手機的sdcard,然后執(zhí)行此可執(zhí)行文件,即執(zhí)行poc檢測程序。

2.1.2 結(jié)果管理

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

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

2.1.3 添加與剝離testcase

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

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

2.2 CtsSecurityTestCases模塊

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

2.2.1 測試流程

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

以下以檢測cve_2016_3755為例說明此模塊運行過程。

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

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

2.2.2 結(jié)果管理

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

對測試結(jié)果的監(jiān)控都是通過assertXXX()方法來進行的,通過測試過程中的行為來確定漏洞情況。例如:

2.2.3添加與剝離testcase

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

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

3. 總結(jié)

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

 

責任編輯:張子龍 來源: 推酷
相關推薦

2011-04-13 15:01:39

2009-07-06 09:23:51

Servlet定義

2023-12-18 09:39:13

PreactHooks狀態(tài)管理

2012-03-20 16:31:13

2022-09-04 21:08:50

響應式設計Resize

2019-05-17 09:20:01

2013-06-04 13:38:27

2022-11-24 15:02:05

APP

2010-06-03 18:54:57

Hadoop

2023-12-01 16:21:42

2013-12-02 13:55:23

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

2015-07-05 18:46:46

2010-08-06 13:30:31

FlexBuilder

2013-07-17 17:05:08

2015-01-29 09:54:12

2019-04-02 08:30:03

2019-02-26 15:15:16

DNS漏洞IP

2009-08-27 14:21:02

C# interfac

2020-10-15 12:00:01

Python 開發(fā)編程語言

2020-08-05 08:21:41

Webpack
點贊
收藏

51CTO技術棧公眾號