首页/系统/Windows 运维速查/场景:谁最近登录过这台机器

场景:谁最近登录过这台机器

先把 4624 按用户聚合成“最近登录榜”,再对可疑账号看类型与来源 IP:服务器非交互登录多,注意类型区分。

Windows 运维速查系统更新于 2026-10-13

谁最近登录过这台机器是什么

这个场景要回答的是一个常见问题:这台服务器最近有谁登录过。可用的证据是安全日志里的 4624 登录成功事件,按目标用户名聚合就能得到“最近登录榜”。难点在于过滤:机器账户(以 $ 结尾)、SYSTEM、NETWORK SERVICE 这些系统身份会产生海量记录,不过滤的话榜单上全是不会被追责的名字。

基本信息

数据来源安全日志中的 4624 登录成功事件
聚合维度按 TargetUserName 计数并倒序
过滤要点排除 $ 结尾的机器账户与系统内置账户
关键补充LogonType 区分交互登录与网络登录
前置条件“审核登录”子类别已启用,否则没有事件
日志滚动安全日志容量有限,久远记录可能已被覆盖

排查步骤

  • 确认有数据:先确认审核登录已开启,安全日志里有 4624
  • 按用户聚合:统计时间窗内每个账号的登录次数
  • 排除噪声:过滤机器账户与系统账户,得到人类账号清单
  • 看类型:区分交互、远程交互、网络、批处理登录
  • 看来源:结合源 IP 与工作站名判断登录来自哪里
  • 交叉验证:对可疑账号再看 4634 注销与 4672 特权分配

常用示例

常用示例
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4624; StartTime=(Get-Date).AddDays(-7)} | Where-Object { $_.Properties[5].Value -notlike '*$' -and $_.Properties[5].Value -notin 'SYSTEM','NETWORK SERVICE','LOCAL SERVICE' } | Group-Object { $_.Properties[5].Value } | Sort-Object Count -Descending | Select-Object Count, Name -First 15
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4624; StartTime=(Get-Date).AddDays(-2)} | Select-Object TimeCreated, @{n='账号';e={$_.Properties[5].Value}}, @{n='登录类型';e={$_.Properties[8].Value}}, @{n='来源IP';e={$_.Properties[18].Value}} | Format-Table -AutoSize
wevtutil gl Security       # 看安全日志容量与是否覆盖,评估可回溯时间

LogonType 与含义

类型值含义是否等于有人在机器前
2交互式控制台登录是
3网络登录(共享、SMB)否
4批处理(计划任务)否
5服务启动否
7解锁工作站是,需看 4800 配合
10远程交互(RDP)是
用户属性里的“最近登录时间”在多域控环境下可能不准确(字段不一定在每个域控上及时复制),要作为证据请以安全日志 4624 为准。
同一账号在短时间内出现大量来自不同工作站的 4624,可能是凭据被用于横向移动的迹象,值得进一步查 4648 显式凭据登录与来源 IP 分布,必要时先冻结该账号。

易错点

  • 把类型 3 的网络登录当成“人坐在机器前”,共享访问与服务调用都会被记成登录,结论会严重高估
  • 没有排除 $ 结尾的机器账户,榜单上全是计算机名,人工审查无从下手
  • 默认安全日志容量偏小,7 天前的记录可能早已滚掉,做审计前先确认保留窗口
  • 只在一台域控上查安全日志,多域控环境下会漏掉部分登录记录

数据来源与参考

  • Microsoft Learn:4624 事件分析
  • Microsoft Learn:登录审计

相关工具

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