盆盆
在寫上篇
文章時,就在納悶:為什麼windbg不能轉儲完整的winsta0視窗站的安全描述符?為什麼會少了登入會話sid和登入帳戶的對應ace?
盆盆很快發現,原來是自己的問題。為了方便,直接用遠端桌面連線到另外一台實驗windows vista機器,這時候由於是遠端桌面登入的,拿到的是會話2。但是在windbg裡檢查的卻是\sessions\1\windows\windowstation\winsta0。
也就是說,
盆盆實際上是檢查的會話1裡的winsta0視窗站,而不是遠端桌面裡的winsta0視窗站(會話2)!!
難怪檢查出來的結果,發現winsta0視窗站裡居然沒有登入sid和admin的對應ace!!
1. 完整的winsta0安全描述符
為了驗證這個結果,盆盆
重新做實驗,這次直接控制台登入(會話1),再檢視winsta0的安全描述符,果然發現完整了,有附圖為證!
圖中棕色加粗的部分,就是登入會話sid和登入帳戶admin所擁有的ace,這裡可以看到登入會話sid擁有所有可能的許可權,而admin則幾乎沒有任何訪問許可權。
問題到這裡並沒有結束。
為什麼會出現先前那篇文章裡的錯誤?從中可以猜測到哪些結論?
2. 為什麼只允許乙個互動使用者登入?
這裡盆盆
大膽假設windows vista(xp)為什麼只能允許乙個互動使用者登入到系統(包括遠端桌面)。原來是和winsta0視窗站的許可權有關!
當新的使用者登入進來後,原來使用者會話裡的winsta0的安全許可權會發生變化,登入sid和登入帳戶的ace(訪問控制項)會被刪除。難怪我們看不到先前登入使用者的桌面!
可以在遠端桌面的環境裡開啟process explorer,檢視乙個在先前使用者環境裡開啟的程序(例如explorer),可以發現其控制代碼列表裡沒有winsta0視窗站,如附圖所示。
從圖中可以看出,當前的使用者桌面,會話2裡的explorer程序控制代碼表裡包含winsta0視窗站,所以可以和使用者進行互動;而先前的登入使用者,會話1裡的explorer程序控制代碼表裡,沒有winsta0視窗站,所以雖然這些程序還在執行,但是無法和使用者進行互動。
為什麼先前的使用者會話裡的程序沒有winsta0的控制代碼,現在應該很明白了,因為該會話裡的winsta視窗站物件的acl定義發生了變化,現在不再授予登入會話sid訪問。
這一切看來和winsta0視窗站的安全許可權有關。可見,登入會話、視窗站的概念有多重要了。
知道了這個原因,從理論上,我們可以通過修改先前會話裡的winsta0視窗站的安全許可權,來突破同一時刻只能允許乙個使用者互動登入的限制。但是實際上沒有那麼簡單,盆盆
既然能夠想到,微軟肯定早就已經想到了。
網上貌似有通過替換乙個檔案(termsrv.dll)的方法,讓windows vista支援多個使用者互動登入。如果這個方法能夠成功,其原理也許還是和winsta0視窗站的許可權有關。
SYSTEM帳戶 登入會話和視窗站 二
上篇文章的內容隱藏了這樣乙個事實,為什麼local system程序有能力加入到winsta0視窗站?大家可以回想一下,在windows 2000 xp下,只有以local system執行的服務,可以選擇 允許服務與桌面互動 這實際上就是讓該服務執行在winsta0視窗站裡,而不是執行在預設的se...
用SYSTEM帳戶登入系統
2007 02 24 15 19 26 分類 電腦 標籤 系統 字型大小大中小 訂閱1 操作簡述 本文將會用另類的方法幫助大家完成這個不可能完成之任務。先請大家在一台實驗機器上進行以下步驟 開啟任務管理器,在 程序 標籤頁關閉explorer程序。在 應用程式 標籤頁單擊 新任務 輸入 cmd 回車...
Windows最高許可權system帳戶
內容摘要 首先,我們要盡量避免平時使用管理員賬戶登入系統 windows最高許可權system帳戶,看見有很多朋友對系統許可權感興趣,我把收藏多年的貼子在發出來給大家學習下 合併了多張關於許可權的文章,修正了部分錯誤,如果還有錯誤的地方,大家可以在回帖提出我及時修正 什麼是system許可權?為什麼...