CVE-2017-0143 Eternal Blue¶
Description¶
永恒之蓝(Eternal Blue)爆发于2017年4月14日晚,是一种利用 Windows 系统的 SMB 协议漏洞来获取系统的最高权限,以此来控制被入侵的计算机。
甚至于2017年5月12日, 不法分子通过改造“永恒之蓝”制作了 Wannacry 勒索病毒,使全世界大范围内遭受了该勒索病毒,甚至波及到学校、大型企业、政府等机构,只能通过支付高额的赎金才能恢复出文件。
不过在该病毒出来不久就被微软通过打补丁修复。
漏洞影响¶
目前已知受影响的 Windows 版本包括但不限于:Windows NT,Windows 2000、Windows XP、Windows 2003、Windows Vista、Windows 7、Windows 8,Windows 2008、Windows 2008 R2、Windows Server 2012 SP0。
What is SMB?¶
SMB 协议¶
SMB(Server Message Block)是一个协议服务器信息块,它是一种客户机/服务器、请求/响应协议,通过 SMB 协议可以在计算机间共享文件、打印机、命名管道等资源,电脑上的网上邻居就是靠SMB实现的;
SMB 协议工作在应用层和会话层,可以用在 TCP/IP 协议之上,SMB 使用 TCP/139 端口和 TCP/445 端口。
SMB 原理¶
- 首先客户端发送一个 SMB negport 请求数据报,并列出它所支持的所有 SMB 的协议版本。
- 服务器收到请求消息后响应请求,并列出希望使用的 SMB 协议版本。如果没有可以使用的协议版本则返回
0XFFFFH
,结束通信。 - 协议确定后,客户端进程向服务器发起一个用户或共享的认证,这个过程是通过发送 SessetupX 请求数据包实现的。
- 客户端发送一对用户名和密码或一个简单密码到服务器,然后通过服务器发送一个 SessetupX 应答数据包来允许或拒绝本次连接。
- 当客户端和服务器完成了磋商和认证之后,它会发送一个 Tcon 或 TconX SMB 数据报并列出它想访问的网络资源的名称,之后会发送一个 TconX 应答数据报以表示此次连接是否接收或拒绝。
- 连接到相应资源后,SMB 客户端就能够通过 open SMB 打开一个文件,通过 read SMB 读取文件,通过 write SMB 写入文件,通过 close SMB 关闭文件。
What is Eternal Blue?¶
漏洞出现在 Windows SMB v1 中的内核态函数 srv!SrvOs2FeaListToNt
在处理 FEA(File Extended Attributes) 转换时,在大非分页池(内核的数据结构,Large Non-Paged Kernel Pool)上存在缓冲区溢出。
函数 srv!SrvOs2FeaListToNt
在将 FEA list 转换成 NTFEA(Windows NT FEA) list 前会调用 srv!SrvOs2FeaListSizeToNt
去计算转换后的 FEA lsit 的大小。
然后会进行如下操作:
srv!SrvOs2FeaListSizeToNt
会计算 FEA list 的大小并更新待转换的 FEA list 的大小- 因为错误的使用 WORD 强制类型转换,导致计算出来的待转换的 FEA list 的大小比真正的 FEA list 大
- 因为原先的总大小计算错误,导致当 FEA list 被转化为 NTFEA list 时,会在非分页池导致缓冲区溢出
永恒之蓝是在 Windows 的 SMB 服务处理 SMB v1 请求时发生的漏洞,这个漏洞导致攻击者在目标系统上可以执行任意代码。
通过永恒之蓝漏洞会扫描开放 445 文件共享端口的 Windows 机器,无需用户任何操作,只要开机上网,不法分子就能在电脑和服务器中植入勒索软件、远程控制木马、虚拟货币挖矿机等恶意程序。
Explanation of exploit; PoC¶
...
Mitigation¶
- 禁用 SMB v1 协议
- 打开 Windows Update,或手动安装补丁
- 使用防火墙阻止 445 端口的连接,或者使用进/出站规则阻止 445 端口的连接
- 不要随意打开陌生的文件
- 安装杀毒软件,及时更新病毒库
Refer¶
- NSA Eternalblue SMB 漏洞分析
- Microsoft 安全公告 MS17-010 - 严重
- https://segmentfault.com/a/1190000042108766
创建日期: November 17, 2022