如何通過macOS的磁盤管理工具實現(xiàn)系統(tǒng)提權

這期內(nèi)容當中小編將會給大家?guī)碛嘘P如何通過macOS的磁盤管理工具實現(xiàn)系統(tǒng)提權,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

成都一家集口碑和實力的網(wǎng)站建設服務商,擁有專業(yè)的企業(yè)建站團隊和靠譜的建站技術,十余年企業(yè)及個人網(wǎng)站建設經(jīng)驗 ,為成都1000多家客戶提供網(wǎng)頁設計制作,網(wǎng)站開發(fā),企業(yè)網(wǎng)站制作建設等服務,包括成都營銷型網(wǎng)站建設,品牌網(wǎng)站設計,同時也為不同行業(yè)的客戶提供網(wǎng)站設計、做網(wǎng)站的服務,包括成都電商型網(wǎng)站制作建設,裝修行業(yè)網(wǎng)站制作建設,傳統(tǒng)機械行業(yè)網(wǎng)站建設,傳統(tǒng)農(nóng)業(yè)行業(yè)網(wǎng)站制作建設。在成都做網(wǎng)站,選網(wǎng)站制作建設服務商就選創(chuàng)新互聯(lián)

    ZDI的研究人員“ccpwd”在一個名叫“diskmanagementd”的macOS守護進程中,發(fā)現(xiàn)了一個基于堆的緩沖區(qū)溢出漏洞。diskmanagementd這個服務主要負責對磁盤驅(qū)動器進行管理和分區(qū),用戶可以通過磁盤實用工具(Disk Utility)來與該服務進行交互。該服務將會運行一個Mach服務器,并允許客戶端使用Mach IPC接口來與服務器端通信(發(fā)送和接收信息)。通過這種RPC機制,客戶端可以在Mach服務器中執(zhí)行各種通過MIG(Mach接口生成器)生成的功能函數(shù)。

漏洞分析

所有的通信數(shù)據(jù)都需要經(jīng)過launchd,即macOS的init初始化實現(xiàn)。關于該進程的更多細節(jié)可以通過查看其信息屬性列表文件來了解,文件路徑如下:

/System/Library/LaunchDaemons/com.apple.diskmanagementd.plist

一開始,守護進程會分配一個調(diào)用函數(shù),在之后發(fā)送和接收Mach消息時,內(nèi)部進程通信將需要調(diào)用這個函數(shù)。

如何通過macOS的磁盤管理工具實現(xiàn)系統(tǒng)提權

在這里,CFMachPortCreateWithPort會分配一個函數(shù)sub_10000C241來作為負責處理Mach消息的回調(diào)函數(shù),接收Mach消息的地址為0x10000BE1F。根據(jù)msgh_id,Mach消息中的某個值會傳送一條操作指令或函數(shù)ID,sub_10000C241會間接使用這個ID來作為兩個遠程函數(shù)的調(diào)度表索引。sub_100001DA2和sub_100002005分別負責啟動和移除后續(xù)的通信會話。

如何通過macOS的磁盤管理工具實現(xiàn)系統(tǒng)提權

Mach端口是單向通信的,這也就意味著每個發(fā)送、接收請求都需要使用單獨的端口,蘋果稱之為:

“端口是請求服務的客戶端和提供服務的服務器之間單向通信通道的端點。如果要對此類服務請求提供答復,則必須使用第二個端口,這與Unix中的(單向)管道類似?!?/p>

如何通過macOS的磁盤管理工具實現(xiàn)系統(tǒng)提權

函數(shù)sub_10000CCA9是可以通過sub_100001DA2訪問到的,另一個Mach端口通過回調(diào)函數(shù)sub_10000DACC來創(chuàng)建,端口會保存在一個字典里,鍵名為“Comms-F2TPort”。緩沖區(qū)0x1000字節(jié)處用于處理Mach消息的響應,并且信息保存在字典中鍵名為“?Comms-F2T-replyarea”的位置。

如何通過macOS的磁盤管理工具實現(xiàn)系統(tǒng)提權

其中,setObject:forKey用于向字典中添加鍵值對:

如何通過macOS的磁盤管理工具實現(xiàn)系統(tǒng)提權

當客戶端發(fā)送一條消息時,sub_10000DACC將會被觸發(fā),然后根據(jù)msgh_id來訪問MIG遠程程序調(diào)用。接下來,我們將注意力主要放在函數(shù)sub_1000087C9的身上:

如何通過macOS的磁盤管理工具實現(xiàn)系統(tǒng)提權

緩沖區(qū)溢出發(fā)生在sub_1000087C9函數(shù)中,當用戶輸入數(shù)據(jù)長度經(jīng)過計算后偏移量超過0x1000時,便會發(fā)生緩沖區(qū)溢出。

如何通過macOS的磁盤管理工具實現(xiàn)系統(tǒng)提權

0x1000響應緩沖區(qū)基本上為r14,用戶輸入從偏移量0x38處開始,所以剩下的0xfc8

字節(jié)即為用戶輸入?yún)^(qū)域,當輸入數(shù)據(jù)填充至0xfc8處時,strlen將會返回相同的值。經(jīng)過計算之后,最終的值為 0xfcc [ ((0xfc8 + 1) + 3) & 0xfffffffc]。在地址0x100008ABD處,偏移量將會變成0x1004 [0xfcc+0x38],這里允許泄露4個字節(jié),并寫入4個字節(jié)數(shù)據(jù),因此攻擊者就可以利用這種特性來實現(xiàn)攻擊了。但是這里的數(shù)據(jù)泄露效果不是很顯著,因為大小僅為0x1000,而寫入操作需要在0x1004處完成,這也就意味著程序只能從后續(xù)數(shù)據(jù)塊中讀取4個字節(jié)的數(shù)據(jù)。

這里有幾個限制,首先是輸入數(shù)據(jù)中不能包含空字符,因為這將導致strlen在空字符處停止。另一個限制是在緩沖區(qū)結束后寫入的數(shù)據(jù)將始終是var_dc的內(nèi)容,這部分內(nèi)容就是sub b30返回的錯誤代碼。

如何通過macOS的磁盤管理工具實現(xiàn)系統(tǒng)提權

上述就是小編為大家分享的如何通過macOS的磁盤管理工具實現(xiàn)系統(tǒng)提權了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

當前名稱:如何通過macOS的磁盤管理工具實現(xiàn)系統(tǒng)提權
轉載源于:http://muchs.cn/article28/ihjscp.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供手機網(wǎng)站建設、、小程序開發(fā)、網(wǎng)站改版服務器托管、網(wǎng)頁設計公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)