MSF中MS17-010利用模块源码分析
字数 2788 2025-08-20 18:17:59

MS17-010漏洞利用模块源码分析与教学指南

一、MS17-010漏洞概述

MS17-010是微软Windows SMB服务中的一个严重远程代码执行漏洞,影响Windows Server 2012及以下版本(包括32位和64位系统)。该漏洞被用于著名的"永恒之蓝"攻击工具中。

二、Metasploit中的相关模块

Metasploit框架提供了多个与MS17-010相关的模块:

  1. 扫描验证模块

    • auxiliary/scanner/smb/smb_ms17_010 - 用于检测目标系统是否存在MS17-010漏洞
  2. 漏洞利用模块

    • auxiliary/admin/smb/ms17_010_command - 以命令执行方式验证漏洞
    • exploit/windows/smb/ms17_010_psexec - 执行payload上线进行漏洞攻击
    • exploit/windows/smb/ms17_010_eternalblue - EternalBlue SMB远程Windows内核池破坏攻击

三、模块详细分析

1. 扫描验证模块 (auxiliary/scanner/smb/smb_ms17_010)

使用方式:

msf6 > use auxiliary/scanner/smb/smb_ms17_010
msf6 auxiliary(scanner/smb/smb_ms17_010) > set RHOSTS 192.168.1.15
msf6 auxiliary(scanner/smb/smb_ms17_010) > run

关键配置选项:

  • RHOSTS: 目标IP地址
  • RPORT: SMB端口,默认445
  • SMBUser/SMBPass: SMB认证凭据,默认为空(匿名访问)
  • THREADS: 线程数,默认为1

源码分析:

  • 检测原理:通过发送PeekNamedPipe请求,判断响应包是否包含STATUS_INSUFF_SERVER_RESOURCES (0xc0000205)
  • 主要函数
    • run_host: 检测入口
    • do_smb_ms17_010_probe: 发送探测请求

2. 命令执行模块 (auxiliary/admin/smb/ms17_010_command)

使用方式:

msf6 > use auxiliary/admin/smb/ms17_010_command
msf6 auxiliary(admin/smb/ms17_010_command) > set rhosts 192.168.1.9
msf6 auxiliary(admin/smb/ms17_010_command) > run

关键配置选项:

  • COMMAND: 要执行的命令,默认为net group "Domain Admins" /domain
  • SERVICE_NAME: 服务名,默认为随机8位字母字符串
  • SERVICE_DISPLAY_NAME: 服务显示名,默认为随机16位字母字符串
  • SMBSHARE: 目标共享,默认为C$

源码分析:

  • 攻击流程
    1. 通过eternal_pwn函数获取system权限会话
    2. 调用smb_pwn函数进行命令执行
  • 核心函数
    • eternal_pwn: 获取system权限会话
    • fingerprint_os: 检查目标系统版本
    • find_accessible_named_pipe: 检查可用的命名管道
    • execute_command_with_output: 命令执行、结果读取和清理
    • psexec: 通过命名管道svcctl远程RPC调用创建/启动/删除服务

文件残留问题:

该模块仅删除服务运行程序中的bat文件,未删除命令执行结果重定向的文件,导致目标系统相应目录仍存在攻击痕迹。

3. 漏洞利用模块 (exploit/windows/smb/ms17_010_psexec)

使用方式:

msf6 > use exploit/windows/smb/ms17_010_psexec
msf6 exploit(windows/smb/ms17_010_psexec) > set rhosts 192.168.1.9
msf6 exploit(windows/smb/ms17_010_psexec) > exploit

关键配置选项:

  • Payload: 默认为windows/meterpreter/reverse_tcp
  • Target: 攻击模式,默认为Automatic,可选:
    • Automatic
    • PowerShell
    • Native upload
    • MOF upload

源码分析:

  • 攻击流程
    1. 通过eternal_pwn获取system权限会话
    2. 根据目标配置选择不同攻击方式
  • 攻击模式分析

1. Automatic模式

  • 检查目标是否安装PowerShell(powershell_installed函数)
    • 如果已安装:调用execute_powershell_payload
    • 如果未安装:调用native_upload

