如何使服務(或系統程序)模擬使用者帳戶的提升變體?
在我的網路中,有一個帶有 network name 的 Windows 2008 R2 伺服器
Dax
。在該伺服器上,我有(當然還有其他):
- 硬碟驅動器,安裝為
E:\
- 一個文件夾
E:\odo
- 向網路
\\Dax\odo
提供文件夾的 SMB 共享E:\odo
- 使用者帳戶
Dax\Backup
使用者
Dax\Backup
是該組的成員,另外還擁有共享和文件夾Dax\Backup Operators
的完全權限。\\Dax\odo``E:\odo
我還有一些執行 Windows 10 x64 Enterprise(版本 1809)的客戶端 PC。每台客戶端 PC 都有
- 與伺服器上的使用者帳戶不同的多個使用者帳戶(即沒有 AD,客戶端 PC 未加入域)
- 具有精心設計的權限的複雜且深度嵌套的數據文件夾,即客戶端上的每個使用者都可以訪問數據文件夾的不同部分(子文件夾)
Client\Backup
與伺服器帳戶具有相同密碼的使用者帳戶Dax\Backup
,並且也是相應客戶端Client\Backup Operators
組的成員。在客戶端 PC 上,我有一個軟體,它能夠將上面提到的整個數據文件夾複製到共享上,包括所有權限、所有者資訊、備用流、連接點等
\\Dax\odo
。我讓這個軟體在使用者帳戶下執行,Client\Backup
這樣它就可以讀取數據文件夾,而不管那裡有效的 ACL。實際上,複製文件夾、文件、連接等(即數據文件夾的實際內容)沒有任何問題,但調整目標上的元數據(例如 ACL、所有權)失敗。
我想了解原因,當然還有我能做些什麼。
到目前為止,我的想法和測試是:
- 我的客戶端軟體在以使用者身份執行時將這些文件和文件夾複製到伺服器的共享上
Backup
。由於該使用者(在伺服器上)在Backup Operators
組中,因此在複製時甚至在復製文件或文件夾之後更改元數據應該沒有問題,因為這正是Backup Operators
組應該服務的目的。- 如果(在伺服器上)我讓使用者
Backup
成為Administrators
組的成員,問題仍然存在。- 如果(在伺服器上)我向使用者
Dax\Administrator
授予共享\\Dax\odo
以及相應文件夾的完全權限E:\odo
,並且如果我在該帳戶下執行我的客戶端軟體Client\Administrator
(該帳戶在客戶端和伺服器上也具有相同的密碼),則問題不會持續存在,並且該過程按預期工作。此外,我已經找到了我認為是伺服器上出現問題的原因:使用 Sysinternals 的程序監視器,我看到顯然
Backup
伺服器上的使用者,或者更準確地說,它是由網路服務/系統程序模擬的,沒有足夠的權限。至少,這是我從下面顯示的事件屬性中得出的:High Resolution Date & Time: 04.05.2019 09:27:37,2077520 Event Class: File System Operation: IRP_MJ_CREATE Result: PRIVILEGE NOT HELD Path: E:\Odo\d-LSE\d\temp\test - 2019-05-04 09-27-40\bla.txt TID: 2812 Duration: 0.0000581 Desired Access: Generic Write, Read Attributes, Write DAC, Write Owner, Access System Security Disposition: OpenIf Options: Complete If Oplocked Attributes: n/a ShareMode: Read AllocationSize: 0 Impersonating: DAX\Backup
這幾天,我還了解到,對於某些組的成員(其中
Administrator
和Backup Operators
)有兩個令牌:一個普通的和一個提升的,其中只有後者啟用這些組的特權。所以(請注意,這只是天真的猜測,我不是該領域的專家):伺服器上的網路服務/系統程序能否
Backup
在代表處理網路流量時冒充使用者帳戶的非提升版本那個使用者,這可能是問題的原因嗎?我可以通過在代表該使用者處理網路流量時以某種方式使網路服務/系統程序模擬使用者帳戶的提升版本來解決問題嗎?Backup
如果是,如何?PS如果我的上述理論很愚蠢,這篇文章的標題會產生誤導,所以請隨時糾正……
你的理論是正確的。可以通過系統資料庫設置更改此行為。
在
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
找到或創建該
DWORD
值LocalAccountTokenFilterPolicy
並將其設置為 1。然後您可能需要重新啟動。這將允許遠端連接具有不受限制的管理員訪問權限。