文章目录
- 一、为什么要了解系统进程
- 二、进程启动链总览
- 三、系统进程详解
- 3.1 System(以及 Idle)
- 3.2 smss.exe(Session Manager Subsystem)
- 3.3 csrss.exe(Client/Server Runtime Subsystem)
- 3.4 wininit.exe(Windows Initialization Process)
- 3.5 services.exe(Service Control Manager)
- 3.6 lsass.exe(Local Security Authority Subsystem Service)
- 3.7 svchost.exe(Service Hosting Process)
- 3.8 lsm.exe(Local Session Manager Service)
- 3.9 winlogon.exe(Windows Logon Process)
- 3.10 Userinit.exe(未常驻)
- 3.11 Explorer.exe(Windows Explorer)
- 四、SOC 分析中的三个关键维度
- 五、FAQ
- 六、总结
- 七、参考
系列说明:本文是《Windows 安全运营基础》系列的第一篇,主要介绍从内核到用户态的典型系统进程启动链,以及 SOC/安全分析中如何利用这些知识做异常检测。后续文章将覆盖服务与持久化、登录与认证、驱动与内核等与安全运营相关的主题。
一、为什么要了解系统进程
作为安全运营或 SOC 分析师,理清 Windows 系统进程的来龙去脉,有助于:
- 调试与排错:理解进程由谁创建、在哪个 Session 下运行,能更快定位权限、环境问题。
- 安全分析:攻击者常冒充、注入或利用这些进程隐藏自身;掌握「正常 vs 异常」的判定依据,是 SOC 日常研判的基础。
- 自动化与监控:基于父子关系、路径、进程数量等维度编写脚本或规则,可高效筛选需深入调查的告警。
下面从「谁创建谁、在哪儿跑」的视角,梳理系统进程的启动链,并在每个进程中补充安全运营相关的检测要点。
二、进程启动链总览
高层关系可概括为(实线表示父进程常驻,虚线表示父进程创建子进程后即退出):
flowchart TB
System["System"]
smss["smss.exe"]
csrss["csrss.exe"]
wininit["wininit.exe"]
winlogon["winlogon.exe"]
services["services.exe"]
lsm["lsm.exe"]
lsass["lsass.exe"]
userinit["userinit.exe"]
svchost["svchost.exe"]
explorer["explorer.exe"]
runtimebroker["runtimebroker.exe"]
taskhostw["taskhostw.exe"]
System --> smss
smss -.-> csrss
smss -.-> wininit
smss -.-> winlogon
wininit --> services
wininit --> lsm
wininit --> lsass
winlogon --> userinit
services --> svchost
userinit -.-> explorer
svchost --> runtimebroker
svchost --> taskhostw
- 实线 (→):父进程持续存在,子进程在进程树中可见其父进程。
- 虚线 (-.→):父进程在创建子进程后退出(如 smss 创建 csrss/wininit/winlogon 后退出,userinit 启动 explorer 后退出),因此子进程在工具中常显示为「无父进程」。
若仅看主干,也可用下面的简化关系记忆:
[内核] Idle / System (PID 4)
└── smss.exe (Session Manager)
├── csrss.exe (每 Session 一个)
├── winlogon.exe (每用户 Session)
└── wininit.exe (仅 Session 0)
├── services.exe
├── lsass.exe
└── lsm.exe
└── (services.exe 再创建 svchost.exe 等)
[用户登录后]
winlogon → Userinit.exe → Explorer.exe
(Userinit 启动后即退出,故 Explorer 常表现为“无父进程”)
接下来按执行顺序逐个说明每个进程的职责与安全注意点。
三、系统进程详解
3.1 System(以及 Idle)
| 属性 | 说明 |
|---|---|
| 创建者 | 由 ntoskrnl.exe 的 Process Manager 创建,无可见父进程 |
| PID | 固定为 4(若见 PID≠4 的「System」进程,多为恶意伪装) |
| 路径 | 内核概念,无用户态镜像路径;若工具显示路径,应为 C:\Windows\System32 相关 |
| 职责 | 内核级进程/线程管理、驱动与系统资源管理,并创建 smss.exe |
安全要点:
- PID 必须为 4;若出现多个「System」或 PID≠4,需警惕 Rootkit。
- 若 System 进程被替换或路径异常,要高度警惕。
3.2 smss.exe(Session Manager Subsystem)
| 属性 | 说明 |
|---|---|
| 父进程 | System |
| 路径 | %SystemRoot%\System32\smss.exe |
| Base Priority | 11 |
| 账户 | NT AUTHORITY\SYSTEM |
| 职责 | 第一个用户态进程;延迟文件删除/改名、加载 Known DLLs;创建 Session 0(服务)与 Session 1(用户);为 Session 1 创建 csrss 与 winlogon 后退出(故二者在工具里常显示为「无父进程」) |
每个用户登录时会起一个 smss 做 Session 环境初始化,完成后退出;长期存在的 smss 通常只有一个,且多在 Session 0。
安全要点:
- 通常只有一到两个实例;若出现多个 smss.exe,或路径不在 C:\Windows\System32,可能是木马。
3.3 csrss.exe(Client/Server Runtime Subsystem)
| 属性 | 说明 |
|---|---|
| 父进程 | 由 smss 创建(创建后 smss 退出,故常显示无父进程) |
| 路径 | %SystemRoot%\system32\csrss.exe |
| Base Priority | 13 |
| 账户 | NT AUTHORITY\SYSTEM |
| 职责 | Windows 子系统进程:控制台窗口、进程/线程的创建与删除、临时文件等 |
每个 Session 有一个 csrss 进程。
安全要点:
- 路径必须是 System32;若出现在 C:\Windows\Temp 等目录,多为攻击者伪装。
- CPU 占用异常高时需结合其他行为排查。
3.4 wininit.exe(Windows Initialization Process)
| 属性 | 说明 |
|---|---|
| 父进程 | smss.exe |
| 路径 | %SystemRoot%\system32\wininit.exe |
| Base Priority | 13 |
| 账户 | NT AUTHORITY\SYSTEM |
| 职责 | 用户态初始化:创建 %windir%\temp;在 Session 0 下启动 services.exe、lsass.exe、lsm.exe |
| 子进程 | services.exe、lsass.exe、lsm.exe |
安全要点:
- 若 wininit 缺失或未运行,系统无法正常完成启动。
- 仅认可 System32 下的版本;其他路径需人工核查。
3.5 services.exe(Service Control Manager)
| 属性 | 说明 |
|---|---|
| 父进程 | wininit.exe |
| 路径 | %SystemRoot%\System32\services.exe |
| Base Priority | 9 |
| 账户 | NT AUTHORITY\SYSTEM |
| 职责 | 加载服务数据库、管理 Windows 服务;派生 svchost、taskhost、spoolsv 等 |
| 运行环境 | Session 0,全系统唯一 |
安全要点:
- 常被用作持久化入口(恶意服务注册)。
- 若其子进程中出现 cmd.exe、powershell.exe 等,需高度警惕。
- 若 services 启动异常外连,应结合网络与命令行审计。
3.6 lsass.exe(Local Security Authority Subsystem Service)
| 属性 | 说明 |
|---|---|
| 父进程 | wininit.exe |
| 路径 | %SystemRoot%\System32\lsass.exe |
| Base Priority | 9 |
| 账户 | NT AUTHORITY\SYSTEM |
| 职责 | 本地安全策略:登录用户管理、密码策略、安全事件日志等;处理身份验证、Kerberos、凭据等 |
| 运行环境 | Session 0,唯一,无子进程 |
安全要点:
- 攻击者最爱目标之一;Mimikatz 等会从 lsass 内存 dump 凭据。
- 若发现 procdump、任务管理器 dump、或第三方工具对 lsass 打开句柄,应立即调查。
- lsass 一般不主动联网,异常网络行为也需关注。
3.7 svchost.exe(Service Hosting Process)
| 属性 | 说明 |
|---|---|
| 父进程 | services.exe |
| 路径 | %SystemRoot%\System32\svchost.exe |
| Base Priority | 8 |
| 账户 | NT AUTHORITY\SYSTEM / LOCAL SERVICE / NETWORK SERVICE |
| 职责 | 按组承载 DLL 形式的各种 Windows 服务 |
| 运行环境 | 多个实例,均在 Session 0 |
安全要点:
- 正常会有多个 svchost,路径均应在 System32。
- 若出现在 Temp、Downloads 等目录,视为可疑。
3.8 lsm.exe(Local Session Manager Service)
| 属性 | 说明 |
|---|---|
| 父进程 | wininit.exe |
| 路径 | %SystemRoot%\System32\lsm.exe |
| Base Priority | 8 |
| 账户 | NT AUTHORITY\SYSTEM |
| 职责 | 管理终端服务会话状态,向 smss 发起新会话请求;处理登录/注销、Shell 启停、会话连接/断开、桌面锁定等 |
| 运行环境 | Session 0,无子进程 |
3.9 winlogon.exe(Windows Logon Process)
| 属性 | 说明 |
|---|---|
| 路径 | %SystemRoot%\system32\winlogon.exe |
| Base Priority | 13 |
| 账户 | NT AUTHORITY\SYSTEM |
| 职责 | 处理登录/注销 UI(如 Ctrl+Alt+Del);根据注册表 Winlogon\Userinit 启动 Userinit.exe;Userinit 完成用户环境与 GPO/启动脚本后,再根据 Winlogon\Shell 启动 Explorer.exe,然后 Userinit 退出 |
| 运行环境 | 用户 Session(如 Session 1) |
因此:Userinit 运行完即退出,Explorer 在进程树中常显示为「无父进程」。
安全要点:
- 路径与签名须为微软官方;攻击者可能用键盘记录器等替换 winlogon。
3.10 Userinit.exe(未常驻)
由 winlogon 按注册表启动,完成用户环境初始化后退出,故正常运行时在进程列表中看不到;Explorer 的常见「逻辑父进程」即为 Userinit。
3.11 Explorer.exe(Windows Explorer)
| 属性 | 说明 |
|---|---|
| 路径 | %SystemRoot%\Explorer.exe(注意:常见于系统根目录,而非 System32) |
| Base Priority | 8 |
| 账户 | 当前登录用户 |
| 职责 | 桌面、任务栏、文件管理器 |
安全要点:
- 若被篡改,用户往往难以察觉;可用 Autoruns 等检查是否被替换或劫持。
- explorer.exe → cmd.exe → powershell.exe 这类父子关系,常为攻击者通过 GUI 执行 payload 的痕迹,SOC 中应重点标记。
四、SOC 分析中的三个关键维度
在监控与告警研判时,可重点依赖以下三点区分正常与异常。
4.1 路径检查
- 合法系统进程均在
C:\Windows\System32(Explorer 在C:\Windows)。 - 若在 Temp、Downloads、用户目录等发现同名进程,多半为伪装,需结合命令行与网络进一步判断。
4.2 签名验证
- 官方系统进程应具微软签名。
- 使用 Sysinternals 的 sigcheck.exe 可快速验证签名与时间戳,便于发现被替换的 PE。
4.3 父子进程关系
- 典型正常链:
smss → csrss / winlogon / wininit;wininit → services / lsass / lsm;services → svchost;winlogon → Userinit → Explorer。 - 异常示例:
explorer → cmd → powershell、services 子进程中出现异常脚本解释器、对 lsass 的句柄/内存访问 等,应优先排查。
五、FAQ
5.1 为什么smss进程仍然存在,但是wininit父进程不是smss进程
此刻看到的 smss.exe 和当初创建 wininit.exe 的那个 smss.exe,并不是同一个进程。
wininit.exe 没有父进程是正常现象,它的真正父进程(第一个 smss.exe)已经消失,且后续的 smss.exe 不属于它的会话,无法构成父子关系。
那我们如何确认它没有被恶意软件冒充呢?关键还是看两点:
父进程信息:wininit.exe 没有父进程是完全正常的。如果哪个工具显示它有父进程,反而需要警惕。
可执行文件路径:这是最重要的判断依据。
合法:C:\Windows\System32\wininit.exe。
可疑/恶意:任何其他路径,比如 C:\Windows\ 或 C:\Program Files\
5.2 为何smss进程需要再次启动
smss.exe 再次启动,是为了给每一个新的登录会话(Session)提供独立的Win32 子系统环境
第一个 smss.exe(Session 0) 创建了 wininit.exe(Session 0)。
第二个 smss.exe(Session 1) 创建了 winlogon.exe(Session 1)。
六、总结
| 维度 | 要点 |
|---|---|
| 启动链 | System(PID 4) → smss → csrss/winlogon/wininit → services/lsass/lsm → svchost 等;用户态入口为 winlogon → Userinit → Explorer |
| 安全 | 系统进程常被冒充、注入或滥用;结合 路径、签名、父子关系、数量 可快速筛出异常 |
| 实践 | 在 EDR/SOC 中为上述进程定制规则(路径白名单、父进程约束、lsass 访问告警等),能显著提高研判效率 |
掌握这些系统进程的职责与正常形态,是 Windows 安全运营与告警研判的基础。本系列后续将围绕服务与持久化、登录与认证、驱动与内核等主题展开,便于在 SOC 日常工作中形成系统化视角。
七、参考
https://www.jianshu.com/p/f3afb802e959
https://zhuanlan.zhihu.com/p/1946208432521721241
系列索引(规划)
- 01 - Windows 安全运营基础(一):系统进程与安全(本文)
- 02 - (待定:服务与持久化)
- 03 - (待定:登录与认证)
- 04 - (待定:驱动与内核)