Android安全研究經驗談

1、安全研究作什麼git

攻擊角度:對某個模塊進行漏洞挖掘的方法,對某個漏洞進行利用的技術,經過逆向工程破解程序、解密數據,對系統或應用進行感染、劫持等破壞安全性的攻擊技術等。shell

防護角度:查殺惡意應用的方法,檢測和防範漏洞利用,爲加強系統和第三方應用的安全性提供解決方案等。安全

一般,攻與防是相對模糊的,一種安全技術每每兩端都適用,也許更值得留意的是一種技術背後的思路和意識。架構

 

2、須要具有的知識框架

安全涉及的知識範疇是無限的,但大多數時候能夠遇到問題再去了解相關知識。工具

 

3、要掌握的理論知識學習

操做系統原理,很是重要,是認識某一個具體系統的前提。加密

微軟開源的Windows Research Kernel(WRK)一樣也很是棒的學習資料。操作系統

動手編譯系統內核,用調試器一步步分析調試內核比單純閱讀源碼和分析文章更有幫助。設計

嘗試編寫內核驅動模塊或分析已有的內核Rootkit來深刻理解操做系統。

就移動平臺而言,理解操做系統有助於進一步理解Android系統自己,而在理解Android系統以後,才能開始討論Android系統的安全問題。

 

4、幾門須要掌握的語言

不須要特別強的軟件開發能力,須要關注某種語言的內部實現過程。

掌握C/C++,能理解該語言被編譯器處理後彙編層面的實現原理。

瞭解Java,須要理解Dalvik/ART虛擬機內部的實現過程。

對x86/ARM彙編,能讀懂便可,遇到不會的指令能夠從指令集中查找。

掌握一門腳本語言,用來快速編寫小工具或POC,推薦Python,由於開源社區中大部分Android安全分析類工具都是用Python編寫的,例如,知名的Androguard和Drozer。

 

5、逆向工程

逆向工程絕對是一項必備技能。分析惡意軟件行爲仍是分析閉源軟件,都要逆向工程。

 

6、理解Android系統

Android源碼很是龐大,只看組件也要好幾年,況且還有Linux內核、基帶、bootloader、TrustZone等底層模塊。

咱們只需瞭解支撐Android系統運轉的核心服務,以及Android系統的安全機制設計便可,其他內容用到時再去分析。

1.組件

(1)Zygote:Android應用的孵化器,一切Android程序由此進程fork而來。

(2)Binder:Android的進程間的通訊機制,它是Android平臺最核心的功能組件。

(3)Package Manager Service:應用安裝包管理服務,不只負責包的安裝和卸載,更重要的是負責Android應用信息的查詢和控制,例如Android權限管理。

(4)Activity Manager Service:管理Android框架層的進程,也包含了Android應用四大組件的邏輯實現。

(5)Dalvik虛擬機:雖然即將被ART取代,但Dalvik依然是幫助咱們理解虛擬機和Android可執行程序文件格式的好教材。

2.安全機制

(1)沙箱隔離:沙箱是基於不一樣應用之間User ID的不一樣而實現的,其本質是Linux對於不一樣用戶間訪問權限的隔離。

(2)應用權限控制:Android系統應用須要申請相應的權限才能訪問系統的資源和信息,大多數權限由Android框架層的API進行控制,另外一部分權限映射到應用所在的Group ID上,由Linux內核作出控制。

(3)SELinux:Linux內核層的安全加強,是一套獨立於傳統Linux權限訪問控制的強制性權限控制機制。Google已經將這套機制移植到Android內核,給內核漏洞利用帶來了一些挑戰。

 

7、Android安全研究的熱點方向與現狀

1.手機Root與內核漏洞挖掘利用

Android2.x時代,每每利用一些用戶層程序的漏洞便可將手機root,如今則主要依賴內核漏洞。

Android爲Linux內核引入了新的內核模塊,以及不一樣廠商的驅動方案。這就爲系統內核引入了新的安全隱患,不管是高通、MTK仍是三星獵戶座,或者華爲海思的芯片,多少都出現過一些內核漏洞,這是Android平臺內核的一個主要攻擊點。隨着Google將SELinux引入Android,攻擊面有所減少,但不能徹底解決內核漏洞利用問題。

