當前位置:
首頁 > 最新 > 利用Apple漏洞逃離沙箱

利用Apple漏洞逃離沙箱

大家好,我是小編

昨天2018胡潤富豪榜出爐

我查了一下自己的排名

放到大中華區來看

跟化騰爸爸只相差10E多一點而已

前言

今天教大家如何從默認應用程序的沙箱內調查iOS mach消息的IPC,並最終逃離沙箱。

Apple在最新的操作系統版本中解決了本文介紹的漏洞,並為每個漏洞分配了2個CVE:

CVE-2018-4087

CVE-2018-4095

Apple發布的消息:

tvOS 11.2.5對應URL:

https://support.apple.com/en-il/HT208462

iOS 11.2.5對應URL:

https://support.apple.com/en-il/HT208463

watchOS 4.2.2對應URL:

https://support.apple.com/en-il/HT208464

bluetoothd

不同的沙箱進程可以與不同的守護進程進行通信,如mediaserverd、bluetoothd和其他使用IPC的守護進程。下文中將重點介紹與bluetoothd的通信。

bluetoothd啟動com.apple.server.bluetooth埠,並在該埠上接收mach消息。

Mach消息是* OS中的一種IPC形式,為了給更高的IPC框架騰出空間,蘋果公司並不鼓勵這項操作。

函數apple_bluetoothd_mig_server將接收到的mach消息發送給com.apple.server.bluetooth,並通過mach消息ID進行處理。

為了簡化整個過程,該服務使用bootstrap_check_in註冊它的埠,我們可以使用從launchd檢索到的mach埠服務進行通信。

下面是apple_bluetoothd_mig_server:

處理mach消息的函數時,從msgh_id中減去0xFA300的值,然後獲得回調點,最後用輸入消息調用它。

如果mach消息的函數低於或等於0x83,就意味著我們有0x84個可用的回調。

由於二進位文件沒有符號,我們用一個小工具來解析這個結構,從不同的資料庫圖像中獲得的更多信息。

創建可用回調的完整列表:

machUnderfined_handler功能沒有被定義,因為使用的圖像是iPod touch,並且某些功能並不存在。

我們用mach__BTLocalDeviceAddCallbacks這個回調函數,它是mach消息ID為3的消息句柄。

使用mach__BTLocalDeviceAddCallbacks_3函數檢查mach消息的大小是否為0x48。然後嘗試使用session_token將回調添加到匹配的會話中。

當一個客戶端使用bluetoothd創建會話時,會有一個session_token給到bluetoothd。Apple使用session_token作為客戶端和bluetoothd之間的埠名稱,它與通信所用的埠完全相同。

那麼問題來了,因為mach埠具有特定的結構,這使得它非常容易被破解。

session_token屬於mach_port_t類型。在本文的PoC中,使用從launchd到bluetoothd的埠,以便與bluetoothd直接通信。

通過使用launchd到bluetoothd的埠,強制執行session_token,並最終通過劫持bluetoothd和客戶端之間的會話向客戶端註冊新的回調。

攻擊過程:

1.bluetoothd連接到客戶端並獲得用於mach通信的會話令牌,以便它的自我識別。

2.由於session_toke由通信機器埠組成,並且由mach_port_t結構構成,所以惡意應用程序(即沙箱應用程序)可以強制使用session_toke。

3.在成功強制執行session_toke之後,惡意應用程序可以在客戶端進程上註冊一個新消息,該消息將在發送到客戶端時被調用。

它意味著從沙箱環境運行的這個惡意應用程序,會設法在具有不同沙箱環境的bluetoothd客戶端上添加回調。

設法劫持的所有bluetoothd客戶端列表:

SpringBoard

mDNSResponder

aggregated

wifid

Preferences

CommCenter

iaptransportd

findmydeviced

routined

UserEventAgent

carkitd

mediaserverd

bluetoothd

coreduetd

wifid在運行PoC後的註冊狀態

利用方法

這個漏洞可以用來泄露每個客戶端的機器埠,並且會在每個客戶端上暴露巨大的攻擊面。

攻擊者可以通過被泄漏的埠跳轉到合適的小工具,並將埠發送回沙箱應用程序。

蘋果的修復程序

Apple將session_toke從實際的埠改為隨機令牌,但該修復程序仍然不能確保會話不會被劫持。

蘋果的修復

PoC源代碼

即可獲得文中的PoC源代碼下載地址。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 漏洞銀行 的精彩文章:

互聯網版淘金熱:加密貨幣詐騙
手把手教你使用PowerShell繞過AppLocker

TAG:漏洞銀行 |