一,、安全研究做什么 攻擊角度:對某個模塊進行漏洞挖掘的方法,,對某個漏洞進行利用的技術(shù),通過逆向工程破解程序,、解密數(shù)據(jù),,對系統(tǒng)或應(yīng)用進行感染,、劫持等破壞安全性的攻擊技術(shù)等。 防御角度:查殺惡意應(yīng)用的方法,,檢測和防范漏洞利用,,為增強系統(tǒng)和第三方應(yīng)用的安全性提供解決方案等,。 通常,,攻與防是相對模糊的,一種安全技術(shù)往往兩端都適用,,也許更值得留意的是一種技術(shù)背后的思路和意識,。
二、需要具備的知識 安全涉及的知識范疇是無限的,,但大多數(shù)時候可以遇到問題再去了解相關(guān)知識,。
三、要掌握的理論知識 操作系統(tǒng)原理,,非常重要,,是認識某一個具體系統(tǒng)的前提。 微軟開源的Windows Research Kernel(WRK)同樣也非常棒的學(xué)習(xí)資料,。 動手編譯系統(tǒng)內(nèi)核,,用調(diào)試器一步步分析調(diào)試內(nèi)核比單純閱讀源碼和分析文章更有幫助。 嘗試編寫內(nèi)核驅(qū)動模塊或分析已有的內(nèi)核Rootkit來深入理解操作系統(tǒng),。 就移動平臺而言,,理解操作系統(tǒng)有助于進一步理解Android系統(tǒng)本身,而在理解Android系統(tǒng)之后,,才能開始討論Android系統(tǒng)的安全問題,。
四、幾門需要掌握的語言 不需要特別強的軟件開發(fā)能力,,需要關(guān)注某種語言的內(nèi)部實現(xiàn)過程,。 掌握C/C++,能理解該語言被編譯器處理后匯編層面的實現(xiàn)原理,。 了解Java,,需要理解Dalvik/ART虛擬機內(nèi)部的實現(xiàn)過程。 對x86/ARM匯編,,能讀懂即可,,遇到不會的指令可以從指令集中查找。 掌握一門腳本語言,,用來快速編寫小工具或POC,,推薦Python,因為開源社區(qū)中大部分Android安全分析類工具都是用Python編寫的,,例如,,知名的Androguard和Drozer,。
五、逆向工程 逆向工程絕對是一項必備技能,。分析惡意軟件行為還是分析閉源軟件,,都要逆向工程。
六,、理解Android系統(tǒng) Android源碼非常龐大,,只看組件也要好幾年,何況還有Linux內(nèi)核,、基帶,、bootloader、TrustZone等底層模塊,。 我們只需了解支撐Android系統(tǒng)運轉(zhuǎn)的核心服務(wù),,以及Android系統(tǒng)的安全機制設(shè)計即可,其余內(nèi)容用到時再去分析,。 1.組件 (1)Zygote:Android應(yīng)用的孵化器,,一切Android程序由此進程fork而來。 (2)Binder:Android的進程間的通信機制,,它是Android平臺最核心的功能組件,。 (3)Package Manager Service:應(yīng)用安裝包管理服務(wù),不僅負責(zé)包的安裝和卸載,,更重要的是負責(zé)Android應(yīng)用信息的查詢和控制,,例如Android權(quán)限管理。 (4)Activity Manager Service:管理Android框架層的進程,,也包含了Android應(yīng)用四大組件的邏輯實現(xiàn),。 (5)Dalvik虛擬機:雖然即將被ART取代,但Dalvik依然是幫助我們理解虛擬機和Android可執(zhí)行程序文件格式的好教材,。 2.安全機制 (1)沙箱隔離:沙箱是基于不同應(yīng)用之間User ID的不同而實現(xiàn)的,,其本質(zhì)是Linux對于不同用戶間訪問權(quán)限的隔離。 (2)應(yīng)用權(quán)限控制:Android系統(tǒng)應(yīng)用需要申請相應(yīng)的權(quán)限才能訪問系統(tǒng)的資源和信息,,大多數(shù)權(quán)限由Android框架層的API進行控制,,另一部分權(quán)限映射到應(yīng)用所在的Group ID上,由Linux內(nèi)核做出控制,。 (3)SELinux:Linux內(nèi)核層的安全增強,,是一套獨立于傳統(tǒng)Linux權(quán)限訪問控制的強制性權(quán)限控制機制。Google已經(jīng)將這套機制移植到Android內(nèi)核,,給內(nèi)核漏洞利用帶來了一些挑戰(zhàn),。
七、Android安全研究的熱點方向與現(xiàn)狀 1.手機Root與內(nèi)核漏洞挖掘利用 Android2.x時代,,往往利用一些用戶層程序的漏洞即可將手機root,,現(xiàn)在則主要依賴內(nèi)核漏洞,。 Android為Linux內(nèi)核引入了新的內(nèi)核模塊,以及不同廠商的驅(qū)動方案,。這就為系統(tǒng)內(nèi)核引入了新的安全隱患,,無論是高通、MTK還是三星獵戶座,,或者華為海思的芯片,,多少都出現(xiàn)過一些內(nèi)核漏洞,這是Android平臺內(nèi)核的一個主要攻擊點,。隨著Google將SELinux引入Android,,攻擊面有所減小,,但不能完全解決內(nèi)核漏洞利用問題,。 防御角度講,同樣面臨挑戰(zhàn):一些APT攻擊如果利用內(nèi)核漏洞,,將能拿到系統(tǒng)的完全控制權(quán),。Android平臺內(nèi)核漏洞長期以來一直都在持續(xù)曝光,漏洞利用與防范依然是持續(xù)的熱點,。 從這個方向入手,,首先需要了解Linux內(nèi)核,然后不斷對目前已經(jīng)公開的CVE漏洞進行分析,,理解漏洞的成因和各個類型,。 在漏洞利用方面,由開源項目run_root_shell可作為參考,,該項目包含了多個經(jīng)典漏洞的利用實現(xiàn),,入門的好材料。 此外,,還可以關(guān)注國外的POC程序或?qū)σ绘Iroot類產(chǎn)品做分析,。 2.Android應(yīng)用與系統(tǒng)框架才呢過漏洞挖掘 Android應(yīng)用本身的問題主要集中在4大組件上,通常是一些邏輯處理問題導(dǎo)致信息泄露,、身份認證繞過等,。 得益于Android沙箱機制,應(yīng)用本身的攻擊面相對較小,。 此外,,圍繞WebView或者SSL漏洞所引發(fā)的安全問題也比較常見。 框架層漏洞也是邏輯漏洞居多,,但危害往往比應(yīng)用更大,。著名的高危漏洞有Master Key簽名繞過、WebView遠程代碼執(zhí)行等,。 目前已有的一些開源漏洞挖掘工具,,如Drozer和Intent Fuzzer,。可以再此基礎(chǔ)上進行改進,。 3.惡意軟件攻防 數(shù)量上看,,隱私竊取和釣魚軟件是目前Android平臺主要的惡意軟件類型。 若用戶對應(yīng)用申請的權(quán)限毫不知情,,一款應(yīng)用便能輕松獲取用戶的短信,、通訊錄、地理位置,、錄用等私密信息,。 Android平臺需要有主動防御程序控制應(yīng)用獲取隱私的行為,目前有2種方法實現(xiàn):一種是集成到ROM代碼中,,另一種是利用API Hook實現(xiàn),。無論使用哪種方式,目前面臨的問題都是如何更智能地為用戶管理權(quán)限,,以減少防御軟件頻繁彈窗打來的打擾,。 市面上還充斥著大量的仿冒支付類應(yīng)用,它們看起來可能與正版應(yīng)用沒有區(qū)別,,因為這些仿冒軟件是由正版應(yīng)用篡改而來的,。通常都會有用戶名和密碼竊取的惡意代碼。安全軟件需要通過簽名,、代碼特征等方法對此進行識別,。 從趨勢上看,惡意軟件再也不局限在Android安裝包(APK)的形式進行分發(fā),,而往往會帶有Linux可執(zhí)行文件(ELF),,對系統(tǒng)進行深層次的攻擊。目前市面上的安全產(chǎn)品對APK文件的查殺已比較成熟,,但對于系統(tǒng)原生層的惡意軟件查殺還沒有特別完善的實現(xiàn),,對于一些APT級別的新型威脅防御也仍在探索階段。 知名惡意軟件Oldboot就是惡意程序使用底層技術(shù)對抗查殺的典型案例,,完整的分析已經(jīng)公開,。 4.支付安全 手機支付一般通過短信驗證碼和獨立支付密碼解決支付者身份認證問題,但仍然存在短信遭人竊聽或密碼被竊取的風(fēng)險,,一些廠商模仿PC上的U盾方案,,推出音頻盾或藍牙盾解決認證問題。而利用ARM架構(gòu)下的TrustZone將支付認證過程獨立于操作系統(tǒng)之外也是一個方向,。 5.應(yīng)用加固(加殼)與逆向工程 國內(nèi)知名的加固方案有:梆梆加固,、360加固保、愛加密等,。 6.企業(yè)安全BYOD 僅就終端設(shè)備來說,,BYOD方案是將手機系統(tǒng)隔離出兩個環(huán)境:一個公用,,一個私用,兩者互不影響,。
八,、實例:Android4.4.2系統(tǒng)vold漏洞 1.如何第一時間得知漏洞 不是所有的漏洞都會被CVE收錄,很多事秘密修補的,。一種方法是,,看版本升級時Android源碼中的Change Log,運氣好的話,,可以從AOSP的git commit信息中注意到下面的話: Project:platform/system/vold 0de7c61:Validate asec names 點擊相關(guān)鏈接,,就能看到Google秘密修補了該漏洞的信息。,、 2.如何掌握漏洞細節(jié) 3.如何利用這個漏洞獲取root
by retme |
|
來自: 霞客書齋 > 《android系統(tǒng)》