蚁剑改造过WAF系列(三)

Author: lz520520@深蓝攻防实验室

0x00 前言

前两篇从蚁剑的介绍,编解码器的功能讲解,到源码分析和解码器的改造,其实已经实现了大部分流量的加密传输,只要在设计一个简单的加密算法即可,比如异或算法,用字符串和key做异或即可,这样其实能过掉绝大部分的WAF了,但我们的流量里还有一点小瑕疵,也就是第一章提到的其他参数,其他参数由于固定了编码方式,如base64、hex,很容易被解析检测到,也没有提供设置让我们可以进行调整,所以还需要进一步的改造,让其他参数随机化,即添加可变长度前缀。
这个其实已经有人实现了这个功能了,在最后的参考链接里,并且还实现了蚁剑版的jsp一句话,在这里先膜拜大佬,我也一直有jsp改造的想法,但迟迟没开工,现在有现成的,美滋滋。他实现的参数随机化,目前只做了php的,其他脚本照抄就行,第二篇的改造成果,我就直接迁移到这位大佬修改后的蚁剑上了,然后再修改其他脚本随机化即可,也算是站在前人的肩膀上。

0x01 参数随机化调优

改造的细节我就不赘述了,参考我最后留的大佬博客链接,界面如下。

我这里就说下,在他基础上额外的调整吧,他随机前缀默认的长度为2,但考虑到像php/aspx使用base64编码其他参数,而asp使用hex编码其他参数,base64前缀不能为4的倍数,hex不能为偶数,所以我就调整默认值为5。
source\modules\shellmanager\list\form.js

然后他里面其实有个bug,说bug之前,我得先说下是怎么实现给其他参数编码添加随机化前缀的。
source\core\base.js
在这个文件里,有个format函数,原本输入参数为encode,即字符编码,改造后换成opts,否则无法获取到随机前缀长度值,而encode也可以通过opts获取。

这个format是用于字符串编码的,比如base64编码,用于请求发送的其他参数值编码,

改造后在这里新增了一个newbase64函数,在base64编码后,通过之前传入的opts里设定的random-prefix,为base64编码添加一个随机长度前缀,我在这个基础上做了一个倒序处理,进一步加强混淆吧,因为实现比较简单,我就顺手加上了。

所以bug在于,没有将所有调用format位置的传入参数都替换成opts,有的位置还是传入的encode,估计大佬只做了php的,也只测试了php,所以忘了asp/aspx,以下为部分修改调整位置。
source\core\asp\index.js

source\core\aspx\index.js

0x02 asp/aspx参数随机化改造

