Windows服务器日志里藏着一整套攻击痕迹和行为记录,但很多运维在排查时习惯直接打开事件查看器乱翻,效率低还容易漏掉关键证据。安全分析排查的核心不是“看日志”,而是先锁定时间窗口、账号、源IP、事件ID这四个维度,再交叉比对。比如服务器出现异常登录或提权,第一时间应该拉取安全日志中4624、4625、4672、4720、4732等事件,而不是从系统日志第一条开始翻。
先分清要查哪几类日志Windows服务器默认会记录应用程序、安全、系统、Setup、转发事件等日志,但安全分析主要聚焦在“安全”日志,其次是“系统”日志和“应用程序”日志。安全日志记录登录、权限变更、策略改动、对象访问等;系统日志记录服务启动停止、驱动加载、系统错误;应用程序日志记录各类软件运行状态。排查入侵或异常行为时,优先看安全日志,再用系统日志辅助判断服务异常和崩溃原因。
安全日志中必须掌握的关键事件ID登录相关:4624表示登录成功,4625表示登录失败,4634表示注销,4647表示用户启动的注销,4672表示分配了特殊权限。账号管理相关:4720创建用户,4722启用用户,4725禁用用户,4732将用户添加到本地管理员组,4740账户被锁定。策略和审计相关:4719修改审计策略,4739修改域策略。进程和服务相关:4688新进程创建,4697服务安装,7045服务安装(系统日志)。这些事件ID是排查的骨架,遇到异常先按这些ID过滤。
登录成功事件4624怎么分析4624事件里最关键的是登录类型和登录账号。登录类型2是本地键盘登录,3是网络登录(如共享文件夹、远程调用),10是远程交互登录(RDP),7是解锁,5是服务登录。如果看到某个普通账号在凌晨出现登录类型10,并且源IP来自陌生地址,基本可以判定RDP暴露且被爆破或撞库成功。查看4624事件时,重点看“新登录”下面的“安全ID”“账户名”“账户域”,以及“网络信息”里的“源网络地址”和“源端口”。很多攻击者登录成功后第一件事就是创建新账号或提权,所以4624之后紧跟4720、4732这类事件,基本就是攻击链。
登录失败事件4625的排查价值4625事件是发现暴力破解和账号枚举的直接证据。如果同一账号在短时间内出现大量4625,且源IP相同或集中在几个IP段,说明有人在爆破。如果失败账号名称是随机字符串或按字典顺序变化,说明是自动化工具。4625事件里“失败原因”字段也很关键,常见状态码0xC000006A表示用户名正确但密码错误,0xC0000064表示用户名不存在。通过状态码可以区分攻击者是在枚举账号还是定向爆破。排查时建议按“账户名”和“源网络地址”分组统计,快速找出被攻击的目标账号和攻击源。
提权和账号创建事件的关联分析攻击者进入服务器后,通常会创建后门账号或把现有账号加入管理员组。4720事件记录新用户创建,4732记录用户被添加到启用安全的本地组。排查时如果发现4720事件中的新账号名称具有迷惑性,比如“Support”“Admin1”“system_update”等,或者4732事件中一个普通业务账号突然被加入Administrators组,且操作时间在异常登录之后,基本可以确认服务器已被控制。还要注意4720事件里“使用者”字段,它显示是谁执行了创建操作。如果创建者是SYSTEM或某个服务账号,但业务上并不需要该操作,就要深入追查该服务是否被利用。
系统日志里的服务安装和异常关闭系统日志中7045事件记录服务安装。很多恶意程序会以服务方式持久化,比如远控木马、挖矿程序。排查时如果发现7045事件中服务名称随机、路径指向Temp目录或ProgramData下可疑文件夹,基本就是恶意服务。另外系统日志里的6008事件表示异常关机,6009表示开机。如果服务器在非维护时间出现异常重启,要结合6008前后的事件判断是系统崩溃、断电还是攻击者故意重启以加载恶意驱动。1074事件记录关机原因,也能辅助判断。
用PowerShell批量提取和过滤日志事件查看器适合快速查看,但批量分析必须用命令行。PowerShell的Get-WinEvent命令可以按时间、ID、关键字、账号等条件过滤。比如提取最近24小时所有4625登录失败事件并按源IP分组统计:
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4625; StartTime=(Get-Date).AddHours(-24)} |
Select-Object TimeCreated, @{N='User';E={$_.Properties[5].Value}}, @{N='SourceIP';E={$_.Properties[19].Value}} |
Group-Object SourceIP | Sort-Object Count -Descending
这段命令能快速看出哪些IP在爆破。再比如提取所有新用户创建事件:
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4720} |
Select-Object TimeCreated, @{N='NewUser';E={$_.Properties[0].Value}}, @{N='Actor';E={$_.Properties[4].Value}}
如果服务器日志量大,建议把结果导出为CSV再用Excel或脚本分析,避免直接在控制台刷屏。
RDP登录日志的专项排查RDP暴力破解是Windows服务器最常见的攻击方式。排查RDP相关日志时,重点看4625和4624事件中登录类型为10的记录。如果公网RDP端口直接暴露,日志里通常会有海量4625事件,源IP来自世界各地。此时除了分析日志,还要检查系统防火墙和RDP安全设置。在安全日志中,如果4625事件里“源网络地址”字段为空或显示为本地地址,可能是攻击者已经通过内网跳板进入,需要结合其他主机日志一起分析。另外Windows终端服务日志(在“应用程序和服务日志-Microsoft-Windows-TerminalServices-LocalSessionManager-Operational”里)会记录RDP会话的建立和断开,事件ID 21表示会话登录成功,25表示会话断开。这些日志能帮助还原攻击者的RDP会话时间线。
审计策略不开启等于没有日志很多服务器默认只记录少量安全事件,导致排查时发现关键事件缺失。安全日志要发挥作用,必须先在本地安全策略或组策略中开启审计。建议至少开启:登录事件(成功和失败)、账户管理(成功和失败)、策略更改(成功)、进程跟踪(成功)、系统事件(成功和失败)。开启审计后,4688事件会记录所有进程创建,包括命令行参数。这在追踪攻击者执行了哪些命令时极其重要。如果之前没开启,现在开启也不晚,至少能记录后续行为。排查时如果发现安全日志里4624、4625等事件很少甚至没有,先检查审计策略是否被关闭或清空,攻击者有时会通过“wevtutil cl”命令清除日志。
日志被清除或篡改的识别攻击者入侵后往往会清除日志,Windows安全日志中1102事件专门记录日志被清除的操作。如果看到1102事件,说明有人执行了清除日志操作,这本身就是高危信号。另外系统日志中的104事件也记录日志清除。排查时如果发现某个时间段日志完全空白,但前后都有记录,就要怀疑日志被选择性删除。此时可以检查是否有备份日志、SIEM平台或其他主机上的关联日志。还可以查看文件系统层面Security.evtx文件的最后修改时间和大小变化,辅助判断。
结合进程和网络日志还原攻击链单看安全日志只能看到账号和权限变化,要还原完整攻击链还需要结合进程创建日志(4688)和网络连接日志。4688事件如果开启了命令行记录,可以直接看到攻击者执行了哪些命令,比如下载恶意文件、添加用户、修改注册表、关闭防火墙等。网络连接方面,Windows防火墙日志(默认在C:\Windows\System32\LogFiles\Firewall\pfirewall.log)记录了允许和拒绝的连接,可以配合安全日志中的源IP进行关联。如果服务器安装了Sysmon,日志会更详细,包括进程哈希、网络连接、文件创建、注册表修改等。Sysmon的事件ID 1(进程创建)、3(网络连接)、11(文件创建)、13(注册表修改)是分析恶意行为的高价值数据。
常见攻击场景的日志特征暴力破解RDP:大量4625事件,登录类型10,失败原因0xC000006A,源IP集中,时间连续。成功后的4624事件登录类型10,源IP与爆破IP相同或相近。提权攻击:4624后紧跟4672,或者出现4732将账号加入管理员组。如果出现4688事件显示执行了“whoami /priv”“systeminfo”“net localgroup administrators”等命令,说明攻击者在收集信息和提权。后门持久化:7045服务安装事件,服务名随机或伪装系统服务,路径指向临时目录;4720创建新账号;注册表Run键被修改(可通过Sysmon 13事件发现)。挖矿木马:系统日志中大量服务崩溃或性能下降相关事件,4688事件显示执行了可疑的PowerShell或WMI命令,网络连接日志显示与矿池端口通信。
日志分析的时间窗口和基线意识排查时不要只看单条日志,要建立时间线。先确定异常行为发生的时间点,比如用户反馈服务器卡顿、安全设备告警、数据被加密等,然后以该时间点为中心向前后扩展。向前追溯攻击者是如何进来的,向后追踪攻击者做了什么。同时要有基线意识,知道服务器正常情况下有哪些账号、哪些服务、哪些定时任务、哪些源IP会登录。一旦出现偏离基线的日志,比如新增账号、异常登录时间、陌生源IP、新服务安装,就要重点关注。日常运维中建议定期导出关键日志做备份,并建立简单的统计脚本,自动发现新增账号、管理员组变更、异常登录等事件。
实用排查命令汇总以下命令可以直接在服务器上执行,快速定位问题:
# 查看最近50条登录失败事件
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4625} -MaxEvents 50 | Format-List TimeCreated, Message
# 查看最近20条登录成功事件
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4624} -MaxEvents 20 | Format-List TimeCreated, Message
# 查看所有新用户创建事件
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4720} | Format-List TimeCreated, Message
# 查看管理员组变更事件
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4732} | Format-List TimeCreated, Message
# 查看日志清除事件
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=1102} | Format-List TimeCreated, Message
# 查看最近安装的服务
Get-WinEvent -FilterHashtable @{LogName='System'; Id=7045} -MaxEvents 30 | Format-List TimeCreated, Message
这些命令输出内容较长,建议加上Select-Object筛选关键字段,或者导出后用文本编辑器搜索关键词。对于大型环境,建议部署集中化日志收集工具,把Windows事件日志转发到中央服务器,便于跨主机关联分析。
日志分析后的处置建议一旦确认服务器被入侵,不要急着删除账号或重装系统,先做好证据固定。导出相关时间段的安全日志、系统日志、应用程序日志,保存为evtx文件,同时记录当前网络连接、进程列表、服务列表、计划任务。然后根据分析结果采取处置措施:隔离服务器、禁用被利用的账号、删除后门账号和服务、修改所有账号密码、检查其他服务器是否有相同攻击痕迹。最后修复漏洞,比如关闭不必要的公网端口、启用强密码策略、限制RDP来源IP、安装补丁、开启更全面的审计策略。日志分析不是一次性工作,而是持续的安全运营环节。
