跳转到帖子

国际威胁情报跟进:CVE-2025-33073 Windows SMB 反射攻击的内网验证、日志排查与加固

精选回复

发布于

背景

微软在 2025 年 6 月安全更新中修复了 CVE-2025-33073。该漏洞影响 Windows SMB 客户端,已被公开披露存在在野利用。其风险并不局限于“泄露 NTLM 哈希”:攻击链可诱导已登录用户向特制主机名发起 SMB 认证,再将认证流量反射回目标主机。在满足特定条件时,攻击者可能借此突破本机权限边界并以高权限执行操作。

这类问题值得内网防守方关注,因为入口可能只是一个快捷方式、URL 文件或其他能够触发远程资源访问的载体,而后续活动会混在常见的 445/TCP、网络登录和共享访问日志中。下面只讨论授权环境中的非破坏性验证、日志关联和修复,不提供可直接复现提权的中继工具参数。

排查优先级:已出现异常 SMB 认证的终端、允许任意出站 445/TCP 的办公网、未安装 2025 年 6 月及后续累积更新的 Windows 主机,应优先处理。补丁状态应以微软安全更新指南和实际累积更新版本为准,不能只检查某一个固定 KB。

问题定位

该攻击链通常需要同时观察三个层面,单看某一条 4624 很容易误判:

  • 终端是否访问了外部或非预期网段的 445/TCP;
  • 同一时间窗口内,目标主机是否产生异常的网络登录、特权分配和 SMB 共享访问;
  • 认证主体、源地址、工作站名及访问共享之间是否存在不合理组合,例如普通桌面用户触发 ADMIN$、C$ 或 IPC$ 的异常访问。

资产侧先确认操作系统构建号、最近安装的累积更新以及 SMB 签名状态。以下命令只读取配置,不会触发漏洞:

$os = Get-ComputerInfo
$os | Select-Object WindowsProductName, WindowsVersion, OsBuildNumber

Get-HotFix |
  Sort-Object InstalledOn -Descending |
  Select-Object -First 15 HotFixID, InstalledOn, Description

Get-SmbClientConfiguration |
  Select-Object EnableSecuritySignature, RequireSecuritySignature

Get-SmbServerConfiguration |
  Select-Object EnableSecuritySignature, RequireSecuritySignature, EnableSMB1Protocol

Get-NetFirewallRule -PolicyStore ActiveStore |
  Where-Object DisplayGroup -Match 'File and Printer Sharing|文件和打印机共享' |
  Select-Object DisplayName, Direction, Action, Enabled

补丁核验时不要使用“系统里能查到某个旧 KB”作为已修复依据。Windows 累积更新存在替代关系,建议将 OsBuildNumber 和 UBR 与微软对应版本的更新历史进行比对。企业环境可由 WSUS、ConfigMgr、Intune 或漏洞管理平台统一查询缺失更新。

技术分析

CVE-2025-33073 的关键不在传统口令爆破,而在认证上下文被错误反射。攻击者先让受害终端解析并访问一个经过构造的名称,Windows 随后可能自动协商 SMB 身份认证。攻击者控制认证流向,将其送回受害主机或相关服务,利用名称解析、身份认证与服务端信任边界之间的不一致完成越权。

从蓝队视角,攻击链可拆成四段:

  • 诱导阶段:用户打开文件、快捷方式或链接,进程开始解析远程资源;
  • 认证阶段:终端向非业务 SMB 地址建立 445/TCP 连接并协商认证;
  • 反射阶段:同一终端附近时间出现网络登录和共享访问;
  • 落地阶段:攻击者尝试访问管理共享、创建服务、计划任务或启动高权限进程。

SMB 签名可以提高报文完整性并压缩部分中继路径,但不能替代安全更新。真正的修复基线应同时包含补丁、出站 SMB 限制、名称解析治理和高权限账号隔离。

操作步骤:建立非破坏性验证流程

建议在隔离测试网选取一台已修复主机和一台待验证主机,仅测试补丁、连接控制与审计能力,不导入公开利用代码。

  • 确认两台主机的构建号及累积更新差异;
  • 开启登录、共享访问和进程创建审计;
  • 从测试终端访问受控文件服务器,确认 4624、5140、5145 等事件能够被采集;
  • 模拟访问一个不在 SMB 允许列表中的测试地址,验证边界或终端防火墙是否阻断 445/TCP;
  • 检查告警能否关联发起进程、目标地址、登录主体和共享名称。

