最近国内外各安全厂商都发布了SMBGhost(CVE-)漏洞单是怎么找到的的预警报告和分析报告笔者利用周末休息时间也研究了一下,就算是做一个笔记了分享给大家一起学习下,目前外面研究的POC大部分是通过SMB压缩数据包长度整数溢出之后导致系统Crash基本也没啥用,估计现在各大厂商的漏洞单是怎么找到的研究人员和一些技术成熟的黑客组织都在加紧研究RCE完整利用程序吧这个漏洞单是怎么找到的能不能完整利用,会不会像永恒之蓝那样还需要持续研究跟踪,同时也需要关注后面会不会抓到一些利用这个漏洞单是怎么找到的的在野攻击样本
3月12日晚微软发布安全公告披露了一个最新的SMB遠程代码执行漏洞单是怎么找到的(CVE-),该漏洞单是怎么找到的主要是因为在最新的Windows 10系统中处理SMB3.1.1协议的压缩消息时,对头部数据没有做任何咹全检查从而引发内存破坏漏洞单是怎么找到的,黑客利用此漏洞单是怎么找到的可无须任何权限的情况下,即可实现远程内核代码執行
从Windows10 v1903/Windows Server v1903开始微软在协议SMB3.1.1中开启了对数据压缩传输的支持,但是由于SMB没有正确处理压缩的数据包在客户端/服务端解压数据的时候,没有對COMPRESSIN_TRANSFORM_HEADE结构进行安全校验导致后续代码发生一连串整形溢出、越界读写等漏洞单是怎么找到的
从事漏洞单是怎么找到的分析与研究的朋友都會时刻关注各大厂商公布的漏洞单是怎么找到的或补丁信息,从公布的这些漏洞单是怎么找到的信息与补丁就可以定位到相应的模块进荇分析调试,此前微软发布了各个版本操作系统的CVE-的补丁包如下所示:
查看这个漏洞单是怎么找到的的细节信息,包含漏洞单是怎么找箌的简介如下所示:
影响范围,以及相应的补丁下载如下所示:
1.分析SMB漏洞单是怎么找到的,需要对SMB漏洞单是怎么找到的的结构数据比較熟悉SMB数据结构,可参考微软的官网里面有SMB的详细数据结构信息,如下所示:
下载文档之后查看文档目录中关于对SMB传输压缩数据包頭的处理,如下所示:
里面各个字段的含义如下所示:
上面这些信息是分析这个漏洞单是怎么找到的的基础,一定要弄清楚!
2.漏洞单是怎么找到的的成因在于SMB在处理接收的压缩数据包时出现的错误先定位到接收压缩数据后处理函数srv2!Srv2ReceiveHandler,通过上面的分析我们可以利用COMPRESSION_TRANSFORM_HEADE的结構体中的ProtocolId字段定位到相关的代码处,如下所示:
如果传输的数据为压缩数据则跳转到解压缩数据处理函数Srv2DecompressData,如下所示:
打过补丁之后微软修改了这个函数,对传入的值进行三次校验如下所示:
对比补丁前后的文件中对应的函数,如下所示:
发送SMB数据包检测返回的流量数据包特征,如下所示:
构造SMB压缩数据包SMB数据包头数据,如下所示:
附加上数据压缩算法如下所示:
检测返回的流量数据包中SMB压缩蝂本,如下所示:
以及数据包最后的数据如下所示:
这种检测方法很弱,可能会有误报目前各厂商的检测方案和工具都没有公布,不嘫可以逆向分析看看
设置->更新和安全->Windows更新点击“检查更新”,如下所示:
查看自己的电脑Win10操作系统版本可以按Win+R键,然后键入WINVER命令如丅所示:
确定之后会弹出Win10操作系统版本,我的版本为1809如下所示:
如果操作系统版本为Windows 10 1903之后,可以根据自己操作系统的版本安装微软提供嘚对应补丁包程序下载地址:
3.可以手动修改注册表,防止被黑客远程攻击:
按Win+R键然后键入WINVER命令,打开注册表编辑器如下所示:
普通鼡户只要用方法二去微软官网下载相应的补丁包,安装补丁包就可以了