在Windows XP,Windows Server 2003和Windows操作系统的早期版本中,所有服务都与登录控制台的第一个用户在同一会话中运行。该会话称为会话0。在会话0中一起运行服务和用户应用程序会带来安全风险,因为服务以提升的特权运行,因此是寻求提高自身特权级别的手段的恶意代理的目标。

 Microsoft Windows Vista操作系统通过隔离会话0中的服务并使会话0非交互式来减轻此安全风险。在Windows Vista(和Windows Longhorn Server)中,仅系统进程和服务在会话0中运行。用户登录到会话1。在Windows Longhorn Server中,后续用户登录到后续会话(会话2,会话3等)。这意味着服务永远不会与用户的应用程序在同一会话中运行,因此受到保护,免受来自应用程序代码的攻击。

如果属于某个应用程序的服务在会话0中生成UI元素-例如一个对话框,等待用户单击“确定”或“取消”,则该应用程序正在等待该服务,并且UI未显示在用户会话中。从用户的角度来看,该应用程序似乎已挂起,而实际上它的运行相当正常,并且耐心等待用户看不到的用户响应!

我们可以想象-这给用户,管理员和开发人员带来了问题。但是,需要考虑一些快速缓解因素。

Windows Vista功能解决方案:

    • 使用客户端或服务器机制(例如远程过程调用(RPC)或命名管道)在服务和应用程序之间进行通信。
    • 使用 WTSSendMessage 函数在用户的桌面上创建一个简单的消息框。这使服务可以向用户发出通知并请求简单的响应。
    • 对于更复杂的UI,请使用 CreateProcessAsUser 函数在用户会话中创建一个进程。
    • 为服务可用的任何命名对象(例如事件或映射的内存)明确选择Local \或Global \命名空间。

有关: Application Compatibility - Session 0 Isolation

win32 - Session 0 隔离的更多相关文章

  1. 解决vista和win7在windows服务中交互桌面权限问题:穿透Session 0 隔离

        在某国外大型汽车公司BI项目中,有一个子项目,需要通过大屏幕展示销售报表,程序需要自动启动和关闭.开发人员在开发过程中,发现在Win7的service中不能直接操作UI进程,调查过程中,发现如 ...

  2. [转]解决vista和win7在windows服务中交互桌面权限问题:穿透Session 0 隔离

    服务(Service)对于大家来说一定不会陌生,它是Windows 操作系统重要的组成部分.我们可以把服务想像成一种特殊的应用程序,它随系统的“开启-关闭”而“开始-停止”其工作内容,在这期间无需任何 ...

  3. 穿透Session 0 隔离(一)

    服务(Service)对于大家来说一定不会陌生,它是Windows 操作系统重要的组成部分.我们可以把服务想像成一种特殊的应用程序,它随系统的“开启-关闭”而“开始-停止”其工作内容,在这期间无需任何 ...

  4. 穿透Session 0 隔离(二)

    上一篇我们已经对Session 0 隔离有了进一步认识,如果在开发过程中确实需要服务与桌面用户进行交互,可以通过远程桌面服务的API 绕过Session 0 的隔离完成交互操作. 对于简单的交互,服务 ...

  5. 远程线程注入DLL突破session 0 隔离

    远程线程注入DLL突破session 0 隔离 0x00 前言 补充上篇的远程线程注入,突破系统SESSION 0 隔离,向系统服务进程中注入DLL. 0x01 介绍 通过CreateRemoteTh ...

  6. 恶意软件开发——突破SESSION 0 隔离的远线程注入

    一.前言 在Windows XP,Windows Server 2003以及更早的版本中,第一个登录的用户以及Windows的所有服务都运行在Session 0上,这样的做法导致用户使用的应用程序可能 ...

  7. 关于突破 SESSION 0 隔离场景发现的一些问题

    0x00 Tricks 0x01 用ZwCreateThreadEx 在 Windows 10 下直接通过管理员权限+SeDebugPrivilege启用. 0x02 用CreateRemoteThr ...

  8. 面试问题:Vista与XP的Session 0与Session X的区别

    面试问题:Vista与XP的Session 0与Session X的区别 在XXXXX的一次面试中,笔试问题的题目曾提到Session 0.Session 1在Vista和Xp中的区别?现在把答案发上 ...

  9. 远程线程注入dll,突破session 0

    前言 之前已经提到过,远线程注入和内存写入隐藏模块,今天介绍突破session 0的dll注入 其实今天写这个的主要原因就是看到倾旋大佬有篇文章提到:有些反病毒引擎限制从lsass中dump出缓存,可 ...

  10. 远程线程注入突破SESSION 0

    远程线程注入突破SESSION 0 SESSION 0 隔离 在Windows XP.Windows Server 2003,以及更老版本的Windows操作系统中,服务和应用程序使用相同的会话(Se ...

随机推荐

  1. [转帖]KVM调整磁盘大小

    https://www.jianshu.com/p/5ca598424eb9 一台win10的虚拟机磁盘空间不足了,需要调整磁盘的大小.上网搜索KVM调整磁盘大小,结果得出的博客都说只有raw格式的能 ...

  2. [转帖]Linux系统NVME盘分区和挂载

    https://www.jianshu.com/p/04327f1b97cb 查看系统里面识别到的硬盘和分区的信息 $ sudo fdisk -l Disk /dev/nvme1n1: 1.8 TiB ...

  3. 没有虚拟DOM版本的vue(Vue Vapor)

    前言 随着Svelte和SolidJS的流行,无虚拟DOM模式逐渐开始火了起来.vue也推出了无虚拟DOM模式的版本,就是我们今天要讲的Vue Vapor. 什么是Vue Vapor Vue Vapo ...

  4. 原生js中offsetTop, offsetLeft与offsetParent的详细讲解

    简单说下:offsetTop offsetTop: 为只读属性. 返回的是一个数字. 它返回当前元素相对于其 offsetParent 元素的顶部内边距的距离. 它等价于offsetTop==> ...

  5. bootstrap ----- bootstrap table表格参数

    表格参数: 名称 标签 类型 默认 描述 - data-toggle String 'table' 不用写 JavaScript 直接启用表格. classes data-classes String ...

  6. 深度学习应用篇-计算机视觉-语义分割综述[5]:FCN、SegNet、Deeplab等分割算法、常用二维三维半立体数据集汇总、前景展望等

    深度学习应用篇-计算机视觉-语义分割综述[5]:FCN.SegNet.Deeplab等分割算法.常用二维三维半立体数据集汇总.前景展望等 语义分割综述(semantic segmentation) 1 ...

  7. 探索C语言中的Shellcode从提取到执行

    ShellCode是一种独立于应用程序的机器代码,通常用于实现特定任务,如执行远程命令.注入恶意软件或利用系统漏洞.在网络安全领域,研究Shellcode是理解恶意软件和提高系统安全性的关键一环.本文 ...

  8. 7.4 C/C++ 实现链表栈

    相对于顺序栈,链表栈的内存使用更加灵活,因为链表栈的内存空间是通过动态分配获得的,它不需要在创建时确定其大小,而是根据需要逐个分配节点.当需要压入一个新的元素时,只需要分配一个新的节点,并将其插入到链 ...

  9. 同时配置github和gitee秘钥

    1.设置用户名和邮箱 git config --global --list 查看全局配置信息 git config --global --list 删除配置:必须删除该设置 git config -- ...

  10. element-ui表格筛选,根据表头属性显示隐藏列

    效果: 步骤: 1.标签上添加要过滤的源数组 <el-table-column label="标签" :filters="filterList" filt ...