CVE-2024-43642 是一个针对 Windows 操作系统中的 SMB(Server Message Block) 协议的 拒绝服务漏洞。 攻击者可能通过发送恶意请求,导致受影响的系统无法处理正常的 SMB 网络通信,进而使系统的文件共享或打印服务等功能失效,造成服务中断。

CVE-2024-43642 是一个针对 Windows 操作系统中的 SMB(Server Message Block) 协议的 拒绝服务漏洞。此漏洞的存在可能导致攻击者通过向目标系统发送特制的数据包,使目标系统的 SMB 服务崩溃,从而导致拒绝服务(DoS)。具体来说,攻击者可能通过发送恶意请求,导致受影响的系统无法处理正常的 SMB 网络通信,进而使系统的文件共享或打印服务等功能失效,造成服务中断。

漏洞概述

  • 漏洞编号:CVE-2024-43642
  • 影响产品:Windows 10、Windows 11、Windows Server 2019、Windows Server 2022、Windows Server 2025(等较新版本)
  • 漏洞类型:拒绝服务(DoS)
  • 漏洞严重性:高(可能导致系统无法提供服务,影响业务连续性)

漏洞的成因

该漏洞的根源在于 SMB协议实现中的错误,当 Windows 系统接收到恶意构造的 SMB 请求时,可能会导致系统崩溃或资源耗尽。具体来说,这种攻击可能通过以下方式触发:

  1. SMB 协议漏洞:SMB 协议是用于文件共享和打印服务的网络协议,广泛用于局域网内的设备之间进行数据交换。当系统处理某些特定的 SMB 请求时,可能由于输入验证不严谨、缓冲区溢出或其他错误,导致系统异常。

  2. 恶意请求:攻击者通过精心构造的 SMB 数据包发送到目标服务器,触发系统错误或崩溃。这可能导致目标系统中的 SMB 服务无法响应正常请求,从而造成系统不可用。

漏洞的影响

  • 拒绝服务(DoS):攻击者可以通过远程发送恶意的 SMB 请求,导致受害者系统的 SMB 服务崩溃,从而无法提供正常的文件共享和打印服务。
  • 影响范围:所有启用了 SMB 服务的 Windows 系统都可能受到影响,尤其是在局域网环境中,攻击者可以通过直接与目标主机通信来发动攻击。

漏洞修复

