CVE-2020-0796,又是一场补丁攻坚战

2020-03-26 16:55:46 浏览数 (1)

每年真正比较有影响力的漏洞编号,其实并不多,而这个CVE-2020-0796,就是我们在疫情之下全面返岗伊始,最值得去重视的一个。

2020年3月12日晚,微软正式发布CVE-2020-0796高危漏洞补丁。这就意味着,一场与时间赛跑的攻防对抗开始了,要赶在攻击开始之前,保护系统并为其打上补丁。

通过这个漏洞,攻击者无需任何权限,即可利用漏洞直接攻击SMB服务端造成RCE,而且可以通过OFFICE文档、网页、压缩包等多种形式传递给目标用户,从而触发漏洞进行攻击。

这次漏洞的亮点在于针对SMB客户端的攻击,而且主要影响Win10系统的个人用户。试想一下,如果将这个漏洞大规模地应用于钓鱼攻击,一旦受害者点开了钓鱼邮件中的url或附件,很容易就中招了。

打补丁是预防病毒感染最有效的一种方式,但往往越是简单的事情,越难以做到。数以上万的终端,如何才能让用户意识到打补丁的重要性,及时下载补丁修复此漏洞,这无疑将是一场攻坚战。

本文收集和整理了一些方法和工具,用于开展补丁安装攻坚。


1、如何检查操作系统版本?

作为个人用户,检查系统版本,可初步确认是否受到影响,(受影响版本:1903和1909)。

运行---输入winver,单击确定。如下图所示,我的系统版本是:Windows 10 Version 1903。

2、漏洞修复工具

A、腾讯电脑管家SMB漏洞修复工具,下载地址:

http://dlied6.qq.com/invc/QQPatch/QuickFix_SMB0796.exe

B、安天 SMBv3的RCE漏洞强化工具,下载地址:

https://bbs.antiy.cn/forum.php?mod=viewthread&tid=83848

3、漏洞扫描工具

从MS17-010开始,再到CVE-2019-0708,都有一些安全厂商发布针对单一漏洞的远程漏洞扫描工具。这本是一件幸事,可以帮助更多的企业快速探测自身网络资产漏洞情况。

而到了现如今的CVE-2020-0796,漏洞扫描工具的获取越来越难了。比如,如果想要获取某安全厂商的SMB远程代码执行漏洞扫描工具,需填写申请书,签字并加盖单位公章,仅限自用。另外,某CERT在公众号发布了CVE-2020-0796快速扫描检测工具,随后删除了推文和工具下载地址,手慢的同学,你们已经错过啦。

在github,已经有了 CVE-2020-0796 的扫描脚本,可以借鉴一下,改成批量检测工具。项目地址:https://github.com/ollypwn/SMBGhost

代码语言:javascript复制
import socket
import struct
import sys
from netaddr import IPNetwork

pkt = b'x00x00x00xc0xfeSMB@x00x00x00x00x00x00x00x00x00x1fx00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00$x00x08x00x01x00x00x00x7fx00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00xx00x00x00x02x00x00x00x02x02x10x02"x02$x02x00x03x02x03x10x03x11x03x00x00x00x00x01x00&x00x00x00x00x00x01x00 x00x01x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x03x00nx00x00x00x00x00x01x00x00x00x01x00x00x00x01x00x00x00x00x00x00x00'

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"x11x03" or res[70:72] != b"x02x00":
        print(f"{ip} Not vulnerable.")
    else:
        print(f"{ip} Vulnerable")

4、缓解措施

A、建议您立即安装漏洞补丁更新,微软安全补丁下载,访问如下链接:

代码语言:javascript复制
https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2020-0796

B、如无法立即安装补丁,建议禁用SMBv3压缩

代码语言:javascript复制
Set-ItemProperty -Path "HKLM:SYSTEMCurrentControlSetServicesLanmanServerParameters" DisableCompression -Type DWORD -Value 1 -Force

PS:无需重启,可以防止远程命令执行,但无法防止针对SMB客户端的攻击。

0 人点赞