1
我有一個windows服務作爲本地系統運行。我希望該服務產生一個作爲「NT AUTHORITY/Network Service」的流程。但是,我沒有此帳戶的憑據。我如何使用C++來生成「網絡服務」用戶的流程。CreateProcess以用戶身份運行:「NT AUTHORITY/Network Service」而不知道憑據?
我有一個windows服務作爲本地系統運行。我希望該服務產生一個作爲「NT AUTHORITY/Network Service」的流程。但是,我沒有此帳戶的憑據。我如何使用C++來生成「網絡服務」用戶的流程。CreateProcess以用戶身份運行:「NT AUTHORITY/Network Service」而不知道憑據?
我不是在我的win32開發框的前面,所以我無法證實,但我會提供兩種可能的方法:通過進程列表
OpenProcess()
到使用該句柄與令牌從他的過程CreateProcessAsUser()
獲得安全令牌創建過程NETWORK SERVICE獲得現有的網絡服務過程OpenProcessToken()
的手柄或者,您可以:
CreateService()
使用NT AUTHORITY\NetworkService
在lpServiceStartName
StartService()
啓動過程
如果你能做到這一點,那將是一個非常大的安全漏洞。 – 2011-04-12 01:41:25
「如果你能做到這一點,那將是一個非常大的安全漏洞」 - 這是怎麼回事?如果一個作爲網絡服務運行的服務能夠像本地系統一樣產生一個進程,相反將會是一個明顯的安全漏洞。 – 2011-04-12 02:11:51
@Ken,這個特性實際上包含在設計中*增加*安全性。請參閱http://msdn.microsoft.com/en-us/library/ms684272%28v=VS.85%29.aspx。 – 2011-04-12 02:12:36