Skip to content
Kurisu
Go back

WAF 绕过与免杀:从规则原理到雷池实战

云服务器上挂着雷池(SafeLine)WAF 和 HFish 蜜罐,好处是同一个 payload 能同时看到攻击侧构造和防守侧拦截日志。下面从 WAF 原理到绕过、免杀。

WAF 在干什么

主流 WAF 核心是规则匹配 + 语义分析:

常见绕过手法(按我的实测有效性排序)

1. 编码与混淆(对规则型有效)

大小写混合:    UnIoN SeLeCt
双重编码:      %2527(%27 再编一次)
内联注释:      /*!union*/ /*!select*/
等价替换:      && → %26%26,空格 → /**/、%a0、括号

2. 协议层与解析差异

3. 语义级的对抗(对雷池这类)

结论:雷池拦常见变形很准,但解析差异类仍有口子——攻击就是找两边解析不一样的地方。

木马免杀思路

免杀核心是破坏特征匹配,分层做:

层手法
语法层变量拆分、异或加密、字符串变形($a = 'ev'.'al')
结构层函数回调执行(call_user_func)、匿名类、断言
流量层冰蝎/哥斯拉加密通信(流量无特征)
落地层内存马(不落盘,见 Java 反序列化那篇)

检测与反检测是螺旋:特征码杀软吃语法层,行为分析吃结构层,实战要多层组合。

防守侧的观察(自己当蓝队)

挂了几个月蜜罐和 WAF,几个观察:

对攻击侧的启发:流量卫生和速率控制比 payload 花活更重要。

小结

WAF 绕过的本质是解析差异,免杀的本质是特征对抗;看防守日志能校准攻击手法,自己的服务器就是最好的实验室。


Share this post:

Previous Post
Java 反序列化:CC6 链、Shiro 与冰蝎内存马
Next Post
Xdebug 单步跟踪 ThinkPHP 反序列化链