科普 | 你必須了解的漏洞利用緩解及對抗技術(shù)
隨著軟件系統(tǒng)越來越復(fù)雜,軟件漏洞變得無法避免。業(yè)界逐漸推出了讓漏洞無法利用或利用難度提高的方法,簡稱漏洞緩解技術(shù)。我們簡單介紹下Android和iOS中廣泛使用的一些漏洞緩解及可能的繞過技術(shù)。當(dāng)然這里也包含一些相關(guān)聯(lián)的安全限制,而非真正意義的緩解技術(shù)。
緩解及繞過技術(shù)點(diǎn)
User Permission
每個(gè)app有自己uid,selinux_context,只有申請并且用戶允許才有權(quán)限做它想做的事。要突破這些限制,可以考慮通過每個(gè)app合理的權(quán)限相互結(jié)合后產(chǎn)生的不合理性來入手?;蛘逜pp之間交互的漏洞,如Android的FileProvider,先拿下此app等。
SELinux、MAC、Sandbox
SELinux是Security Enhanced Linux縮寫,可解釋為“安全加固型Linux內(nèi)核”,MAC是Mandatory Access Control的縮寫,意為強(qiáng)制訪問控制。Sandbox即沙盒。它們含了一套很復(fù)雜的權(quán)限管理策略?;静捎冒酌麊文J剑J(rèn)禁止任意進(jìn)程的絕大部分的行為,限制文件訪問,限制系統(tǒng)調(diào)用及調(diào)用參數(shù)。即限制了每個(gè)app的行為,也減少了被攻擊面。要突破這些限制,比較可行的方法是攻擊如內(nèi)核關(guān)閉等。
PIE、ASLR、KALSR
PIE是Position Independent Executable的縮寫,與PIC,Position Independent Code一樣。ALSR是Address Layout Space Randomization增強(qiáng)內(nèi)存地址空間分配的隨機(jī)度??蓤?zhí)行文件和動態(tài)加載的庫之間的間隔,前后順序均不同,更沒有規(guī)律。準(zhǔn)確地址未知的情況下攻擊者幾乎不可能完成攻擊,相當(dāng)于戰(zhàn)場上目標(biāo)都沒有找到。KALSR中的K是kernel的縮寫,保證每次設(shè)備啟動內(nèi)核的虛擬地址是不同的。要突破這些限制,可采用堆噴射等噴射加各種類型的滑板,提高利用成功幾率。信息泄漏漏洞,如泄漏內(nèi)存,泄漏文件,獲取內(nèi)存地址。
DEP、PXN
DEP是Data Execution Protection的縮寫數(shù)據(jù)不可執(zhí)行,意味著攻擊者不能直接執(zhí)行自己的代碼,使攻擊難度變高。PXN是Privileged Execute Never的縮寫,內(nèi)核態(tài)無法運(yùn)行用戶態(tài)可執(zhí)行數(shù)據(jù)。要突破這些限制,可利用ROP(Return Orient Program),JOP(Jump Orient Program),stack pivot技術(shù),用程序自己的代碼做攻擊者想做的事。原理是利用現(xiàn)在ABI(Application Binary Interface)的特點(diǎn),改寫程序的棧,控制多個(gè)函數(shù)返回地址從而形成鏈,將原有程序自己的代碼片段連起來做攻擊者想做的事。類似生物上的病毒。瀏覽器的話可以改寫JIT(Just In Time)編譯器所用的內(nèi)存。Android用戶態(tài)mprotect,mmap系統(tǒng)調(diào)用,把內(nèi)存改成可執(zhí)行。
Trust Zone
可信空間,完成指紋、支付、解鎖、DRM和其他認(rèn)證最保險(xiǎn)的一步。即使是操作系統(tǒng)內(nèi)核也無法訪問其內(nèi)存。它完成簽名,加密等工作。要突破這些限制,先考慮拿下有權(quán)限訪問的service進(jìn)程drmservie,gatekeeper。通過Fuzz接口找漏洞。如果拿到代碼執(zhí)行的權(quán)限的話,就可以跳過指紋驗(yàn)證悄悄的扣款了。
平滑升級
App自動更新,系統(tǒng)自動下載并提醒開關(guān)機(jī)時(shí)候升級,保證及時(shí)修復(fù)bug,我們也將此列入到漏洞緩解中。要突破這些限制,可以考慮使用Google的app之間彼此信任,先拿下Google的一個(gè)app。讓這個(gè)app向Google Play發(fā)送安裝請求。
Code Sign
對代碼進(jìn)行簽名,保證代碼從商店到用戶手機(jī)上不會有變化,防止被惡意植入代碼,也防止執(zhí)行未被蘋果公司審核的代碼。繞過方法這里就不闡述了。
Secure Boot、Verifying Boot