系統資料庫設置 EnableLinkedConnections 在技術層面上有什麼作用?
注意:對我來說,基本問題是能夠訪問我(Win 7 管理員使用者)在執行提升的程序時設置的網路共享。通常,提升的程序將無法訪問我的非提升的網路共享。
根據微軟的說法,系統資料庫設置 EnableLinkedConnections 將允許提升的程序訪問目前登錄的(非提升的)資源管理器程序的網路共享。
這個解釋有點道理:
$$ … $$當您是管理員組的成員並登錄時,您的帳戶會被 UAC 破壞為非特權使用者。此執行上下文與您在右鍵點擊命令提示符並以管理員身份啟動時獲得的上下文完全分開。您可能已經註意到,在一個上下文中連接的網路驅動器在另一個上下文中不可見。$$ … $$
此論壇主題詢問此設置打開的漏洞。給出的答案連結到有關禁用 UAC 提示的文章(或者我理解)。
現在的問題是,鑑於我們沒有在域環境中執行,系統資料庫設置 EnableLinkedConnections在 Windows 7 系統上做什麼或允許做什麼。
編輯:我特別感興趣的一件事是這個設置是否只影響網路驅動器的(可見性)或者它是否有任何其他影響。
沒有對 Windows 的原始碼訪問權限,很難說出任何不是猜測的內容。拋開免責聲明不談,以下是我通過閱讀本文能夠收集到的內容:
UAC 在登錄時創建兩個安全令牌:包含使用者完整組成員身份的提升令牌,以及剝離了“管理員”組成員身份的*受限令牌。*每個令牌都包含一個不同的本地唯一 ID (LUID),用於標識登錄會話。它們是兩個獨立且不同的登錄會話。
從 Windows 2000 Server SP2 開始,映射驅動器(在對像管理器命名空間中表示為符號連結)使用創建它們的令牌的 LUID 進行標記(您可以在此 KBase 文章中找到一些 Microsoft 對此行為的引用,並且您可以在此部落格文章中了解有關該功能機制的更多資訊)。該功能的要點是另一個登錄會話無法訪問由一個登錄會話創建的映射驅動器。
設置EnableLinkedConnections值會觸發 LanmanWorkstation 服務和 LSA 安全子系統 (LSASS.EXE) 中的行為,以導致 LSA 將由任一使用者令牌映射的驅動器複製到另一個令牌的上下文中。這允許映射到提升令牌的驅動器對受限令牌可見,反之亦然。對於域與非域環境,此功能的行為沒有任何特殊性。如果您的使用者在非域環境中使用“管理員”帳戶執行,則預設情況下,他們的受限令牌和提升令牌將具有獨立的驅動器映射。
在漏洞方面,微軟的官方文件似乎缺乏。我確實找到了一位微軟員工的評論和回复,詢問了 2007 年關於 UAC 的對話中的潛在漏洞。鑑於答案來自當時被稱為“UAC 架構師”的 Jon Schwartz,我會傾向於認為他的回答具有可信度。這是他對以下詢問的回答的要點:“……我沒有找到任何資訊來描述技術上實際發生的事情,或者這是否會打開任何類型的 UAC 漏洞。你能發表評論嗎?”
從技術上講,它打開了一個小漏洞,因為非提升的惡意軟體現在可以將驅動器號+映射“預先植入”到提升的上下文中——這應該是低風險的,除非你最終得到了專門為你的環境量身定制的東西。
就個人而言,我想不出一種方法來“利用”這個漏洞,因為使用驅動器映射“播種”提升的令牌仍然需要使用者從“播種”驅動器映射中實際提升和執行惡意內容。不過,我不是安全研究人員,而且我可能不會以良好的心態來解決這個問題,以提出潛在的漏洞利用。
通過繼續我們在客戶開始部署 Windows NT 4.0 時開始的趨勢——讓使用者使用有限的使用者帳戶登錄,我已經避免在我的客戶站點中使用*EnableLinkedConnections值。*這對我們多年來一直執行良好,並且在 Windows 7 中繼續執行良好。