Windows SMBv3 客户端/服务器远程代码执行漏洞浅析

                    Microsoft SMBv3远程代码执行漏洞浅析

 

  1. 前言

            Microsoft通过Microsoft Server Message Block 3.1.1(SMBv3)协议处理某些请求的方式意识到了一个远程执行代码漏洞。成功利用此漏洞的攻击者可以在目标SMB服务器或SMB客户端上执行代码。

            为了利用针对SMB服务器的漏洞,未经身份验证的攻击者可以将特制数据包发送到目标SMBv3服务器。若要利用针对SMB客户端的漏洞,未经身份验证的攻击者将需要配置恶意的SMBv3服务器,并诱使用户连接到该服务器。
  2. 受影响系统

    Windows 10版本1903(用于32位系统)

    Windows 10 1903版(用于基于ARM64的系统)

    Windows 10 1903版(用于基于x64的系统)

    Windows 10版本1909(用于32位系统)

    Windows 10 1909版(用于基于ARM64的系统)

    Windows 10版本1909(用于基于x64的系统)

    Windows Server版本1903(服务器核心安装)

    Windows Server版本1909(服务器核心安装)

  3. 实验环境

    windows10专业版;版本 1909 (OS 内部版本 18363.657)//靶机
    windows7(攻击机)
    python 3.7

  4.  

    实验环境
    扫描代码:

     

    //CVE-2020-0796扫描探测脚本
    //执行结果:IP vulnerable 表示存在该漏洞
    //执行结果:IP Not vulnerable 表示不存在该漏洞
    import socket
    import struct
    import sys
    from netaddr import IPNetwork
    
    pkt = b'\x00\x00\x00\xc0\xfeSMB@\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00$\x00\x08\x00\x01\x00\x00\x00\x7f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00x\x00\x00\x00\x02\x00\x00\x00\x02\x02\x10\x02"\x02$\x02\x00\x03\x02\x03\x10\x03\x11\x03\x00\x00\x00\x00\x01\x00&\x00\x00\x00\x00\x00\x01\x00 \x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\n\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00'
    
    subnet = sys.argv[1]
    
    for ip in IPNetwork(subnet):
    
        sock = socket.socket(socket.AF_INET)
        sock.settimeout(3)
    
        try:
            sock.connect(( str(ip),  445 ))
        except:
            sock.close()
            continue
    
        sock.send(pkt)
    
        nb, = struct.unpack(">I", sock.recv(4))
        res = sock.recv(nb)
    
        if res[68:70] != b"\x11\x03" or res[70:72] != b"\x02\x00":
            print(f"{ip} Not vulnerable.")
        else:
            print(f"{ip} Vulnerable")

     

  5. 系统相关截图
    靶机相关信息:
    Windows SMBv3 客户端/服务器远程代码执行漏洞浅析_第1张图片
    测试SMB服务:
    键盘Ctrl+R,输入\\IP
    Windows SMBv3 客户端/服务器远程代码执行漏洞浅析_第2张图片
    Windows SMBv3 客户端/服务器远程代码执行漏洞浅析_第3张图片

  6.  结果截图
    扫描脚本执行结果:
    Windows SMBv3 客户端/服务器远程代码执行漏洞浅析_第4张图片
    执行攻击脚本:
    Windows SMBv3 客户端/服务器远程代码执行漏洞浅析_第5张图片
    攻击结果:
    Windows SMBv3 客户端/服务器远程代码执行漏洞浅析_第6张图片

  7. 修复整改建议
    微软官方针对此漏洞给出的详细整改建议:
    详情请参考:https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/adv200005
    您可以使用以下PowerShell命令禁用压缩功能,以阻止未经身份验证的攻击者利用SMBv3服务器的漏洞。

    Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters" DisableCompression -Type DWORD -Value 1 -Force

     

    8. 使用SMB协议压缩流量传输分析结果
       
Windows SMBv3 客户端/服务器远程代码执行漏洞浅析_第7张图片Windows SMBv3 客户端/服务器远程代码执行漏洞浅析_第8张图片  

 

你可能感兴趣的:(漏洞学习)