利用随机异或无限免杀d盾 ——yzddMr6

前言

最近D盾更新了,在某司某圈也看到了不少免杀d盾免杀狗的一句话帖子
但是基本上只要放出来不到两天时间就加入查杀全家桶.最近一直在造各种车轮子
就想着其实可以写个脚本利用异或来fuzz出指定的字符
然后拼接出assert或者create_function等函数,来对抗waf的检测.

思路及实现

首先如何fuzz的问题

先讲一个离散数学中的概念叫可逆 ,异或的运算就是具有可逆性的.

具体什么意思呢,就是说若a^b=c,则有b^c=a

所以只要把需要拼凑出来的字符串a跟随机取出来的符号b异或,然后出来的结果c就是需要跟b异或的内容.

举个例子

我们来echo一下字符a跟符号*异或的结果

利用随机异或无限免杀d盾 ——yzddMr6_第1张图片
image

是大写字母K

利用随机异或无限免杀d盾 ——yzddMr6_第2张图片
image

然后把大写K跟*异或

利用随机异或无限免杀d盾 ——yzddMr6_第3张图片
image
利用随机异或无限免杀d盾 ——yzddMr6_第4张图片
image

就出来了我们想要的a
那么也就是

a=K^*

但是在写的过程中问题来了
很多时候异或出来的字符是不可见的小方块

利用随机异或无限免杀d盾 ——yzddMr6_第5张图片
image
利用随机异或无限免杀d盾 ——yzddMr6_第6张图片
image

就需要把它编码

看了以前有一篇文章是用url编码

但是在实现过程中发现url编码也有一定概率出现不可表示的字符

那就开开心心上hex吧

最终成功拼接出来了assert

利用随机异或无限免杀d盾 ——yzddMr6_第7张图片
image

接下来就是写个字符串池子,用来存特殊符号,然后随机取出来进行异或,拼接想要的字符.

image

把它封装成函数
可以设置需要异或的字符串长度

利用随机异或无限免杀d盾 ——yzddMr6_第8张图片
image

其实也可以用中文甚至emoji表情来异或,但是考虑到乱码还有不同系统对表情的支持不同,就算了.

取出拼接好的assert,把get的数据传进去,就成了下面这样

利用随机异或无限免杀d盾 ——yzddMr6_第9张图片
image

哈,看来可以使用啦

利用随机异或无限免杀d盾 ——yzddMr6_第10张图片
image

接着是调用的问题,其实到了这个地步
不管你什么d盾安全狗已经认不出来函数里面写的什么意思了
但是他会根据函数的调用来检测拦截
如果这个时候直接调用的话会爆一级可疑函数.

利用随机异或无限免杀d盾 ——yzddMr6_第11张图片
image

既然做免杀肯定要0级了啦

放到类里面再调用就好了

利用随机异或无限免杀d盾 ——yzddMr6_第12张图片
image
利用随机异或无限免杀d盾 ——yzddMr6_第13张图片
image

接下来就是造轮子了
在脚本中为了增大waf识别的难度 类名方法名也随机化了.

使用方法

利用随机异或无限免杀d盾 ——yzddMr6_第14张图片
image
利用随机异或无限免杀d盾 ——yzddMr6_第15张图片
image

右键查看生成的源码

利用随机异或无限免杀d盾 ——yzddMr6_第16张图片
image

已经保存到同目录下1.php里面了

利用随机异或无限免杀d盾 ——yzddMr6_第17张图片
image

生成了十几个
附上过D截图

利用随机异或无限免杀d盾 ——yzddMr6_第18张图片
image

最后

脚本特点有三个

一利用特殊符号异或达到迷惑waf的目的,并且因为每一次的拼接都是随机生成的,所以单单一个文件进了特征库也不用担心

二是利用类调用,类名函数名随机化,杀软分析起来可能跟普通的文件没有什么区别

三是没有assert eval create_function 等这些关键字,更为隐蔽.

因为是随手写的,所以代码比较糙,不过不要在意这些细节……

只是提供了一个思路,其实大马也可以像这样写个免杀模版,下一篇文章再讲吧

虽然都是随机化,也没有assert eval 这种关键字,但是用的人多了当然脚本的免杀性也失效了,可以关注我的github:

https://github.com/yzddmr6

以后更新的免杀脚本都会放在上面.

源码地址

https://github.com/yzddmr6/webshell-venom

你可能感兴趣的:(利用随机异或无限免杀d盾 ——yzddMr6)