你必須了解的漏洞利用緩解及對抗技術

發布時間:2017-03-07

隨著軟件係統越來越複雜,軟件漏洞變得無法避免。業界逐漸推出了讓漏洞無法利用或利用難度提高的方法,簡稱漏洞緩解技術。日本不卡高清免v簡單介紹下androids和ioses中廣泛使用的一些漏洞緩解及可能的繞過技術。當然這裏也包含一些相關聯的安全限製,而非真正意義的緩解技術。

緩解及繞過技術點
User Permissions
每個app有自己uid,selinux_context,隻有申請並且用戶允許才有權限做它想做的事。要突破這些限製,可以考慮通過每個app合理的權限相互結合後產生的不合理性來入手。或者App之間交互的漏洞,如androids的FileProvider,先拿下此app等。

SELinux、MAC、Sandbox
SELinux是Security Enhanced Linux縮寫,可解釋為“安全加固型Linux內核”,MAC是Mandatory Access Control的縮寫,意為強製訪問控製。Sandbox即沙盒。它們含了一套很複雜的權限管理策略。基本采用白名單模式,默認禁止任意進程的絕大部分的行為,限製文件訪問,限製係統調用及調用參數。即限製了每個app的行為,也減少了被攻擊麵。要突破這些限製,比較可行的方法是攻擊如內核關閉等。

PIE、ASLR、KALSR
PIE是Position Independent Executable的縮寫,與PIC,Position Independent Code一樣。ALSR是Address Layout Space Randomization增強內存地址空間分配的隨機度。可執行文件和動態加載的庫之間的間隔,前後順序均不同,更沒有規律。準確地址未知的情況下攻擊者幾乎不可能完成攻擊,相當於戰場上目標都沒有找到。KALSR中的K是kernel的縮寫,保證每次設備啟動內核的虛擬地址是不同的。要突破這些限製,可采用堆噴射等噴射加各種類型的滑板,提高利用成功幾率。信息泄漏漏洞,如泄漏內存,泄漏文件,獲取內存地址。

DEP、PXN
DEP是Data Execution Protection的縮寫數據不可執行,意味著攻擊者不能直接執行自己的代碼,使攻擊難度變高。PXN是Privileged Execute Never的縮寫,內核態無法運行用戶態可執行數據。要突破這些限製,可利用ROP(Return Orient Program),JOP(Jump Orient Program),stack pivot技術,用程序自己的代碼做攻擊者想做的事。原理是利用現在ABI(Application Binary Interface)的特點,改寫程序的棧,控製多個函數返回地址從而形成鏈,將原有程序自己的代碼片段連起來做攻擊者想做的事。類似生物上的病毒。瀏覽器的話可以改寫JIT(Just In Time)編譯器所用的內存。androids用戶態mprotect,mmap係統調用,把內存改成可執行。

Trust Zone
可信空間,完成指紋、支付、解鎖、DRM和其他認證最保險的一步。即使是操作係統內核也無法訪問其內存。它完成簽名,加密等工作。要突破這些限製,先考慮拿下有權限訪問的service進程drmservie,gatekeeper。通過Fuzz接口找漏洞。如果拿到代碼執行的權限的話,就可以跳過指紋驗證悄悄的扣款了。

平滑升級
App自動更新,係統自動下載並提醒開關機時候升級,保證及時修複bug,日本不卡高清免v也將此列入到漏洞緩解中。要突破這些限製,可以考慮使用Google的app之間彼此信任,先拿下Google的一個app。讓這個app向Google Play發送安裝請求。

Code Sign
對代碼進行簽名,保證代碼從商店到用戶手機上不會有變化,防止被惡意植入代碼,也防止執行未被蘋果公司審核的代碼。繞過方法這裏就不闡述了。

Secure Boot、Verifying Boot
Secure Boot是ioses中的、Verifying Boot是androids中的,它們保證係統代碼不被修改,保證完美越獄、完美root無法實現。還有一些手機廠商自定義的緩釋措施,如androids的system分區強製隻能隻讀掛載,需要修改部分驅動中的數據才能實現對system分區的修改