作者: 圈子社区 yzddmr6 首发于圈子社区 https://www.secquan.org/Prime/1069497 本文已声明原创,恶意转载硬刚到底! 仅供技术交流,切勿非法用途!
最近D盾更新了,在某司某圈也看到了不少免杀d盾免杀狗的一句话帖子
但是基本上只要放出来不到两天时间就加入查杀全家桶.
最近一直在造各种车轮子,就想着其实可以写个脚本利用异或来 fuzz 出指定的字符,然后拼接出 assert 或者 create_function 等函数,来对抗 waf 的检测.
查杀 0级了无痕,处女座的福音!
###首先解决如何fuzz的问题
先讲一个离散数学中的概念叫可逆 ,异或的运算就是具有可逆性的.
具体什么意思呢,就是说若a^b=c,则有b^c=a
所以只要把需要拼凑出来的字符串 a 跟随机取出来的符号 b 异或,然后出来的结果 c 就是需要跟 b 异或的内容.
举个例子
我们来 echo 一下字符 a 跟符号 * 异或的结果
是大写字母K
然后把大写 K 跟 * 异或
就出来了我们想要的 a 那么也就是
a=K^*
但是在写的过程中问题来了 很多时候异或出来的字符是不可见的小方块
就需要把它编码 看了以前有一篇文章是用url编码,但是在实现过程中发现url编码也有一定概率出现不可表示的字符 那就开开心心上 hex 吧
最终成功拼接出来了 assert
接下来就是写个字符串池子,用来存特殊符号,然后随机取出来进行异或,拼接想要的字符.
把它封装成函数 可以设置需要异或的字符串长度
其实也可以用中文甚至 emoji 表情来异或,但是考虑到乱码还有不同系统对表情的支持不同,就算了.
取出拼接好的 assert, 把 get 的数据传进去,就成了下面这样
哈,看来可以使用啦
编辑提示: 在这里 mr6 就是菜刀密码,后面的参数 phpinfo(); 就是你要执行的php命令,可以直接丢到菜刀里。
接着是调用的问题,其实到了这个地步,不管你什么d盾安全狗已经认不出来函数里面写的什么意思了,但是他会根据函数的调用来检测拦截,如果这个时候直接调用的话会爆一级可疑函数.
既然做免杀肯定要0级了啦
放到类里面再调用就好了
接下来就是造轮子了 在脚本中为了增大waf识别的难度 类名方法名也随机化了.
右键查看生成的源码
已经保存到同目录下 1.php 里面了
生成了十几个,免杀无压力~
附上过D截图
一利用特殊符号异或达到迷惑waf的目的,并且因为每一次的拼接都是随机生成的,所以单单一个文件进了特征库也不用担心
二是利用类调用,类名函数名随机化,杀软分析起来可能跟普通的文件没有什么区别
三是没有assert eval create_function 等这些关键字,更为隐蔽.
因为是随手写的,所以代码比较糙,不过不要在意这些细节…… 只是提供了一个思路,其实大马也可以像这样写个免杀模版,下一篇文章再讲吧 虽然都是随机化,也没有assert eval 这种关键字,但是用的人多了当然脚本的免杀性也失效了,可以关注我的 github :
https://github.com/yzddmr6
以后更新的免杀脚本都会放在上面. 如果有什么讲的不对的地方还请大佬们多多包涵.
不来个star?? 不来个star?? 不来个star??
顺便在线等团长的 CVE-2019-0708-RCE 的exp~