首頁(yè) > 科技要聞 > 科技> 正文

發(fā)條消息就能破解iPhone?蘋果系統(tǒng)這次像被“內(nèi)鬼”攻破的。。。

差評(píng) 整合編輯:黃安莉 發(fā)布于:2024-01-28 21:31

前幾天,差評(píng)君在網(wǎng)上沖浪的時(shí)候,看到了一條相當(dāng)震撼的消息:

簡(jiǎn)單來(lái)講,就是主打封閉安全的 iPhone ,不僅被攻擊者發(fā)現(xiàn)了漏洞成功入侵,完全控制整個(gè)手機(jī)。

更加抽象的是入侵的還是知名殺毒軟件卡巴斯基團(tuán)隊(duì)成員的 iPhone 。。。

這年頭系統(tǒng)被攻擊的事情本來(lái)就少見(jiàn),更何況被攻擊的還是封閉和安全著稱的 iOS 系統(tǒng)。

這就讓差評(píng)君很好奇這樣頂風(fēng)作案 + 虎口拔牙的人到底是誰(shuí)?他又是怎么做到的?

同樣好奇的當(dāng)然也有受害者本人,也就是卡巴斯基團(tuán)隊(duì)。

他們給這個(gè)入侵行動(dòng)起了個(gè)名字叫 “ 三角測(cè)量行動(dòng) ” ,并且對(duì)整個(gè)入侵事件就進(jìn)行了復(fù)盤,給出了詳細(xì)的報(bào)告。

卡巴斯基的報(bào)告里 ” 三角測(cè)量行動(dòng) “ 附圖

差評(píng)君仔細(xì)分析了一下卡巴斯基團(tuán)隊(duì)的分析報(bào)告,發(fā)現(xiàn)入侵者的入侵方法堪稱 “ 豪華 ” ,連卡巴斯基團(tuán)隊(duì)自己都懵逼了,從來(lái)沒(méi)見(jiàn)過(guò)這個(gè)玩法:

這次針對(duì) iPhone 的攻擊,居然同時(shí)利用了 4 個(gè)零日漏洞,就是憑借著 4 個(gè)漏洞,攻擊者基本實(shí)現(xiàn)了對(duì)整個(gè)硬件設(shè)備的完全控制。。。

額外提一嘴,零日漏洞( Zero-Day )又叫零時(shí)差攻擊,指的就是那種之前從來(lái)沒(méi)有被發(fā)現(xiàn)過(guò)、所以沒(méi)有被修復(fù)或者攔截的漏洞。

我嘗試著把攻擊者利用零日漏洞完成攻擊的整個(gè)鏈條捋了一遍,大致是這個(gè)樣子的:

通俗點(diǎn)來(lái)講,就是黑客給目標(biāo)手機(jī)發(fā)了一個(gè)假的 iMessage 附件,植入了一個(gè)木馬,這個(gè)木馬騙過(guò)了 iPhone 里各種嚴(yán)防死守的保護(hù)機(jī)制,甚至繞過(guò)了蘋果 A 系列處理器芯片上的硬件防護(hù),完全控制了整個(gè)手機(jī)硬件設(shè)備,可以說(shuō)為所欲為。

在整個(gè)過(guò)程中,前面提到的 4 個(gè)零日漏洞被充分利用,被攻擊的手機(jī)只是因?yàn)榻拥搅?iMessage 附件,甚至都還沒(méi)打開,整個(gè)手機(jī)就已經(jīng)連底褲都被扒光了。

看完我感覺(jué)這個(gè)攻擊者的操作離譜到匪夷所思,他真的是普通的攻擊者嗎?

聽我講完這些零日漏洞到底是啥,攻擊者又是怎么利用他們的,估計(jì)就會(huì)懂我為什么會(huì)有這樣的疑問(wèn)了。

在最開始,攻擊者會(huì)給目標(biāo)手機(jī)發(fā)送一份惡意的 iMessage 附件,但是按照 iMessage 對(duì)待附件的邏輯,它會(huì)在不向用戶顯示任何跡象的情況下處理這個(gè)附件。

