Networking

如何使服務(或系統程序)模擬使用者帳戶的提升變體?

  • May 5, 2019

在我的網路中,有一個帶有 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

這幾天,我還了解到,對於某些組的成員(其中AdministratorBackup Operators)有兩個令牌:一個普通的和一個提升的,其中只有後者啟用這些組的特權。

所以(請注意,這只是天真的猜測,我不是該領域的專家):伺服器上的網路服務/系統程序能否Backup在代表處理網路流量時冒充使用者帳戶的非提升版本那個使用者,這可能是問題的原因嗎?我可以通過在代表該使用者處理網路流量時以某種方式使網路服務/系統程序模擬使用者帳戶的提升版本來解決問題嗎?Backup如果是,如何?

PS如果我的上述理論很愚蠢,這篇文章的標題會產生誤導,所以請隨時糾正……

你的理論是正確的。可以通過系統資料庫設置更改此行為。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System

找到或創建該DWORDLocalAccountTokenFilterPolicy並將其設置為 1。然後您可能需要重新啟動。

這將允許遠端連接具有不受限制的管理員訪問權限。

引用自:https://serverfault.com/questions/965855