不死的EternalBlue(永恒之蓝)

不死的EternalBlue(永恒之蓝)_第1张图片

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

Eternalblue

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

不死的EternalBlue(永恒之蓝)_第2张图片

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

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

不死的EternalBlue(永恒之蓝)_第3张图片

Eternalblue为什么广泛传播?

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

不死的EternalBlue(永恒之蓝)_第4张图片

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

不死的EternalBlue(永恒之蓝)_第5张图片

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

不死的EternalBlue(永恒之蓝)_第6张图片

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

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

不死的EternalBlue(永恒之蓝)_第7张图片

Eternalblue如何被使用?

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

不死的EternalBlue(永恒之蓝)_第8张图片

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

不死的EternalBlue(永恒之蓝)_第9张图片

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来控制系统。

不死的EternalBlue(永恒之蓝)_第10张图片

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

不死的EternalBlue(永恒之蓝)_第11张图片

Eternalblue – Here To Stay

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

不死的EternalBlue(永恒之蓝)_第12张图片

如何应对?

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

你可能感兴趣的:(不死的EternalBlue(永恒之蓝))