Vista的UAC对话框真在会话0吗
原文摘自ITECN博客,作者:盆盆< Microsoft MVP ITECN博客站长>
ITECN博客,是由盆盆等MVP组织发起的、旨在研究和推广微软IT Pro技术的网站,由多位Microsoft MVP和资深微软认证讲师组成。ITECN博客的网址是http://blogs.itecn.net
本文由“ITECN”版权所有,仅授权PChome电脑之家发表,任何媒体没有“ITECN”同意不得擅自转载,转载必追究,后果自负。
小青蛙s老大新发表的雄文,可以帮助读者朋友深入理解UAC安全桌面的切换机理。例如读者朋友们可以知道,为了防止用户进程干扰UAC的对话框,可以让它运行在安全桌面上。而大家知道,安全桌面(Winlogon桌面)默认是蓝绿色背景的,为了改善用户体验,微软特地对当前用户桌面截图,并以截图作为安全桌面的背景,这样看上去稍微舒服一些。这个原理,在盆盆的拙作《Windows Vista安全原理深入探索》一文里也有一些粗浅的介绍。
如果要让UAC对话框运行在用户桌面,而不是安全桌面,除了用小青蛙s介绍的方法,还可以修改本地安全策略、安全选项下的“用户帐户控制:提示提升时切换到安全桌面”,这样也可以达到目的。
不过这里并不是要讨论安全桌面问题,而是要探讨一下,这个UAC对话框(consent.exe)到底运行在哪个会话(session)。
何谓会话?
会话实际上是终端服务里的概念,在Windows Server 2000/2003下,如果用户在控制台,也就是鼠标、键盘登录,则会占据会话0;后续用终端服务登录的话,就陆续占据会话1、会话2...
对于桌面OS,例如Windows XP,其中的快速用户切换(FUS)、远程桌面功能,实际上就是缩小版的终端服务,类似于服务器版Windows的情况。
而在Windows Vista下,会话0不再由控制台登录的用户占据,而是专门划给服务和某些系统进程使用;控制台登录的用户占据的是会话1。这个特性叫做服务的会话0隔离,可以增加安全性。
要了解更多的会话0隔离的概念,可以参考小青蛙s的《Windows Vista 下Session 0 隔离的故事》,和盆盆的《Windows Vista服务隔离深度剖析》。
UAC对话框位于哪个会话?
UAC对话框位于哪个会话?
了解了什么叫做会话,接下来就可以查看UAC对话框位于哪个会话了。然而由于UAC对话框位于安全桌面,非常安全,连截图软件都不能正常工作,所以很难用工具对其进行监控。但是方法总是有的:
1. 借助Windows Server Longhorn
我们完全可以借助Windows Server Longhorn进行测试,这是因为Longhorn支持终端服务,我们可以远程登录,打开另外一个会话(Session 2),在Session 2里用Process Explorer等工具查看Session 1里的UAC对话框。
这个方法,在盆盆的《Windows Vista用户帐户控制深度剖析》一文中已有描述(参阅“毁誉参半的安全桌面”部分),此处不再赘述。
2. 借助Process Monitor
尽管其他进程无法监控UAC对话框,但是Process Monitor可以。只需事先运行Process Monitor,然后随便启动一个需要提升权限的程序,即可打开UAC对话框,可以选择继续或者取消,然后查看Process Monitor的日志,如附图所示。
图1
从图中可以看到Session ID为1,而不是0!也就是说UAC对话框也运行在用户会话中!
然而更有趣的事情还在后面!
看到图中的Auth ID了吗?是一串古怪的数字00000000:000003e7,稍微了解Windows安全的朋友都知道,这代表System登录会话(System Logon Session)。
好嘛,现在完全乱套了,又是会话、又是登录会话,这都哪跟哪呀?
盆盆注释:“登录会话”和“会话”完全是两码事。“会话”来自终端服务的概念;而“登录会话”则用来代表每个登录用户的身份。
不过这不妨碍我们用Logonsessions命令来查看登录会话和会话之间的对应关系(这又是一个Mark Russinovich开发的工具!),如附图所示。
图2
从图中可以看到“00000000:000003e7”这个登录会话,其对应的“User Name”是“MARKVISTA$”,这是盆盆测试用机器的计算机名,其SID为S-1-5-18,熟悉的朋友一看就知道是SYSTEM账户。说明这个登录会话就是System登录会话,也叫做999登录会话。
盆盆注释:999这个数值,和三九胃泰,还有999皮炎平等一点关系也没有,实际上999是"3e7"的十进制数值。
从图中可以看到,System登录会话一般对应于会话0,但是奇怪的是,UAC对话框虽然位于System登录会话,但是却占据会话1。这让盆盆困惑不解。
盆盆注释:图2中System登录会话的“Logon time”,可以看成是计算机的启动时间,而不是用户的登录时间。
网友评论