转载自:http://mp.weixin.qq.com/s?__biz=MzA3NTM1MzE4Nw==&mid=202597764&idx=1&sn=0cef1a40fb3c82aabd2a41e8e9ee2e67&scene=1&from=groupmessage&isappinstalled=0#rd

在Windows 2000/XP下,只有以Local SYSTEM运行的服务,可以选择“允许服务与桌面交互”。这实际上就是让该服务运行在WinSta0窗口站里,而不是运行在默认的Service-0x0-3e7$窗口站里。

但是为什么以其他帐户身份运行服务,不能选择这个选项?甚至连以当前登录帐户身份运行的服务都不行?例如当前以Admin用户帐户身份登录到系统,而系统中存在着一个服务,也以Admin身份运行

这里我们可以查看一下WinSta0窗口站的安全权限。可以用Process Explorer,或者调试工具(例如Windbg)进行查看。

1. 用Windbg查看WinSta0的ACL

这里首先介绍用Windbg查看WinSta0窗口站的安全权限(更加完整)。由于Windows默认禁用Kernel Debug,所以必须运行以下命令手动打开Kernel Debug选项:

bcdedit -debug on

盆盆评注:注意,如果安装了Demon Tools之类的工具,请不要打开Kernel Debug的选项,以免产生冲突。

下图是利用Windbg所dump出来的WinSta0安全描述符的完整记录:

我们主要关心日志中最后三个棕色加粗显示的结果:LocalSystem帐户拥有0x000f037f权限组合;Administrators组帐户拥有0x00020166权限组合;还有一个SACL的ACE为S-1-16-4096。

0x000f037f和0x00020166,看上去甚是古怪,但搞开发的兄弟应该很容易理解,这实际上是安全权限的组合掩码。

咱IT Pro不需要理解这到底是什么意义,只需要知道0x000f037f代表拥有WinSta0的所有可能权限;而0x00020166代表拥有大多数可能的权限,但是无法读取屏幕内容

还有一个SACL的ACE为S-1-16-4096。这又是什么意思?

原来在Windows里,每个安全对象,包括窗口站,都有MIC等级的概念。这里可以看到WinSta0窗口站的MIC等级就是S-1-16-4096,实际上就是Low Integrity Level。

WinSta0窗口站的MIC级别为什么会是低级?这可能是为了方便IE浏览器这样的Low MIC进程也能够读写WinSta0里的内容。

integrity 
n. 完整;正直;诚实;廉正

2. 用ProcessExplorer查看WinSta0的ACL

用Windbg查看WinSta0的ACL,可以得到比较丰富的信息,但是有一点小缺点,无法查看当前登录帐户的权限(相当于查看无用户登录时的WinSta0的安全权限)。

所以这里借助Process Explorer进行查看。

随便找到一个用户进程,查看其打开的句柄,可以发现其中有\Sessions\1\Windows\WindowStations\WinSta0这样的句柄,查看其安全权限。

可以看到当前登录帐户(本例是Admin)没有访问WinSta0的权限,如附图所示。

除了SYSTEM之外,还有一个古怪帐户S-1-5-5-0-148836具有所有可能的权限,如附图所示。

S-1-5-5-0-148836实际上就是Admin登录会话的SID。这样的结果非常有趣,WinSta0的权限是授予Admin的一次登录实例(登录会话),而不是Admin这个安全主体本身,很有意义。

其实道理很简单,登录会话是经过LSA验证的一次登录实例,Windows可以信任。而以Admin身份运行的进程,并不一定都是由当前登录用户触发的,还有可能是以Admin身份运行的服务,

从WinSta0的ACL可以看出,这些服务无法访问WinSta0,尽管它们的身份就是登录用户的帐户本身!

Process Explorer虽然可以看到完整的安全描述符信息,也可以看到更详细的权限。但是有两个小缺点,一是无法显示WinSta0的MIC级别,而是只显示所谓的常规权限,

而没有显示针对窗口站的特定权限。可能Mark Russinovich还没有来得及更新,抑或这位大牛认为这太简单了,认为大家很容易理解,不想再修改了。

盆盆评注:如何理解登录会话的SID?可以用服务和服务SID的关系进行类比。

3. 小结

罗罗嗦嗦说了那么多,结论呢?

实际上很简单,查看WinSta0窗口站发现,只有System和登录会话SID拥有所有的可能权限

所以这就可以解释,为什么在Windows里,只有运行在System权限下的服务才可以选择“允许服务与桌面交互”,因为实在是只有System才有权限访问WinSta0窗口站啊!

7年写的博客,从权限原理了解只有SYSTEM登录会话这两个账号才有权和当前用户桌面进行交互,才能让用户看到。
而非用户账户本身。而现在的Windows由于session 0隔离,以System身份运行的服务其实已经不能和桌面进行交互。
Hyper-V虚拟机也有点类似服务,有自己的服务SID,老版本的虚拟机在迁移时,甚至需要手动修改资源权限,把该虚拟机的服务SID添加进来,而不是Hyper-V管理员。

