<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    【技術分享】一種特殊的dll劫持

    VSole2021-07-22 16:07:02

    去年我分享了我發現的CVE-2020-3535:Cisco Webex Teams windows客戶端dll劫持漏洞。當時我文章中說:

    考慮另外一種exe和加載的dll不在同一個路徑的情況,如果C:\abc\def\poc.exe想要加載C:\abc\lib\test.dll,可不可以寫成LoadLibraryW(L”..\lib\test.dll”)呢?這也是會導致漏洞的,同樣windows會把”..\lib\test.dll”直接當成”C:\lib\test.dll”。我在另外某個知名廠商的產品中發現了這樣的代碼,我已經報告給了廠商,還在等廠商給我答復。我可能會在90天的期限或者廠商發布安全公告之后補充更多細節。

    實際上我發現了兩個產品中都有這樣的代碼,分別是IBM(R) Db2(R)和VMware ThinApp。具體細節我發到full disclosure里面了:

    VMware ThinApp DLL hijacking vulnerability

    IBM(R) Db2(R) Windows client DLL Hijacking Vulnerability(0day)

    我們看看LoadLibrary的文檔:

    微軟說你們可不能直接給LoadLibrary一個相對路徑啊,你們應該先用GetFullPathName獲取dll的絕對路徑,再把絕對路徑作為參數調用LoadLibrary。那么當我們給LoadLibrary提供一個相對路徑的時候到底發生了什么呢?以VMware ThinApp中的LoadLibraryExW(L"\\DummyTLS\\dummyTLS.dll", 0, 0)為例我們來簡單分析一下Windows的ntdll.dll是怎么處理dll路徑的。這里的流程是:KernelBase!LoadLibraryExW->ntdll!LdrpLoadDll->ntdll!LdrpPreprocessDllName,我們來看LdrpPreprocessDllName。

    代碼的意思是調用RtlDetermineDosPathNameType_Ustr判斷路徑的類型,這里返回了4也就是RtlPathTypeRooted,后面調用LdrpGetFullPath就得到C:\DummyTLS\dummyTLS.dll這樣的一個路徑了。所以這里處理的邏輯就是只要你是一個相對路徑,Windows就認為你是一個相對于磁盤根目錄(一般也就是C盤)的路徑。可以參考ReactOS的代碼。

    非常糟糕的是Windows中非管理員用戶是可以在C盤根目錄下創建文件夾并向其中寫入文件的,所以就導致了這種本地提權的場景。

    小 結

    1.確實不能理解Windows系統里面為什么有這么奇怪的設計,可能很多Windows開發也不知道。

    2.還是像我之前文章里面說的,如果dll加載失敗的時候開發者認真調試檢查就能避免這樣的漏洞(也正因為如此這種dll劫持的場景一般不會發生)。

    3.Windows中非管理員用戶是可以在C盤根目錄下創建文件夾并向其中寫入文件的,這給了很多這樣本地提權場景利用的機會。

    4.使用絕對路徑往往能更安全一點,后面有機會我也可能繼續分享一些我發現的相對路徑導致的各種各樣的本地提權或者RCE的場景。

    dll劫持相對路徑
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    BypassUAC技術總結
    2022-05-02 06:57:08
    用戶帳戶控制(User Account Control,簡寫作UAC)是微軟公司在其[Windows Vista](https://baike.baidu.com/item/Windows Vista)及更高版本操作系統中采用的一種控制機制,保護系統進行不必要的更改,提升操作系統的穩定性和安全性。
    管理員在正常情況下是以低權限運行任務的,這個狀態被稱為被保護的管理員。我們劫持該exe文件的dll,可以達到Bypass UAC提權的目的。通過將惡意DLL放在真實DLL之前的搜索位置,就可以劫持搜索順序,劫持的目錄有時候包括目標應用程序的工作目錄。實踐出真知2這里使用第三種方法進行實驗,實驗對象是eventvwr.msc,它是管理工具中的事件查看器,它依賴于mmc.exe來運行。
    Bypass UAC 技術總結
    在本文中,我們將簡要介紹一下用戶帳戶控制,即UAC。我們還將研究它如何潛在地保護免受惡意軟件的攻擊并忽略UAC提示可能給系統帶來的一些問題。
    C:\Users\dyy\AppData\Local\Programs\Python\Python38\Scripts\oci.dll使用 cs 生成惡意 dll,重命名為?后放置到該目錄下手動挖掘Process Monitor 查找可用 dll,設置如下圖所示配置完可以保存導出配置,下次直接導入使用使用?進行測試,運行程序 filter 加載所使用的 dll 文件這里可以看出來,當?文件編寫一個基礎的彈窗 dllJAVA1. // dllmain.cpp : 定義 DLL 應用程序的入口點。CS 上線cs 生成 c 的 payload生成的?填入到下面相應的位置上CPP1
    DLL劫持的防御策略
    去年我分享了我發現的CVE-2020-3535:Cisco Webex Teams windows客戶端dll劫持漏洞。實際上我發現了兩個產品中都有這樣的代碼,分別是IBM(R) Db2(R)和VMware ThinApp。
    在過去的一年里,一群攻擊者通過惡意谷歌廣告或虛假的 Facebook 個人資料傳播竊取惡意軟件的信息,以 Facebook 商業賬戶所有者為目標。
    紅隊人員拿到一臺主機權限后首先會考慮將該機器作為一個持久化的據點,種植一個具備持久化的后門,就需要用到權限維持
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类