前幾天,差評君在網上沖浪的時候,看到了一條相當震撼的消息:
簡單來講,就是主打封閉安全的 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 又是硬件内存的,會涉及到很多個産品線。
按蘋果這種大公司内部的協調效率的話,不推他們一下他們大概率是不會改的。
所以這位大哥直接拿這些東西黑了卡巴斯基,借卡巴斯基的手把事捅大了。
事情是不是一下子的變得合理了起來?
不過大家别慌,這些漏洞已經被蘋果堵上了。