首页/安全/应急响应速查/Winlogon Userinit/Shell 劫持排查

Winlogon Userinit/Shell 劫持排查

Winlogon 键的 Userinit 与 Shell 决定用户登录时执行什么;正常值极简单,一旦被追加额外路径,每次登录都会拉起攻击者程序。

应急响应速查安全更新于 2026-10-13

Winlogon 键控制登录动作

Winlogon 键决定交互式登录时执行什么:Userinit 指定登录初始化程序(正常值为 C:\Windows\system32\userinit.exe,),Shell 指定用户外壳(正常为 explorer.exe),Taskman 与 AppSetup 也可能被改动。值被追加路径后,每次用户登录都会拉起攻击者程序。

判定要点

要看的是「精确比对」而不是包含匹配。恶意值常写成 userinit.exe,C:\Users\Public\x.exe,只看开头出现了 userinit.exe 就放过,是最常见的漏检原因。32 位视图下的 Wow6432Node 分支要单独再看一遍。

基本信息

注册表路径HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
正常 UserinitC:\Windows\system32\userinit.exe,
正常 Shellexplorer.exe
可劫持项Userinit、Shell、Taskman、AppSetup
32 位视图HKLM\SOFTWARE\WOW6432Node 下的同名键
权限要求读取普通用户即可,修改需管理员

典型使用场景

  • 排查登录后立刻出现的异常进程
  • 分析杀软或任务管理器被启动后秒退的现象
  • 检查远程桌面登录即触发后门的情形
  • 与其他自启项一起做持久化集中清点
  • 清除后复验,确认注册表值已恢复默认

检查 Winlogon 关键值

检查 Winlogon 关键值
$k = 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon'
Get-ItemProperty $k | Select-Object Userinit, Shell, Taskman, AppSetup
Get-ItemProperty $k -Name Userinit | Select-Object -ExpandProperty Userinit
Get-ItemProperty 'HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows NT\CurrentVersion\Winlogon' -ErrorAction SilentlyContinue | Select-Object Userinit, Shell
reg query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v Userinit

输出逐列读法

字段含义正常/异常
Userinit登录初始化程序正常只有 userinit.exe 加一个逗号,多出路径即异常
Shell用户外壳程序正常为 explorer.exe,出现其他程序需逐个解释
Taskman任务管理器替代程序该项非空本身就是强信号
Wow6432Node 分支32 位视图同名键主键干净不代表这里干净
逗号后的追加项是主要藏身处:判定时按逗号切分逐段核对,而不是用字符串包含判断,并确认每个路径对应的文件是否存在、由谁创建。
修改 Winlogon 值属于高危操作:先用 reg export 导出该分支留档,改回默认后再复验并重新登录测试。

导出留档并复验

导出留档并复验
reg export "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" C:\evidence\winlogon.reg /y
Copy-Item 'C:\Users\Public\x.exe' C:\evidence\ -ErrorAction SilentlyContinue
Get-ItemProperty $k | Select-Object Userinit, Shell   # 修复后再次核对

同一类值还要看这些

  • Winlogon 下的 LegalNoticeCaption 与 LegalNoticeText,被用于显示勒索通告
  • AppSetup 与 VmApplet,位置隐蔽但同样会被加载
  • HKCU 下 Shell 用户级覆盖,影响单用户登录

判定时的时间线索

  • 键的 LastWriteTime 与入侵时间窗对照
  • 被追加程序的文件创建时间与哈希比对
  • 确认该程序是否真的存在于所写路径
  • 检查是否有配套的 WMI 订阅或登录脚本执行同一动作

易错点

  • 用包含匹配判定:只看是否出现 userinit.exe,会漏掉逗号后的追加程序
  • 忽略 Wow6432Node:32 位视图下可能另有一份被改的配置
  • 修改前不导出留档:原始值与攻击者写入内容都无法回溯
  • 只清 Userinit 不看 Shell 与 Taskman:同键下还有多个可劫持项
  • 清完不重新登录验证:部分改动需重新登录才生效,容易误判已修复

数据来源与参考

  • Microsoft Learn:Winlogon registry entries
  • MITRE ATT&CK T1547.004 Winlogon Helper DLL

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