LogonSessions 学习笔记(9.8):会话/登录令牌全景审计与取证
适用场景:运维、安全分析、应急响应、数字取证。常见配合工具包括 PsLoggedOn(用于查看当前用户登录状态)、PsExec(远程执行命令获取数据),以及 Windows 安全事件日志中的 4624(登录成功)、4634(会话注销)、4647(用户主动登出)等事件。
1. LogonSessions 是什么?能获取哪些信息?
LogonSessions 是 Sysinternals 套件中的一个轻量级命令行取证工具,主要用于列出系统中所有当前处于活动状态的“登录会话”(Logon Session)。通过可选参数,还可以展示每个会话下关联运行的具体进程列表。
其核心功能可通过以下命令快速调用:
logonsessions [-c[t]] [-p]
其中:
:输出为 CSV 格式,便于后续导入分析;-c
:使用制表符分隔字段,适合文本处理;-ct
:显示各会话所归属的进程清单。-p
该工具提供的关键信息包括:
- 用户名 / 域名 / UPN
- 认证方式(如 Kerberos、NTLM、Negotiate)
- 登录类型(Interactive、RemoteInteractive、Service 等)
- 会话 ID(Session ID)
- SID(安全标识符)
- 登录时间(Logon Time)
- 认证服务器(Logon Server)
- 所属 DNS 域
结合 -p 参数时,还能看到挂靠在特定会话下的完整进程树。
总结来说,它回答了两个核心问题:谁 在这台机器上拥有有效的登录凭证,是以何种方式登录的,以及这些会话目前正支撑着哪些正在运行的进程。
2. 典型应用场景(从故障排查到安全检测)
- RDP 或跳板机审计:区分
(本地交互)和Interactive
(远程终端服务),快速识别是否存在异常长期驻留的远程连接。RemoteInteractive - 服务账户滥用检测:检查是否有本应仅用于后台服务的账号出现在
类型会话中,表明可能存在被误当作普通用户登录的风险。Service - 横向移动线索发现:若观察到大量
类型会话突然出现,且来源 IP 或主机可疑,可能提示攻击者利用票据传递或哈希传递进行内网渗透。Network - 持久化后门排查:某个会话长时间存在,并挂载有非常驻进程(参考
输出),可能是隐藏的恶意程序在维持访问权限。-p - S4U 或 RunAs (netonly) 活动识别:当出现特殊认证路径或缓存凭据痕迹(例如
所示情况),建议进一步审查对应的 4624 安全日志以确认上下文。NewCredentials
3. 关键输出字段解析(重点关注项)
理解输出结果中的关键字段是有效分析的前提:
- User / Domain / UPN / Logon Server / DNS Domain:明确登录主体的身份、所属域环境及负责认证的域控(DC)。
- Auth Package:判断使用的是 Kerberos 还是 NTLM 认证机制。频繁出现 NTLM 可能暗示跨域信任问题、配置缺陷或潜在的降级攻击风险。
- Logon Type:无需记忆数字代码,直接根据名称判断用途:
:本地物理或控制台登录Interactive
:RDP 或终端服务远程登录RemoteInteractive
:服务账户自动启动登录Service
:计划任务或批处理作业触发Batch
:网络共享资源访问Network
:屏幕解锁操作Unlock
- Session ID:可用于与任务管理器或其他图形化工具中的会话进行映射比对,尤其方便与
对齐分析。quser - Logon Time:帮助识别“长驻会话”或“短时间内高频登录”的异常行为模式。
- SID:在权限排查中可用于验证 ACL 设置是否正确绑定到预期身份。
4. 常用命令示例(可直接复制使用)
4.1 本机人工巡检模式
logonsessions -p
适用于现场排查,直观展示所有活跃登录会话及其关联进程,重点筛查是否存在:
- 未知账户登录
- 非预期登录类型
- 长期未注销的会话
4.2 批量机器脚本化巡检
logonsessions -c > C:\Temp\logonsessions_local.csv
将输出保存为 CSV 文件,便于在 PowerShell 或 Excel 中进行集中过滤、对比和趋势分析,适合大规模资产基线核查。
4.3 远程主机采集(借助 PsExec 实现)
psexec \\HOST -s -accepteula cmd /c "logonsessions -ct > C:\Temp\ls.tsv"
psexec \\HOST cmd /c type C:\Temp\ls.tsv
由于 LogonSessions 本身不支持远程执行参数,推荐通过 PsExec 工具远程下发命令并收集结果,确保取证过程的一致性和可靠性。
5. 结果分析中的五大“红旗”信号
- 在
(远程交互)类型中发现陌生域用户或本地账户登录,尤其是无排期维护时段出现的连接。RemoteInteractive - 服务账户出现在
(即非服务类登录类型)中,说明已被用于交互式登录,存在权限滥用风险。Interactive/RemoteInteractive - NTLM 认证占比显著偏高,尤其是在本应使用 Kerberos 的环境中,可能反映网络策略问题或遭受横向移动攻击。
- 同一用户存在多个长期活跃会话,并挂载有可疑进程(结合
查看进程图谱),需警惕凭据窃取或会话劫持。-p - 登录时间异常久远,形成“僵尸会话”,可能是用户忘记登出或被恶意保持会话状态。
6. 与其他安全证据的关联拼图
- 与 PsLoggedOn 配合使用:PsLoggedOn 主要揭示“当前谁在登录”(特别是交互式和资源访问),而 LogonSessions 提供更全面的维度——包括非交互式会话以及精确的进程归属关系。
- 与安全日志 4624/4634/4647 联动分析:
- 4624:登录创建事件,包含详细源 IP 和认证方法;
- 4634:会话终止;
- 4647:用户主动登出。
7. 自动化处理示例(PowerShell 解析 CSV 输出)
将批量采集的 CSV 数据导入 PowerShell,可实现自动化筛选与告警:
# 示例:读取 LogonSessions CSV 并筛选远程会话
Import-Csv .\logons.csv | Where-Object { $_.'Logon Type' -eq 'RemoteInteractive' } | Select User, Domain, 'Logon Time', 'Auth Package'
结合条件判断、导出报表或生成可视化图表,提升大规模环境下的分析效率。
8. 常见问题解答(FAQ)
- Q:为什么某些服务进程没有显示在对应会话下?
A:请确认是否使用了-p参数启用进程枚举功能。此外,部分高权限保护进程可能因 UAC 或 PPL 限制无法被枚举。 - Q:能否检测已注销但令牌仍残留的会话?
A:不能。LogonSessions 仅展示当前活跃的登录会话,不包含已结束但令牌未完全清理的情况,此类需依赖内存取证工具进一步分析。 - Q:输出中为何会出现空用户名或 SYSTEM 账户?
A:SYSTEM 属于系统内置账户,常用于服务登录;空用户名通常对应 Network Service 或匿名会话,需结合上下文判断是否正常。
9. 最佳实践清单
- 定期执行本地与远程主机的登录会话基线采集;
- 将输出结果标准化为 CSV 格式,纳入自动化监控流程;
- 结合时间维度建立“正常行为模型”,识别偏离模式;
- 对敏感主机(如域控、跳板机)实施高频轮询;
- 发现异常后立即联动其他日志源交叉验证;
- 避免单独依赖单一工具,应与事件日志、EDR 数据综合研判。
10. 快速查阅表
| 登录类型 | 含义 | 典型场景 |
|---|---|---|
|
Interactive | 本地键盘鼠标登录 |
|
RemoteInteractive | RDP、终端服务远程登录 |
|
Service | 服务启动时自动登录 |
|
Batch | 计划任务执行 |
|
Network | 访问共享文件夹、打印机等 |
|
Unlock | 解锁锁定的工作站 |
事件日志提供了时间序列线索,而 LogonSessions 则展示当前的“
此刻状态”。
结合 Procmon、Autoruns 和 Sysmon 使用:
在定位到具体登录会话后,可进一步追溯相关进程行为及持久化项的来源,实现更深入的分析。
7)PowerShell 自动化处理示例(解析 CSV 输出)
# 首先在目标机器上执行命令生成 CSV 文件:
logonsessions -c > C:\Temp\ls.csv
$rows = Import-Csv C:\Temp\ls.csv
# 筛选远程交互式登录会话,并排除已知运维账户
$whitelist = @('CORP\svc_ops','CORP\jumpuser')
$alert = $rows | Where-Object {
$_.'Logon Type' -eq 'RemoteInteractive' -and
($_.User -ne $null) -and
($whitelist -notcontains ("$($_.Domain)\$($_.User)"))
}
# 输出关键字段并格式化显示
$alert | Select-Object 'User','Domain','Logon Type','Session','Logon Time','Auth Package' |
Format-Table -Auto
8)常见问题解答(FAQ)
Q:为何仅登录一次却看到多个会话?
A:除用户登录外,系统服务、网络共享访问等操作也会创建会话。例如:
Network
此类情况属于正常现象;判断重点应放在会话的类型与来源是否合理。
Q:如何将输出接入 SIEM 系统?
A:可通过以下方式:
-c
或
-ct
统一将数据落地至指定路径,由采集代理上传。由于字段结构固定,SIEM 解析成本较低。(参考:learn.microsoft.com)
Q:是否支持直接远程查询?
A:该工具本身不提供远程执行参数;推荐使用 PsExec 远程下发命令并回传结果。
9)最佳实践建议清单
- 建立固定基线:定期采集会话快照(建议分别在工作时间和非工作时间各采集一次),通过“增量比对”发现异常变化。
- 设置白名单机制:对常驻的服务账号、跳板机专用账户进行登记列白,有效减少误报干扰。
- 遵循最小权限原则:仅在必要主机上运行此工具,输出结果按需分发,控制访问范围。
- 确保操作留痕合规:所有输出文件归档保存,应急响应或配置变更操作需与审计日志关联,满足合规要求。
10)快速查阅指引表
| 应用场景 | 对应命令 | 用途说明 |
|---|---|---|
| 快速巡检 | |
查看当前有哪些用户、以何种方式登录至主机,并观察其关联的进程信息 |
| 导出后深入分析 | |
将结果导入 Excel 或 PowerShell 中进行后续处理和筛选 |
| 远程取证(无代理环境) | |
适用于无法部署代理的场景,实现远程拉取会话数据 |
| 仅关注远程交互式会话 | logonsessions -p | findstr RemoteInteractive | 过滤输出,只保留远程登录记录 |
更多详细参数说明与官方示例,请参阅:
Microsoft Learn – LogonSessions v1.41(learn.microsoft.com)
下一篇预告(9.9):
SDelete——深入剖析安全擦除机制,解读 TRIM 与回收站背后的隐患(涵盖 SSD 场景及合规注意事项)。


雷达卡


京公网安备 11010802022788号







