【windows】会话(Session)、窗口站(WindowsStation)、桌面、窗口

article/2025/9/18 3:41:31

    一个系统可以同时登录多个用户(包括远程用户登录)(多用户系统)。
    一个用户拥有一个会话(远程用户被称为远程会话)。
    一个会话拥有多个工作站和窗口。只能拥有一个交互式工作站(Winsta0)。(Window Station 0,0号窗口站)
    一个会话拥有一系列私有的进程和模块(当前会话私有):Csrss.exe、WinLogin.exe、win32k.sys。
    一个会话拥有一个私有对象名字空间(\BaseNamedObjects),私有对象命名空间中的内核对象不能被其他会话访问。
    一个交互式工作站最少拥有三个桌面默认桌面、登陆桌面、屏保桌面(可以多于3个)。
    一个非交互式工作站最少拥有一个桌面。
    一个桌面拥有0-N个窗口(非交互式工作站中的桌面可以没有窗口)。
    一个与用户交互的桌面拥有一个Explorer.exe进程。
    窗口必须与一个桌面绑定。
    窗口之间不能跨桌面访问。

用户登录到Windows系统之后,不管该用户是本地登陆还是远程登录,系统都会为这个用户分配一个新的会话ID(SID)。也就是说会话与用户的登录是相关联的。

会话

会话(session)是由进程和其他的系统对象(比如窗口站、桌面和窗口)构成的,他们代表了一个用户的工作站登录会话。

Windows系统是支持多会话的,因此会话空间(session space)包含了一些针对每个会话的全局信息。==》会话空间是用来管理会话的。

会话的组成

  1. 每个会话包含一个单独的win32k.sys(window32 kernel)
  2. 专门的换页池区域
  3. 私有windows子系统和登录进程的拷贝
  4. 系统空间中被映射的空间,被称为会话空间的区域

会话管理器

会话管理器(smss.exe,Session Manager Subsystem)是系统中第一个创建的用户态模式进程,负责完成执行体和内核的初始化工作的内核模式系统现在最后阶段创建了实际的smss进程。

Windows会话过程

  1. 内核模式的系统线程初始化Windows执行体和内核,最后阶段创建实际的Smss进程。
  2. 在启动Windows的过程中,会话管理器负责许多重要的步骤,比如打开额外的页面文件、执行延迟的文件改名和删除操作(重启后删除或重启后重命名)、创建系统环境变量;它也将子系统进程(csrss.exe,Client/Server Runtime Subsystem,客户端/服务端运行时子系统)和 winlogon.exe进程启动起来,winlogon进程一次会创建其他的系统进程。
    smss的初始化相关步骤在注册表中配置,对应注册表中的路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager。如下图:
    在这里插入图片描述
    其中,PendingFileRenameOperations记录了"重启后重命名"的文件路径
  3. Smss的主线程负责监视Csrss和winlogon,一旦Csrss或Winlogon非正常终止,Smss会让系统崩溃。(崩溃代码是STATUS_SYSTEM_PROCESS_TERMINATED或0xC000021A)
  4. Smss等待加载子系统的请求、调试事件,以及创建新的终端服务器会话
  5. 【身份认证阶段】
  6. 认证完成后,lsass调用安全引用监视器中的函数NtCreateToken生成一个访问令牌对象,其包含了当前用户的安全轮廓。
  7. winlogon利用此访问令牌来创建用户会话中的初始进程。(此初始进程保存在注册表【HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon】下Userinit中)
  8. Userinit执行该用户环境中的一些初始化工作(比如运行登录脚本、应用组策略),然后再注册表中查找Shell值,并创建进程来运行外壳程序Explorer.exe
  9. 至此会话创建完成。

终端服务会话(Terminal Services Session)创建过程

终端服务会话(Terminal Services Session)的创建是由Smss来完成的。当Smss接到一个创建会话的请求时,它会做以下处理:

  1. 调用NySetSystemInformation,建立内核模式的会话数据结构
  2. 调用内存管理器函数MMSessionCreate,建立会话虚拟地址空间(包括会话中的换页内存池、Win32子系统的内核模式部分Win32k.sys等),然后Smss为该会话创建Winlogon和Csrss实例。

身份认证过程

  • Winlogon登录进程处理交互式用户的登录和注销。
  • winlogon在用户登录、注销、截取键盘SAS时是活动的,它是负责处理这些交互工作的进程。
  • 登录过程的身份识别和认证是在GINA.dll中实现的。开发人员可以提供自己的GINA.dll实现其他的身份识别和认证机制。
  • 用户名和密码捕捉到后,被送到本地安全认证服务器进程lsass.exe进行认证。lsass.exe检查口令是否符合存储在活动目录或者SAM中的口令信息。