可通过组策略启用以下高级审核项:登录、特殊登录、文件共享、详细文件共享、进程创建。启用详细文件共享可能产生较大日志量,建议先在重点终端试运行并调整转发容量。

auditpol /set /subcategory:"Logon" /success:enable /failure:enable
auditpol /set /subcategory:"Special Logon" /success:enable /failure:enable
auditpol /set /subcategory:"File Share" /success:enable /failure:enable
auditpol /set /subcategory:"Detailed File Share" /success:enable /failure:enable
auditpol /set /subcategory:"Process Creation" /success:enable /failure:enable

auditpol /get /category:*

不同语言版本的审核子类别名称可能不同。批量下发时优先使用组策略,不要依赖本地命令长期维持配置。

日志排查与关联

数据源重点事件观察内容
Security4624、4625LogonType 3、源地址、工作站名、认证包和目标账号
Security4672网络登录后是否立即获得敏感特权
Security4688异常脚本宿主、服务控制或命令解释器的父子进程关系
Security5140、5145ADMIN$、C$、IPC$ 访问及具体对象权限
System7045新服务安装,特别是随机名称或可执行文件位于临时目录
TaskScheduler106、140、141异常计划任务注册、更新和删除
Sysmon1、3、22进程创建、445/TCP 网络连接及相关 DNS 查询

下面的 PowerShell 用于快速筛选最近两小时的网络登录和共享访问。它适合作为主机侧初筛,正式调查仍应在 SIEM 中按时间、账号和设备进行关联:

$start = (Get-Date).AddHours(-2)
$ids = 4624, 4672, 5140, 5145, 4688

Get-WinEvent -FilterHashtable @{
    LogName   = 'Security'
    Id        = $ids
    StartTime = $start
} -ErrorAction SilentlyContinue |
ForEach-Object {
    $xml = [xml]$_.ToXml()
    $data = @{}
    foreach ($item in $xml.Event.EventData.Data) {
        $data[$item.Name] = [string]$item.'#text'
    }
    [pscustomobject]@{
        Time       = $_.TimeCreated
        EventId    = $_.Id
        User       = $data.TargetUserName
        LogonType  = $data.LogonType
        IpAddress  = $data.IpAddress
        Workstation= $data.WorkstationName
        Share      = $data.ShareName
        Object     = $data.RelativeTargetName
        Process    = $data.NewProcessName
    }
} | Where-Object {
    $_.LogonType -eq '3' -or
    $_.Share -match 'ADMIN\$|C\$|IPC\$' -or
    $_.EventId -in 4672,4688
} | Sort-Object Time | Format-Table -AutoSize

判定时应建立时间窗口。例如某终端先向互联网地址发起 445/TCP,随后一分钟内本机出现 LogonType 3、4672 和 ADMIN$ 访问,再紧接着出现 7045 或异常 4688,这种组合比单一事件更值得升级调查。正常的软件分发、运维平台和漏洞扫描器也可能产生相似日志,需要结合已登记的管理源地址、服务账号和变更窗口排除。

网络侧排查

多数办公终端没有直接访问互联网 SMB 服务的业务需求。可在出口防火墙、EDR 网络遥测或代理旁路日志中检索终端到公网 445/TCP 的连接。还应检查办公网到服务器区是否采用“任意到任意”的 SMB 放行策略。

Microsoft Defender XDR 环境可使用类似思路进行查询,字段应根据租户实际数据表调整:

DeviceNetworkEvents
| where Timestamp > ago(7d)
| where RemotePort == 445
| where ActionType in ("ConnectionSuccess", "ConnectionFailed")
| extend IsPrivate = ipv4_is_private(RemoteIP)
| where IsPrivate == false
| project Timestamp, DeviceName, InitiatingProcessAccountName,
          InitiatingProcessFileName, InitiatingProcessCommandLine,
          RemoteIP, RemoteUrl, ActionType
| order by Timestamp desc

若发现公网 SMB 连接,应保留 EDR 时间线、DNS 查询、触发进程及原始文件。不要直接双击可疑快捷方式或 URL 文件复现,应在隔离环境中进行静态检查。