在改造asp/aspx之前,因为我对参数值做了逆序,所以我得先调整php模板。
source\core\php\template\filemanager.js,改造如下,arg1使用newbase64进行编码,编码逻辑为base64->随机前缀->逆序,所以在代码里,对提交的参数,反向操作,strrev逆向->substr去随机前缀->base64解码。(这里#randomPrefix#在发送之前会被替换成长度值)

其他php代码模板差不多的处理。

接下来就是做asp/aspx的改造,其实看了php的,你基本也知道怎么改了,就是语法函数不一样。

asp里原本是使用hex编码参数值,所以根据newbase64的方式造呗,哈哈。

source\core\base.js,newhex

因为有的地方调用的是buffer函数,还得造个newbuffer,这个和hex有啥区别,区别在于hex进行了字符编码转换。

然后在source\core\asp\template\filemanager.js等地方调用。

aspx改造和上面没啥两样,就举个例子就好了,source\core\aspx\template\filemanager.js。

到此,改造基本结束。

0x03 随机化参数测试

php测试,可以看到%3D,就是把base64倒序了。

<?@eval($_POST["test"]);?>

倒序后,将去前缀和不去前缀的字符串,进行base64解码,可以看到效果如下

aspx

asp是hex编码,就更不好识别了。

然后我加一个jsp演示,这个yzddMr6做好的,因为java的特殊原因,传输的payload的编码方式都是写死的,只支持base64和hex。

对应webshell如下,因为少了AES算法加密步骤,所以看起来就更小了。

效果如下,ant值删减了部分,因为传输的是java字节码太长了看不到其他参数。

最后给大家展示一张使用异或编解码的效果图,这是对key和value都做了异或+base64,除主payload以外,其他参数值额外做了随机前缀+逆序(这个操作为内置的,无需操作),整体流程没有什么复杂的算法,但已做到很好的加密效果,过WAF是妥妥的了。

0x04 总结

蚁剑改造过WAF系列,目前就告一段落,回过头看整个过程,其实没啥难理解的地方,就是一些小技巧的结合,从解码器改造,到随机前缀+逆序等改造,就能达到通信流量免杀的效果了。如果大家对蚁剑改造的过程有啥想法,大家也可以一起讨论下。我也是现学现卖,大家也自己动手试试,动过手就会知道,对菜刀、蚁剑这一类webshell工具通信原理更清晰了,不管是进行下一步的改造还是制作自己的webshell客户端都有帮助。
最后,再次感谢yzddMr6大佬的分析文章和蚁剑。
可能有人会提到上传免杀和落地免杀怎么办,这个其实在做这个系列的时候都搞定了,只是文章里没有提到,这个网上都有很多免杀绕过文章了,我再重复提也没啥意思,有些检测规则绕过很没道理的,就不断尝试,fuzz啥的。另一方面这种文件内容免杀,不像流量免杀,特征还是比较容易提取的,传多了就不免杀,我可能今天发出来,明天就凉了。

0x05 参考

https://yzddmr6.tk/posts/antsword-diy-2/
https://github.com/yzddmr6/antSword/tree/v2.1.x

本文来源于: https://xz.aliyun.com/t/7737

相关推荐

无字母数字webshell进阶收藏版

收藏即为会了!!!!!! 还没有看过P神两篇文章的走这里 一些不包含数字和字母的webshell 无字母数字webshell之提高篇 Unicode码运用 1.原理 P神在他文章中指出: 我们可以使用[].Φ来得到字符串Array. 我们

蚁剑改造过WAF系列(二)

Author: lz520520@深蓝攻防实验室 0x00 前言 上一篇讲过了编码器和解码器,本篇会讲解蚁剑源码部分,添加asp/aspx解码模块,来实现asp/aspx的加密回显。 0x01 蚁剑源码介绍 大家蚁剑可能用到最多的还是php

代码审计:PbootCMS2.07内核处理缺陷导致的一个前台任意文件包含漏洞分析

挖出来之后看了下官网发现不到半个月之前更新了最新版,下下来之后发现这洞修了..我吐了 干脆直接发出来 分享下思路吧 0x00漏洞分析 漏洞发生在PbootCMS内核的模板解析函数中 为了方便看直接上一个完整的Parser代码吧 public

SaltStack CVE-2020-11651/11652 分析

SaltStack是一种基于C/S架构的服务器基础架构集中管理平台,最近披露出存在两个安全漏洞 CVE-2020-11651 权限缺陷、CVE-2020-11652 任意文件读写漏洞,官方公告SALT 3000.2 RELEASE NOTE

SSTI模板注入(Python+Jinja2)

cl4y@星盟 [toc] SSTI模板注入(Python+Jinja2) 之前有做过一些SSTI的ctf,但是没有系统的学习,今天来总结一下。 前提知识 python、flask、jinja2 SSTI介绍 ssti主要为python的一

一次敏感信息泄露引发的逻辑漏洞挖掘

根据手头上的信息,最大化的利用,一次简单的漏洞挖掘,感觉过程很有意思分享一下~ 0x01初始 收集子域,也是渗透的初始。这里我只是简单用了fofa发现了该公司用来管理合作的一些子域名然后发现是登录管理页面,深入然后发现很多的敏感信息。也是从

YCCMS代码审计(新手教学方向)

前言 在逛CNVD时发现这款CMS存在不少常见的漏洞,并且看样子漏洞没有修复,一时好奇就下载下来看了看。经过简单的分析发现该CMS触发漏洞的方式挺常见的,正好可以从代码方面 分析一下这些漏洞的成因,加深对一些常见漏洞的理解 CMS下载地址:

记一次excel XXE漏洞

0x00 概述 Microsoft Office从2007版本引入了新的开放的XML文件格式,基于压缩的ZIP文件格式规范,改后缀名为zip再解压缩可以发现其中多数是描述工作簿数据、元数据、文档信息的XML文件。 许多网站允许上传/导入文

xyhcms v3.6 命令执行

xyhcms v3.6 命令执行 漏洞描述 XYHCMS是一款开源的CMS内容管理系统。 XYHCMS后台存在代码执行漏洞,攻击者可利用该漏洞在site.php中增加恶意代码,从而可以获取目标终端的权限。 复现 按步骤安装,查看site.p

红队-C2 Server基础构建

C2 使目标机器可以接收来自服务器的命令,但实战中通常在恶意软件分析的时候是首先被分析出来的,所以这也就是需要对C2 server加固的原因。 下面将C2 server部署时候你需要认识的一些点总结来更好建设、隐蔽、使用你的C2 serve

记一次excel XXE漏洞

0x00 概述 Microsoft Office从2007版本引入了新的开放的XML文件格式,基于压缩的ZIP文件格式规范,改后缀名为zip再解压缩可以发现其中多数是描述工作簿数据、元数据、文档信息的XML文件。 许多网站允许上传/导入文