SMBGhost漏洞技术分析与防御方案

news2024/12/28 21:26:34

事件分析

最近国内外各安全厂商都发布了SMBGhost(CVE-2020-0796)漏洞的预警报告和分析报告,笔者利用周末休息时间也研究了一下,就算是做一个笔记了,分享给大家一起学习下,目前外面研究的POC大部分是通过SMB压缩数据包长度整数溢出之后导致系统Crash,基本也没啥用,估计现在各大厂商的漏洞研究人员和一些技术成熟的黑客组织都在加紧研究RCE完整利用程序吧,这个漏洞能不能完整利用,会不会像永恒之蓝那样,还需要持续研究跟踪,同时也需要关注后面会不会抓到一些利用这个漏洞的在野攻击样本。

漏洞简介

3月12日晚,微软发布安全公告披露了一个最新的SMB远程代码执行漏洞(CVE-2020-0796),该漏洞主要是因为在最新的Windows 10系统中,处理SMB3.1.1协议的压缩消息时,对头部数据没有做任何安全检查,从而引发内存破坏漏洞,黑客利用此漏洞,可无须任何权限的情况下,即可实现远程内核代码执行。

漏洞成因

从Windows10 v1903/Windows Server v1903开始,微软在协议SMB3.1.1中开启了对数据压缩传输的支持,但是由于SMB没有正确处理压缩的数据包,在客户端/服务端解压数据的时候,没有对COMPRESSIN_TRANSFORM_HEADE结构进行安全校验,导致后续代码发生一连串整形溢出、越界读写等漏洞。

影响版本

Windows10 Version 1903 for 32-bit Systems

Windows10 Version 1903 for x64-based Systems

Windows10 Version 1903 for ARM64-based Systems 

Windows Server, Version 1903 (服务器核心安装)

Windows10 Version 1909 for 32-bit Systems

Windows10 Version 1909 for x64-based Systems

Windows10 Version 1909 for ARM64-based Systems 

Windows Server, Version 1909 (服务器核心安装)

漏洞捕获

从事漏洞分析与研究的朋友都会时刻关注各大厂商公布的漏洞或补丁信息,从公布的这些漏洞信息与补丁,就可以定位到相应的模块进行分析调试,此前微软发布了各个版本操作系统的CVE-2020-0796的补丁包,如下所示:

查看这个漏洞的细节信息,包含漏洞简介,如下所示:

影响范围,以及相应的补丁下载,如下所示:

缓解措施,如下所示:

漏洞分析

1.分析SMB漏洞,需要对SMB漏洞的结构数据比较熟悉,SMB数据结构,可参考微软的官网,里面有SMB的详细数据结构信息,如下所示:

下载文档之后,查看文档目录中关于对SMB传输压缩数据包头的处理,如下所示:

可以找到COMPRESSION_TRANSFORM_HEADE数据结构,如下所示:

里面各个字段的含义,如下所示:

上面这些信息是分析这个漏洞的基础,一定要弄清楚!

2.漏洞的成因在于SMB在处理接收的压缩数据包时出现的错误,先定位到接收压缩数据后处理函数srv2!Srv2ReceiveHandler,通过上面的分析,我们可以利用COMPRESSION_TRANSFORM_HEADE的结构体中的ProtocolId字段定位到相关的代码处,如下所示:

如果传输的数据为压缩数据,则跳转到解压缩数据处理函数Srv2DecompressData,如下所示:

在Srv2DecompressData函数中,使用SrvNetAllocateBuffer进行内存分配时,未对传入的数据进行校验,会导致整数溢出,然后调用SmbCompressionDecompress函数进行数据解压操作,如下所示:

打过补丁之后,微软修改了这个函数,对传入的值进行三次校验,如下所示:

对比补丁前后的文件中对应的函数,如下所示:

漏洞检测

发送SMB数据包,检测返回的流量数据包特征,如下所示:

构造SMB压缩数据包,SMB数据包头数据,如下所示:

附加上数据压缩算法,如下所示:

检测返回的流量数据包中SMB压缩版本,如下所示:

以及数据包最后的数据,如下所示:

这种检测方法很弱,可能会有误报,目前各厂商的检测方案和工具都没有公布,不然可以逆向分析看看。

防御方案

1.windows自动更新

设置->更新和安全->Windows更新,点击“检查更新”,如下所示:

2.手动安装补丁包

