生产环境中,RDP爆破告警是最常见的安全事件。其典型日志特征为:Security日志中短时间内涌现大量 Event ID 4625 (登录失败),伴随特定外网IP的持续探测;期间夹杂零星陌生的 Event ID 4624(登录成功)。
面对此类告警,一线运维最常见的错误处置是:直接在边界防火墙封禁源IP,随后关闭工单。这种"只封IP不查痕迹"的做法是致命的。外网爆破往往只是敲门,那几条成功的4624意味着攻击者已获取初始立足点(Initial Access),若不及时阻断,内网横向移动(Lateral Movement)与权限维持可能早已展开。
本文聚焦RDP入侵与内网横向排查,提供可直接复用的Windows原生排查命令与核心事件ID解析。
一、 现场应急处置"三条红线"
在介入排查前,必须遵守取证与止损原则,避免破坏现场或触发攻击者的对抗机制:
- 严禁清除或覆盖日志:攻击者提权后通常会执行日志清理(触发 Event ID 1102)。若发现日志断层或被清空,说明系统已被深度控制,需立即升级响应级别。
- 严禁盲目重启主机:重启将导致内存中的网络连接状态、无文件落地(Fileless)恶意进程、以及未持久化的解密密钥永久丢失。
- 严禁直接关机或拔电:优先采用网络层隔离(如调整安全组、交换机端口隔离),保持主机开机状态以进行内存取证和日志提取。直接关机可能触发攻击者预设的"死手"勒索脚本。
二、 核心排查流程与Windows原生命令
确认主机存在失陷风险后,按以下闭环执行排查:登录痕迹核查 → 横向移动溯源 → 持久化后门排查 → 网络外联分析。
1. 登录痕迹核查:定位突破点
不要依赖GUI事件查看器的默认视图,直接使用PowerShell提取关键字段,提高排查效率。
powershell
# 提取最近200条登录成功(4624)和失败(4625)记录,聚焦登录类型、IP和账号
Get-WinEvent -FilterHashtable @{LogName='Security'; ID=4624,4625} -MaxEvents 200 |
Select-Object TimeCreated, Id,
@{Name='LogonType';Expression={$_.Properties[8].Value}},
@{Name='IpAddress';Expression={$_.Properties[18].Value}},
@{Name='TargetUserName';Expression={$_.Properties[5].Value}} |
Format-Table -AutoSize
生产风险提示:若日志量极大,建议将 -MaxEvents 调大,或通过 Export-Csv 导出后使用Excel/SIEM工具过滤。
2. 横向移动溯源:定位扩散路径(核心难点)
如何判断本机是否被用作跳板攻击了内网其他资产?需排查本机主动发起的连接与凭据使用记录。
排查RDP客户端历史记录(本机RDP连接过谁):
攻击者若使用本机 mstsc 连接内网其他主机,注册表会留存目标IP。
cmd
reg query "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers"
排查SMB/IPC横向连接痕迹:
cmd
# 查看当前活跃的445/135端口连接
netstat -ano | findstr ":445"
netstat -ano | findstr ":135"
排查域内横向工具执行痕迹(如PsExec, WMI):
powershell
# 检索4688事件,过滤常见的横向移动命令行特征
Get-WinEvent -FilterHashtable @{LogName='Security'; ID=4688} -MaxEvents 500 |
Where-Object {$_.Message -match 'psexec|wmic|powershell.*-enc|cmd.*\/c'} |
Select-Object TimeCreated, Message | Out-GridView
3. 持久化后门排查:定位控制面
攻击者建立立足点后,必然建立持久化机制。
排查异常账号(含隐藏账号):
cmd
# 常规账号查看
net user
# 排查注册表中以$结尾的隐藏克隆账号(需Administrator权限)
reg query "HKLM\SAM\SAM\Domains\Account\Users\Names"
排查计划任务(最常见的自启方式):
powershell
# 列出所有未禁用的计划任务,重点检查Actions中的执行路径
Get-ScheduledTask | Where-Object {$_.State -ne 'Disabled'} |
Select-Object TaskName, TaskPath, State, @{Name='Action';Expression={$_.Actions.Execute}} | Format-List
排查开机自启项:
powershell
Get-CimInstance Win32_StartupCommand | Select-Object Name, Command, Location, User
排查共享文件敏感访问记录:
powershell
# 检索5140/5145事件,查看是否有异常账号访问了敏感共享目录(如C$, IPC$)
Get-WinEvent -FilterHashtable @{LogName='Security'; ID=5140,5145} -MaxEvents 100 |
Select-Object TimeCreated, @{Name='ShareName';Expression={$_.Properties[1].Value}}, @{Name='IpAddress';Expression={$_.Properties[6].Value}} | Format-Table
三、 核心事件ID深度解析
排查日志不是看热闹,必须精准命中关键字段。
-
Event ID 4625(登录失败) :
重点提取
Failure Reason和Status字段。0xC0000064:用户名不存在(攻击者在盲猜用户名)。0xC000006A:用户名存在,密码错误(定向爆破,该账号真实存在)。0xC0000234:账户已被锁定(说明本地/域账户锁定策略已生效)。
-
Event ID 4624(登录成功) :
核心关注
Logon Type(登录类型)和IpAddress。Type 2:交互式登录(本地键盘,通常为正常运维)。Type 3:网络登录(SMB/IPC)。高危。若源IP为内网其他机器,极大概率为横向移动。Type 10:远程交互式登录(RDP)。高危。若源IP为外网,说明RDP爆破已成功突破。
-
Event ID 4776(NTLM凭据验证) :
用于追踪本地账户的密码验证尝试。错误代码
0x0为成功,0xC000006A为密码错误。若发现大量针对非标准服务账号的4776成功记录,需警惕凭据窃取。 -
Event ID 4688(进程创建) :
捕获恶意执行行为的核心。前提 :必须在组策略(审核策略)中开启"审核进程创建"并勾选"包含命令行"。
重点比对
Creator Process Name(父进程)与Command Line。若父进程为explorer.exe或cmd.exe,且命令行包含DownloadString、Bypass、Base64编码特征,可确认为恶意载荷执行。
四、 溯源入侵入口:常见突破面
完成主机排查后,需复盘攻击面,通常由以下配置缺陷导致:
- 3389端口公网暴露:未配置安全组或防火墙策略,端口直接对全网开放,成为自动化扫描器的首要目标。
- 弱口令/默认口令 :存在
admin/123456或与服务名同名的弱密码,在常见爆破字典中存活时间不超过数分钟。 - 缺乏网络微隔离:外网DMZ区服务器可直接访问内网核心网段的 445、135、3389 端口,一旦DMZ失陷,内网门户大开。
- 办公网终端沦陷:外网边界无懈可击,但攻击者通过钓鱼邮件控制办公网PC,以此为跳板直接RDP连接内网服务器。
五、 落地加固方案
排查与溯源的最终目的是收敛攻击面。仅修改密码无法解决根本问题,需执行以下加固措施:
- 网络层访问控制(最有效) :
修改RDP默认端口(仅作隐蔽)。核心动作:在云安全组或主机防火墙上配置严格的IP白名单,仅允许堡垒机或特定运维终端IP访问3389端口。 - 强制账户锁定策略 :
路径:gpedit.msc-> 计算机配置 -> Windows设置 -> 安全设置 -> 账户策略 -> 账户锁定策略。
建议配置:账户锁定阈值:5次无效登录,账户锁定时间:30分钟。此举可直接阻断99%的自动化爆破。 - 禁用空密码与强化复杂度 :
启用"账户: 使用空密码的本地账户只允许进行控制台登录"。强制执行密码复杂度要求(长度>10,包含大小写、数字、特殊字符)。 - 内网微隔离(东西向流量控制) :
严格限制服务器之间的横向通信。非业务必需的服务器之间,禁止开放 445 (SMB)、135 (RPC)、3389 (RDP) 等高危端口。
六、 运维高频踩坑总结
- 只封IP,不查痕迹:边界封禁外网IP后认为风险解除,忽略了攻击者可能已通过那几次成功的4624进入内网,导致"外紧内松",最终数据被窃。
- 只改密码,不做加固:将密码修改为复杂密码,但3389端口依然对全网暴露,攻击者只需更换字典即可继续尝试,且暴露面未减少。
- 忽视内网横向风险:认为失陷的仅是边缘测试机或Web服务器,无核心数据,从而放弃深入排查。攻击者恰恰利用此类低防护资产作为跳板,直捣域控或核心数据库。
安全运维的本质是消除不确定性。将上述排查命令固化为标准操作程序(SOP),将加固策略落实为基线配置,是避免重复踩坑的唯一路径。
技术交流 :
在实际生产环境中,针对Event ID 4688的命令行审计,大家通常使用哪些SIEM规则或正则表达式来降低误报率?欢迎在评论区分享你的实战过滤规则,共同完善排查手册。