久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術文章
文章詳情頁

Windows Vista如何以SYSTEM權(quán)限啟動進程(2)(圖)

瀏覽:8日期:2023-08-01 10:51:46

查看WinSta0窗口站的安全權(quán)限

前面的內(nèi)容隱藏了這樣一個事實,為什么Local SYSTEM進程有能力加入到WinSta0窗口站?

大家可以回想一下,在Windows 2000/XP下,只有以Local SYSTEM運行的服務,可以選擇“允許服務與桌面交互”。這實際上就是讓該服務運行在WinSta0窗口站里,而不是運行在默認的Service-0X0-3e7$窗口站里。

但是為什么以其他帳戶身份運行服務,不能選擇這個選項?甚至連以當前登錄帳戶身份運行的服務都不行?例如當前以Admin用戶帳戶身份登錄到系統(tǒng),而系統(tǒng)中存在著一個服務,也以Admin身份運行。

這里我們可以查看一下WinSta0窗口站的安全權(quán)限??梢杂肞rocess Explorer,或者調(diào)試工具(例如Windbg)進行查看。

1. 用Windbg查看WinSta0的ACL

這里首先介紹用Windbg查看WinSta0窗口站的安全權(quán)限(更加完整)。

由于Windows Vista默認禁用Kernel Debug,所以必須運行以下命令手動打開Kernel Debug選項:

bcdedit -debug on

盆盆評注:注意,如果安裝了Demon Tools之類的工具,請不要打開Kernel Debug的選項,以免產(chǎn)生沖突。

下圖是利用Windbg所dump出來的WinSta0安全描述符的完整記錄:

我們主要關心日志中最后三個棕色加粗顯示的結(jié)果:Local System帳戶擁有0x000f037f權(quán)限組合;Administrators組帳戶擁有0x00020166權(quán)限組合;還有一個SACL的ACE為S-1-16-4096。

0x000f037f和0x00020166,看上去甚是古怪,但搞開發(fā)的兄弟應該很容易理解,這實際上是安全權(quán)限的組合掩碼。

咱IT Pro不需要理解這到底是什么意義,只需要知道0x000f037f代表擁有WinSta0的所有可能權(quán)限;而0x00020166代表擁有大多數(shù)可能的權(quán)限,但是無法讀取屏幕內(nèi)容。

還有一個SACL的ACE為S-1-16-4096。這又是什么意思?

嘻嘻,這里就要請大家參考MVP小青蛙s兄弟的大作《Windows Vista UIPI和窗口消息的故事》。原來在Windows Vista里,每個安全對象,包括窗口站,都有MIC等級的概念。這里可以看到WinSta0窗口站的MIC等級就是S-1-16-4096,實際上就是Low Integrity Level。當然在盆盆的多篇拙作里也曾經(jīng)多次提及,例如《Windows Vista有趣的標簽SID》。

WinSta0窗口站的MIC級別為什么會是低級?這可能是為了方便IE瀏覽器這樣的Low MIC進程也能夠讀寫WinSta0里的內(nèi)容。

2. 用Process Explorer查看WinSta0的ACL

用Windbg查看WinSta0的ACL,可以得到比較豐富的信息,但是有一點小缺點,無法查看當前登錄帳戶的權(quán)限(相當于查看無用戶登錄時的WinSta0的安全權(quán)限)。

所以這里借助Process Explorer進行查看。

隨便找到一個用戶進程,查看其打開的句柄,可以發(fā)現(xiàn)其中有/Sessions/1/Windows/WindowStations/WinSta0這樣的句柄,查看其安全權(quán)限。

可以看到當前登錄帳戶(本例是Admin)沒有訪問WinSta0的權(quán)限,如附圖所示。

除了SYSTEM之外,還有一個古怪帳戶S-1-5-5-0-148836具有所有可能的權(quán)限,如附圖所示。S-1-5-5-0-148836實際上就是Admin登錄會話的SID。這樣的結(jié)果非常有趣,WinSta0的權(quán)限是授予Admin的一次登錄實例(登錄會話),而不是Admin這個安全主體本身,很有意義。其實道理很簡單,登錄會話是經(jīng)過LSA驗證的一次登錄實例,Windows可以信任。而以Admin身份運行的進程,并不一定都是由Admin這個用戶觸發(fā)的,還有可能是以Admin身份運行的服務,從WinSta0的ACL可以看出,這些服務無法訪問WinSta0,盡管它們的身份就是登錄用戶本身!

Process Explorer雖然可以看到完整的安全描述符信息,也可以看到更詳細的權(quán)限。但是有兩個小缺點,一是無法顯示W(wǎng)inSta0的MIC級別,而是只顯示所謂的常規(guī)權(quán)限,而沒有顯示針對窗口站的特定權(quán)限??赡躆ark Russinovich還沒有來得及更新,抑或這位大牛認為這太簡單了,認為大家很容易理解,不想再修改了。

盆盆評注:如何理解登錄會話的SID?可以用服務和服務SID的關系進行類比。

3. 小結(jié)

羅羅嗦嗦說了那么多,結(jié)論呢?

實際上很簡單,查看WinSta0窗口站發(fā)現(xiàn),只有System和登錄會話SID擁有所有的可能權(quán)限。所以這就可以解釋,為什么在Windows里,只有運行在System權(quán)限下的服務才可以選擇“允許服務與桌面交互”,因為實在是只有System才有權(quán)限訪問WinSta0窗口站??!

主站蜘蛛池模板: 皮山县| 盈江县| 任丘市| 甘肃省| 东阳市| 尚义县| 榆社县| 稷山县| 怀化市| 谷城县| 株洲市| 宣城市| 建德市| 利辛县| 中超| 虹口区| 定襄县| 陕西省| 曲阜市| 眉山市| 花垣县| 西吉县| 民和| 积石山| 海丰县| 峨眉山市| 菏泽市| 达州市| 确山县| 靖江市| 寻乌县| 剑川县| 娄烦县| 洪洞县| 阳信县| 鄂伦春自治旗| 东阳市| 都兰县| 平阴县| 霸州市| 乳山市|