2014年11月10日,火眼(Fireeye)移動(dòng)安全研究人員發(fā)現(xiàn)那種使用enterprise/ad-hoc授權(quán)文件(provisioning)安裝的iOS應(yīng)用會(huì)替換掉從App Store下載的正版iOS應(yīng)用,前提是兩個(gè)app使用的是相同的bundle identifier。
這個(gè)惡意軟件使用隨機(jī)名稱(比如“新生氣小鳥(niǎo)”),誘使用戶安裝下載,但安裝后就會(huì)發(fā)現(xiàn),它并沒(méi)有安裝“生氣小鳥(niǎo)”,而是將從App Store下載的合法應(yīng)用替換掉了。所有從App Store上下載的應(yīng)用都能被替換掉,除了iPhone本身自帶的應(yīng)用(如Mobile Safari)。
這個(gè)漏洞出現(xiàn)的原因是iOS并沒(méi)有嚴(yán)格要求使用相同bundle identifier的應(yīng)用的證書(shū)要匹配。目前我們發(fā)現(xiàn)漏洞存在的版本有iOS7.1.1、7.1.2、8.0、8.1以及8.1.1beta,iPhone越獄和非越獄機(jī)都受影響。攻擊者利用該漏洞的方式可通過(guò)無(wú)線網(wǎng)絡(luò)或USB。我們將這一漏洞命名為“假面攻擊”。
我們?cè)?月26日就已向蘋(píng)果公司報(bào)告了這一漏洞。最近克勞德.簫發(fā)現(xiàn)“WireLurker”惡意程序。在仔細(xì)研究了WireLurker后,我們發(fā)現(xiàn)它開(kāi)始利用“Masque攻擊方式”的有限形式通過(guò)USB來(lái)公司iOS設(shè)備。假面攻擊帶來(lái)的攻擊破壞要強(qiáng)于WireLurker。Masque攻擊能導(dǎo)致iPhone上從App Store上下載的合法應(yīng)用被替換掉,比如銀行或郵件應(yīng)用。這意味著攻擊者能夠竊取用戶的銀行憑證信息,只要惡意軟件和將要被替換的合法應(yīng)用使用一致的UI界面。
我們驚奇得發(fā)現(xiàn),惡意程序甚至能夠接入原始應(yīng)用的本地?cái)?shù)據(jù),而且當(dāng)原始應(yīng)用被替換掉時(shí)本地?cái)?shù)據(jù)扔保留了下來(lái)。這些本地?cái)?shù)據(jù)中可能包含緩存的郵件,或甚是登陸許可證(login-tokens),以后惡意程序可使用這些關(guān)鍵信息來(lái)直接登陸用戶賬戶。
目前,我們發(fā)現(xiàn)這個(gè)漏洞問(wèn)題已經(jīng)開(kāi)始傳播。所以面對(duì)這樣的形勢(shì),我們認(rèn)為有必要讓公眾了解詳細(xì)情況,因?yàn)闈撛诘奈kU(xiǎn)可能影響到每一個(gè)人。與此同時(shí),我們也向大家列出了一些解決辦法,幫助iOS用戶能更好的享受到應(yīng)有的服務(wù)。
安全影響
通過(guò)Masque攻擊,攻擊者能夠誘使受害者下載安裝惡意應(yīng)用,使用偽造的應(yīng)用名(攻擊者起的名字),而且該惡意應(yīng)用會(huì)將合法的應(yīng)用替換掉(使用相同的bundle identifier)。Masque攻擊方式無(wú)法替換iPhone自帶的應(yīng)用,如Mobile Safari,但就是能替換從App Store下載的應(yīng)用。經(jīng)過(guò)我們的總結(jié)發(fā)現(xiàn),假面攻擊會(huì)帶來(lái)以下嚴(yán)重的安全后果:
1. 攻擊者會(huì)模仿原始應(yīng)用的登陸界面以竊取用戶的登陸憑證信息。我們通過(guò)對(duì)多個(gè)銀行及郵件應(yīng)用已經(jīng)驗(yàn)證了這個(gè)事實(shí)。就是說(shuō)這個(gè)惡意程序會(huì)使用與原始應(yīng)用相同的UI界面欺騙用戶,誘使他們輸入自己的登陸憑證信息,然后攻擊者將憑證信息傳送到遠(yuǎn)程服務(wù)器上。
2. 我們還發(fā)現(xiàn)原始應(yīng)用的目錄下的數(shù)據(jù),比如說(shuō)本地?cái)?shù)據(jù)緩存,即使在原始應(yīng)用被替換掉時(shí),這些本地?cái)?shù)據(jù)仍保留在惡意應(yīng)用的本地目錄中。所以惡意程序竊取了這些敏感信息。我們通過(guò)郵件類應(yīng)用證實(shí)了這個(gè)事實(shí),具體發(fā)現(xiàn)就是惡意軟件竊取了重要郵件的本地緩存,然后將這些信息上傳到其遠(yuǎn)程服務(wù)器上。
3. MDM(移動(dòng)設(shè)備管理)接口無(wú)法辨別惡意應(yīng)用和原始合法應(yīng)用,如果它們使用的是相同的bundle identifier。目前MDM API不會(huì)獲取每個(gè)應(yīng)用的憑證信息(certificate information)。這樣的話,MDM也就很難發(fā)現(xiàn)此類攻擊。
4. 我們?cè)诓《竟姘灼?shū)2014(Apple without a shell – iOS under targeted attack)中提到過(guò),那些使用enterprise provisioning描述文件(我們都將其稱作“EnPublic應(yīng)用”)的應(yīng)用不受蘋(píng)果審查。因此,攻擊者就是利用這一漏洞,使用iOS私有API進(jìn)行強(qiáng)大的攻擊活動(dòng),比如像后臺(tái)監(jiān)控(CVE-2014-1276)和模仿iCloud的UI界面來(lái)竊取用戶的Apple ID和密碼的活動(dòng)。
5. 攻擊者通過(guò)Masque攻擊還能繞過(guò)正常應(yīng)用的沙盒,然后通過(guò)利用iOS已知漏洞獲取root權(quán)限,比如之前盤(pán)古團(tuán)隊(duì)進(jìn)行的攻擊活動(dòng)。
舉例
我們?cè)谶M(jìn)行實(shí)驗(yàn)時(shí),使用了一個(gè)內(nèi)部應(yīng)用,用的bundle identifier是“com.google.Gmail”,應(yīng)用名字為“新生氣小鳥(niǎo)”。我們通過(guò)enterprise憑證給這款應(yīng)用簽名。當(dāng)我們從網(wǎng)站上安裝這款應(yīng)用時(shí),它便替換了iPhone上原始的Gmail應(yīng)用。
圖1展示了整個(gè)過(guò)程,圖1中的a、b展示了合法的Gmail應(yīng)用已安裝在iPhone設(shè)備上,而且有22封未讀郵件。圖1中c展示受害者被引誘去安裝下載(從網(wǎng)上)一個(gè)名為“新生氣小鳥(niǎo)”的內(nèi)部應(yīng)用。需要注意的是“新生氣小鳥(niǎo)”是這個(gè)惡意程序的名稱,其實(shí)攻擊者可以把它設(shè)置成任意的名字。但這個(gè)惡意程序用戶的bundle identifier是“com.google.Gmail”。
當(dāng)用戶點(diǎn)擊“安裝”后,圖1中d展示的是安裝過(guò)程中內(nèi)部應(yīng)用替換了原始應(yīng)用。圖1中e展示原始Gmail應(yīng)用被內(nèi)部應(yīng)用替換。安裝完后,當(dāng)用戶打開(kāi)Gmail應(yīng)用時(shí),用戶就自動(dòng)登錄到一個(gè)UI幾乎完全一致,只是在界面上方能看到一小行字“沒(méi)錯(cuò),你上鉤了”的應(yīng)用,呵呵,這只是我們惡作劇為了向大家展示這一攻擊過(guò)程提前設(shè)置好的信息。在真實(shí)攻擊活動(dòng)中,攻擊者可不會(huì)跟你這么禮貌。與此同時(shí),原始應(yīng)用的本地緩存郵件數(shù)據(jù),在一個(gè)sqlite3數(shù)據(jù)庫(kù)以清晰文本形式儲(chǔ)存的數(shù)據(jù),在圖2中展示,就被上傳到遠(yuǎn)程的服務(wù)器上。
注意Masque整個(gè)攻擊過(guò)程完全是在無(wú)線網(wǎng)絡(luò)下進(jìn)行的,并沒(méi)有依靠將一個(gè)設(shè)備連接到一臺(tái)電腦上。
iOS用戶可以采取以下三個(gè)步驟來(lái)降低被攻擊的風(fēng)險(xiǎn):
1. 下載應(yīng)用時(shí),除了App Store不要去亂七八糟的第三方下載平臺(tái)
2. 不要點(diǎn)擊第三方網(wǎng)頁(yè)給你彈出的一個(gè)彈框內(nèi)顯示的安裝提示(如圖3),不管彈框內(nèi)寫(xiě)的是什么信息都不要相信。彈框內(nèi)的信息都是攻擊者使用吸引人的字眼來(lái)誘使用戶點(diǎn)擊的。
3. 當(dāng)打開(kāi)一款app時(shí),如果iOS給你發(fā)出警告信息“不受信任的應(yīng)用開(kāi)發(fā)者(圖3)”,請(qǐng)選擇“不信任”,然后立即卸載這款應(yīng)用
檢查一下,是否已經(jīng)通過(guò)Masque攻擊活動(dòng)下載了很多應(yīng)用了,iOS7用戶可以檢查安裝在他們iPhone上的enterprise provisioning描述文件,這一信息表明了Masque攻擊可能植入的惡意軟件的簽名身份。路徑是“Settings – > General -> Profiles” for “PROVISIONING PROFILES”。iOS7用戶可以向相關(guān)安全部門(mén)上報(bào)可疑的provisioning描述文件。刪除provisioning描述文件可以防止enterprise簽名應(yīng)用(依靠provisioning描述文件才能運(yùn)行的應(yīng)用)運(yùn)行。但是iOS8設(shè)備未顯示已經(jīng)安裝在設(shè)備上的provisioning描述文件,我們建議用戶需要更加謹(jǐn)慎,在安裝應(yīng)用程序時(shí)。
我們?cè)?月份時(shí)已向蘋(píng)果報(bào)告了此漏洞。因?yàn)槟壳疤O(píng)果推出的標(biāo)準(zhǔn)防御手段或接口無(wú)法預(yù)防此次攻擊,我們希望蘋(píng)果能夠向?qū)I(yè)的安全技術(shù)設(shè)備供應(yīng)商提供更為強(qiáng)大的接口,以保護(hù)企業(yè)用戶不受此類攻擊的影響。
在此,我們要感謝火眼團(tuán)隊(duì)成員Noah Johnson和Andrew Osheroff,感謝他們?yōu)閐emo視頻做出的貢獻(xiàn)。此外,我們還想感謝Kyrksen Storer和Lynn Thorne,感謝他們?yōu)檫@次博文做出的貢獻(xiàn),尤其,還要感謝Zheng Bu,感謝他提供的珍貴的評(píng)論和反饋。