全部版块 我的主页
论坛 数据科学与人工智能 IT基础
55 0
2025-12-01

LogonSessions 学习笔记(9.8):会话/登录令牌全景审计与取证

适用场景:运维、安全分析、应急响应、数字取证。常见配合工具包括 PsLoggedOn(用于查看当前用户登录状态)、PsExec(远程执行命令获取数据),以及 Windows 安全事件日志中的 4624(登录成功)、4634(会话注销)、4647(用户主动登出)等事件。

1. LogonSessions 是什么?能获取哪些信息?

LogonSessions 是 Sysinternals 套件中的一个轻量级命令行取证工具,主要用于列出系统中所有当前处于活动状态的“登录会话”(Logon Session)。通过可选参数,还可以展示每个会话下关联运行的具体进程列表。

其核心功能可通过以下命令快速调用:

logonsessions [-c[t]] [-p]

其中:

  • -c
    :输出为 CSV 格式,便于后续导入分析;
  • -ct
    :使用制表符分隔字段,适合文本处理;
  • -p
    :显示各会话所归属的进程清单。

该工具提供的关键信息包括:

  • 用户名 / 域名 / UPN
  • 认证方式(如 Kerberos、NTLM、Negotiate)
  • 登录类型(Interactive、RemoteInteractive、Service 等)
  • 会话 ID(Session ID)
  • SID(安全标识符)
  • 登录时间(Logon Time)
  • 认证服务器(Logon Server)
  • 所属 DNS 域

结合 -p 参数时,还能看到挂靠在特定会话下的完整进程树。

总结来说,它回答了两个核心问题: 在这台机器上拥有有效的登录凭证,是以何种方式登录的,以及这些会话目前正支撑着哪些正在运行的进程

2. 典型应用场景(从故障排查到安全检测)

  • RDP 或跳板机审计:区分
    Interactive
    (本地交互)和
    RemoteInteractive
    (远程终端服务),快速识别是否存在异常长期驻留的远程连接。
  • 服务账户滥用检测:检查是否有本应仅用于后台服务的账号出现在
    Service
    类型会话中,表明可能存在被误当作普通用户登录的风险。
  • 横向移动线索发现:若观察到大量
    Network
    类型会话突然出现,且来源 IP 或主机可疑,可能提示攻击者利用票据传递或哈希传递进行内网渗透。
  • 持久化后门排查:某个会话长时间存在,并挂载有非常驻进程(参考
    -p
    输出),可能是隐藏的恶意程序在维持访问权限。
  • S4U 或 RunAs (netonly) 活动识别:当出现特殊认证路径或缓存凭据痕迹(例如
    NewCredentials
    所示情况),建议进一步审查对应的 4624 安全日志以确认上下文。

3. 关键输出字段解析(重点关注项)

理解输出结果中的关键字段是有效分析的前提:

  • User / Domain / UPN / Logon Server / DNS Domain:明确登录主体的身份、所属域环境及负责认证的域控(DC)。
  • Auth Package:判断使用的是 Kerberos 还是 NTLM 认证机制。频繁出现 NTLM 可能暗示跨域信任问题、配置缺陷或潜在的降级攻击风险。
  • Logon Type:无需记忆数字代码,直接根据名称判断用途:
    • Interactive
      :本地物理或控制台登录
    • RemoteInteractive
      :RDP 或终端服务远程登录
    • 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. 结果分析中的五大“红旗”信号

  1. RemoteInteractive
    (远程交互)类型中发现陌生域用户或本地账户登录,尤其是无排期维护时段出现的连接。
  2. 服务账户出现在
    Interactive/RemoteInteractive
    (即非服务类登录类型)中,说明已被用于交互式登录,存在权限滥用风险。
  3. NTLM 认证占比显著偏高,尤其是在本应使用 Kerberos 的环境中,可能反映网络策略问题或遭受横向移动攻击。
  4. 同一用户存在多个长期活跃会话,并挂载有可疑进程(结合
    -p
    查看进程图谱),需警惕凭据窃取或会话劫持。
  5. 登录时间异常久远,形成“僵尸会话”,可能是用户忘记登出或被恶意保持会话状态。

6. 与其他安全证据的关联拼图

  • 与 PsLoggedOn 配合使用:PsLoggedOn 主要揭示“当前谁在登录”(特别是交互式和资源访问),而 LogonSessions 提供更全面的维度——包括非交互式会话以及精确的进程归属关系。
  • 与安全日志 4624/4634/4647 联动分析:
    • 4624:登录创建事件,包含详细源 IP 和认证方法;
    • 4634:会话终止;
    • 4647:用户主动登出。
    将 LogonSessions 的实时快照与历史日志结合,可以构建完整的登录生命周期视图,增强事件还原能力。

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
Interactive 本地键盘鼠标登录
RemoteInteractive
RemoteInteractive RDP、终端服务远程登录
Service
Service 服务启动时自动登录
Batch
Batch 计划任务执行
Network
Network 访问共享文件夹、打印机等
Unlock
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)快速查阅指引表

应用场景 对应命令 用途说明
快速巡检
logonsessions -p
查看当前有哪些用户、以何种方式登录至主机,并观察其关联的进程信息
导出后深入分析
logonsessions -c > ls.csv
将结果导入 Excel 或 PowerShell 中进行后续处理和筛选
远程取证(无代理环境)
psexec \\HOST cmd /c "logonsessions -ct > C:\Temp\ls.tsv"
适用于无法部署代理的场景,实现远程拉取会话数据
仅关注远程交互式会话 logonsessions -p | findstr RemoteInteractive 过滤输出,只保留远程登录记录

更多详细参数说明与官方示例,请参阅:
Microsoft Learn – LogonSessions v1.41(learn.microsoft.com)

下一篇预告(9.9):
SDelete——深入剖析安全擦除机制,解读 TRIM 与回收站背后的隐患(涵盖 SSD 场景及合规注意事项)。

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群