参考链接:
https://blog.csdn.net/sunleishandong/article/details/28618203
https://blog.csdn.net/chenyujing1234/article/details/8027934
https://www.cnblogs.com/russinovich/archive/2011/04/26/2029655.html

其他

1、Session 0隔离:

http://technet.microsoft.com/zh-cn/ee791007.aspx

2、穿透Session 0 隔离

http://www.cnblogs.com/gnielee/archive/2010/04/07/session0-isolation-part1.html

3、Application Compatibility: Session 0 Isolation

http://msdn.microsoft.com/en-us/library/bb756986.aspx

窗口站 windows station

一个窗口站包含一个剪切板、一个原子表、和一个或多个桌面对象
窗口站创建时和进程相关联,并且被放到当前的会话
只有WinSta0可以有交互界面,和接收用户输入,其他窗口站是不可以有用户交互的
远程登录的用户会新建一个会话,每个会话和自己的窗口站关联(窗口站名为WinSta0)
系统会创建默认的窗口站和桌面,并且和当前的用户关联WinSta0\Default
CreateWindowStation 创建窗口站
如果服务进程所在的会话没有窗口站系统会创建一个窗口站(如果是LocalSystem账户,并且没有SERVICE_INTERACTIVE_PROCESS属性,则名称为Service-0x0-3e7, 不 能 交 互 。 如 果 是 用 户 账 户 那 么 名 称 为 S e r v i c e − 0 x Z 1 − Z 2 ,不能交互。如果是用户账户那么名称为Service-0xZ1-Z2,不能交互。如果是用户账户那么名称为Service−0xZ1−Z2,Z1是SID的高部分,Z2是SID的低部分。上面两种情况都是不可交互的)和桌面(Default)
程序调用User32或者GDI函数时自动连接,如果调用了SetProcessWindowStation或者从父进程继承了指定的窗口站,那么就会连接到指定的窗口站。或者连接创建进程指定的STARTINFO里面的lpDesktop。如果都没有的话,则会连接到交互进程的窗口站。如果从父进程继承了多个,那么连接行为是不确定的。
连接过程中不能调用CloseWindowStation来关闭
调用GetSecurityInfo和SetSecurityInfo来设置安全描述符

https://blog.csdn.net/zxy355/article/details/50790158


http://chatgpt.dhexx.cn/article/7H29Z4WF.shtml

相关文章

WindTerm导出会话

WindTerm的session配置并无法被适用于其他软件中,所有的session保存在WindTerm安装路径下的profiles文件夹内,如果需要更新版本或回退,将所安装的版本覆盖即可,或是将profiles复制于新路径下。 图标闪烁设置、会话保存-导入导出 …

Spring Security中的会话【Session】管理与防御以及会话的并发控制

众所周知,HTTP本身是没有任何关于当前用户状态的内容,也就是两个HTTP请求之间是没有任何的关联可言,用户在和服务器交互的过程中,站点无法确定是哪个用户访问,也因此不能对其提供相应的个性化服务。Session的诞生就是为…

web基础:会话

一、会话概述 HttpSession对象可以保存跨同一个客户多个请求的会话状态。即与一个特定客户的整个会话期间,HttpSession会持久存储。对于会话期间客户做的所有请求,从中得到的所有信息,都可以使用HttpSession对象保存。 会话的工作方式&#…

会话固定攻击(session fixation attack)及解决办法

1 Cookie 的工作过程 Cookie的传递用到了两个字段: 请求头字段Cookie和响应头字段Set-Cookie。 当用户浏览器第一次访问服务器的时候,服务器肯定是不知道他的身份的。所以,就要创建一个独特的身份识别数据,格式是"keyvalue"&…

2022年会话推荐综述

title: 2022年会话推荐综述 最近对于会话推荐有了新的兴趣 文章题目: A Survey on Session-based Recommender Systems 0. 前言 提供了一个统一的框架来对SBRSs研究进行分类 SBRS的统一问题陈述,其中SBRS建立在正式概念之上:用户、项目、…

会话保持原理

1. 什么是会话保持? 会话保持是负载均衡最常见的问题之一,也是一个相对比较复杂的问题。会话保持有时候又叫做粘滞会话(Sticky Sessions)。会话保持是指在负载均衡器上的一种机制,可以识别客户端与服务器之间交互过程的关连性,在…

linux会话session

linux会话 什么是linux session 我们常见的 Linux session 一般是指 shell session。Shell session 是终端中当前的状态,在终端中只能有一个 session。 当我们打开一个新的终端时,总会创建一个新的 shell session。这表明会话是我们和shell交互的一个过…

