蚁剑的小tip
时间:2022-05-26
STATEMENT
声明
由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,雷神众测及文章作者不为此承担任何责任。
雷神众测拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经雷神众测允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。
前言
蚁剑的小tip:
在某次hvv中,看到大佬在连接木马的时候,使用了编码器绕过waf,所以学习一波这个知识点。
调试过程
蚁剑抓包分析
设置代理
以default和base64为例,蚁剑burp代理看一下各自数据包。
测试测试
下面使用dvwa网站测试一下
点击测试连接使用bp进行拦截
对内容进行解码、整理
执行结果如下
看到如下信息
1.输出了当前脚本的目录
2.判断了操作系统
3.获取了当前用户信息
4.在输出首尾加上了随机的字符串
asenc函数,这个函数是对传输数据或者说执行结果进行编码/加密的函数
双击连接
测试连接成功后即可保存数据再双击连接一句话木马。这里我们分析这个步骤发送的数据包。
这里需要注意的是分析数据包的过程中要把缓存清空,否则有部分数据包会分析不到。
第一个数据包
和测试连接的包一样
第二个数据包
返回的是目录,对代码进行解码
所以这个数据包是得到了当前路径下的文件和文件夹,以及对应的修改时间、大小和权限。
这个路径是用一个参数(我这里是0x5e7e045021ad4)传递的,所以修改参数可以得到对应路径的内容。
但是这里这个参数也是随机的,每次访问都不一样。
文件夹以/结尾,文件以后缀结尾。
还有很多操作,比如打开文件夹,打开文件,修改文件,下载文件,删除文件,上次文件,打开终端,都有对应不同的源码,有兴趣可以自己抓包尝试。
自定义编码器
蚁剑编码器这个概念类似于msfvenom中的encoder,将攻击载荷加密或者编码实现免杀,绕过一些防御手段,例如waf、防火墙等等。
default编码如下,直接将payload传输过去。
base编码
对内容进行url解码,然后base64解码,如下
_0x0a43d6b6c37e3_参数的内容和default的是一样的,进行的操作只是用_0x0a43d6b6c37e3_这个随机数代替这串base64编码后的payload,如此实现一个流量的混淆视听。
查看一下蚁剑官方编码部分的源码。
shell所有传递的参数都是在data列表中的,需要执行的代码在 data[''] 中,
Buffer.from(data['_']).toString('base64') 将data[‘’]中的代码读取并进行base64编码,
然后下面的 data[pwd] 以参数的形式传递到服务器将data[‘_’]中的代码在服务器端解码并执行,所以shell仍旧可以是 “”。
虽然data[‘_’]中的代码都是base64编码了,但是data[pwd] 是作为参数传递的,
所以这里在流量中 data[pwd] 仍是明文传输,可以看到请求参数的最后一个变量是‘v=eval(base64_decode(%24_POST%5B_0xad20764d61ddd%5D))%3B_’,这显然是过不了WAF的。
简单的修改一下编码器,将明文传输的v参数放弃。
我们可以对其进行改造。
构造随机字符串+传输数据base64的效果,只要被抓取的流量无法被直接正常分析就可以了
编码器选择我们设置的,观察流量,内容的前面13位是我们随机生成的字符串,后面才是我们真正传过去的内容
弄好蚁剑端的加密,还需要设置自己木马的格式,配合蚁剑,此时上传的木马应该是这种格式的了,这只是一个demo,正常情况下还需要免杀(现在一般都需要配合类的析构函数去实现一下)