永恒之蓝漏洞原理 445_不死的EternalBlue(永恒之蓝)

f5e83b157f15a590c5385bdfae050676.gif

a62d98c89d02ea33389e0deb5edf71af.png

2017年,Shadow Brokers将从美国国家安全局NSA窃取的软件漏洞利用攻击泄露在网上,之后1个月知名勒索软件WannaCry就席卷全球。现在已经过去2年了,Eternalblue仍然占据着美国的头版头条。本文就Eternalblue和Eternalblue为什么可以不死进行简要分析。

c7d91fe6f1683d32ad4c4380d988d52b.pngEternalblue

CVE-2017-0143到CVE-2017-0148漏洞是Windows 7, Windows Server 2008, Windows XP和运行在445端口上的Windows 10系统中使用的Microsoft SMBv1服务器系列漏洞。原始Eternalblue可执行文件中硬编码的字符串表明攻击的Windows版本有:

cc505f5f353b1abc7c5e3d44d0865f89.png

漏洞影响范围不仅限于Windows系统,还包括使用Microsoft SMBv1服务器协议的设备,比如Siemens超声医疗设备。

Eternalblue本身主要是与漏洞CVE-2017-0144相关,该漏洞通过发送特殊伪造的消息到SMBv1服务器来允许远程攻击者在目标系统上执行任意代码。其他相关的漏洞利用有Eternalchampion, Eternalromance, Eternalsynergy,这些都是被美国国安局NSA相关的APT黑客组织Equation Group标记的。

f0b847053b54b3d307ba9d932cfaea88.png

c7d91fe6f1683d32ad4c4380d988d52b.pngEternalblue为什么广泛传播?

SMBv1协议的漏洞已于2017年3月打补丁修复了。但2年过去了,仍然有超过100万联网的设备仍然受到该漏洞的影响。

5a9af64ee845e04e3e63882da1f4e8da.png

从全球范围来看,最需要修复的Windows版本为Windows Server 2008和2012 R2版本。

6641edb437efc36303cde5511e0e9470.png

其中有40万受Eternalblue漏洞影响的设备位于美国,其中有超过10万台(约占1/4)设备位于加利福尼亚州,这是美国科技产业的心脏。

a2631a8fa67ee3270a45d5defd777cae.png

目前不仅仅是勒索软件在使用Eternalblue,几乎所有需要蠕虫功能的恶意软件都可以发现Eternalblue的利用。2019年1月,研究人员还发现有加密货币挖矿机通过Eternalblue和Beapy攻击位于中国的企业。

勒索软件在2018年短暂淡出人们实现后,Eternalblue再次成为美国的头条。

7772af588507f5a67d2aa7af45978bae.png

d06d81e1d4e48f6c731a52b1e1e40795.pngEternalblue如何被使用?

用Eternalblue利用CVE-2017-0144漏洞的技术是NSA开发的,该工具集在网上泄露后,目前已经成为全世界广泛使用的工具了。

517ec1bc4ed0585464a2a96c7e80872a.png

为了成功利用该漏洞,未授权的攻击者需要发送一个经过恶意伪造的包给服务器,这也是WannaCry和NotPetya勒索软件能够进行自我繁殖和传播的原因。Eternalblue会允许勒索软件访问网络上的其他机器。攻击者可以利用Equation Group开发Shadow Brokers泄露在网上的DoublePulsar作为payload来安装在有漏洞的目标机器上,并启动勒索软件的副本。

602a7845b469185fc2d3d406db86b913.png

Eternalblue工作原理

Eternalblue依赖于一个名为 srv!SrvOS2FeaListSizeToNt的Windows函数。下面先讲一下SMB工作原理以及如何导致远程代码执行。

SMB (Server Message Block) 是用来从网络上的服务器系统来请求文件和打印服务的协议。在协议的说明中有允许协议来通信关于文件扩展属性的信息,尤其是文件系统中关于文件特征的元数据。

Eternalblue利用了3个不同的bug。第一个是协议尝试映射OS/2 FileExtended Attribute (FEA)列表结构到NT FEA结构来确定需要分配的内存大小的数学错误。错误计算创建了一个整数溢出导致分配的内存比预想的要小,最终导致缓冲区溢出。如果要写的内容太多,额外的数据就会溢出到相邻的内存空间。

利用第二个漏洞可以触发缓冲区溢出,这是由于SMB协议定义的两个子命令SMB_COM_TRANSACTION2和SMB_COM_NT_TRANSACT的差别。如果有太多的数据要包含在一个单独的包中,就需要_SECONDARY命令。TRANSACTION2和NT_TRANSACT的关键区别在于后者调用的数据包是前者大小的2倍。如果客户端使用NT_TRANSACT子命令在TRANSACTION2子命令前发送伪造的消息,就会出现验证错误。如果协议发现接收了2个分开的子命令,就会根据最后接收的包的类型来分配类型和大小。因为最后接收的包比较小,所以第一个包会占用比分配空间更多的空间。

一旦攻击者完成初始的溢出,就可以利用SMBv1中的第3个漏洞来进行Heap Spraying(堆喷射),导致在给定地址分配一块内存。然后,攻击者就可以写入和执行shellcode来控制系统。

d3c5c98438889535ddcfb88ecf30fbe0.png

Sean Dillon写了一个Ruby脚本可以扫描目标来确定系统是否未修复,并利用所有相关的漏洞。

f8fb0a5e34ebe3a358a4b783602a7cb8.png

d06d81e1d4e48f6c731a52b1e1e40795.pngEternalblue – Here To Stay

Shadow Brokers泄露的代码中含有其他3个漏洞利用:Eternalromance, Eternalsynergy和Eternalchampion。

61d2895548822edf50b9f31d3800538b.png

d06d81e1d4e48f6c731a52b1e1e40795.png如何应对?

截至目前,预防使用Eternalblue的攻击的最重要的事情是确保更新Windows系统来应用MS17-10安全补丁。如果无法更新,可以禁用SMBv1,不要将有漏洞的机器连接到互联网。

122a4467c87d5bc1fb0677d6ffef3c52.png

d39cc6f1c303c93938f7bbac24ff6cc9.png

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值