登录类型指明渠道
4624 与 4625 事件里的 Logon Type 字段说明这次登录是通过什么渠道发生的,是判断「登录来自远程桌面、网络共享还是本机键盘」的关键。类型 2 为交互式,3 为网络(共享访问、IIS 等),5 为服务,9 为新凭据,10 为远程桌面,11 为缓存凭据。同一账号的不同类型登录混在一起看,才能区分人工操作与服务行为;只看账号与时间,容易把服务账号的正常行为当作人工入侵。
基本信息
| 字段位置 | 4624/4625 事件的 Logon Type(也可在事件详情中按名称查看) |
|---|---|
| 常见取值 | 2 交互、3 网络、4 批处理、5 服务、7 解锁、8 明文网络、9 新凭据、10 远程桌面、11 缓存交互 |
| 出现场合 | 登录成功(4624)与登录失败(4625)都带该字段 |
| 配套事件 | 远程桌面会话建立与断开、共享访问事件、凭据验证事件 |
| 判读方式 | 先按类型归类,再在类别内按账号与来源筛选 |
| 环境差异 | 不同 Windows 版本字段顺序可能不同,按字段名取值 |
典型使用场景
- 确认某次成功登录来自远程桌面还是本机交互
- 区分网络登录(类型 3)是业务访问还是凭据尝试
- 识别显式凭据使用(类型 9):runas、cmdkey 等操作
- 识别缓存凭据登录(类型 11):域账号在离线状态下的登录
- 排查服务账号是否被用于交互式登录(异常信号)
- 结合来源地址判断是否来自内网横向或外网直连
按类型筛选
按类型筛选
# 统计各类登录类型的数量,先看整体分布
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4624} -MaxEvents 1000 |
ForEach-Object { ([xml]$_.ToXml()).Event.EventData.Data |
Where-Object { $_.Name -eq 'LogonType' } | Select-Object -ExpandProperty '#text' } |
Group-Object | Sort-Object Count -Descending
# 只看远程桌面(类型 10)的登录
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4624} -MaxEvents 500 |
Where-Object { $_.Message -match 'Logon Type:\s+10' } | Select-Object -First 10 TimeCreated
# 只看显式凭据(类型 9),常与横向操作相关
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4624} -MaxEvents 500 |
Where-Object { $_.Message -match 'Logon Type:\s+9' } | Select-Object TimeCreated, Message登录类型对照
| 类型 | 含义 | 常见场景 |
|---|---|---|
| 2 | 交互式 | 本机键盘登录、控制台会话 |
| 3 | 网络 | 共享访问、SMB、IIS、远程凭据验证 |
| 4 | 批处理 | 计划任务等批处理账号登录 |
| 5 | 服务 | 服务启动时以服务账号登录 |
| 7 | 解锁 | 锁屏后解锁 |
| 8 | 明文网络 | 凭据以明文方式通过网络提交 |
| 9 | 新凭据 | runas、cmdkey 等显式凭据使用 |
| 10 | 远程桌面 | RDP 交互会话 |
| 11 | 缓存交互 | 使用缓存凭据登录(域不可达时) |
类型 3 数量庞大且不一定恶意:业务服务与文件共享都会产生。判断时要结合来源地址与账号,先建立正常基线再筛异常。
远程桌面的完整会话过程还要看会话建立与断开的专门事件(4778/4779 等),登录类型 10 只说明登录渠道,不能替代会话级证据。