我随便用谷歌搜索了关于EternalBlue漏洞利用究竟是如何工作的解释,但我想鉴于 WannaCry 的媒体风暴,我只能找到充其量说它是 SMB 漏洞利用的资源。我知道微软在 SMB 协议的实现中存在一个错误,但我想知道的是,为了利用微软的安全漏洞,必须制作什么样的有效负载,以及微软做错了什么导致 Windows容易受到这样的攻击吗?即使是指向某些源代码的(信誉良好的)链接也比我迄今为止所能找到的要多。
EternalBlue 漏洞利用如何工作?
信息安全
视窗
开发
脆弱性
想哭
桑巴
2021-08-27 02:25:03
1个回答
Metasploit 中有一个针对 EternalBlue 的漏洞,解释如下:
Srv!SrvOs2FeaToNt 中存在缓冲区溢出 memmove 操作。大小在 Srv!SrvOs2FeaListSizeToNt 中计算,其中一个 DWORD 减去一个 WORD 时存在数学错误。内核池经过整理,以便很好地布局溢出以覆盖 SMBv1 缓冲区。实际的 RIP 劫持稍后在 srvnet!SrvNetWskReceiveComplete 中完成。
我不是专家,也不太了解 ruby,但据我了解,DWORD 的长度是 WORD 的两倍,这可以让您通过发送大缓冲区来写入内存。内核内存在数据被写入时被组织(整理),因此一旦 RIP 指针被劫持并指向被覆盖的内存,正在传输的有效负载就有意义,然后将被读取并执行。
您可以在此处查看源代码。
至于做错了什么,应该有一个从 DWORD 到 DWORD 或从 WORD 到 WORD 的减法。大小不同是允许内存被覆盖的原因。
编辑:Checkpoint 做了一篇惊人的文章,解释了与此漏洞相关的所有 3 个错误,我从我阅读的 ruby 代码中了解到的只是错误 1/3(Checkpoint 的文章中的错误 A),如果你想去很多更深入,检查一下。
其它你可能感兴趣的问题