Session 0 是 Windows 操作系统中,专门承载系统后台服务、底层守护进程的独立会话。Windows 通过 Session(会话) 实现进程隔离。 每一个会话拥有一套独立资源:

Session 0 通俗 + 底层完整定义(Windows)

Session 0 是 Windows 操作系统中,专门承载系统后台服务、底层守护进程的独立会话。 先记住一条分界线:

Windows Vista 及之后所有系统: ✅ 所有登录用户(桌面、RDP 远程)一律运行在 Session 1、Session 2……Session 0 只跑系统服务,不运行任何交互式用户

一、先搞懂:什么是 Windows Session(会话)

Windows 通过 Session(会话) 实现进程隔离。 每一个会话拥有一套独立资源:

  1. 独立窗口站(WindowStation)+ 桌面(Desktop)
  2. 独立内核对象命名空间(互斥体、事件、共享内存等 IPC)
  3. 独立登录安全上下文、窗口消息边界
  4. smss.exe(会话管理器)负责创建与销毁

会话本质:一套隔离的用户态运行环境

二、Session 0 精确定义

Session 0 = 系统启动后创建的第一个会话,也叫服务会话。 里面常驻进程: services.exe(服务控制管理器 SCM)、lsass.exewininit.exe、各类 svchost.exe、驱动宿主进程等。

运行身份大多是:NT AUTHORITY\SYSTEM、LocalService、NetworkService。

两条关键特性

  1. 默认无头(无可用交互式桌面) Session0 默认窗口站:Service-0x0-3e7$ 不同于用户会话的 WinSta0(能显示桌面、接收鼠标键盘)。 Session0 进程直接调用 MessageBox,窗口无法展示给用户。
  2. 跨会话天然隔离 Session0 ↔ Session1(用户桌面)
  • 不能直接互相发送窗口消息
  • IPC 内核对象默认互相看不见(必须加 Global\ 前缀跨会话共享)

三、历史两种形态(非常关键,很多人混淆)

1)Windows XP / Server 2003(旧模型)

👉 Session 0 = 控制台用户会话 + 服务会话(混在一起) 第一个登录用户就在 Session0,系统服务也在 Session0。 安全缺陷:Shatter 粉碎攻击,低权限程序操控高权限服务窗口实现本地提权。

2)Vista / Win7 / Win10 / Win11(现代模型:Session 0 Isolation 会话 0 隔离)

微软重构启动流程,强行拆分:

  • Session0:只放服务,禁止交互式登录
  • 用户登录 → 自动分配 Session 1、Session2……

启动时序简化 内核 → smss.exe → 创建 Session0 → 启动 wininit.exe → 拉起 services.exe 用户登录 → smss.exe 创建全新 Session1 → winlogon → explorer.exe

四、常见误区澄清

误区 1:Session 0 = SYSTEM 权限

❌ 错误 Session0 是会话环境;SYSTEM 是账号身份

  • Session0 里可以有 LocalService、NetworkService、SYSTEM
  • Session1 用户会话内理论上也可以通过特殊方式启动 SYSTEM 进程(极少场景)

误区 2:不能在 Session0 运行 GUI 程序

✅ 现代系统确实不行 Win10 1803、Win11 彻底移除 UI0Detect 兼容机制,没有官方办法查看 Session0 窗口。 老旧软件 “服务弹窗失效” 全部源于此。

误区 3:Linux 也有 Session 0

❌ 命名巧合,完全无关 Linux POSIX session 没有固定编号 0 的特殊后台会话概念,不要类比。

五、一句话极简总结

Session 0 是 Windows 第一个系统会话;Vista 之后专门用来运行后台系统服务,和登录用户桌面彻底隔离,用来防御 UI 提权攻击。

六、实操验证命令

:: 查看所有会话
query session
:: 查看每个进程所属SessionID
tasklist /v

所有 svchost、services.exe 的 SessionID = 0;explorer.exe SessionID ≥1。

Session 0 完整演进史(Windows NT → XP → Vista → Win10 → Win11)