还有只要不运行在session 0下,system进程还是可以和用户交互的,我们经常用psexec让进程以system身份运行

文章非常不错,xp下ice sword 冰刃就是到system级别调整系统配置

盆盆,system 0级的在08R2下,可以建立一个交互哦,我们在调试一些程序时,会到0级的命令行下

@NAV Yeats 是啊,只要不发window message就行。老版本windows还有一些兼容性设置,检测到发window message,会自动切换到session 0的桌面

转载于:https://www.cnblogs.com/MYSQLZOUQI/p/4276421.html

奇特的Local System权限(转载)相关推荐

  1. 取得system权限

    这几天,无意中看到 strfreedom会员 说用ntsd命令杀掉进程的方法 [url]http://softbbs.pconline.com.cn/topic.jsp?tid=6598431& ...

  2. local service system账户_Local System/Network Service/Local Service权限详解

    1.Local System (本地系统): 该账户具有相当高的权限. 首先,该账户也隶属于本地Administrators 用户组,因此所有本地Administrators用户能够进行的操作该账户也 ...

  3. Local System/Network Service/Local Service权限介绍

    报错:错误代码 0x800700b7 配置错误定义了重复的"system.web.extensions/scripting/scriptResourceHandler"节 这个问题 ...

  4. 后台服务显示右下角弹窗 -- system权限创建用户权限进程

    windows编程的人都知道,在其操作系统下,进程被创建,通常被赋予很多属性,其中一项属性就是用户名,及进程所属的权限.打开任务管理器,可查看到(查看不到,点击查看,选择列即可) 通常桌面系统expl ...

  5. 内置系统账户:Local system/Network service/Local Service 区别

    LocalSystem   账户 LocalSystem是预设的拥有本机所有权限的本地账户,这个账户跟通常的用户账户没有任何关联,也没有用户名和密码之类的凭证.这个服务账户可以打开注册表的HKEY_L ...

  6. Windows内置系统账户Local system/Network service/Local Service

     内置系统账户:Local system/Network service/Local Service 区别 [ LocalSystem   账户] LocalSystem是预设的拥有本机所有权限的本地 ...

  7. 使apk具有system权限

    使apk具有system权限的方法: 方法一: 1. 在应用程序的AndroidManifest.xml中的manifest节点中加入 android:sharedUserId="andro ...

  8. Windows服务器SYSTEM权限Webshell无法添加3389账户情况突破总结

    转自:http://bbs.blackbap.org/thread-2331-1-1.html 近好多Silic的朋友在Windows下SYSTEM权限的php webshell下添加账户,但是却无法 ...

  9. 获取本地System权限

    作为C++方面的第一片文章,就先说说获取权限方面的东西吧!首先是获取DeBug权限(它是做其他进一步工作的基础),想必大家对这个方法应该很熟悉吧,网上有关这个的文章已经很多了,所以我就直接贴代码了! ...

最新文章

  1. (0098)iOS开发之应用间的分享系列(3)
  2. 8个我希望早点意识到的学生思维
  3. 区块链BaaS云服务(18)华为 BCS“跨链”
  4. 监督学习——通用线性模型
  5. Bug人生---超越bug杀手
  6. python没有错误但是不显示结果_为什么我在Python3中加载模块时遇到问题但在Python2中没有加载?...
  7. android progressbar icon,android中ProgressDialog与ProgressBar的使用详解
  8. Print! Print! Print!
  9. 财会专用计算机,一种财会专用计算机的制作方法
  10. singleflight包原理解析
  11. linux下zookeeper启动命令,For Linux Zookeeper客户端命令行操作指令
  12. hdoj1102 Constructing Roads(Prime || Kruskal)
  13. K8S集群模式下fluent-bit日志收集方案设计和实践
  14. 如何用Android平板上课写代码(摸鱼)
  15. 微控制器STM32L412RBT6,STM32L412CBU6(128KB)MCU+FPU,规格
  16. 安娜模特java_捧红了梦露的花花公子,首席模特安娜狂露身材,“神臀”不负此名...
  17. linus torvalds
  18. 致远项目管理SPM系统案例:中关村创客小镇数据采集云管理
  19. 分享一下前几个月我做的超炫的登录页面
  20. 核心网MANO构架介绍

热门文章

  1. int java 时间,java 时间处理类
  2. nvidia显卡linux 7.2,科学网—悲喜录:服务器 CentOS 7.2 安装Nvidia显卡驱动(64bit) - 袁伟的博文...
  3. Kubernetes 搭建 Kafka 和 Zookeeper 集群(完整教程)
  4. jQuery判断是否为对象或者数组
  5. php 点击选择图片上传,微信小程序图片选择、上传到服务器、预览(PHP)实现实例...
  6. android中计算日期差,Android编程实现根据不同日期计算天数差的方法
  7. 语言中根号打法_知识的诅咒,数学老师在教学中不得不防的陷阱
  8. JQueryDOM之创建节点
  9. 2.封装成帧和透明传输
  10. Fisher算法+两类问题