Skip to content

Repository files navigation

🛡️ sbwaf — SuperBigWAF

⚠️ 安全研究与娱乐项目。仅供学习、教学演示与娱乐,请勿用于任何非法用途。

识别抓包工具(Burp / Yakit)和攻击行为,然后让他们越陷越深。

不封禁、不切断,让工具"正常"抓包——但每个响应都伪装成真实业务场景: 正常文章站、管理后台、API 文档、备份文件、配置泄露……攻击者以为找到了真目标, 继续深挖,下载假备份、解析假文档、试用假凭证——全部白费,工具越抓越卡, 正则追不上,路径无限扩张。

纯 Go 实现,零依赖,单二进制,Windows/Linux 直接跑。仅供你自己的测试环境使用。

特性一览

  • 双层识别:TLS 指纹层(GREASE / ALPN / supported_versions / 密码套件结构)+ 行为层(敏感路径探测 / 恶意载荷 / 高频 / 路径枚举 / 蜜罐),纯 HTTP 也能认出工具
  • 记仇机制:识别一次就记住(按 TLS 指纹优先,换 IP、换 IPv4/v6、换端口都认得出),后续请求不再重新打分,直接投喂
  • 不误伤浏览器:真浏览器(GREASE + 完整浏览器头)天然低分,永远放行
  • 真实场景伪装:所有投喂响应都伪装成正常业务(文章站/后台登录/API 文档/备份文件/配置泄露),没有任何"这是蜜罐"的破绽,攻击者掉以轻心继续深挖
  • 全菜单 bait:500 条随机链接覆盖全部打击(JSON 树 / 巨型 HTML / gzip / combo / slow / forever / huge / 重定向地狱 / 假备份 / 假文档 / 假混淆JS / chunk风暴 / 认证风暴 / 假验证码),爬虫跟哪条吃哪套
  • 无限扩张:bait 页每层再生成 500 条新链接,路径空间指数膨胀
  • 路径全随机:资源名、bait 链接、beacon 路径每次投喂都重新生成,正则屏蔽无从下手
  • 蜜罐数据投毒:所有投喂响应里随机塞满"格式合法但完全构造"的假敏感数据——手机号、身份证、邮箱、password/secret 字段、AWS AK、GitHub Token、RSA 私钥/公钥、JDBC、OSS、企微、Teams/Zoho webhook、JWT、SQL 报错……Yakit/Burp 的正则规则每个包里点亮几千个标签,高亮渲染拖慢 UI,分析视野被假情报淹没(实测 50MB JSON:手机号 3380 处、身份证 1926 处、邮箱 1955 处)
  • 真实网站形态:首页自动加载 css/js/1x1 追踪像素,JS 三波并行上报 beacon(首屏立即 + 1.5s + 3.5s,每波 --beacons 个,默认 20)——一次打开页面 = 60 个请求在 5 秒内涌入投喂范围
  • 实时控制台:评分明细、投喂名单、手动喂任意炸弹、豁免、加黑指纹、解封,全都能点

快速开始

go run .
入口 地址
演示站点(HTTP) http://localhost:8090
演示站点(HTTPS,完整指纹识别) https://localhost:8443
WAF 控制台 http://localhost:8090/waf
操作 token sbwaf-demo(启动横幅会打印)

它怎么工作

1. 识别(双层评分,≥70 分触发,--threshold 可调)

指纹层(看你是谁,来自 TLS 握手):

信号 分值
cipher/扩展含 GREASE(浏览器特征) −50
无 GREASE(非浏览器 TLS 栈) +30
无 ALPN +30
无 supported_versions 扩展(旧 Java JSSE) +30
首个密码套件是 TLS1.3 AEAD(Go 栈) +20
UA=Go-http-client / python-requests / 含 burp +30~40

HTTP 层(纯 HTTP 也能认出工具):