风险处置与修复建议

  • 安装微软 2025 年 6 月及后续适用于对应 Windows 版本的累积安全更新,并通过构建号和漏洞管理平台复核;
  • 默认阻断办公终端到互联网的 445/TCP,仅对明确的文件服务地址开放;
  • 按业务网段建立 SMB 允许列表,避免办公终端直接访问服务器管理共享;
  • 在兼容性测试后,为 SMB 客户端和服务端要求安全签名;Windows 版本和旧设备兼容性不同,需先灰度;
  • 禁用 SMBv1,清理依赖旧协议的设备;
  • 限制高权限账号登录普通办公终端,使用独立管理终端和分层账号;
  • 将 4624、4672、4688、5140、5145、7045 及 EDR 网络事件集中转发,至少保留覆盖常规调查周期的数据;
  • 对下载文件、快捷方式和 URL 文件增加邮件网关、浏览器下载及终端检测策略。

在完成兼容性验证后,可通过组策略集中启用 SMB 签名。单机测试命令如下:

# 修改前导出当前值
Get-SmbClientConfiguration | Out-File .\smb-client-before.txt
Get-SmbServerConfiguration | Out-File .\smb-server-before.txt

# 管理员 PowerShell;生产环境应优先由 GPO 下发
Set-SmbClientConfiguration -RequireSecuritySignature $true -Force
Set-SmbServerConfiguration -RequireSecuritySignature $true -Force

# 复核
Get-SmbClientConfiguration | Select-Object RequireSecuritySignature
Get-SmbServerConfiguration | Select-Object RequireSecuritySignature

若确认主机已出现可疑反射或中继活动,不建议只补丁后继续上线。应先隔离终端,吊销相关会话和凭据,检查本地管理员组、服务、计划任务、启动项及远程管理配置,并对登录过该主机的高权限账号执行凭据轮换。

总结

CVE-2025-33073 反映出的趋势是:攻击者正在持续利用 Windows 自动认证、名称解析与内网服务信任之间的边界缺口。有效防护不能停留在安装补丁,还应限制出站 SMB、收紧管理共享访问、隔离高权限身份,并把网络连接、登录、共享访问和持久化事件串成完整时间线。对蓝队而言,最有价值的检测不是“出现一次 4624”,而是识别非预期 445/TCP、网络登录、特权分配和管理共享访问在短时间内连续发生的异常链路。

服务器与云环境安全示意图
服务器、云资产与权限边界梳理示意
安全事件影响分析示意图
安全动态、影响面和处置建议示意

这个漏洞不建议直接在生产网用公开 PoC 验证。它涉及 SMB/NTLM 反射,成功后通常就是高权限上下文,测试动作很容易越过“只验证不利用”的边界。比较稳妥的方式是做补丁差分:同版本未修复快照与已安装 2025 年 6 月及后续累积更新的快照各一台,只触发认证并抓包,不执行服务创建、写入 ADMIN$ 等后续动作。

1. 先确认补丁基线

不要只看 Get-HotFix,部分累积更新不一定完整展示。建议同时核对系统 Build/UBR,并按 MSRC 中该系统版本对应的修复 Build 判断:

Get-ComputerInfo |
  Select-Object WindowsProductName, WindowsVersion, OsBuildNumber

Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion' |
  Select-Object ProductName, DisplayVersion, CurrentBuild, UBR

Get-CimInstance Win32_QuickFixEngineering |
  Sort-Object InstalledOn -Descending |
  Select-Object -First 10 HotFixID, InstalledOn

由于 Windows 累积更新具有替代关系,安装 2025 年 6 月之后、且适用于当前分支的最新累积更新即可,不要只机械查某一个 KB。

2. 验证时重点看“本机发起、本机接受”的认证闭环

抓包时同时观察 DNS、TCP/445 和 NTLMSSP。风险特征不是单纯出现 NTLM,而是客户端先向攻击者控制或异常解析的名称发起 SMB 认证,随后同一份认证被转回受害机自身的 SMB 服务。源地址可能显示为环回地址,也可能是受害机自己的网卡地址,取决于测试拓扑和转发方式。

生产排查可以先筛 Security 日志中的 4624,再关联 5140/5145、4697 以及 System 日志 7045:

$start = (Get-Date).AddDays(-7)