主线脉络:共享会话(危险)→ Session 0 隔离架构重构 → 保留兼容应急入口 → 彻底移除交互式兼容层,强制纯后台模型

核心驱动:封堵 Shatter Attack(粉碎攻击)、缩小高权限服务攻击面,是 Vista 安全架构革新(UAC + Session0 隔离 + UIPI)三大支柱之一。

一、阶段 1:Windows NT4 / Windows 2000 — Session 模型雏形(无严格隔离)

架构特征

  1. smss.exe 创建会话;Session 0 = 控制台会话
  2. 服务与控制台用户默认共处 Session 0
  3. 服务属性存在「允许服务与桌面交互」选项
    • 勾选:服务挂载 WinSta0\Default,窗口直接显示在用户桌面
    • 不勾选:挂载私有窗口站 Service-0x0-3e7$,无界面
  4. 内核层面:同一会话内进程无 UI 消息隔离

缺陷

低权限进程可向 SYSTEM 服务窗口发送自定义窗口消息,存在原生提权通道,但早期攻击思路未大规模公开。

二、阶段 2:Windows XP / Server2003 — 危机显现(Session 0 共享时代)

关键变化

  1. 快速用户切换 (FUS) 引入多会话:
    • 第一个登录用户 → Session 0
    • 后续切换登录用户 → Session1、Session2……
  2. 所有系统服务永远运行在 Session 0

致命局面:服务(SYSTEM)+ 当前活跃用户程序共处 Session0

安全灾难:Shatter Attack(2002 公开)

同会话内普通进程可枚举所有顶层窗口,向 SYSTEM 服务窗口发送特制窗口消息,利用服务代码漏洞直接拿到系统最高权限。

启动链(XP)

smss.exe → winlogon.exe → services.exe + lsass.exe 👉 不存在 wininit.exe;服务初始化由 winlogon 承担。

兼容特征

  • 勾选「允许服务与桌面交互」,弹窗直接出现在用户桌面
  • 服务与桌面程序可用普通互斥体、窗口消息通信
  • Global\ 对象强制需求

三、阶段 3:Windows Vista / Server2008 — 架构革命:Session 0 Isolation(会话 0 隔离正式落地)

Windows 历史最重要的一次会话层重构

1. 启动流程颠覆性改动(新增 wininit.exe)

内核 → smss.exe(根实例)
    ├ 创建 Session0
    │    ├ smss.exe(Session0临时实例)
    │    ├ csrss.exe(Session0)
    │    └ wininit.exe【新增】
    │         ├ services.exe(SCM)
    │         ├ lsass.exe
    │         └ lsm.exe(本地会话管理器,新增)
    └ 用户登录时新建 Session1+
         ├ smss.exe
         ├ csrss.exe
         └ winlogon.exe → explorer.exe

关键分界:

  • wininit.exe专属 Session0 初始化(服务侧)
  • winlogon.exeSession1+ 用户登录初始化(桌面侧)

2. 强制规则(Vista 永久生效)

  1. Session0 只允许系统服务、后台进程;禁止交互式用户登录
  2. 第一个登录用户固定分配 Session1
  3. Session0 内置两套窗口站:
    • Service-0x0-3e7$(默认,无交互)
    • 勾选「允许服务与桌面交互」时临时挂载独立桌面
  4. 跨会话窗口消息被 Win32k.sys 拦截,从底层堵死 Shatter 攻击

3. 兼容应急机制(UI0Detect 诞生)

服务勾选「允许与桌面交互」并弹出窗口: 系统弹出交互式服务检测弹窗(UI0Detect.exe),用户点击后临时切换至独立 Session0 桌面查看窗口。 注册表开关: HKLM\SYSTEM\CurrentControlSet\Control\Windows\NoInteractiveServices

  • 0:启用交互式服务、允许 UI0Detect 跳转
  • 1:禁用(Vista 默认 0;后续版本逐步改为 1)

4. IPC 规则变更

会话私有命名空间:Mutex/Event/ 文件映射默认会话隔离; 跨 Session 通信必须添加 Global\ 前缀,同时配置 DACL 权限。

