Snowblind 濫用 Android seccomp 沙盒繞過安全機(jī)制

傳統(tǒng)上,安卓惡意軟件可利用輔助功能服務(wù)竊取用戶輸入或控制應(yīng)用程序,但現(xiàn)在應(yīng)用程序可以檢測(cè)到惡意的輔助功能服務(wù),迫使攻擊者采用重新打包攻擊來繞過檢測(cè)。

640 (1).png

本文來自微信公眾號(hào)“嘶吼專業(yè)版”,作者/山卡拉。

安全研究人員最近發(fā)現(xiàn)了一種名為Snowblind的新型Android銀行木馬,它利用了Linux內(nèi)核特性seccomp,這一特性是傳統(tǒng)上用于安全防護(hù)的。Snowblind安裝了一個(gè)seccomp過濾器,用于攔截系統(tǒng)調(diào)用并繞過應(yīng)用程序中的反篡改機(jī)制,即使這些應(yīng)用程序具有強(qiáng)大的混淆和完整性檢查。

這種新的攻擊向量使得該惡意軟件能夠竊取登錄憑據(jù)、繞過雙因素認(rèn)證,并竊取數(shù)據(jù),功能非常強(qiáng)大。有人認(rèn)為這種技術(shù)有潛力以多種方式被利用來攻擊應(yīng)用程序。

傳統(tǒng)上,安卓惡意軟件可利用輔助功能服務(wù)竊取用戶輸入或控制應(yīng)用程序,但現(xiàn)在應(yīng)用程序可以檢測(cè)到惡意的輔助功能服務(wù),迫使攻擊者采用重新打包攻擊來繞過檢測(cè)。

640 (1).png

Snowblind的工作原理

Snowblind是一種新惡意軟件,它利用Linux內(nèi)核安全功能seccomp來發(fā)起更為復(fù)雜的重新打包攻擊。

與使用虛擬化的FjordPhantom不同,Snowblind在應(yīng)用程序的防篡改代碼運(yùn)行之前注入了一個(gè)帶有seccomp過濾器的本機(jī)庫,從而重定向系統(tǒng)調(diào)用,使應(yīng)用程序無法檢測(cè)到篡改,并允許惡意輔助功能服務(wù)在不被發(fā)現(xiàn)的情況下運(yùn)行。

Seccomp是一種Linux內(nèi)核功能,它允許用戶進(jìn)程定義系統(tǒng)調(diào)用策略,并充當(dāng)沙盒機(jī)制以減少攻擊面。

引入了兩種模式,嚴(yán)格模式只允許有限的系統(tǒng)調(diào)用,而seccomp-bpf通過Berkeley Packet Filters提供了精細(xì)的控制。

盡管傳統(tǒng)上seccomp在設(shè)備制造商的自定義內(nèi)核中是分散的,但它在Android 8(Oreo)中獲得了關(guān)注,其中Google在Zygote中實(shí)現(xiàn)了seccomp來限制應(yīng)用程序的系統(tǒng)調(diào)用,并在CTS(兼容性測(cè)試套件)中添加了測(cè)試以確保更廣泛的采用,這表明seccomp-bpf可能在大多數(shù)運(yùn)行Android 8及更高版本的設(shè)備上可用,甚至可能在更早的版本上可用。

Seccomp-bpf是Linux內(nèi)核的一項(xiàng)功能,它允許進(jìn)程限制其可以進(jìn)行的系統(tǒng)調(diào)用,通過阻止進(jìn)程進(jìn)行未經(jīng)授權(quán)的系統(tǒng)調(diào)用來提高安全性。

640 (1).png

結(jié)構(gòu)已定義

要使用seccomp-bpf,開發(fā)人員首先定義一個(gè)BPF(伯克利數(shù)據(jù)包過濾器)程序,該程序指定允許哪些系統(tǒng)調(diào)用,可以基于系統(tǒng)調(diào)用號(hào)、系統(tǒng)調(diào)用的參數(shù)或調(diào)用進(jìn)程。

一旦定義了BPF程序,就會(huì)使用prctl()系統(tǒng)調(diào)用將其應(yīng)用于進(jìn)程。

640 (1).png

整合所有內(nèi)容

帶有PR_SET_SECCOMP選項(xiàng)的prctl()系統(tǒng)調(diào)用允許進(jìn)程安裝seccomp過濾器,該過濾器是一個(gè)指向BPF程序的指針,用于定義允許哪些系統(tǒng)調(diào)用。

當(dāng)進(jìn)程嘗試進(jìn)行系統(tǒng)調(diào)用時(shí),內(nèi)核首先檢查seccomp過濾器,如果過濾器允許該系統(tǒng)調(diào)用,內(nèi)核就會(huì)進(jìn)行系統(tǒng)調(diào)用。

如果過濾器不允許系統(tǒng)調(diào)用,內(nèi)核就會(huì)向進(jìn)程返回一個(gè)錯(cuò)誤。

640 (1).png

在arm64上執(zhí)行的示例

應(yīng)用程序已經(jīng)采取了諸如實(shí)現(xiàn)自己的系統(tǒng)調(diào)用和混淆等對(duì)策。

Snowblind注入了一個(gè)安裝seccomp過濾器的本機(jī)庫,允許除open()之外的所有系統(tǒng)調(diào)用。

當(dāng)目標(biāo)防篡改庫嘗試打開文件時(shí),過濾器會(huì)觸發(fā)SIGSYS信號(hào)。自定義信號(hào)處理程序在重新執(zhí)行open()調(diào)用之前將原始應(yīng)用程序的文件路徑注入其中,從而有效地繞過防篡改檢查。

THEEND

最新評(píng)論(評(píng)論僅代表用戶觀點(diǎn))

更多
暫無評(píng)論