Get-WinEvent -FilterHashtable @{
  LogName   = 'Security'
  Id        = 4624,5140,5145,4697
  StartTime = $start
} | Where-Object {
  $_.Message -match 'NTLM' -or
  $_.Message -match '127\.0\.0\.1|::1' -or
  $_.Message -match '\\\\\*\\ADMIN\$|\\\\\*\\C\$|\\\\\*\\IPC\$'
} | Select-Object TimeCreated, Id, MachineName, Message

Get-WinEvent -FilterHashtable @{
  LogName   = 'System'
  Id        = 7045
  StartTime = $start
} | Select-Object TimeCreated, Id, Message

建议以时间窗口做关联:同一主机在数秒内出现“4624,Logon Type 3,Authentication Package 为 NTLM”,随后访问 ADMIN$/C$ 或创建服务,优先级较高。仅凭一条 4624 不足以定性,备份软件、运维平台和本机代理也可能产生类似日志。

3. 提前打开 NTLM 与 SMB 审计

wevtutil sl Microsoft-Windows-NTLM/Operational /e:true
wevtutil sl Microsoft-Windows-SMBClient/Connectivity /e:true
wevtutil sl Microsoft-Windows-SMBClient/Security /e:true
wevtutil sl Microsoft-Windows-SMBServer/Audit /e:true

auditpol /set /subcategory:"Logon" /success:enable /failure:enable
auditpol /set /subcategory:"File Share" /success:enable /failure:enable
auditpol /set /subcategory:"Detailed File Share" /success:enable /failure:enable
auditpol /set /subcategory:"Security System Extension" /success:enable /failure:enable

组策略里可先将“网络安全:限制 NTLM:审核传入的 NTLM 流量”和“审核此域中的 NTLM 身份验证”设为审核模式。先收集一段业务基线,再考虑拒绝策略,否则老旧 NAS、扫描仪和非域应用容易被直接打断。

4. DNS 侧不要漏查

这类反射链通常依赖受害机访问一个攻击者可控或被污染解析的名称。应检查测试或告警时间附近的新建 DNS 记录、动态更新,以及解析结果指向受害机自身或内网关键服务器的异常长标签。终端如果部署 Sysmon,可以结合 DNS Query 与 Network Connect 事件关联:

Get-WinEvent -FilterHashtable @{
  LogName   = 'Microsoft-Windows-Sysmon/Operational'
  Id        = 22,3
  StartTime = (Get-Date).AddDays(-7)
} | Where-Object {
  $_.Message -match 'DestinationPort: 445' -or
  $_.Message -match 'QueryName:'
} | Select-Object TimeCreated, Id, Message

实际检索时可重点关注:随机或超长主机标签、低 TTL、新注册域名,以及 DNS 查询后立即连接 445 的进程。不要只按某个固定 PoC 域名做 IOC,名称很容易变化。

5. 加固顺序

  1. 优先安装对应系统分支的最新累积更新,这是直接修复手段。
  2. 限制终端出站 TCP/445,只允许访问明确的文件服务器、域控和管理节点;普通办公终端通常没有向任意地址发起 SMB 的必要。
  3. 限制入站 SMB,仅管理网段或确有需求的系统可访问,尤其是工作站之间的横向 445。
  4. 评估后要求 SMB 客户端和服务端签名:
Get-SmbClientConfiguration |
  Select-Object EnableSecuritySignature, RequireSecuritySignature

Get-SmbServerConfiguration |
  Select-Object EnableSecuritySignature, RequireSecuritySignature

Set-SmbClientConfiguration -RequireSecuritySignature $true -Confirm:$false
Set-SmbServerConfiguration -RequireSecuritySignature $true -Confirm:$false

强制签名前应先验证旧 NAS、打印设备和第三方 SMB 实现的兼容性。签名属于纵深防御,不能替代补丁,也不应把“已启用 SMB 签名”直接当成该漏洞不可利用的结论。

另外可关闭不需要的 LLMNR,降低名称欺骗面:

New-ItemProperty `
  -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient' `
  -Name EnableMulticast `
  -PropertyType DWord `
  -Value 0 `
  -Force

如果已经发现疑似成功利用,处置上不要只删除落地文件。应隔离主机,保全 Security、System、SMB、NTLM、DNS 和 EDR 日志,检查新增服务、计划任务、本地管理员组及远程服务执行痕迹,并轮换当时登录过该主机的高权限账号凭据。反射本身未必泄露明文口令,但成功后的 SYSTEM 权限足以读取凭据材料或建立后门。

最近浏览 0

  • 没有会员查看此页面。