2. PowerShell模式

  • 通过cmd_psh_payload生成PowerShell payload
  • 使用psexec函数执行payload

3. Native upload模式

  • 通过SMB共享上传payload exe服务程序
  • 使用psexec执行上传的程序
  • 最后删除上传的服务程序

4. MOF upload模式

  • 调用mof_upload函数:
    • 上传payload exe到ADMIN$\system32\
    • 上传MOF文件到ADMIN$\system32\wbem\mof\
  • generate_mof函数生成MOF文件,通过WMI运行特定程序

4. EternalBlue利用模块 (exploit/windows/smb/ms17_010_eternalblue)

使用方式:

msf6 > use exploit/windows/smb/ms17_010_eternalblue
msf6 exploit(windows/smb/ms17_010_eternalblue) > set rhosts 192.168.1.15
msf6 exploit(windows/smb/ms17_010_eternalblue) > exploit

特点:

  • 仅支持64位系统(Windows Server 2008及以下,Windows 7及以下)
  • 默认payload为windows/x64/meterpreter/reverse_tcp

源码分析:

  • 首先调用check函数检测漏洞(使用扫描模块)
  • 验证目标架构(不支持x86)
  • 根据目标系统版本进行exploit

四、防御建议

  1. 及时更新系统:安装微软发布的MS17-010补丁
  2. 关闭SMBv1:在不需要的情况下禁用SMBv1协议
  3. 网络隔离:限制SMB端口(445)的外部访问
  4. 监控检测
    • 监控ADMIN$\system32\C$\Windows\Temp\目录的异常文件
    • 监控异常服务创建和WMI活动
  5. 清理痕迹:检查并删除攻击可能留下的bat、txt、exe和mof文件

五、攻击痕迹分析

攻击后可能留下的文件:

  1. 命令执行模块:

    • C$\WINDOWS\Temp\随机16位字母字符串.txt - 命令输出结果
    • C$\WINDOWS\Temp\随机16位字母字符串.bat - 命令批处理文件(可能被删除)
  2. 漏洞利用模块:

    • Automatic/Native模式:
      • ADMIN$\system32\随机8位字母字符串.exe - payload程序(Native模式会删除)
    • MOF模式:
      • ADMIN$\system32\随机8位字母字符串.exe - payload程序
      • ADMIN$\system32\wbem\mof\随机14位字母数字字符串.mof - MOF文件

六、总结

MS17-010漏洞利用链完整,从扫描检测到多种攻击方式,Metasploit提供了全面的利用模块。理解这些模块的工作原理对于防御和取证分析至关重要。防御者应重点关注SMB服务的安全配置和异常行为监控。