会话令牌写入URL

目录 一. 漏洞描述 二. 漏洞修复 一. 漏洞描述 会话令牌即Token,关于Token,传送门-》如何理解Session、Cookie与Token 。 用户在进行get请求将用户的令牌写入url,导致中间人攻击获取令牌进行登陆。如下 二. 漏洞修复 禁止将令牌写入url

PDU会话流程

1.PDU会话的概念 1.1概述 5G系统的一个关键功能:为UE提供一个到达DN的连接会话管理功能(SMF)职责: 设置UE到DN的连接对该连接的用户面进行管理 5G系统的设计目标是支持大量的5G案例: 支持不同的PDU类型多个可选的…

会话固定漏洞

目录 漏洞原理 漏洞检测 漏洞利用 漏洞修复 漏洞原理 Session 是应用系统对浏览器客户端身份认证的属性标识,在用户退出应用系统时,应将客户端 Session 认证属性标识清空。如果未能清空客户端 Session 标识,在下次登录系统时&#xff0c…

《Oracle Java EE编程自学和面试指南》09-02:HttpSession接口

深入了解IT/互联网行业及岗位,请参阅通用IT/互联网岗位招聘计划(最新全岗版)。 深入了解职业晋升及学习路线,请参阅最优职业晋升路线和课程学习指南(最新全栈版)。 内容导航: 前言1、HttpSessi…

【LWIP的mDNS】

一.mdns 1.什么是mdns? mDNS协议适用于局域网内没有DNS服务器时的域名解析,设备通过组播的方式交互DNS记录来完成域名解析,约定的组播地址是:224.0.0.251,端口号是5353 主要用于在同一局域网内,…

DNS DDNS NBNS mDNS LLMNR LLDPDU SSDP协议

DNS DNS只是提供了域名和IP地址之间的静态对应关系,当IP地址发生变化时,DNS无法动态的更新域名和IP地址之间的对应关系,从而导致访问失败。但是DDNS系统是将用户的动态IP地址映射到一个固定的域名解析服务上 DDNS DDNS用来动态更新DNS服务…

mDNSResponder介绍与移植

mDNSResponder是苹果的Bonjour项目的一部分。 Bonjour是法语“你好”的意思。 Bonjour软件源自正IETF零配置网络工作。零配置工作有三个要求: 1.分配IP地址(即使没有分配DHCP服务器的IP地址) 2.提供名称到地址的转换(即使没有DNS服…

启用Ubuntu 服务器上的 mDNS

陈拓 2022/03/18-2022/03/18 在动态分配IP地址的情况下,在局域网中使用mDNS访问Ubuntu服务器就不需要知道IP地址了。 我的Ubuntu系统版本 先用IP地址登录Ubuntu服务器。 具体操作见《Win10命令窗口的SSH和SFTP操作》 Win10命令窗口的SSH和SFTP操作_晨之清风的博…

Bonjour手把手搭建一:mDNS(apple multicastdns.org)

mDNS(Multicast DNS)——From Apple https://support.apple.com/kb/TA20999?localezh_CN&viewlocaleen_US Multicast DNS, one of the features incorporated in Bonjour, which was introduced in Mac OS X 10.2. Bonjour的一个新特性,在Mac OS X10.2后引入…

SpyCast:一款功能强大的跨平台mDNS枚举工具

关于SpyCast SpyCast是一款功能强大的跨平台mDNS枚举工具,该工具支持在主动模式下下递归查询服务,也可以在被动模式下仅侦听多播数据包。因此,广大研究人员可以使用该工具测试mDNS协议和本地网络的安全性。 mDNS介绍 mDNS,即多…

esp-idf编译报错Failed to resolve component ‘mdns‘

Failed to resolve component mdns 根据提示 打开https://components.espressif.com/搜索mdns 选择复制 执行后再次进行编译

OpenWrt 安装 mDNS,并设置 mDNS 映射

OpenWrt 安装 mDNS,并设置 mDNS 映射 路由器:OpenWrt 21.02.1电脑:Windows 10 21H1 Windows 10 现在已经默认支持了 mdns,可以直接 ping 设备名称.local 查看电脑的ip。 1.下载 mDNS 安装包 opkg update opkg install umdns…

ESP mDNS 学习

文章目录 1 概述2 linux avahi3 ESP32 mDNSmDNS 数据包4 参考资料 1 概述 mDNS 是一种多播 UDP 服务,用来提供本地网络服务和主机发现,mDNS 协议发布为 rfc6762。 在没有任何传统单播 DNS 服务器的情况下,多播 DNS (mDNS) 提供了在本地连接…