项目地址: https://github.com/C4o/Juggler
现在很多 WAF 拦截了恶意请求之后,直接返回一些特殊告警页面(之前有看到 t00ls 上有看图识 WAF )或一些状态码( 403 或者 500 啥的)。
但是实际上返不返回特殊响应都不会有啥实际作用,反而会给攻击者显而易见的提示。
但是如果返回的内容跟业务返回一致的话,就能让攻击者很难察觉到已经被策略拦截了。
场景一:攻击者正在暴力破解某登陆口
发现登陆成功是
{"successcode":0,"result":{"ReturnCode":0}}
登陆失败是
{"errorcode":1,"error":"用户名密码不匹配","result":{"ReturnCode":0}}
那现在我们可以这么做
1. 触发规则后持续返回错误状态码,让黑客觉得自己的字典不大行。
2. 返回一个特定的 cookie,当 waf 匹配到该 cookie 后,将请求导流到某 web 蜜罐跟黑客深入交流。
场景二:攻击者正在尝试找 xss
我们可以这么做
例如:
1. 不管攻击者怎么来,检测后都返回去去除了攻击者 payload 的请求的响应。
2. 攻击者 payload 是 alert(xxxx),那不管系统有无漏,我们返回一个弹框 xxx 。
(当然前提是我们能识别 payload 的语法是否正确,也不能把攻击者当傻子骗。)
肯定有人会觉得,我们 WAF 强的不行,直接拦截就行,不整这些花里胡哨的,那这可以的。
但是相对于直接的拦截给攻击者告警,混淆视听,消费攻击者的精力,让攻击者怀疑自己,这样是不是更加狡猾?这也正是项目取名的由来,juggler,耍把戏的人。
当然,上面需求实现的前提,是前方有一个强有力的 WAF,只有在攻击请求被检出后,攻击请求才能到达我们的拦截欺骗中心,否则一切都是扯犊子。
项目思路来自我的领导们,并且简单的应用已经在线上有了很长一段时间的应用,我只是思路的实现者。
项目已在线上运行一年多,每日处理攻击请求过亿。
juggler 本质上是一个 lua 插件化的 web 服务器,类似 openresty (大言不惭哈哈);
基于 gin 进行的开发,其实就是将*gin.Context 以 lua 的 userdata 放入 lua 虚拟机,所以可以通过 lua 脚本进行请求处理。
本项目为拦截图中的拦截欺骗中心,接收并处理所有恶意请求。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.