前幾天,差評君在網上衝浪的時候,看到了一條相當震撼的訊息:
簡單來講,就是主打封閉安全的 iPhone ,不僅被攻擊者發現了漏洞成功入侵,完全控制整個手機。
更加抽象的是入侵的還是知名防毒軟體卡巴斯基團隊成員的 iPhone 。。。
這年頭系統被攻擊的事情本來就少見,更何況被攻擊的還是封閉和安全著稱的 iOS 系統。
這就讓差評君很好奇這樣頂風作案 + 虎口拔牙的人到底是誰?他又是怎麼做到的?
同樣好奇的當然也有受害者本人,也就是卡巴斯基團隊。
他們給這個入侵行動起了個名字叫 “ 三角測量行動 ” ,並且對整個入侵事件就進行了覆盤,給出了詳細的報告。
卡巴斯基的報告裡 ” 三角測量行動 “ 附圖
差評君仔細分析了一下卡巴斯基團隊的分析報告,發現入侵者的入侵方法堪稱 “ 豪華 ” ,連卡巴斯基團隊自己都懵逼了,從來沒見過這個玩法:
這次針對 iPhone 的攻擊,居然同時利用了 4 個零日漏洞,就是憑藉著 4 個漏洞,攻擊者基本實現了對整個硬體裝置的完全控制。。。
額外提一嘴,零日漏洞( Zero-Day )又叫零時差攻擊,指的就是那種之前從來沒有被發現過、所以沒有被修復或者攔截的漏洞。
我嘗試著把攻擊者利用零日漏洞完成攻擊的整個鏈條捋了一遍,大致是這個樣子的:
通俗點來講,就是駭客給目標手機發了一個假的 iMessage 附件,植入了一個木馬,這個木馬騙過了 iPhone 裡各種嚴防死守的保護機制,甚至繞過了蘋果 A 系列處理器晶片上的硬體防護,完全控制了整個手機硬體裝置,可以說為所欲為。
在整個過程中,前面提到的 4 個零日漏洞被充分利用,被攻擊的手機只是因為接到了 iMessage 附件,甚至都還沒開啟,整個手機就已經連底褲都被扒光了。
看完我感覺這個攻擊者的操作離譜到匪夷所思,他真的是普通的攻擊者嗎?
聽我講完這些零日漏洞到底是啥,攻擊者又是怎麼利用他們的,估計就會懂我為什麼會有這樣的疑問了。
在最開始,攻擊者會給目標手機發送一份惡意的 iMessage 附件,但是按照 iMessage 對待附件的邏輯,它會在不向使用者顯示任何跡象的情況下處理這個附件。
也就是說,使用者可能還沒察覺這個是不是有問題的附件, iMessage 就已經開始處理這個附件了,這個有問題的附件進入到你的 iPhone 的過程,使用者是無法察覺的。
光是無法察覺這一點,估計已經嚇壞一大幫人了,但是這還只是入侵者的引子。
攻擊者真正的第一個目標是一個名為 CVE-2023-41990 的零日漏洞。
這個漏洞存在於一款用來調整字型的顯示效果的系統 API 指令中,可以讓攻擊者透過惡意 iMessage 附件遠端執行程式碼,或者說植入了一個木馬。
是的,蘋果的字型指令中也會有漏洞,而且該指令自上世紀 90 年代初就已存在。
但是這個字型指令本身是蘋果公司獨有的,而且蘋果並沒有公開這一條指令的存在,很多關注這個事情的人分析到這裡的時候都懷疑攻擊者的真實來頭。
第一遍看的時候我以為,攻擊者植入的木馬就是這個 iMessage 附件本身。
但實際上它只是開啟字型指令漏洞的鑰匙,真正的 “ 木馬 ” 是在沒公開的字型指令的漏洞裡被植入的。
被植入之後,這個 “ 木馬 ” 一路高歌猛進,從程式碼框架手上騙到了執行手機上別的程式的能力,
這已經進入到 iOS 系統非常深的內部了,甚至已經差不多要摸到系統核心了。
一般來說到了這裡,攻擊者已經可以收手了,直接劫持一個本地程式,也能讀取手機上的一些隱私和資訊。
但對於這一次入侵的攻擊者來說,前面所做的還只是他的開胃菜,他真正的目標就是 iOS 的系統核心。
按照正常的思路,攻擊者現在已經進入到 iOS 系統內部,下一步他應該會直接去攻擊系統核心。
但是他沒有這麼做。
攻擊者利用了核心中第二個零日漏洞,記憶體管理 - 記憶體對映系統上的一個漏洞,直接先去控制了最最最底層的硬體記憶體( 獲取了整個物理記憶體的讀取和寫入許可權 )
相當於說,先放下了 iOS 的這一套系統不管,跑到了 A 系列晶片上,控制了處理器上實際物理記憶體。
我們平時接觸到的 iMessage 、微信這些應用程式,並不會直接操作實際的晶片上的物理記憶體。
比如微信要儲存一個檔案,並不是微信自己的程式碼跑到硬體記憶體晶片上去寫,它只要把檔案交給系統的介面。
剩下的具體作業系統會統一安排,到硬體硬體記憶體晶片上去寫入。
既然攻擊者的目標是 iOS 系統核心,那為啥要費這麼大勁兒繞過它,而去管那麼遠的硬體記憶體的事情呢?
實際上到這裡為止,系統核心還是安全的,只是被利用了一下。
因為就算攻擊者能夠往實際的物理記憶體裡亂寫東西,也沒有用——攻擊只能往這裡面寫,但是不知道這一個記憶體塊存的是什麼東西、是用來幹嘛的。
而且核心訪問硬體記憶體的路徑也是七彎八繞的根本不知道,攻擊者企圖從硬體記憶體反攻回核心簡直是在自己找死,自己在裡頭繞幾圈沒準就迷路繞死了。
除此之外攻擊者還有一個 “困難 ” 要克服 —— 蘋果的硬體級記憶體防護。
比如蘋果的頁表保護層 PPL (Page Protection Layer) ,這樣的硬體級別的記憶體防護,專門防這種能搞定硬體記憶體的攻擊者。
在這次的攻擊事件發生之前,蘋果的這種深度基於硬體的保護被認為是牢不可破的。
因為這樣的硬體級別記憶體防護高度依賴於 SOC 設計本身,正常情況下的只晶片設計者自己知道這個保護是怎麼回事。
但是攻擊者又是怎麼破的呢 ?
準確地說他並沒有攻破這一層的硬體級記憶體防護。
因為他找到了第三個零日漏洞——蘋果的這個頁表保護層雖然很強勢,但是可以繞過。
而攻擊者是怎麼利用這個零日漏洞的呢?用卡巴斯基團隊自己的話來說就是:
攻擊者能夠把資料寫入某個特定的物理地址,透過將資料、目的地址和資料雜湊寫入到未被韌體使用的晶片的未知硬體暫存器,從而繞過了基於硬體的記憶體保護。
簡單講就是,蘋果的這一層硬體級防護,只能保護那些被系統核心用過的硬體區域。
也就是說,硬體記憶體裡有一塊隱藏區域,連蘋果的安全系統都不知道它的存在,保護不到它,但是這個駭客知道。
於是這塊隱藏區域成為了繞過安全檢查的後門。
攻擊者就這樣繞過繞過了這一層硬體級別的防護,劫持了系統核心。
在利用完前面三個零日漏洞之後,攻擊者基本就可以在裝置上做任何他想做的事情了,他想要進的系統核心,也能進了。
但是攻擊者還沒有要收手的意思。
估計手機自己都無語了,我現在從到裡又從裡到外都已經被你看了個遍了,你想讓我幹嘛也我也完全要聽你的了,你還想怎麼樣?
事實上攻擊者確實也可以清除掉所有漏洞利用痕跡,繼續埋伏在這一臺 iPhone 裡,悶聲發大財,或者就乾脆擦屁股走人。
但是攻擊者選擇了悄悄地執行 Safari 瀏覽器的程序,找到了另一個零日漏洞。。。
假如讀者裡有搞攻防的小夥伴可能現在的心情已經日了狗了。
大家可能不知道 iPhone 的一個零日漏洞有多值錢 —— 去年的 Pwn2Own 大會拿一百萬美元都沒釣出來蘋果的 0day。
結果這哥們輕輕鬆鬆就扔了四個出來。
而且最離譜的是,你們知道他拿這第四個 0day 漏洞幹了什麼嗎?
他又執行了一遍先控制物理記憶體再反攻 iOS 核心的操作!!!(最開始提到第一個漏洞做過的事情)
這位駭客,請問你是來搞駭客攻擊的還是來炫富的?!
假如 iPhone 能說話,可能也要開始大喊開掛了。
好了,這次事件的攻擊流程我們總算是大概給大家盤完了。
這次攻擊事件最有意思就是前面說到的,被攻擊者用來從硬體記憶體,反攻系統核心的“ 隱藏區域 ”。
這個隱藏區域,其實是某個沒有被用到的硬體暫存器。
正常情況下,各種可用的外圍裝置比如馬達、揚聲器、麥克風等等,都會提供特殊的硬體暫存器,CPU 可以透過這些暫存器來操作這些裝置。
而此次攻擊者用來繞過蘋果硬體層保護的這些暫存器,CPU 自己都沒有呼叫過,也不知道他們是用來幹嘛的。
這就是為啥要說這些暫存器是 “ 未知 ” 的。
誇張點說,即使是是蘋果自己的工程師來了,不花上一點功夫都不一定能找到這些硬體暫存器在哪裡。
那攻擊者是怎麼知道這些未知暫存器的存在的?
又是怎麼知道用這些暫存器就能繞過蘋果的硬體級記憶體保護,從而實現整個手機硬體的控制的?
對於這一點,作為受害者和第一手資料分析者的卡巴斯基團隊,並沒有給出合理的解釋,只是非常委婉地指出:
“ 我們猜測,這個未知的硬體特性很可能是蘋果工程師或工廠用於除錯或測試的目的,或者是無意中被包含進去的。因為這個特性沒有被韌體使用,我們不知道攻擊者是如何知道如何使用它的。”
卡巴斯基團隊
但是其他幾個零日漏洞都隱隱約約地透露出,這個攻擊者不是一般的外部攻擊者。。。。
這人說不定真是個內部人員,一直知道這些工程後門的存在。
但是這人也知道這些後門又是iMessage又是硬體記憶體的,會涉及到很多個產品線。
按蘋果這種大公司內部的協調效率的話,不推他們一下他們大機率是不會改的。
所以這位大哥直接拿這些東西黑了卡巴斯基,借卡巴斯基的手把事捅大了。
事情是不是一下子的變得合理了起來?
不過大家別慌,這些漏洞已經被蘋果堵上了。