MS17-010漏洞利用模块源码分析与教学指南 一、MS17-010漏洞概述 MS17-010是微软Windows SMB服务中的一个严重远程代码执行漏洞,影响Windows Server 2012及以下版本(包括32位和64位系统)。该漏洞被用于著名的"永恒之蓝"攻击工具中。 二、Metasploit中的相关模块 Metasploit框架提供了多个与MS17-010相关的模块: 扫描验证模块 : auxiliary/scanner/smb/smb_ms17_010 - 用于检测目标系统是否存在MS17-010漏洞 漏洞利用模块 : auxiliary/admin/smb/ms17_010_command - 以命令执行方式验证漏洞 exploit/windows/smb/ms17_010_psexec - 执行payload上线进行漏洞攻击 exploit/windows/smb/ms17_010_eternalblue - EternalBlue SMB远程Windows内核池破坏攻击 三、模块详细分析 1. 扫描验证模块 (auxiliary/scanner/smb/smb_ ms17_ 010) 使用方式: 关键配置选项: RHOSTS : 目标IP地址 RPORT : SMB端口,默认445 SMBUser / SMBPass : SMB认证凭据,默认为空(匿名访问) THREADS : 线程数,默认为1 源码分析: 检测原理 :通过发送 PeekNamedPipe 请求,判断响应包是否包含 STATUS_INSUFF_SERVER_RESOURCES (0xc0000205) 主要函数 : run_host : 检测入口 do_smb_ms17_010_probe : 发送探测请求 2. 命令执行模块 (auxiliary/admin/smb/ms17_ 010_ command) 使用方式: 关键配置选项: COMMAND : 要执行的命令,默认为 net group "Domain Admins" /domain SERVICE_NAME : 服务名,默认为随机8位字母字符串 SERVICE_DISPLAY_NAME : 服务显示名,默认为随机16位字母字符串 SMBSHARE : 目标共享,默认为 C$ 源码分析: 攻击流程 : 通过 eternal_pwn 函数获取system权限会话 调用 smb_pwn 函数进行命令执行 核心函数 : eternal_pwn : 获取system权限会话 fingerprint_os : 检查目标系统版本 find_accessible_named_pipe : 检查可用的命名管道 execute_command_with_output : 命令执行、结果读取和清理 psexec : 通过命名管道svcctl远程RPC调用创建/启动/删除服务 文件残留问题: 该模块仅删除服务运行程序中的bat文件,未删除命令执行结果重定向的文件,导致目标系统相应目录仍存在攻击痕迹。 3. 漏洞利用模块 (exploit/windows/smb/ms17_ 010_ psexec) 使用方式: 关键配置选项: Payload : 默认为 windows/meterpreter/reverse_tcp Target : 攻击模式,默认为Automatic,可选: Automatic PowerShell Native upload MOF upload 源码分析: 攻击流程 : 通过 eternal_pwn 获取system权限会话 根据目标配置选择不同攻击方式 攻击模式分析 : 1. Automatic模式 : 检查目标是否安装PowerShell( powershell_installed 函数) 如果已安装:调用 execute_powershell_payload 如果未安装:调用 native_upload 2. PowerShell模式 : 通过 cmd_psh_payload 生成PowerShell payload 使用 psexec 函数执行payload 3. Native upload模式 : 通过SMB共享上传payload exe服务程序 使用 psexec 执行上传的程序 最后删除上传的服务程序 4. MOF upload模式 : 调用 mof_upload 函数: 上传payload exe到 ADMIN$\system32\ 上传MOF文件到 ADMIN$\system32\wbem\mof\ generate_mof 函数生成MOF文件,通过WMI运行特定程序 4. EternalBlue利用模块 (exploit/windows/smb/ms17_ 010_ eternalblue) 使用方式: 特点: 仅支持64位系统(Windows Server 2008及以下,Windows 7及以下) 默认payload为 windows/x64/meterpreter/reverse_tcp 源码分析: 首先调用 check 函数检测漏洞(使用扫描模块) 验证目标架构(不支持x86) 根据目标系统版本进行exploit 四、防御建议 及时更新系统 :安装微软发布的MS17-010补丁 关闭SMBv1 :在不需要的情况下禁用SMBv1协议 网络隔离 :限制SMB端口(445)的外部访问 监控检测 : 监控 ADMIN$\system32\ 和 C$\Windows\Temp\ 目录的异常文件 监控异常服务创建和WMI活动 清理痕迹 :检查并删除攻击可能留下的bat、txt、exe和mof文件 五、攻击痕迹分析 攻击后可能留下的文件: 命令执行模块: C$\WINDOWS\Temp\随机16位字母字符串.txt - 命令输出结果 C$\WINDOWS\Temp\随机16位字母字符串.bat - 命令批处理文件(可能被删除) 漏洞利用模块: Automatic/Native模式: ADMIN$\system32\随机8位字母字符串.exe - payload程序(Native模式会删除) MOF模式: ADMIN$\system32\随机8位字母字符串.exe - payload程序 ADMIN$\system32\wbem\mof\随机14位字母数字字符串.mof - MOF文件 六、总结 MS17-010漏洞利用链完整,从扫描检测到多种攻击方式,Metasploit提供了全面的利用模块。理解这些模块的工作原理对于防御和取证分析至关重要。防御者应重点关注SMB服务的安全配置和异常行为监控。