微软已经意识到这个问题,并发布了相关的安全更新以修复该漏洞。用户和管理员应当尽快应用最新的安全补丁,防止此漏洞被恶意利用。

  • 缓解措施
    1. 更新系统:安装微软发布的安全更新,及时修复该漏洞。
    2. 限制 SMB 服务暴露:如果不是必需的,可以关闭 SMB 服务或通过防火墙限制对 SMB 服务的访问。

      要在 PowerShell 中关闭 SMB 服务或通过防火墙限制对 SMB 服务的访问,您可以使用以下几种方法:

      1. 禁用 SMB 服务

      Windows 提供了一个叫做 SMBv1SMBv2SMBv3 的协议。为了提高安全性,您可以禁用 SMBv1 和/或限制对其他版本的访问。

      禁用 SMBv1

      SMBv1 是一个已被认为不安全的旧版本,建议禁用它。可以使用以下 PowerShell 命令来禁用 SMBv1:

      powershellCopy Code
      # 禁用 SMBv1
      Set-SmbServerConfiguration -EnableSMB1Protocol $false

      禁用 SMBv2 和 SMBv3

      如果您希望完全禁用 SMB 服务,可以禁用 SMBv2 和 SMBv3(这两者通常被认为是安全的,但如果需要完全禁用 SMB,可以使用以下命令):

      powershellCopy Code
      # 禁用 SMBv2 和 SMBv3
      Set-SmbServerConfiguration -EnableSMB2Protocol $false

      禁用所有 SMB 服务

      如果您希望完全禁用 SMB 协议(包括 v1, v2, v3),可以使用以下命令:

      powershellCopy Code
      # 禁用所有 SMB 服务
      Set-SmbServerConfiguration -EnableSMB1Protocol $false -EnableSMB2Protocol $false

      2. 通过防火墙限制对 SMB 服务的访问

      如果您不想完全禁用 SMB 服务,但希望限制对 SMB 服务的访问,可以通过 Windows 防火墙来阻止对 SMB 服务的访问。SMB 使用的是 端口 445端口 139,您可以在防火墙中阻止这些端口。

      阻止 SMB 端口(445 和 139)

      powershellCopy Code
      # 阻止进入端口 445(SMB)
      New-NetFirewallRule -DisplayName "Block SMB Port 445" -Direction Inbound -Protocol TCP -LocalPort 445 -Action Block
      
      # 阻止进入端口 139(NetBIOS over TCP/IP)
      New-NetFirewallRule -DisplayName "Block SMB Port 139" -Direction Inbound -Protocol TCP -LocalPort 139 -Action Block

      如果您希望阻止出站的 SMB 连接(即从该计算机发起到其他计算机的 SMB 请求),可以使用以下命令:

      powershellCopy Code
      # 阻止出站端口 445
      New-NetFirewallRule -DisplayName "Block Outbound SMB Port 445" -Direction Outbound -Protocol TCP -LocalPort 445 -Action Block
      
      # 阻止出站端口 139
      New-NetFirewallRule -DisplayName "Block Outbound SMB Port 139" -Direction Outbound -Protocol TCP -LocalPort 139 -Action Block

      3. 验证和删除防火墙规则

      如果您想检查是否有相关的防火墙规则,并删除它们,您可以使用以下命令:

      查看防火墙规则

      powershellCopy Code
      # 查看所有防火墙规则
      Get-NetFirewallRule | Where-Object {$_.DisplayName -like "*SMB*"}

      删除防火墙规则

      powershellCopy Code
      # 删除特定的防火墙规则
      Remove-NetFirewallRule -DisplayName "Block SMB Port 445"
      Remove-NetFirewallRule -DisplayName "Block SMB Port 139"

      4. 重新启用 SMB 服务(如果需要)

      如果您需要重新启用 SMB 服务(例如,您在将来需要恢复对 SMB 的访问),可以使用以下命令来恢复之前的设置:

      启用 SMBv1

      powershellCopy Code
      # 启用 SMBv1
      Set-SmbServerConfiguration -EnableSMB1Protocol $true

      启用 SMBv2 和 SMBv3

      powershellCopy Code
      # 启用 SMBv2 和 SMBv3
      Set-SmbServerConfiguration -EnableSMB2Protocol $true

      删除防火墙规则(如果需要)

      powershellCopy Code
      # 恢复防火墙规则
      Remove-NetFirewallRule -DisplayName "Block SMB Port 445"
      Remove-NetFirewallRule -DisplayName "Block SMB Port 139"

       

      • 如果您只需要关闭 SMB 服务中的某个版本,可以使用 Set-SmbServerConfiguration 命令。
      • 如果您希望限制对 SMB 服务的访问,使用防火墙规则来阻止端口 445 和 139 的流量。
      • 您可以通过 PowerShell 对这些设置进行灵活管理,确保系统的安全性。
    3. 监控 SMB 活动:监控 SMB 服务的异常活动,及时发现潜在的攻击行为。

      要在 PowerShell 中监控 SMB 服务的异常活动,我们可以使用多种方法来获取有关 SMB 活动的日志和指标。这些日志可以帮助我们发现异常的 SMB 活动,如未经授权的访问、攻击尝试或配置错误。

      以下是几种常见的监控 SMB 活动的方法:

      1. 使用事件日志(Event Logs)监控 SMB 活动

      Windows 会记录关于 SMB 服务的活动到 Windows 安全日志系统日志 中。通过 PowerShell,您可以查询这些日志以查找 SMB 服务的异常活动。

      监控 SMB 相关的事件日志

      SMB 服务相关的事件通常记录在 SecuritySystemMicrosoft-Windows-SMBServer 等日志中。特别是,事件 ID 1003(SMB 请求失败)是一个常见的错误日志。

      powershellCopy Code
      # 查询与 SMB 相关的事件日志(Security 和 System)
      Get-WinEvent -LogName Security, System -FilterXPath "*[EventData[Data[@Name='ShareName'] and (Data='*')]]" -MaxEvents 50 | Format-List
      
      # 查看 SMB 服务器日志(Microsoft-Windows-SMBServer)
      Get-WinEvent -LogName "Microsoft-Windows-SMBServer/Operational" -MaxEvents 50 | Format-List

      监控 SMB 认证失败和错误

      您可以监控事件 ID 4625(登录失败事件),这是 SMB 相关认证失败的常见事件。

      powershellCopy Code
      # 查询 SMB 登录失败事件(事件 ID 4625)
      Get-WinEvent -LogName Security | Where-Object {$_.Id -eq 4625} -MaxEvents 50 | Format-List

      监控 SMB 错误(如连接失败、文件共享问题等)

      例如,事件 ID 1003 表示 SMB 连接的错误。

      powershellCopy Code
      # 查询 SMB 错误事件(如连接失败)
      Get-WinEvent -LogName "Microsoft-Windows-SMBServer/Operational" | Where-Object {$_.Id -eq 1003} -MaxEvents 50 | Format-List

      2. 使用 PowerShell 脚本定期检查日志

      您可以编写一个 PowerShell 脚本,定期检查 SMB 相关的日志,并根据规则或阈值生成警报。

      powershellCopy Code
      # 定义一个定期检查 SMB 事件日志的脚本
      $logName = "Microsoft-Windows-SMBServer/Operational"
      $threshold = 10  # 设置阈值,例如如果连续 10 次错误,认为是异常
      
      $events = Get-WinEvent -LogName $logName | Where-Object {$_.Id -eq 1003}  # 根据具体事件ID筛选
      $eventCount = $events.Count
      
      if ($eventCount -gt $threshold) {
          # 如果发生了大量的错误,发送警告或采取其他措施
          Write-Host "警告:检测到大量 SMB 错误事件!"
          # 你可以在此处发送电子邮件或生成更详细的报告
      }

      3. 使用 Performance Monitor 监控 SMB 服务性能

      除了事件日志,您还可以通过 PowerShell 来获取和监控 SMB 服务的性能指标。Windows 性能计数器可以帮助您实时了解 SMB 活动,例如网络带宽使用情况、连接数等。

      查看 SMB 性能计数器

      powershellCopy Code
      # 查看当前的 SMB 性能计数器
      Get-Counter -Counter "\Server Shares(*)\Total Files Opened"
      Get-Counter -Counter "\Server Shares(*)\Files Opened/sec"

      这些计数器可以帮助您查看是否有异常的连接数或请求。

      4. 检测可疑的 SMB 活动

      某些类型的 SMB 活动可能表示潜在的安全问题,例如大量未授权的连接或异常的文件访问行为。您可以设置规则来检测这些活动。

      例如,监控是否有异常的远程 SMB 连接:

      powershellCopy Code
      # 查询是否有异常的 SMB 远程连接(例如,来自不常见 IP 地址的连接)
      Get-WinEvent -LogName "Microsoft-Windows-SMBServer/Operational" | Where-Object {
          $_.Message -match "RemoteAddress"  # 检查是否有远程连接
      } | Format-Table TimeCreated, Message

      5. 启用 SMB 审计日志

      您还可以启用 SMB 文件共享的审核策略来记录文件和文件夹的访问情况。这可以帮助您了解是否有异常的文件访问或修改行为。

      在 Windows 中,您可以通过组策略启用文件共享的审计日志记录(需要管理员权限)。

      启用 SMB 文件访问审计

      1. 打开 组策略管理 (gpedit.msc)。
      2. 转到 计算机配置 -> Windows 设置 -> 安全设置 -> 高级审核策略配置 -> 对象访问
      3. 启用 审核文件共享访问

      启用后,相关的文件访问活动将记录在 安全日志 中,您可以通过 PowerShell 进行查询。

      powershellCopy Code
      # 查询审计的文件访问事件
      Get-WinEvent -LogName Security | Where-Object {$_.Id -eq 4663} -MaxEvents 50 | Format-List

      6. 自动化警报和报告

      最后,您可以结合 PowerShell 和其他工具(如电子邮件发送、SIEM 系统等)来自动化警报和报告。例如,当检测到异常 SMB 活动时,自动发送邮件或创建系统警报。

      powershellCopy Code
      # 示例:当 SMB 错误超过阈值时,发送电子邮件警报
      if ($eventCount -gt $threshold) {
          # 发送电子邮件警报
          Send-MailMessage -From "admin@domain.com" -To "security@domain.com" -Subject "SMB Error Alert" -Body "Detected $eventCount SMB errors." -SmtpServer "smtp.domain.com"
      }

       

      通过 PowerShell,您可以有效监控 SMB 活动,并根据事件日志、性能计数器和安全审计信息识别异常活动。结合定期检查、日志查询和自动化警报机制,您可以更好地保护您的系统免受潜在的 SMB 攻击和安全威胁。

