Microsoft SMBv3远程代码执行漏洞浅析
- 前言
Microsoft通过Microsoft Server Message Block 3.1.1(SMBv3)协议处理某些请求的方式意识到了一个远程执行代码漏洞。成功利用此漏洞的攻击者可以在目标SMB服务器或SMB客户端上执行代码。
为了利用针对SMB服务器的漏洞,未经身份验证的攻击者可以将特制数据包发送到目标SMBv3服务器。若要利用针对SMB客户端的漏洞,未经身份验证的攻击者将需要配置恶意的SMBv3服务器,并诱使用户连接到该服务器。 - 受影响系统
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(服务器核心安装)
-
实验环境
windows10专业版;版本 1909 (OS 内部版本 18363.657)//靶机
windows7(攻击机)
python 3.7 -
实验环境
扫描代码://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")
-
系统相关截图
靶机相关信息:
测试SMB服务:
键盘Ctrl+R,输入\\IP -
结果截图
扫描脚本执行结果:
执行攻击脚本:
攻击结果: -
修复整改建议
微软官方针对此漏洞给出的详细整改建议:
详情请参考: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协议压缩流量传输分析结果