0x01 漏洞简介


  北京时间 3 月 12 日晚,微软发布安全公告披露了一个最新的SMB远程代码执行漏洞(CVE-2020-0796),该漏洞是由于SMBv3协议在处理恶意的压缩数据包时出错所造成的,它可让远程且未经身份验证的攻击者在目标系统上执行任意代码。

0x02 影响版本


  • 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版(服务器核心安装)

0x03 漏洞检测


检测工具使用命令

1
python scanner.py IP

此漏洞检测工具为python2脚本。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import socket
import struct
import sys

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'
sock = socket.socket(socket.AF_INET)
sock.settimeout(3)
sock.connect(( sys.argv[1], 445 ))
sock.send(pkt)

nb, = struct.unpack(">I", sock.recv(4))
res = sock.recv(nb)

if not res[68:70] == b"\x11\x03":
exit("Not vulnerable.")
if not res[70:72] == b"\x02\x00":
exit("Not vulnerable.")

exit("Vulnerable.")

代码来源:https://github.com/ollypwn/SMBGhost/blob/master/scanner.py

0x04 漏洞演示


1. 环境准备

  为了便于操作演示,本次采用VMare虚拟机软件,搭建一个存在该漏洞的Win10 x64 1909的靶机,然后在该靶机上新建了一个普通权限用户lucky,并且开启SMB服务。

2. 检测漏洞

检测工具使用命令

1
python scanner.py 192.168.1.6

3. 蓝屏攻击

命令行运行EXP工具后,输入目标IP进行蓝屏攻击,成功后目标主机会蓝屏报错。

4. 本地提权

命令行运行EXP工具后,输入IP:127.0.0.1进行本地提权,成功后会弹出system终端。

0x05 漏洞修复


(1) 关闭445端口,防御利用该漏洞的攻击。

(2) 禁用SMBv3压缩,使用以下PowerShell命令可禁用SMBv3服务的压缩(无需重新启动):

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

(3)打补丁:https://www.catalog.update.microsoft.com/Search.aspx?q=KB4551762

(4)更新系统版本

参考文章