防護角度講,一樣面臨挑戰:一些APT攻擊若是利用內核漏洞,將能拿到系統的徹底控制權。Android平臺內核漏洞長期以來一直都在持續曝光,漏洞利用與防範依然是持續的熱點。

從這個方向入手,首先須要瞭解Linux內核,而後不斷對目前已經公開的CVE漏洞進行分析,理解漏洞的成因和各個類型。

在漏洞利用方面,由開源項目run_root_shell可做爲參考,該項目包含了多個經典漏洞的利用實現,入門的好材料。

此外,還能夠關注國外的POC程序或對一鍵root類產品作分析。

2.Android應用與系統框架才呢過漏洞挖掘

Android應用自己的問題主要集中在4大組件上,一般是一些邏輯處理問題致使信息泄露、身份認證繞過等。

得益於Android沙箱機制,應用自己的攻擊面相對較小。

此外,圍繞WebView或者SSL漏洞所引起的安全問題也比較常見。

框架層漏洞也是邏輯漏洞居多,但危害每每比應用更大。著名的高危漏洞有Master Key簽名繞過、WebView遠程代碼執行等。

目前已有的一些開源漏洞挖掘工具,如Drozer和Intent Fuzzer。能夠再此基礎上進行改進。

3.惡意軟件攻防

數量上看,隱私竊取和釣魚軟件是目前Android平臺主要的惡意軟件類型。

若用戶對應用申請的權限絕不知情,一款應用便能輕鬆獲取用戶的短信、通信錄、地理位置、錄用等私密信息。

Android平臺須要有主動防護程序控制應用獲取隱私的行爲,目前有2種方法實現:一種是集成到ROM代碼中,另外一種是利用API Hook實現。不管使用哪一種方式,目前面臨的問題都是如何更智能地爲用戶管理權限,以減小防護軟件頻繁彈窗打來的打擾。

市面上還充斥着大量的仿冒支付類應用,它們看起來可能與正版應用沒有區別,由於這些仿冒軟件是由正版應用篡改而來的。一般都會有用戶名和密碼竊取的惡意代碼。安全軟件須要經過簽名、代碼特徵等方法對此進行識別。

從趨勢上看,惡意軟件不再侷限在Android安裝包(APK)的形式進行分發,而每每會帶有Linux可執行文件(ELF),對系統進行深層次的攻擊。目前市面上的安全產品對APK文件的查殺已比較成熟,但對於系統原生層的惡意軟件查殺尚未特別完善的實現,對於一些APT級別的新型威脅防護也仍在探索階段。

知名惡意軟件Oldboot就是惡意程序使用底層技術對抗查殺的典型案例,完整的分析已經公開。

4.支付安全

手機支付通常經過短信驗證碼和獨立支付密碼解決支付者身份認證問題,但仍然存在短信遭人竊聽或密碼被竊取的風險,一些廠商模仿PC上的U盾方案,推出音頻盾或藍牙盾解決認證問題。而利用ARM架構下的TrustZone將支付認證過程獨立於操做系統以外也是一個方向。

5.應用加固(加殼)與逆向工程

國內知名的加固方案有:梆梆加固、360加固保、愛加密等。

6.企業安全BYOD

僅就終端設備來講,BYOD方案是將手機系統隔離出兩個環境:一個公用,一個私用,二者互不影響。

 

8、實例:Android4.4.2系統vold漏洞

1.如何第一時間得知漏洞

不是全部的漏洞都會被CVE收錄,不少事祕密修補的。一種方法是,看版本升級時Android源碼中的Change Log,運氣好的話,能夠從AOSP的git commit信息中注意到下面的話:

Project:platform/system/vold

0de7c61:Validate asec names

點擊相關連接,就能看到Google祕密修補了該漏洞的信息。、

2.如何掌握漏洞細節

3.如何利用這個漏洞獲取root

 

by retme

相關文章
相關標籤/搜索