用途
本技能用于在获得明确书面授权的渗透测试中,识别并利用 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、删除上传文件、关闭会话)。
使用方式
工作流分为六个步骤:
- 枚举 SMB 服务与版本:使用 Nmap 扫描开放端口与版本,使用 CrackMapExec 生成中继列表、检查签名、枚举共享。
- 扫描已知 SMB 漏洞:在 msfconsole 中使用 smb_ms17_010、ms08_067_check 等模块,配合 Nmap 与 CrackMapExec 检查其他 CVE。
- 利用 EternalBlue:设置 RHOSTS、LHOST、LPORT、PAYLOAD 等参数后执行 exploit,获取 Meterpreter 会话。
- 执行 SMB 中继攻击:针对未启用 SMB 签名的主机,使用 impacket-ntlmrelayx 或 Metasploit smb_relay,并可用 Responder 捕获哈希。
- Pass-the-Hash 与横向移动:通过 hashdump 提取哈希,使用 CrackMapExec、Impacket psexec 或 Metasploit psexec 模块访问其他主机。
- 记录发现与清理:截图取证、列出共享与敏感数据、清除事件日志与上传文件、关闭所有会话并验证清理。
适用场景
典型场景为针对 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 主机提取用户、组、共享和策略。