为什么该漏洞重要?

  • 拒绝服务攻击:拒绝服务(DoS)攻击可能会影响到组织的关键业务系统,导致服务中断。对于企业而言,这种漏洞可能影响到内部文件共享、打印服务、网络存储等重要功能。

  • 易于利用:由于攻击者只需要发送特制的 SMB 请求,因此这个漏洞的攻击手段相对简单,且可以在不需要用户交互的情况下进行。

  • 广泛影响:SMB 协议广泛应用于 Windows 系统中,几乎所有现代 Windows 操作系统都依赖于 SMB 来提供文件共享等服务,因此漏洞的影响范围较广。

如何应对?

  1. 立即更新:尽快安装 Windows 系统的安全更新,修复该漏洞。
  2. 审查网络安全设置:确保只有必要的设备和用户可以访问 SMB 服务,特别是通过防火墙和网络访问控制进行限制。

    在组织中,确保只有必要的设备和用户可以访问 SMB(Server Message Block)服务对于维护网络安全至关重要。SMB 协议广泛用于文件共享、打印机共享和其他网络资源访问,但由于其潜在的安全风险,尤其是在暴露于互联网的情况下,需要采取严格的访问控制措施。以下是一些关于如何通过防火墙和网络访问控制来审查和管理 SMB 服务访问的管理条例和最佳实践。

    1. 限制 SMB 服务的网络访问

    1.1 限制 SMB 协议的使用

    • 审查和最小化 SMB 服务暴露范围
      • 关闭不必要的 SMB 版本:通过在网络中禁用 SMBv1(已知的存在安全漏洞)并仅使用更安全的 SMBv2 或 SMBv3。
      • 限制网络中允许访问 SMB 的设备:仅允许授权的设备(如文件服务器、打印机等)通过网络访问 SMB 服务,避免不必要的设备暴露 SMB 服务。

    1.2 防火墙规则

    • 在边界防火墙上限制 SMB 流量
      • 允许来自信任网络的 SMB 流量:仅允许从内网或特定的可信子网访问 SMB 服务。例如,您可以设置防火墙规则,允许内网 IP 地址段访问 SMB 服务,禁止外部访问。
      • 禁止 SMB 服务暴露在公共网络:确保防火墙对外部网络(如互联网)阻止端口 445(SMB 默认端口)的访问。通过防火墙规则关闭来自公共网络的 SMB 连接请求。
      • 细化访问控制列表(ACL):使用防火墙的访问控制列表(ACL)来控制允许连接到 SMB 服务的 IP 地址或设备。

    1.3 隔离敏感服务和网络

    • 分段网络
      • 隔离文件服务器和敏感服务:将访问 SMB 服务的设备与其他非核心系统或不需要访问 SMB 服务的设备进行隔离。通过子网划分和虚拟局域网(VLAN)实现网络分段,确保只有特定的设备能够访问 SMB 服务。
      • 采用微分段:如果您的网络支持微分段(例如通过使用 SDN 技术或高级防火墙),可以对不同类型的流量进行细粒度的访问控制,确保只有特定的应用和用户能够访问 SMB 资源。

    2. 控制 SMB 服务访问的身份验证和授权

    2.1 使用强身份验证机制

    • 启用 NTLMv2 或 Kerberos
      • 避免使用较弱的身份验证协议(如 NTLMv1)。确保 SMB 服务使用 NTLMv2 或 Kerberos 协议进行身份验证,以提高安全性。
      • 在企业环境中,使用域控制器对所有 SMB 客户端进行身份验证,确保只有经过授权的用户和设备才能访问 SMB 共享。

    2.2 最小权限原则

    • 细化文件和目录访问权限
      • 对 SMB 共享的文件和目录使用最小权限原则,确保只有授权用户和设备可以访问相关资源。避免使用广泛的权限设置(如“Everyone”组)或过多的共享权限。
      • 定期审查和更新文件共享的权限设置,及时撤销不再需要的权限,确保只有需要访问的用户或设备可以访问 SMB 服务。

    2.3 多因素身份验证(MFA)

    • 在敏感系统上启用 MFA
      • 对关键的 SMB 服务启用多因素身份验证,以增强安全性。通过在用户登录时要求第二层身份验证(如手机验证、硬件令牌等),可以有效防止凭证泄露导致的安全风险。

    3. 监控 SMB 活动与日志审计

    3.1 启用详细的日志记录

    • 审计 SMB 活动
      • 启用 SMB 访问的事件日志记录,以跟踪谁访问了哪些共享资源。Windows 服务器提供了 SMB 共享访问审计功能,可以记录文件操作、登录事件以及访问失败等。
      • 配置 Windows 审计策略,记录 SMB 会话建立、文件读取、写入等操作。定期检查这些日志,以识别异常访问模式或潜在的安全威胁。

    3.2 集成 SIEM 系统

    • 与安全信息和事件管理系统(SIEM)集成
      • 将 SMB 日志集成到 SIEM 系统中,结合其他安全事件源进行综合分析,及时发现可疑的 SMB 访问行为。
      • 配置 SIEM 规则以监控大量的 SMB 登录、异常访问模式或其他可疑活动,并根据设定的安全事件级别发出警报。

    3.3 监控 SMB 服务的网络流量

    • 使用网络监控工具
      • 部署网络监控工具(如 Wireshark 或 Zeek)监控通过端口 445 的流量,识别潜在的恶意活动或未经授权的访问。
      • 在内网或 DMZ(非军事区)内进行流量分析,确保只有经过授权的设备可以通过网络与 SMB 服务建立连接。

    4. 防范 SMB 漏洞和攻击

    4.1 及时应用安全补丁

    • 定期更新系统和补丁管理
      • 定期更新操作系统和 SMB 服务相关的安全补丁,确保漏洞不会被攻击者利用。
      • 使用自动化的补丁管理工具,及时应用安全更新,特别是针对 SMB 协议和相关服务的漏洞修复。

    4.2 防止勒索病毒攻击

    • 禁用 SMBv1
      • SMBv1 是勒索病毒(如 WannaCry 和 NotPetya)攻击的一个重要目标。确保 SMBv1 在网络中被禁用,只允许使用更安全的 SMBv2 或 SMBv3。
      • 配置 Windows 安全设置,禁用 SMBv1 协议,避免其成为攻击者利用的漏洞。

    4.3 启用 Windows Defender 或第三方安全软件

    • 强化端点保护
      • 启用 Windows Defender 或其他安全防护软件,确保 SMB 服务受到实时监控,防止通过网络传播的恶意软件攻击。
      • 配置防病毒软件对文件共享和网络传输进行扫描,检测并隔离潜在的恶意文件。

    5. 制定和实施安全策略

    5.1 制定 SMB 安全政策

    • 访问控制策略:定义和实施针对 SMB 服务的访问控制政策,确保只有必要的用户和设备可以访问共享资源。包括基于角色的访问控制(RBAC)、基于 IP 地址的访问控制等。
    • 加密和备份策略:制定 SMB 服务访问的数据加密和备份政策,确保共享的数据在传输过程中得到保护,且重要数据有备份可恢复。

    5.2 用户培训与意识提升

    • 提高员工的安全意识
      • 对员工进行安全培训,教育他们如何安全地使用 SMB 服务,如何识别钓鱼邮件和其他攻击手段。
      • 提供针对 SMB 协议安全性问题的培训,提醒员工不要随便将敏感数据放置在不受保护的共享目录中。

     

    为了确保只有必要的设备和用户可以访问 SMB 服务,您需要结合防火墙策略、网络访问控制、身份验证管理、日志审计和漏洞防护等多方面的措施。通过严格管理和监控 SMB 服务的访问,可以显著降低潜在的安全风险,避免网络攻击和数据泄露的发生。此外,定期审查和更新这些安全策略,以适应新的安全威胁和技术变化,也是维护 SMB 服务安全的重要环节。

  3. 监控网络流量:定期审查网络中对 SMB 协议的访问请求,及时发现异常的或恶意的请求。

    要通过 PowerShell 监控网络流量,特别是对 SMB 协议的访问请求,您需要结合几种方法,如网络流量监控、端口监听、以及可能的日志审查。下面是一个通过 PowerShell 定期审查对 SMB 协议(通常使用 TCP 端口 445)访问的脚本示例。

    监控 SMB 流量的步骤

    1. 通过 Netstat 获取当前的网络连接:可以使用 PowerShell 脚本定期运行 netstat 命令,查看活动的 SMB 连接。
    2. 通过 Get-NetTCPConnection 获取连接:PowerShell 提供了 Get-NetTCPConnection cmdlet,可以查看当前所有的 TCP 连接及其状态。
    3. 通过 Performance Counters 监控 SMB 流量:您还可以使用 Windows 性能计数器监控 SMB 活动。

    示例 1:使用 Get-NetTCPConnection 监控 SMB 端口(445)的访问

    Get-NetTCPConnection 是 PowerShell 的内置 cmdlet,可以帮助您查看 TCP 连接及其状态。我们可以使用它来定期查看是否有针对 SMB 协议的连接(端口 445)。

    powershellCopy Code
    # 定义定期检查 SMB 流量的函数
    function Monitor-SMBTraffic {
        $smbPort = 445
        $threshold = 10  # 设置一个阈值,例如如果连接数大于 10,发出警报
    
        # 获取当前所有连接,过滤出端口 445 的 SMB 连接
        $smbConnections = Get-NetTCPConnection | Where-Object { $_.LocalPort -eq $smbPort -or $_.RemotePort -eq $smbPort }
    
        # 获取连接数
        $connectionCount = $smbConnections.Count
    
        # 输出当前连接信息
        Write-Host "当前对 SMB 协议(端口 $smbPort)的连接数:$connectionCount"
    
        # 如果连接数超过阈值,发送警告
        if ($connectionCount -gt $threshold) {
            Write-Host "警告:SMB 协议的连接数已超过阈值!"
            # 你可以在这里添加其他处理逻辑,如发送电子邮件警报或记录日志
        }
    }
    
    # 定期调用 Monitor-SMBTraffic 函数
    while ($true) {
        Monitor-SMBTraffic
        Start-Sleep -Seconds 60  # 每分钟检查一次
    }

    说明:

    1. Get-NetTCPConnection 获取当前系统所有的 TCP 连接。
    2. LocalPort 和 RemotePort 用于检查连接是否涉及 SMB 端口 445。
    3. 阈值:您可以设置一个阈值,当连接数大于该值时,发出警告。

    示例 2:使用 netstat 定期检查 SMB 连接

    您还可以使用 netstat 命令,它会列出所有活动的网络连接,检查端口 445 上的 SMB 流量。

    powershellCopy Code
    # 定义定期检查网络流量的函数
    function Monitor-SMBUsingNetstat {
        $threshold = 10  # 设置连接数阈值
        $netstatOutput = netstat -an | Select-String "445"  # 获取与端口 445 相关的连接
    
        $connectionCount = $netstatOutput.Count
    
        # 输出当前连接信息
        Write-Host "当前对 SMB 协议(端口 445)的连接数:$connectionCount"
    
        # 如果连接数超过阈值,发送警告
        if ($connectionCount -gt $threshold) {
            Write-Host "警告:SMB 协议的连接数已超过阈值!"
            # 你可以在这里添加其他处理逻辑,如发送电子邮件警报或记录日志
        }
    }
    
    # 定期调用 Monitor-SMBUsingNetstat 函数
    while ($true) {
        Monitor-SMBUsingNetstat
        Start-Sleep -Seconds 60  # 每分钟检查一次
    }

    说明:

    1. netstat -an 命令会列出所有活动的网络连接。
    2. Select-String "445" 筛选出所有涉及端口 445 的连接(SMB 使用端口 445)。
    3. $connectionCount 用来计算当前的 SMB 连接数。
    4. 阈值检查:如果连接数超过设定阈值,则表示有潜在的异常活动。

    示例 3:通过性能计数器监控 SMB 活动

    Windows 提供了一些性能计数器,可以用来监控 SMB 流量。你可以使用 Get-Counter cmdlet 来查看 SMB 的相关性能指标。

    powershellCopy Code
    # 查询 SMB 相关的性能计数器
    function Monitor-SMBPerformance {
        $counter = "\Server Shares(*)\Files Opened/sec"
    
        # 获取当前的 SMB 性能计数器值
        $smbPerformance = Get-Counter -Counter $counter
    
        # 输出当前的 SMB 性能数据
        $smbPerformance | Select-Object CounterSamples | Format-Table -Property Path, CookedValue
    }
    
    # 定期调用 Monitor-SMBPerformance 函数
    while ($true) {
        Monitor-SMBPerformance
        Start-Sleep -Seconds 60  # 每分钟检查一次
    }

    说明:

    1. \Server Shares(*)\Files Opened/sec 计数器显示每秒打开的文件数,是监控 SMB 活动的一种方式。
    2. Get-Counter 用来获取性能计数器的当前值。

    示例 4:创建一个综合脚本进行定期检查并报告

    您可以将这些方法结合起来,创建一个综合的脚本,定期检查网络流量并生成警报。例如,可以将每个方法的输出汇总,并设置条件触发警报或报告。

    powershellCopy Code
    function Monitor-SMBTraffic {
        # 使用 Get-NetTCPConnection 监控端口 445 的连接
        $smbPort = 445
        $smbConnections = Get-NetTCPConnection | Where-Object { $_.LocalPort -eq $smbPort -or $_.RemotePort -eq $smbPort }
        $connectionCount = $smbConnections.Count
        Write-Host "当前对 SMB 协议(端口 $smbPort)的连接数:$connectionCount"
    
        # 使用 Performance Counter 检查文件打开的速率
        $counter = "\Server Shares(*)\Files Opened/sec"
        $smbPerformance = Get-Counter -Counter $counter
        Write-Host "SMB 文件打开速率:$($smbPerformance.CounterSamples.CookedValue) 文件/秒"
    
        # 检查连接数是否超阈值
        $threshold = 10
        if ($connectionCount -gt $threshold) {
            Write-Host "警告:SMB 连接数已超过阈值!"
        }
    }
    
    # 定期调用函数
    while ($true) {
        Monitor-SMBTraffic
        Start-Sleep -Seconds 60  # 每分钟检查一次
    }

     

    通过 PowerShell,您可以使用多种方法定期审查网络中的 SMB 协议访问请求,包括:

    • 使用 Get-NetTCPConnection 或 netstat 检查端口 445 的连接。
    • 使用性能计数器监控文件打开速率等 SMB 活动指标。
    • 根据设定的阈值,自动报告并触发警报。

    这些方法可以帮助您实时监控网络中是否有异常的 SMB 活动或过多的访问请求,进而采取进一步的安全措施。

 

CVE-2024-43642 漏洞是一个 Windows SMB 协议的拒绝服务漏洞,攻击者通过精心构造恶意 SMB 请求可能会导致系统崩溃。虽然该漏洞不会导致远程代码执行等更严重的安全风险,但它可能会导致服务中断,影响企业的正常运作。及时安装安全更新并加强网络安全措施是防止该漏洞被恶意利用的最佳方案。


 

posted @ 2024-11-22 04:30  suv789  阅读(65)  评论(0编辑  收藏  举报