也就是說(shuō),用戶可能還沒(méi)察覺(jué)這個(gè)是不是有問(wèn)題的附件, iMessage 就已經(jīng)開始處理這個(gè)附件了,這個(gè)有問(wèn)題的附件進(jìn)入到你的 iPhone 的過(guò)程,用戶是無(wú)法察覺(jué)的。

光是無(wú)法察覺(jué)這一點(diǎn),估計(jì)已經(jīng)嚇壞一大幫人了,但是這還只是入侵者的引子。

攻擊者真正的第一個(gè)目標(biāo)是一個(gè)名為 CVE-2023-41990 的零日漏洞。

這個(gè)漏洞存在于一款用來(lái)調(diào)整字體的顯示效果的系統(tǒng) API 指令中,可以讓攻擊者通過(guò)惡意 iMessage 附件遠(yuǎn)程執(zhí)行代碼,或者說(shuō)植入了一個(gè)木馬。

是的,蘋果的字體指令中也會(huì)有漏洞,而且該指令自上世紀(jì) 90 年代初就已存在。

但是這個(gè)字體指令本身是蘋果公司獨(dú)有的,而且蘋果并沒(méi)有公開這一條指令的存在,很多關(guān)注這個(gè)事情的人分析到這里的時(shí)候都懷疑攻擊者的真實(shí)來(lái)頭。

第一遍看的時(shí)候我以為,攻擊者植入的木馬就是這個(gè) iMessage 附件本身。

但實(shí)際上它只是打開字體指令漏洞的鑰匙,真正的 “ 木馬 ” 是在沒(méi)公開的字體指令的漏洞里被植入的。

被植入之后,這個(gè) “ 木馬 ” 一路高歌猛進(jìn),從代碼框架手上騙到了執(zhí)行手機(jī)上別的程序的能力,這已經(jīng)進(jìn)入到 iOS 系統(tǒng)非常深的內(nèi)部了,甚至已經(jīng)差不多要摸到系統(tǒng)內(nèi)核了。

一般來(lái)說(shuō)到了這里,攻擊者已經(jīng)可以收手了,直接劫持一個(gè)本地程序,也能讀取手機(jī)上的一些隱私和信息。

但對(duì)于這一次入侵的攻擊者來(lái)說(shuō),前面所做的還只是他的開胃菜,他真正的目標(biāo)就是 iOS 的系統(tǒng)內(nèi)核。

按照正常的思路,攻擊者現(xiàn)在已經(jīng)進(jìn)入到 iOS 系統(tǒng)內(nèi)部,下一步他應(yīng)該會(huì)直接去攻擊系統(tǒng)內(nèi)核。

但是他沒(méi)有這么做。

攻擊者利用了內(nèi)核中第二個(gè)零日漏洞,內(nèi)存管理 - 內(nèi)存映射系統(tǒng)上的一個(gè)漏洞,直接先去控制了最最最底層的硬件內(nèi)存( 獲取了整個(gè)物理內(nèi)存的讀取和寫入權(quán)限 )

相當(dāng)于說(shuō),先放下了 iOS 的這一套系統(tǒng)不管,跑到了 A 系列芯片上,控制了處理器上實(shí)際物理內(nèi)存。

我們平時(shí)接觸到的 iMessage 、微信這些應(yīng)用程序,并不會(huì)直接操作實(shí)際的芯片上的物理內(nèi)存。

比如微信要存儲(chǔ)一個(gè)文件,并不是微信自己的代碼跑到硬件內(nèi)存芯片上去寫,它只要把文件交給系統(tǒng)的接口。

剩下的具體操作系統(tǒng)會(huì)統(tǒng)一安排,到硬件硬件內(nèi)存芯片上去寫入。

既然攻擊者的目標(biāo)是 iOS 系統(tǒng)內(nèi)核,那為啥要費(fèi)這么大勁兒繞過(guò)它,而去管那么遠(yuǎn)的硬件內(nèi)存的事情呢?

