行业新闻

蚁剑的小tip

蚁剑的小tip

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,正常情况下还需要免杀(现在一般都需要配合类的析构函数去实现一下)

关闭