信号 分值
工具默认头组合(Accept: */* + gzip, deflate) +30
缺浏览器特征(无 Sec-Fetch-*,需头组合成立) +25
Accept-Encoding: gzip, deflate +10
缺 UA / 缺 Accept-Language +5 各

行为层(看你在干什么——伪装浏览器指纹也躲不掉):

信号 分值
命中蜜罐路径(页面隐藏链接) +130
敏感路径探测(/admin/.git/.env/actuator 等) +130(命中后台=字典得手,直接触发)
恶意载荷(SQLi/XSS/命令注入/路径穿越) +70
高频请求(10s 内 ≥20 次) +50
路径枚举(10s 内 ≥8 个不同路径) +30

2. 投喂(识别一次,记仇 30 分钟,不封禁不切断)

  • 身份按 TLS 指纹(JA3)优先记忆,纯 HTTP 退回 IP(环回 v4/v6 归一配对)
  • 投喂期间每个请求都吃巨型但会正常完成的响应,工具能继续抓包、网站能正常打开——只是它抓的每一包都在让自己变得更卡
  • 被触发后的响应 = 伪装真实场景:正常文章站(标题/文章/分页),附 500 条全菜单链接:
前缀 数量 打击
/n/ 140 伪装文章页(再带 500 条新链接,无限扩张)
/b/ 80 50MB 深嵌套 JSON(树渲染卡死)
/g/ 40 gzip 炸弹(1GB 解压)
/c/ 40 combo 全餐(无限 gzip 流)
/s/ 30 slow 无限流
/f/ 30 forever 无限文章
/h/ 20 huge 256MB 一次性灌
/r/ 20 重定向地狱(302 循环)
/backup/ 20 假备份下载(300MB,attachment)
/swagger/ 20 假 API 文档(1200 端点+假凭证)
/js/ 20 假混淆 JS(50MB,反混淆卡死)
/z/ 10 chunk 风暴(1 字节 chunk 狂泻,解析器核心打满)
/wp/ 10 假 CMS 指纹(WordPress/ThinkPHP/Spring)
/login/ 10 401 认证风暴(标准 JSON 401+WWW-Authenticate 轮换)
/captcha/ 10 假登录验证码页(真实感后台登录)
  • 路径/文件名每次投喂全部随机化(/a/<hex>.js/n/<hex>/<i>/b/<hex>/<n>…),正则屏蔽无从下手
  • /a/* 对被投喂客户端也返回真 JS/CSS/像素——页面必须跑得起来,里面的脚本(三波 beacon)才会引爆后续投喂
  • 手动强制(--bomb / 控制台按钮)可以换任意炸弹,要真杀就用 combo / slow

整人附加技(所有投喂响应统一生效):

  • 假技术指纹头:Server: Apache/2.2.15X-Powered-By: ThinkPHP/5.0.23X-Backend-Server: internal-10.0.0.x 随机轮换——工具按错误技术栈查 CVE,全部白费
  • 可信的配置泄露:伪装成"误留的 config 备份 + 错误日志",私钥/凭证/邮箱像真实事故现场
  • 零宽字符:部分假邮箱/字符串被撒不可见 Unicode,复制粘贴出来全是乱码(无视觉破绽)
  • 超长 header:2000 个重复头 + 64KB 巨型头,header 表格渲染爆炸
  • 真实感 401/登录页:标准 JSON 错误、带验证码的管理后台登录页——没有任何蜜罐破绽
  • 实时请求日志:IP、协议、路径、评分、命中规则、动作(PASS / BOMB #N)、JA3 指纹
  • 🔒 投喂名单:身份、已投喂次数、下一发
  • 每行操作:喂任意炸弹(18 种)/ 豁免 / 加黑指纹;名单可一键解封
  • 实时调参:阈值、被动模式、默认炸弹

参数

flag 默认 说明
--http :8090 HTTP 监听地址(空则禁用)
--https :8443 HTTPS 监听地址(空则禁用)
--threshold 70 触发投喂的分数阈值
--passive false 被动模式:只识别记录,不投喂
--bomb soft 自动响应:soft(折磨)/combo/slow/gzip/json/forever/huge 等 18 种
--soft-size 256MB 伪装文章页大小(每请求 +256MB 磁盘)
--soft-json-size 50MB 深嵌套 JSON 大小(能显示才会卡)
--backup-size 300MB 假备份文件大小
--fakejs-size 50MB 假混淆 JS 大小
--beacons 20 每波并行 beacon 数(共 3 波,每个吃 50MB JSON)
--gzip-size 1GB gzip 炸弹解压后大小
--huge-size 256MB huge 大小
--allow-huge false 允许自动打击用 huge(烧自己带宽)
--flood false combo 全速灌(工具磁盘 GB/分钟 增长,慎用)
--admin-token sbwaf-demo 控制台操作 token(空=免鉴权)
--hitlist JA3 黑名单文件(每行一个,# 注释)

测试指南

用 Burp / Yakit 实测:

  1. 打开控制台 http://localhost:8090/waf
  2. 工具挂代理访问 https://localhost:8443(HTTPS 才有完整指纹识别;HTTP 靠工具默认头也能识别)
  3. 打开首页 → 自动加载 css/js/像素 → 三波 beacon 并行发出 → 全部进入投喂
  4. 访问 /admin 或字典扫一轮 → 命中后台即刻触发
  5. 观察:投喂页伪装得像正常站点、beacon 的 50MB JSON 树渲染、项目文件/DB 涨速、每次投喂的路径都在变

手动试炸弹(需要 token):

curl -H "X-Admin-Token: sbwaf-demo" http://localhost:8090/bomb/softjson -o NUL
curl --max-time 3 -v -H "X-Admin-Token: sbwaf-demo" http://localhost:8090/bomb/slow
curl -I -H "X-Admin-Token: sbwaf-demo" http://localhost:8090/bomb/gzip

"5 秒卡死"能做到吗?

对 Yakit:大概率能。 机制:打开首页 → 三波 60 个 beacon 并行 → 每个瞬间灌入 50MB 深嵌套 JSON → 同时几十棵树渲染 + 3GB 内存尖峰 → UI 线程被渲染占死。想更狠:--beacons 50(2.5GB/波)或 --bomb combo --flood(自动解压内存一路涨到 OOM)。

对 Burp:基本不能 5 秒冻结。 它的架构天生抗大包(异步落盘、拒绝渲染超大响应、UI 非阻塞),能做的只有磁盘快速膨胀 + 记录全部挂起,让它整体迟钝。这是工具架构决定的,不是 WAF 不行。

正常人浏览永远不受影响:浏览器(GREASE + 完整头)评分远低于阈值,测试页全部正常。

预期管理与边界

  • 启发式评分,不是精确指纹库:Windows 的 PowerShell/SChannel 可能被误报,控制台里豁免或调阈值
  • 定位是"劝退器+折磨器":认真的人改 JA3(burp-awesome-tls / curl_cffi)能绕指纹层,但行为层(打载荷、探路径、高频)绕不掉
  • 纯 HTTP 没有 TLS 信号:工具默认头组合识别已覆盖,但 HTTPS 才是完整识别模式
  • IP 级投喂的现实:同机浏览器和工具走 HTTP 时同 IP 会被连坐;HTTPS 按指纹区分,浏览器不受影响
  • 烧的是你自己的带宽/磁盘:huge--flood--soft-size 越大,你的机器开销越大,悠着点
  • 蜜罐数据全是构造的假数据:不含任何真实个人信息,只用于欺骗工具和分析者
  • 仅供自有测试环境使用,别拿去打别人的基础设施

项目结构

sbwaf/
├── main.go          入口:flags、双监听、路由、横幅
├── cert.go          自签证书自动生成
├── fingerprint.go   ClientHello 捕获 → JA3 风格指纹 + 结构特征
├── detect.go        指纹层评分引擎
├── behavior.go      行为层:探测/载荷/高频/枚举/蜜罐
├── bombs.go         打击载荷:伪装文章页/JSON/全菜单 bait/全部炸弹
├── trolls.go        整人武器:重定向地狱/chunk风暴/假备份/假文档/假CMS/认证风暴/假登录页/假指纹头
├── honeypot.go      蜜罐数据投毒:全套假敏感信息生成器
├── site.go          演示网站(真实网站形态:css/js/像素/beacon)
├── admin.go         WAF 状态 + 投喂名单 + 控制台
├── static/          网站静态资源
└── *_test.go        单测:识别、行为、记仇、随机化、全菜单、投毒

免责声明 (Disclaimer)

  1. 本项目是安全研究与娱乐项目,仅用于学习 Web 安全、抓包工具行为分析、蜜罐与欺骗防御(Deception)技术的教学演示。
  2. 本项目是防御性工具:它只响应发往你自己 WAF 的流量,不对任何第三方系统发起攻击,不包含任何主动攻击能力。
  3. 所有"敏感数据"均为程序随机生成的虚构数据:手机号、身份证、邮箱、凭证、密钥全部是构造的假数据,不含任何真实个人信息。
  4. 仅允许在你自己拥有、或已获得明确书面授权的环境中使用。禁止用于任何未授权测试、攻击或干扰他人系统。
  5. 使用者自行承担一切责任:因使用、修改、分发本项目的代码或其衍生作品而产生的任何直接或间接后果(包括但不限于法律纠纷、损失、数据损坏),作者不承担任何责任。
  6. 本项目不含任何真实攻击载荷——所有响应都是数据投喂和欺骗,不利用任何漏洞、不执行任何代码。

License

MIT(详见 LICENSE)

About

SuperBigWAF: defensive WAF demo that detects interception tools (Burp/Yakit) and feeds them believable fake traffic - educational/entertainment only

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages