SuperAPI AI 工具集

exploiting-smb-vulnerabilities-with-metasploit

安全与审计

查看项目

更新于 10-15 14:03

技能介绍

用途

本技能用于在获得明确书面授权的渗透测试中,识别并利用 SMB 协议漏洞,以演示未修补 Windows 系统带来的风险。典型用途包括:测试 Windows 系统是否存在 EternalBlue、EternalRomance、PrintNightmare 等关键 SMB 漏洞;演示通过 SMB 中继、Pass-the-Hash 和凭据喷洒进行横向移动的风险;验证补丁管理流程是否已修复已知 SMB 漏洞;评估域内 SMB 签名强制与共享权限配置;通过跨 VLAN 边界尝试 SMB 利用来测试网络分段。

主要能力

技能覆盖从枚举到利用再到清理的完整流程:

  • 使用 Nmap 发现开放 SMB 端口(TCP 445、139)的主机,枚举 SMB 版本与操作系统信息。
  • 使用 CrackMapExec 快速枚举 SMB、生成中继列表、检查 SMB 签名状态、以空会话枚举共享。
  • 使用 Metasploit 辅助模块扫描 MS17-010(EternalBlue)、MS08-067(Conficker),使用 Nmap 脚本检查 SMBGhost(CVE-2020-0796),使用 CrackMapExec 模块检查 PrintNightmare(CVE-2021-34527)。
  • 利用 EternalBlue 获取 SYSTEM 权限,并进行后渗透操作(getuid、sysinfo、ipconfig、hashdump)。
  • 使用 Impacket ntlmrelayx 或 Metasploit smb_relay 模块执行 SMB 中继攻击,使用 Responder 捕获 NTLM 哈希用于离线破解。
  • 使用 CrackMapExec、Impacket psexec 或 Metasploit psexec 模块进行 Pass-the-Hash 与横向移动。
  • 记录发现并清理痕迹(screenshot、clearev、删除上传文件、关闭会话)。

使用方式

工作流分为六个步骤:

  1. 枚举 SMB 服务与版本:使用 Nmap 扫描开放端口与版本,使用 CrackMapExec 生成中继列表、检查签名、枚举共享。
  2. 扫描已知 SMB 漏洞:在 msfconsole 中使用 smb_ms17_010、ms08_067_check 等模块,配合 Nmap 与 CrackMapExec 检查其他 CVE。
  3. 利用 EternalBlue:设置 RHOSTS、LHOST、LPORT、PAYLOAD 等参数后执行 exploit,获取 Meterpreter 会话。
  4. 执行 SMB 中继攻击:针对未启用 SMB 签名的主机,使用 impacket-ntlmrelayx 或 Metasploit smb_relay,并可用 Responder 捕获哈希。
  5. Pass-the-Hash 与横向移动:通过 hashdump 提取哈希,使用 CrackMapExec、Impacket psexec 或 Metasploit psexec 模块访问其他主机。
  6. 记录发现与清理:截图取证、列出共享与敏感数据、清除事件日志与上传文件、关闭所有会话并验证清理。

适用场景

典型场景为针对 Windows 域的内部渗透测试。例如,在金融服务公司的内部测试中,测试者拥有企业 VLAN(10.10.0.0/16)的网络访问权限,范围包括测试所有 Windows 服务器和工作站的 SMB 相关漏洞,Active Directory 域为 CORP.EXAMPLE.COM,约 200 台主机。流程包括:扫描整个 /16 网段、识别未打 MS17-010 补丁的主机、在非关键文件服务器上利用 EternalBlue 获取 SYSTEM、提取本地管理员哈希并发现密码复用、使用 Pass-the-Hash 访问域控制器并提取 NTDS.dit、演示 SMB 签名在多数主机上被禁用,最终记录从单台未修补系统到全域失陷的完整攻击链。

限制与注意事项

  • 严禁在未获得明确书面授权的系统上使用,严禁在无维护窗口的生产域控制器上使用,严禁部署超出评估范围的持久后门。
  • 前置条件包括:安装 Metasploit Framework 6.x(msfconsole --version)、授权渗透测试范围文档(列出目标 IP 范围与批准的攻 击类型)、对目标 SMB 服务(TCP 445、TCP 139)的网络访问、安装 CrackMapExec 与 Impacket 工具、经批准的测试凭据或凭据字典、Kali Linux 或等效测试平台。
  • EternalBlue 利用可能导致目标蓝屏(BSOD),尤其在较旧或不稳定的系统上。
  • 在监控严格的终端上运行 psexec 可能触发 EDR 告警并暴露测试活动。
  • 在数据库庞大的域控制器上执行 hashdump 可能导致性能下降。
  • 需显式检查 SMBv1,部分扫描器在 SMBv2/v3 同时可用时可能遗漏。

关键概念

  • EternalBlue(MS17-010):SMBv1 中的严重漏洞,允许未经身份验证以 SYSTEM 权限远程执行代码。
  • SMB 签名:对 SMB 数据包进行加密签名以防止篡改和中继攻击;禁用时攻击者可将 NTLM 认证中继到其他 SMB 主机。
  • Pass-the-Hash:使用捕获的 NTLM 密码哈希直接认证,无需破解哈希。
  • NTLM 中继:将捕获的 NTLM 认证实时转发到另一台服务器,以被中继用户身份获得访问权限。
  • PsExec:将服务二进制上传到 ADMIN$ 共享并创建 Windows 服务,以 SYSTEM 权限执行命令。
  • 空会话:匿名 SMB 连接(空用户名和密码),在配置不当的系统上可能暴露共享列表、用户枚举和策略信息。

工具与系统

  • Metasploit Framework:具备专用 SMB 扫描、利用和后渗透模块的利用框架。
  • CrackMapExec:用于 SMB 枚举、凭据测试、共享枚举和命令执行的综合工具。
  • Impacket:提供 psexec、smbclient、ntlmrelayx 等工具的 Python 库,用于底层 SMB 协议交互。
  • Responder:LLMNR/NBT-NS/mDNS 投毒工具,从 Windows 名称解析回退行为中捕获 NTLM 哈希。
  • enum4linux-ng:更新的 SMB 枚举工具,用于从 Windows/Samba 主机提取用户、组、共享和策略。