利用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:漏洞銀行 |