盆盆的博客 : Windows Vista的UAC对话框果真是在会话0吗?

来源:百度文库 编辑:神马文学网 时间:2024/04/29 20:43:54
Windows Vista的UAC对话框果真是在会话0吗?
小青蛙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对话框位于安全桌面,非常安全,连截图软件都不能正常工作,所以很难用工具对其进行监控。但是方法总是有的:
1. 借助Windows Server Longhorn
我们完全可以借助Windows ServerLonghorn进行测试,这是因为Longhorn支持终端服务,我们可以远程登录,打开另外一个会话(Session 2),在Session2里用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”这个登录会话,其对应的“UserName”是“MARKVISTA$”,这是盆盆测试用机器的计算机名,其SID为S-1-5-18,熟悉的朋友一看就知道是SYSTEM账户。说明这个登录会话就是System登录会话,也叫做999登录会话。
盆盆注释:999这个数值,和三九胃泰,还有999皮炎平等一点关系也没有,实际上999是"3e7"的十进制数值。
从图中可以看到,System登录会话一般对应于会话0,但是奇怪的是,UAC对话框虽然位于System登录会话,但是却占据会话1。这让盆盆困惑不解。
盆盆注释:图2中System登录会话的“Logon time”,可以看成是计算机的启动时间,而不是用户的登录时间。
已发表2007年4月14日 12:30作者ahpeng归档在:Windows Vista技术文章
盆盆的博客 : Windows Vista的UAC对话框果真是在会话0吗? 盆盆的博客 : Windows Vista的UAC也可以很方便:一个脚本轻松搞定 盆盆的博客 : Windows Vista的UAC也可以很方便:还有更加方便的方法!! 盆盆的博客 : Windows Vista UAC经典误解之二:菜鸟反正都点允许,不如关了好 盆盆的博客 : Windows Vista UAC经典误解之一:不过就是靠弹出提示来阻止病毒而已 Windows Vista博客 : Windows Vista的UAC也可以很方便 Vista 的“运行”对话框如何找回 快速禁用Vista烦人的用户账户控制(UAC) 快速禁用Vista烦人的用户账户控制(UAC)-太平洋电脑网Pconline-[学电脑基础... Windows Vista使用教程-第三章 UAC(用户帐户控制) | Vista天地 在Windows 7和Windows Vista修改Hosts文件以及LmHosts文件的... 在基于对话框程序中使用WM_KICKIDLE消息 - ruo_gu的专栏 - CSDN博客 Windows Vista操作系统中消失的功能 Windows Vista上的IIS7设置攻略 Windows Vista操作系统中消失的功能 Windows Vista无法启动的解决办法 Windows Vista上的IIS7设置攻略 纪晓岚果真是名副其实的色情狂 果真是《读者》的精言摘抄 教新手在Windows 7中快速禁用UAC Windows Vista博客 : 您必须知道的IE 7安全特性 Windows Vista 下如何安装IIS 7 - 我的.net成长之路 - 博客园 谈日语会话课的原则及信息差在会话中的运用 教学研究 解决windows installer服务不能访问的问题 - Windows Vista ...