永恒之蓝漏洞解析

Microsoft Windows 7/2008 R2 - ‘EternalBlue’ SMB Remote Code Execution (MS17-010)“永恒之蓝”漏洞原理

一、漏洞概况

1、简介

永恒之蓝是指2017年4月14日晚,黑客团体Shadow Brokers(影子经纪人)公布一大批网络攻击工具,其中包含“永恒之蓝”工具,“永恒之蓝”利用Windows系统的SMB漏洞可以获取系统最高权限。
恶意代码会扫描开放445文件共享端口的Windows机器,无需用户任何操作,只要开机上网,不法分子就能在电脑和服务器中植入勒索软件、远程控制木马、虚拟货币挖矿机等恶意程序。

2、相关协议

SMB协议:SMB(全称是Server Message Block)是一个协议名,它能被用于Web连接和客户端与服务器之间的信息沟通。SMB最初是IBM的贝瑞·费根鲍姆(Barry Feigenbaum)研制的,其目的是将DOS操作系统中的本地文件接口“中断13”改造为网络文件系统。
(在进行漏洞利用时,可以配合远程桌面协议)

3、依托漏洞和利用过程

总体上,MS17-010是一个利用SMB协议的缓冲区溢出漏洞,通过覆盖其他内存区域,实现远程的命令注入。
还要依靠其他两个漏洞:
-用SMB_COM_NT_TRANSACT发送一个大事务,但作为SMB_COM_TRANSACTION2处理(需要触发bug)
-发送特殊的会话设置命令(SMB登录命令)来分配大的未分页池(用于创建漏洞)

利用思路:
1、缓冲区溢出利用

  • srvnet缓冲区包含一个指针到另一个结构和MDL关于接收缓冲区
  • 控制MDL值导致任意写入
  • 控制指针假结构导致代码执行,因为有指针的功能
  • srvnet缓冲区是在目标接收到前4个字节后创建的
  • 前4个字节包含SMB消息的长度
  • 可能的srvnet缓冲区大小是“…”
    , 0x9000, 0x11000, 0x21000,…”
    srvnet。
    sys将选择足够大的大小。
  • 在收到整个SMB消息或连接丢失后,服务器调用SrvNetWskReceiveComplete()来处理SMB消息
  • SrvNetWskReceiveComplete()检查并设置一些值,然后将SMB消息传递给SrvNetCommonReceiveHandler()
  • SrvNetCommonReceiveHandler()将SMB消息传递给SMB处理程序
    如果srvnet缓冲区中的指针被修改为伪结构,我们可以让SrvNetCommonReceiveHandler()调用我们的外壳代码如果SrvNetCommonReceiveHandler()调用我们的shell代码,则不会调用任何SMB处理程序

2、注入命令

  • 劫持系统调用是获取进程上下文代码执行的常用方法(IRQL是PASSIVE_LEVEL)
  • 在Windows x64上,可以通过写入IA32_LSTAR MSR (0xc0000082)来修改系统调用目标地址
  • IA32_LSTAR MSR范围是核心/线程/唯一取决于CPU模型
  • 在多核处理器的空闲目标上,被劫持的系统调用可能需要一段时间(> 5分钟)
    get调用,因为它是在其他处理器上调用的
    当使用劫持系统调用方法时,Shellcode应该知道双覆盖系统调用目标地址
  • 然后,在进程上下文中使用APC,让代码在用户空间执行(第3环)

4、漏洞原理

(1)srv.sys在处理SrvOs2FeaListSizeToNt的时候逻辑不正确导致越界拷贝。
(2)srvnet在接收包的时候就会在固定0xffdff000这个地址存入客户端发送来的数据。
(3)0xffdff1f1处为shellcode.最后在接收完成后,最终调到srvnet!SrvNetWskReceiveComplete.在这个函数中会调用最终的shellcode。

注:调用位置由精心设计的注入数据包决定。

二、攻击方法

1、命令注入方式

见代码

2、配合RDP的漏洞利用

见附录文章

引用

[1] http://blogs.360.cn/post/nsa-eternalblue-smb.html
[2]https://www.exploit-db.com/exploits/42031

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值