實(shí)際上到這里為止,系統(tǒng)內(nèi)核還是安全的,只是被利用了一下。

因?yàn)榫退愎粽吣軌蛲鶎?shí)際的物理內(nèi)存里亂寫東西,也沒(méi)有用——攻擊只能往這里面寫,但是不知道這一個(gè)內(nèi)存塊存的是什么東西、是用來(lái)干嘛的。

而且內(nèi)核訪問(wèn)硬件內(nèi)存的路徑也是七彎八繞的根本不知道,攻擊者企圖從硬件內(nèi)存反攻回內(nèi)核簡(jiǎn)直是在自己找死,自己在里頭繞幾圈沒(méi)準(zhǔn)就迷路繞死了。

除此之外攻擊者還有一個(gè) “困難 ” 要克服 —— 蘋果的硬件級(jí)內(nèi)存防護(hù)。

比如蘋果的頁(yè)表保護(hù)層 PPL (Page Protection Layer) ,這樣的硬件級(jí)別的內(nèi)存防護(hù),專門防這種能搞定硬件內(nèi)存的攻擊者。

在這次的攻擊事件發(fā)生之前,蘋果的這種深度基于硬件的保護(hù)被認(rèn)為是牢不可破的。

因?yàn)檫@樣的硬件級(jí)別內(nèi)存防護(hù)高度依賴于 SOC 設(shè)計(jì)本身,正常情況下的只芯片設(shè)計(jì)者自己知道這個(gè)保護(hù)是怎么回事。

但是攻擊者又是怎么破的呢 ?

準(zhǔn)確地說(shuō)他并沒(méi)有攻破這一層的硬件級(jí)內(nèi)存防護(hù)。

因?yàn)樗业搅说谌齻(gè)零日漏洞——蘋果的這個(gè)頁(yè)表保護(hù)層雖然很強(qiáng)勢(shì),但是可以繞過(guò)。

而攻擊者是怎么利用這個(gè)零日漏洞的呢?用卡巴斯基團(tuán)隊(duì)自己的話來(lái)說(shuō)就是:

攻擊者能夠把數(shù)據(jù)寫入某個(gè)特定的物理地址,通過(guò)將數(shù)據(jù)、目的地址和數(shù)據(jù)哈希寫入到未被固件使用的芯片的未知硬件寄存器,從而繞過(guò)了基于硬件的內(nèi)存保護(hù)。簡(jiǎn)單講就是,蘋果的這一層硬件級(jí)防護(hù),只能保護(hù)那些被系統(tǒng)內(nèi)核用過(guò)的硬件區(qū)域。

也就是說(shuō),硬件內(nèi)存里有一塊隱藏區(qū)域,連蘋果的安全系統(tǒng)都不知道它的存在,保護(hù)不到它,但是這個(gè)黑客知道。

于是這塊隱藏區(qū)域成為了繞過(guò)安全檢查的后門。

攻擊者就這樣繞過(guò)繞過(guò)了這一層硬件級(jí)別的防護(hù),劫持了系統(tǒng)內(nèi)核。

在利用完前面三個(gè)零日漏洞之后,攻擊者基本就可以在設(shè)備上做任何他想做的事情了,他想要進(jìn)的系統(tǒng)內(nèi)核,也能進(jìn)了。

但是攻擊者還沒(méi)有要收手的意思。

估計(jì)手機(jī)自己都無(wú)語(yǔ)了,我現(xiàn)在從到里又從里到外都已經(jīng)被你看了個(gè)遍了,你想讓我干嘛也我也完全要聽你的了,你還想怎么樣?

事實(shí)上攻擊者確實(shí)也可以清除掉所有漏洞利用痕跡,繼續(xù)埋伏在這一臺(tái) iPhone 里,悶聲發(fā)大財(cái),或者就干脆擦屁股走人。

但是攻擊者選擇了悄悄地運(yùn)行 Safari 瀏覽器的進(jìn)程,找到了另一個(gè)零日漏洞。。。