查看自己的电脑Win10操作系统版本,可以按Win+R键,然后键入WINVER命令,如下所示:

确定之后会弹出Win10操作系统版本,我的版本为1809,如下所示:

如果操作系统版本为Windows 10 1903之后,可以根据自己操作系统的版本安装微软提供的对应补丁包程序,下载地址:

https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2020-0796

3.可以手动修改注册表,防止被黑客远程攻击:

按Win+R键,然后键入WINVER命令,打开注册表编辑器,如下所示:

HKLM\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters建立一个名为DisableCompression的DWORD,值为1,禁止SMB的压缩功能,如下所示:

普通用户只要用方法二去微软官网下载相应的补丁包,安装补丁包就可以了

参考链接:

1. https://github.com/ClarotyICS/CVE2020-0796

2.https://syntricks.com/cve-2020-0796-aka-smbghost-vulnerability/

3.https://www.synacktiv.com/posts/exploit/im-smbghost-daba-dee-daba-da.html

4.https://github.com/eerykitty/CVE-2020-0796-PoC

5.https://github.com/ioncodes/SMBGhost

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1484586.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

腾讯云幻兽帕鲁服务器操作系统选择Windows还是Linux?哪个比较好?

选择Windows和Linux作为腾讯云幻兽帕鲁服务器的操作系统,主要取决于用户的熟悉程度和对服务器性能的需求。 如果用户对Linux系统有较深的了解,并且追求服务器的性能和速度(因为Linux通常使用命令行或面板管理,系统文件占用较小&a…

数据分析-Pandas数据的探查蜂窝图

数据分析-Pandas数据的探查蜂窝图 数据分析和处理中,难免会遇到各种数据,那么数据呈现怎样的规律呢?不管金融数据,风控数据,营销数据等等,莫不如此。如何通过图示展示数据的规律? 数据表&…

【双指针】合并两个有序数组O(N)

合并两个有序数组 链接 . - 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/merge-sorted-array/ 题目 题解 采用双指针…

怎么优雅地访问ChatGPT

ChatGPT,这颗璀璨的智能结晶,在2022年岁末之际,由OpenAI实验室倾力铸就,犹如夜空中跃动的智慧星辰,点亮了人工智能领域的新纪元。犹如汪洋中的一座灯塔,ChatGPT以其独特的智慧光辉引人注目,然而…

【hive Hadoop】踩坑 记录

【hive & Hadoop】踩坑 记录 平台部署知识 本文记录的配置 hive Hadoop 时可能会出现的问题以及解决方案。 目录 文章目录 【hive & Hadoop】踩坑 记录目录Hive记录hive 启动报错 Permission denied Unable to determine Hadoop version information.原因解释本次的解…

Compiling from source on UNIX(cmake doxygen ant maven ccache)

前言 源码链接 cmake-3.18.0 https://cmake.org/files/v3.18/cmake-3.18.0.tar.gzdoxygen-1.10.0 https://www.doxygen.nl/files/doxygen-1.10.0.src.tar.gzapache-ant-1.10.8-bin https://archive.apache.org/dist/ant/binaries/apache-ant-1.10.8-bin.tar.gzapache-maven-3…

MySQL相关知识汇总

MySQL是一个广泛使用的开源关系型数据库管理系统,它以其高性能、稳定性和易用性而备受开发者喜爱。在软件开发领域,无论是大型项目还是小型应用,MySQL都扮演着重要的角色。本文将对MySQL的一些关键知识点进行汇总,帮助读者更好地了…

【MySQL】表的约束——空属性、默认值、列描述、zerofill、主键、自增长、唯一键、外键

文章目录 MySQL表的约束1. 空属性2. 默认值3. 列描述4. zerofill5. 主键6. 自增长7. 唯一键8. 外键 MySQL 表的约束 MySQL中的表的约束是一种规则,用于限制或保护表中数据的完整性和合法性。约束可以确保数据在插入、更新或删除时满足特定的条件,从而维护…

【C++】核心编程--类与对象(持续更新)

文章目录 1. 封装1.1封装的意义1.1.1封装意义一:属性和行为1.1.2封装的意义二:访问权限 1.2 struct和class的区别1.3 成员属性设置为私有 2.对象特性2.1 构造函数和析构函数2.2构造函数的分类及调用2.3 拷贝构造函数调用时机2.4 构造函数调用规则2.5深拷…

Flink基本原理 + WebUI说明 + 常见问题分析

Flink 概述 Flink 是一个用于进行大规模数据处理的开源框架,它提供了一个流式的数据处理 API,支持多种编程语言和运行时环境。Flink 的核心优点包括: 低延迟:Flink 可以在毫秒级的时间内处理数据,提供了低延迟的数据…

架构(十五)Java字节码增强

一、引言 一般如果需要做增强类的架构工具会使用SpringBoot提供的切面,但是这逃不开两个问题:1、使用方需要加注解代码;2、版本更新导致的发布。 所以java还提供了字节码层面的增强方案,对使用的系统是无感的。 二、字节码增强选…

数独游戏(dfs)

代码注释如下 #include <iostream> using namespace std; const int N 10; bool col[N][N], rol[N][N], cell[3][3][N]; char g[N][N]; bool dfs(int x, int y) { //用bool这样在找到一个方案就可以迅速退出if(y 9) x, y 0; //若y超出边界&#xff0c;则第二…

李沐动手学习深度学习——3.6练习

本节直接实现了基于数学定义softmax运算的softmax函数。这可能会导致什么问题&#xff1f;提示&#xff1a;尝试计算exp(50)的大小。 可能存在超过计算机最大64位的存储&#xff0c;导致精度溢出&#xff0c;影响最终计算结果。 本节中的函数cross_entropy是根据交叉熵损失函数…

人工智能指数报告2023

人工智能指数报告2023 主要要点第 1 章 研究与开发第 2 章 技术性能第 3 章 人工智能技术伦理第 4 章 经济第 5 章 教育第 6 章 政策与治理第 7 章 多样性第 8 章 舆论 人工智能指数是斯坦福大学以人为本的人工智能研究所&#xff08;HAI&#xff09;的一项独立倡议&#xff0c…

基于 LLaMA 和 LangChain 实践本地 AI 知识库

有时候,我难免不由地感慨,真实的人类世界,本就是一个巨大的娱乐圈,即使是在英雄辈出的 IT 行业。数日前,Google 正式对外发布了 Gemini 1.5 Pro,一个建立在 Transformer 和 MoE 架构上的多模态模型。可惜,这个被 Google 寄予厚望的产品并未激起多少水花,因为就在同一天…

STM32 中断流程介绍

STM32可以产生中断的事件多种多样&#xff0c;比如&#xff1a;定时器时间结束、串口接收到数据、某个GPIO检测到电平变化等等等等。 1、STM32 gpio 中断处理流程介绍 1、从引脚进入的高低电平首先由输入驱动器处理&#xff0c;如下图 2、经过输入驱动器处理后的信号会进…

BUUCTF---[极客大挑战 2019]LoveSQL1

1.题目描述 2.一般遇到登录&#xff0c;用户名会尝试admin&#xff0c;密码会尝试万能密码" or 11#或者 or 11#。这里尝试了第一种&#xff0c;但是不对。 3.接着尝试第二种 or 11#。提示登录成功了说明这里是单引号注入&#xff0c;并给了一串字符 4.sql注入题一般会设计…

获取linuxIP、内存、cpu、磁盘IO等信息的Shell脚本及其讲解

shell基础知识 1.grep grep是一个在Unix和Unix-like系统上使用的命令行工具&#xff0c;用于在文本文件中搜索匹配指定模式的行。它的名字来自于"global regular expression print"&#xff08;全局正则表达式打印&#xff09;的缩写。grep的基本用法是通过指定一个…

神经网络之万能定理python-pytorch实现,可以拟合任意曲线

神经网络之万能定理python-pytorch实现&#xff0c;可以拟合任意曲线 博主&#xff0c;这几天一直在做这个曲线拟合的实验&#xff0c;讲道理&#xff0c;网上可能也有很多这方面的资料&#xff0c;但是博主其实试了很多&#xff0c;效果只能对一般的曲线还行&#xff0c;稍微…

设计模式——中介者模式(mediator pattern)

概述 如果在一个系统中对象之间的联系呈现为网状结构&#xff0c;如下图所示。对象之间存在大量的多对多联系&#xff0c;将导致系统非常复杂&#xff0c;这些对象既会影响别的对象&#xff0c;也会被别的对象所影响&#xff0c;这些对象称为同事对象&#xff0c;它们之间通过彼…