四、阶段 4:Win7 / Win8 / Win8.1 / Server2012R2 — 加固隔离,保留兼容入口

主要演进点

  1. 默认 NoInteractiveServices=1默认关闭交互式服务
  2. UI0Detect 服务依然存在,可以手动开启注册表与服务实现跳转 Session0 桌面
  3. 进一步收紧 Win32k:Session0 进程无法获取 Session1 窗口句柄
  4. 文档明确宣告:交互式服务为遗留方案,不推荐新开发使用

开发标准方案确立

服务不再直接弹出 UI,标准路径: WTSGetActiveConsoleSessionId → WTSQueryUserToken → CreateProcessAsUser 在用户会话启动独立前台程序。

五、阶段 5:Windows10 1507 ~ 1709 — 兼容层苟延阶段

  1. UI0Detect 文件仍然存在,可手动启用
  2. 但是逐步收紧输入限制:部分版本进入 Session0 桌面后鼠标键盘输入失效
  3. SCM 开始弱化「允许服务与桌面交互」选项作用,即使勾选也难以正常渲染窗口

六、阶段 6:Windows10 1803 / Server2019 → Win11 / Server2022 — 彻底废除交互式 Session0

里程碑变更(不可逆)

  1. 系统彻底移除 UI0Detect.exe(交互式服务检测程序)
  2. 不再支持切换到 Session0 交互式桌面;不存在任何官方方式查看 Session0 窗口
  3. 服务属性里「允许服务与桌面交互」复选框功能失效;SCM 不再分配交互式桌面
  4. 即使修改 NoInteractiveServices=0,也无法让服务窗口可见
  5. Session0 进一步精简图形栈:弱化 GDI/User32 支持,朝着纯后台无 GUI 容器演进

重要区分:LTSC 2016(基于 1607)仍然保留 UI0Detect;LTSC2019(1809)开始永久移除。

七、演进总对比表

系统版本 Session0 模型 用户初始会话 UI0Detect 允许跳转 Session0 桌面 Shatter 攻击天然防御
XP/2003 用户 + 服务共享 Session0 Session0 不存在 直接显示窗口 ❌ 无防御
Vista/2008 Session0 隔离架构上线 Session1 ✅ 存在 ✅ 支持
Win7~8.1 隔离强化,默认禁用交互 Session1 ✅ 存在 ✅ 手动开启可用
Win10 1507~1709 持续收紧权限 Session1 ✅ 文件存在 ⚠️ 部分版本输入异常
Win10 1803+/Win11 纯后台 Session0,移除兼容层 Session1 ❌ 彻底删除 ❌ 官方无任何途径

八、底层设计思想演变总结

  1. XP 时代:便利优先 服务与用户同会话,开发简单,代价是安全边界崩塌。
  2. Vista 折中方案:安全优先 + 遗留兼容 架构强制隔离,但提供 UI0Detect 作为老旧软件逃生通道。
  3. Win10 1803 之后:彻底清理技术债务 微软认定「交互式服务」是错误设计,完全移除兼容层,倒逼开发者使用跨会话启动进程(CreateProcessAsUser)、RPC、WTSSendMessage、通知中心等正规方案。

九、延伸衍生知识点

  1. Session0 隔离 ≠ UIPI
    • Session0 隔离:跨会话强隔离(内核 + Win32k 层级)
    • UIPI:同会话内高低完整性进程消息隔离,两者双层防御。
  2. 服务器 Server Core:天生无图形栈,Session0 自始至终完全无头。
  3. RDP 多用户场景:每个远程用户独立 Session,服务永远驻留 Session0,是现代多用户终端服务的基础架构。

Session 0 底层原理(Windows)

Session 0 是 Windows 会话隔离模型最核心的机制,源自 Windows XP、在 Vista 发生重大变革(Session 0 Isolation,会话 0 隔离),很多蓝屏、服务弹窗、权限异常、UI 交互问题根源都在这里。

一、基础概念:什么是 Session(会话)