假如讀者里有搞攻防的小伙伴可能現(xiàn)在的心情已經(jīng)日了狗了。

大家可能不知道 iPhone 的一個(gè)零日漏洞有多值錢 —— 去年的 Pwn2Own 大會(huì)拿一百萬(wàn)美元都沒(méi)釣出來(lái)蘋果的 0day。

結(jié)果這哥們輕輕松松就扔了四個(gè)出來(lái)。

而且最離譜的是,你們知道他拿這第四個(gè) 0day 漏洞干了什么嗎?

他又執(zhí)行了一遍先控制物理內(nèi)存再反攻 iOS 內(nèi)核的操作。。。ㄗ铋_始提到第一個(gè)漏洞做過(guò)的事情)

這位黑客,請(qǐng)問(wèn)你是來(lái)搞黑客攻擊的還是來(lái)炫富的?!假如 iPhone 能說(shuō)話,可能也要開始大喊開掛了。

好了,這次事件的攻擊流程我們總算是大概給大家盤完了。

這次攻擊事件最有意思就是前面說(shuō)到的,被攻擊者用來(lái)從硬件內(nèi)存,反攻系統(tǒng)內(nèi)核的 “ 隱藏區(qū)域 ” 。

這個(gè)隱藏區(qū)域,其實(shí)是某個(gè)沒(méi)有被用到的硬件寄存器。

正常情況下,各種可用的外圍設(shè)備比如馬達(dá)、揚(yáng)聲器、麥克風(fēng)等等,都會(huì)提供特殊的硬件寄存器,CPU 可以通過(guò)這些寄存器來(lái)操作這些設(shè)備。

而此次攻擊者用來(lái)繞過(guò)蘋果硬件層保護(hù)的這些寄存器,CPU 自己都沒(méi)有調(diào)用過(guò),也不知道他們是用來(lái)干嘛的。

這就是為啥要說(shuō)這些寄存器是 “ 未知 ” 的。

夸張點(diǎn)說(shuō),即使是是蘋果自己的工程師來(lái)了,不花上一點(diǎn)功夫都不一定能找到這些硬件寄存器在哪里。

那攻擊者是怎么知道這些未知寄存器的存在的?

又是怎么知道用這些寄存器就能繞過(guò)蘋果的硬件級(jí)內(nèi)存保護(hù),從而實(shí)現(xiàn)整個(gè)手機(jī)硬件的控制的?

對(duì)于這一點(diǎn),作為受害者和第一手資料分析者的卡巴斯基團(tuán)隊(duì),并沒(méi)有給出合理的解釋,只是非常委婉地指出:

“ 我們猜測(cè),這個(gè)未知的硬件特性很可能是蘋果工程師或工廠用于調(diào)試或測(cè)試的目的,或者是無(wú)意中被包含進(jìn)去的。因?yàn)檫@個(gè)特性沒(méi)有被固件使用,我們不知道攻擊者是如何知道如何使用它的!

卡巴斯基團(tuán)隊(duì)

但是其他幾個(gè)零日漏洞都隱隱約約地透露出,這個(gè)攻擊者不是一般的外部攻擊者。。。。

這人說(shuō)不定真是個(gè)內(nèi)部人員,一直知道這些工程后門的存在。

但是這人也知道這些后門又是iMessage又是硬件內(nèi)存的,會(huì)涉及到很多個(gè)產(chǎn)品線。

按蘋果這種大公司內(nèi)部的協(xié)調(diào)效率的話,不推他們一下他們大概率是不會(huì)改的。

所以這位大哥直接拿這些東西黑了卡巴斯基,借卡巴斯基的手把事捅大了。

事情是不是一下子的變得合理了起來(lái)?

不過(guò)大家別慌,這些漏洞已經(jīng)被蘋果堵上了。

本文來(lái)源:差評(píng)

差評(píng)

網(wǎng)友評(píng)論

聚超值•精選

推薦 手機(jī) 筆記本 影像 硬件 家居 商用 企業(yè) 出行 未來(lái)
二維碼 回到頂部