4624 记录了什么
Windows 安全日志里的事件 ID 4624 表示一次登录成功,是重建登录来源与渠道的核心条目。它不只有账号和时间,还写明登录类型(交互、网络、远程桌面等)、登录进程、来源 IP 与端口、认证包,较新系统还带发起登录的进程路径。单看一条意义有限,把同一账号的多条 4624 按时间排列,就能看出访问路径是从本机、内网共享还是 RDP 进来的。
基本信息
| 日志位置 | 事件查看器 → Windows 日志 → 安全;默认路径 %SystemRoot%\System32\winevt\Logs\Security.evtx |
|---|---|
| 查看权限 | 需要管理员权限(安全日志默认仅管理员可读) |
| 关键字段 | TargetUserName、LogonType、IpAddress/IpPort、LogonProcessName、ProcessName |
| 配套事件 | 4625 失败、4672 特权分配、4648 显式凭据、4778/4779 会话重连与断开 |
| 日志容量 | 默认 Security.evtx 大小有限,事件会被覆盖,需要提前导出或加大配额 |
| 采集方式 | Get-WinEvent 导出、wevtutil epl 导出 evtx 文件、或镜像中直接取日志文件 |
典型使用场景
- 确认某账号的登录渠道:本机交互、网络共享还是远程桌面
- 按来源 IP 聚合,找出非预期的访问来源
- 区分「服务账号正常登录」与「被用于交互式登录」
- 与 4625 配对,判断爆破是否最终得手
- 核对账号被用于登录的时间是否落在入侵窗口内
- 为横向移动分析提供登录类型与来源主机证据
检索与取值
检索与取值
# 取最近 50 条登录成功事件,只打印时间与关键字段
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4624} -MaxEvents 50 |
ForEach-Object {
$x = [xml]$_.ToXml()
$d = @{}; $x.Event.EventData.Data | ForEach-Object { $d[$_.Name] = $_['#text'] }
[pscustomobject]@{ Time=$_.TimeCreated; User=$d['TargetUserName']; Type=$d['LogonType']; IP=$d['IpAddress']; Proc=$d['ProcessName'] }
}
# 只看远程桌面(类型 10)的登录
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4624} -MaxEvents 500 |
Where-Object { $_.Message -match 'Logon Type:\s+10' } | Select-Object -First 10 TimeCreated, Message
# 导出原始 evtx 供离线分析
wevtutil epl Security C:\evidence\Security.evtx关键字段逐项读法
| 字段 | 含义 | 判读要点 |
|---|---|---|
| TargetUserName | 被登录的账号 | 以 $ 结尾多为机器账号,排查时先过滤掉 |
| LogonType | 登录渠道 | 2 交互、3 网络、5 服务、10 远程桌面,判读差异极大 |
| IpAddress/IpPort | 来源地址与端口 | 本机回环 127.0.0.1 与 ::1 属常见,不是外部来源 |
| LogonProcessName | 执行认证的组件 | User32 多为交互登录,NtLmSsp/Advapi 常见于网络与服务登录 |
| ProcessName | 发起登录的进程路径 | 较新系统才有;出现异常路径值得追查 |
| WorkstationName | 来源计算机名 | 写短横线表示不可用,此时要靠 IP 判断 |
空 IP 或以短横线显示的登录,多为本地会话、系统服务或缓存凭据登录,先按登录类型归类再逐类筛查,比逐条看效率高得多。
安全日志默认容量有限且滚动覆盖最快。发现异常后应尽快导出 Security.evtx,并确认审计策略里登录成功与失败都已开启,否则部分渠道根本没有记录。
从磁盘镜像里取日志文件时,可用离线工具解析 evtx,避免在原始系统上反复查询产生新的日志条目。