Windows 使用 Session Manager(smss.exe) 创建会话,用来隔离:

  • 用户登录桌面环境(交互式会话 Session 1、Session 2…)
  • 系统服务、内核驱动、后台进程(Session 0

每一个 Session 拥有独立:

  1. Windows 窗口站(Window Station,WinSta0 / Service-0x0-3e7$
  2. 桌面对象(Desktop)
  3. 登录令牌、安全上下文
  4. 进程命名空间(内核对象、窗口消息隔离)

二、XP 时代:没有 Session 0 隔离(危险模型)

Windows XP: ✅ 登录用户默认运行在 Session 0

  • 系统服务 + 当前登录用户进程共处同一个会话
  • 服务进程(LocalSystem)可以直接弹出窗口、和用户桌面交互

安全漏洞: 恶意服务以 LocalSystem 权限运行,弹出欺骗对话框、捕获用户输入、利用 UI 特权提升(Shatter attack,粉碎攻击)。

三、Vista+ 重大改动:Session 0 Isolation(会话 0 隔离)

从 Windows Vista / Server 2008 开始强制启用:

核心规则

  1. Session 0 只允许运行:系统服务、驱动宿主进程(svchost.exe)
  2. 所有交互式登录用户,分配 Session ≥1(Session1、Session2…)
  3. Session 0 默认没有交互式桌面,不能直接绘制窗口、接收鼠标键盘输入

启动时序(底层启动链路)

  1. 内核初始化 → 启动 smss.exe #0(主会话管理器)
  2. smss.exe 创建 Session 0
    • 启动 wininit.exe(Session0 初始化进程)
    • wininit.exe 启动:
      • services.exe(服务控制管理器 SCM)
      • lsass.exe(本地安全认证)
      • lsm.exe(本地会话管理器)
  3. 用户按下 Ctrl+Alt+Del、登录时:
    • smss.exe 新建 Session 1
    • Session1 内启动 winlogon.exeexplorer.exe 用户桌面

关键区分:

  • wininit.exe:Session0 初始化(服务侧)
  • winlogon.exe:Session1+ 用户登录初始化(桌面侧)

四、两大核心隔离边界(内核对象层面)

1. Window Station & Desktop 隔离

每个会话自带窗口站:

  • Session0:Service-0x0-3e7$ 窗口站 默认只有 Default 桌面,不可交互
  • Session1(登录用户):WinSta0 窗口站 包含 Default(正常桌面)、Winlogon(锁屏 / 登录界面)

隔离效果: Session0 的进程无法直接在 WinSta0 上创建窗口; 如果你强行让服务弹出弹窗,Vista+ 不会直接显示给用户,只会触发 “Session 0 交互对话框” 弹窗(在单独隔离桌面)。

2. 内核对象命名空间隔离

很多内核对象(互斥体 Mutex、事件 Event、管道、文件映射)默认会话隔离

  • \BaseNamedObjects\ 下对象默认带会话作用域
  • Session0 创建的互斥体,默认对 Session1 用户进程不可见

若要跨 Session 共享,必须创建 Global\ 前缀 对象: Global\MyMutex 这也是很多服务与客户端通信踩坑点。

五、权限与账号上下文

Session0 里进程常见身份:

  • NT AUTHORITY\SYSTEM (LocalSystem)
  • NT AUTHORITY\LocalService
  • NT AUTHORITY\NetworkService

⚠️ LocalSystem 权限极高,但受会话隔离限制: 就算是 SYSTEM,在 Session0 也不能直接访问 Session1 的窗口、发送窗口消息,彻底封堵 Shatter 攻击。

六、经典现象与坑(工程实践)

  1. 旧服务程序启动后看不见弹窗 原因:代码直接在服务中 MessageBox ();XP 正常,Vista + 失效。 解决:使用 CreateProcessAsUser 或者调用 WTSSendMessage、单独启动用户会话进程展示 UI。
  2. 服务与桌面程序互斥体找不到 原因:缺少 Global\ 前缀;还要确保权限 DACL 允许访问。
  3. 工具看到多个 smss.exe
  • smss.exe #0:系统主进程(永远 Session0,杀机会蓝屏)
  • 额外 smss.exe:每个用户会话附属 smss,对应 Session1/2…
  1. query session 命令可直观查看所有会话
query session

七、内核层面简要实现(Windows 内部)

会话信息在内核由 Session 结构体 维护,关联:

  • EPROCESS 进程块内 SessionId 成员
  • 进程附着的 WindowStation 句柄
  • 对象管理器会话命名空间目录

Win32k.sys(窗口子系统)负责强制实施会话间窗口消息隔离; 用户态 API:WTS* 系列函数(WTSGetActiveConsoleSessionId、WTSSendMessage)用于跨会话通信。

八、关键总结极简版

  1. XP:Session0 = 用户桌面 + 服务,不安全;
  2. Vista+ Session 0 隔离:Session0 专职运行后台服务,所有登录用户放在 Session≥1;
  3. 会话之间窗口站、桌面、内核命名空间三层隔离;
  4. 服务不要直接弹出 UI;跨会话通信需要特殊 API + Global 命名对象;
  5. 启动链:smss.exe → Session0 → wininit.exe → services.exe;用户登录新建 SessionN。

扩展专题:Session 0 隔离配套深度内容

分为四大部分:跨会话启动进程原理、Shatter Attack、会话枚举代码示例、Windows Session vs Linux Session 横向对比

一、跨会话启动进程:CreateProcessAsUser 底层原理

1. 场景前提

Session0 服务(SYSTEM)想要在当前活跃用户会话(Session1) 启动带 UI 程序。 普通 CreateProcess:新进程继承调用者会话 → 仍然跑在 Session0,无法显示窗口。 必须:复制用户登录令牌 + 指定目标会话 ID

2. 完整调用链路

  1. WTSGetActiveConsoleSessionId() 获取当前控制台登录用户会话 ID(如 SessionId=1)
  2. WTSQueryUserToken(SessionId, &hUserToken) 从 Winlogon 取出该会话用户主访问令牌(Primary Token)

    限制:仅 Session0 内高权限进程(SYSTEM)可调用成功

  3. DuplicateTokenEx() 将模拟令牌转为主令牌(CreateProcessAsUser 要求主令牌)
  4. CreateProcessAsUser(hToken, ...) 内核行为:
    • 新进程 EPROCESS.SessionId = 目标会话 ID
    • 自动挂载目标会话对应的 WinSta0\Default 桌面
    • 安全上下文使用用户令牌,不再是 SYSTEM

3. 常见踩坑点

  1. 缺少 Global\ 命名对象权限 进程启动后服务与 UI 程序通信的互斥体、共享内存必须加 Global\,同时设置合理 DACL,否则拒绝访问。
  2. 桌面访问权限不足 用户桌面 WinSta0\Default 默认不允许 SYSTEM 直接访问;需要手动调用 SetUserObjectSecurity 放开权限,否则程序启动后直接卡死、无法绘制窗口。
  3. 终端服务环境(多用户远程桌面) WTSGetActiveConsoleSessionId 只获取物理控制台会话;远程会话要用 WTSEnumerateSessions 遍历筛选。

替代方案(简易弹窗,不启动完整进程)

WTSSendMessage(
    WTS_CURRENT_SERVER_HANDLE,
    targetSessionId,
    ...
);

底层:终端服务组件在目标会话弹出系统模态消息框,无需创建进程,适合简单通知。

Session0 交互弹窗(旧机制): 注册表 HKLM\SYSTEM\CurrentControlSet\Control\Windows\NoInteractiveServices

  • 0:允许服务请求 Session0 弹窗,系统切换至隔离桌面
  • 1:彻底禁用(Win10/11 默认 1)

二、Shatter Attack(粉碎攻击)——Session0 隔离诞生的直接诱因

1. XP 时代攻击模型

环境:用户运行在 Session0;后台服务以 LocalSystem(最高权限) 运行在同一个 Session。 Windows 窗口模型规则:同一会话内任意进程,可以向其他进程顶层窗口发送消息(WM_SETTEXT、WM_COMMAND)

攻击流程:

  1. 恶意普通权限程序枚举桌面所有窗口
  2. 找到 SYSTEM 权限服务创建的顶层窗口
  3. 发送特制窗口消息,触发服务内部处理逻辑
  4. 利用服务代码漏洞,在 SYSTEM 权限下执行任意代码 → 本地提权

根本漏洞: 会话内信任边界缺失;低权限进程可控高权限进程窗口消息。

2. Vista+ 如何彻底封堵

Session0 隔离从架构层面切断前提条件:

  • SYSTEM 服务 → Session0
  • 用户程序 → Session≥1 跨会话不能直接发送普通窗口消息(Win32k.sys 强制拦截) 即使恶意程序控制自身窗口,也无法寻址 Session0 内服务窗口。

补充:现代依然存在同会话内 UI 提权漏洞(如普通用户进程操控高权限进程窗口),但不再能利用服务实现一键 SYSTEM 提权。


三、Windows 会话枚举相关代码示例(C++ Win32)

示例 1:枚举所有会话

#include <wtsapi32.h>
#pragma comment(lib, "wtsapi32.lib")

void EnumAllSessions()
{
    PWTS_SESSION_INFO pSessions = nullptr;
    DWORD dwCount = 0;
    if (WTSEnumerateSessions(WTS_CURRENT_SERVER_HANDLE,
        0, 1, &pSessions, &dwCount))
    {
        for (DWORD i = 0; i < dwCount; i++)
        {
            WTS_SESSION_INFO& si = pSessions[i];
            wprintf(L"SessionId:%d, State:%d, WinStation:%s\n",
                si.SessionId, si.State, si.pWinStationName);
        }
        WTSFreeMemory(pSessions);
    }
}

示例 2:获取当前控制台会话 ID + 获取用户令牌

DWORD sessionId = WTSGetActiveConsoleSessionId();
HANDLE hToken = nullptr;
if (WTSQueryUserToken(sessionId, &hToken))
{
    // 可传入DuplicateTokenEx用于CreateProcessAsUser
    CloseHandle(hToken);
}

快速查看工具命令

query session
tasklist /v        :: 查看每个进程的 Session ID

内核调试角度(WinDbg)

!session           列出系统全部会话
!process 0 0       EPROCESS结构内可见 SessionId

四、Windows Session vs Linux Session 机制横向对比

很多人混淆两者命名,只是同名,设计目标、隔离层级完全不同

维度 Windows Session(终端服务会话) Linux Session (POSIX Session / Systemd Login Session)
管理进程 smss.exe、wininit.exe、winlogon.exe init/systemd、logind、agetty
隔离核心 窗口子系统 (Win32k)、窗口站、桌面、内核对象命名空间 进程组、控制终端(TTY)、cgroup、PID Namespace
会话 0 含义 专属后台服务会话,禁止交互式用户登录 无特殊编号含义;内核 / 守护进程不属于任何 POSIX 会话
GUI 承载 绑定 WinSta+Desktop,会话之间 UI 完全隔离 X11/Wayland 服务独立;GUI 隔离依赖显示服务器权限,非内核会话机制
跨会话通信限制 默认内核对象隔离,需 Global\ 前缀;窗口消息强隔离 无内核层会话隔离限制;主要依靠文件权限、IPC 权限
典型编号 0 = 服务,1/2/3 = 登录用户会话 POSIX 会话 ID 随机分配,无固定编号规则
安全目标 抵御 UI 提权(Shatter Attack) 管控 TTY、前台 / 后台进程组、信号传递

关键区别小结

  1. Windows Session 是操作系统原生安全隔离单元,和图形子系统深度耦合;
  2. Linux POSIX Session 最初只是为了管理终端登录、信号与进程组,不是安全沙箱
  3. Linux 实现类似 Session0 隔离效果,需要组合:systemd-logind + cgroup + 命名空间,没有内置统一模型。

五、延伸思考题(如果你要做逆向 / 服务开发)

  1. 为什么 Global\ 对象依然存在权限风险?恶意用户能否打开 Global 互斥体进行 DoS?
  2. 在 RDP 多用户场景下,一个 Session0 服务如何区分多个远程会话、分别启动 UI?
  3. Win11 中引入的 AppContainer 隔离与 Session 隔离是两层独立边界,两者如何叠加生效?

在Windows操作系统中,Session 0 是一个特殊的会话(Session),用于运行系统级别的服务和进程,而不是用户交互式会话。在Windows Vista及更高版本的操作系统中,引入了“会话 0 隔离”(Session 0 Isolation)的概念,即将服务与用户会话分离开来,以提高系统的安全性和稳定性。

Session 0 中运行的是系统级别的服务和进程,这些服务通常在系统启动时自动启动,并且在用户登录之前就已经在后台运行。这样做的好处是可以确保系统级别的任务得到及时执行,同时避免了用户会话对系统服务的干扰。在Session 0中运行的服务通常没有用户界面,因为用户交互并不是它们的主要目的。

通过将系统服务和用户会话分离到不同的会话中,可以提高系统的安全性,防止恶意程序利用用户会话的权限来攻击系统服务。此外,“会话 0 隔离”还有助于提高系统的稳定性,因为系统服务不会受到用户会话的影响。

 将某些程序或任务放置在Session 0中运行,可以提高系统的安全性和稳定性,同时确保系统级别的任务得到有效执行。


Session 0 的基础技术原理涉及 Windows 操作系统的会话管理和安全机制。以下是一些与 Session 0 相关的基础技术原理:

  1. 会话隔离:Windows 操作系统通过会话(Session)来管理用户交互式会话和系统级别服务会话。引入了“会话 0 隔离”(Session 0 Isolation)概念,将系统级别的服务和进程放置在一个独立的会话中(Session 0),与用户交互式会话隔离开来。

  2. Windows 窗口站和桌面:每个会话都包含一个或多个窗口站(Window Station)和桌面(Desktop)。Session 0 包含一个名为 "WinSta0" 的窗口站,以及一个名为 "Default" 的桌面。这些窗口站和桌面提供了运行程序和交互的环境。

  3. 安全性和权限:Session 0 中的进程和服务通常以系统账户(Local System)的身份运行,拥有较高的权限。这样做可以确保系统级别任务的执行安全并且避免了用户会话对系统服务的干扰。

  4. 交互式服务检测:为了提高系统的安全性,Windows 操作系统实施了交互式服务检测(Interactive Services Detection),用于检测和管理在 Session 0 中具有可视用户界面的服务程序。

  5. 服务控制管理器(SCM):在 Windows 操作系统中,服务的启动和停止由服务控制管理器(Service Control Manager,SCM)负责。SCM 管理着系统中所有的服务,并负责在系统启动时启动这些服务,包括那些运行在 Session 0 中的服务。

  6. 进程和线程管理:Windows 操作系统通过进程和线程来管理程序的执行。Session 0 中的进程和线程与用户交互式会话中的进程和线程有所不同,它们通常以系统账户的身份运行,并且没有用户界面。

  7. 交互式服务检测器:交互式服务检测器(Interactive Services Detection)是 Windows 操作系统中的一个组件,用于检测并管理在 Session 0 中具有可视用户界面的服务程序。这个组件可以帮助用户在需要时与 Session 0 中的服务进行交互。

  8. 安全通信机制:为了确保 Session 0 中的服务与用户交互式会话之间的安全通信,Windows 操作系统提供了相应的安全通信机制,以防止恶意程序利用 Session 0 来进行攻击或干扰用户会话。

  9.  

 Session 0 的基础技术原理涉及到 Windows 操作系统的会话管理、权限分配和安全机制,通过将系统级别的服务和进程与用户交互式会话隔禜开来,提高了系统的安全性和稳定性。


 

posted @ 2024-02-28 13:01  suv789  阅读(691)  评论(0)    收藏  举报