CobaltSrike二次开发之流量修改

CobaltStrike特征修改

修改Stager防止被直接扫描:修改位置如下

cloudstrike/webserver.java

image-20211123201537986

修改isStager函数,只要不是92或者93就行。这里首先需要修改checksum8,将其返回值改为return sum

image-20211123201720257

利用脚本来生成我们的返回值

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 = "703e7b3b4e2a07715552e466e0d231bd";
long flag = checksum8(key);
System.out.println(flag);
}
}

key我们使用wings来生成md5,然后运行获取对应的值

image-20211123202249235

将我们值放入替换92L为2131L

public static boolean isStager(String uri) {
return checksum8(uri) == 2131L;
}

同时修改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()) != 2131L);

return "703e7b3b4e2a07715552e466e0d231bd";
}

image-20211123202512901

X64同理进行修改

之后修改

beacon/BeaconPayload.java

将异或值0x2e改为0x3e(默认显示为10进制,我们改为62即可)

根据之前的特征信息我们可知

cs 3.x版本的配置信息是通过异或0x69解密出的,4.x版本的配置信息是通过异或0x2e解密出的。

至此,可以发现,从3.x到4.x,cs自解密的算法没变,自解密后再解密配置文件的算法就只是改了个密钥,而且是固定的(3.x 0x69,4.x 0x2e)。

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] ^ 62);
}

return var1;
}

修改DLL文件

同时我们需要到生成时调用的DLL文件进行修改,否则会导致异或值不一样导致的无法上线,下载解密的问题

使用脚本对Sleeve进行解密,具体原理可以查看CobaltStrike的认证流程

https://github.com/ca3tie1/CrackSleeve

image-20211123203240973

将解密出来的文件拖到IDA,搜索0x2e关键字,打patch修改为0x3e

image-20211123203454667

同时需要修改的有

beacon.dll
beacon.x64.dll
dnsb.dll
dnsb.x64.dll
pivot.dll
pivot.x64.dll

将修改之后的dll放入并加密

image-20211123204004260

将之前修改的Java,和我们的dll 重新导入jar文件

BeaconPayload.java
Webserver.java
commonutil.java

进行测试上线,发现特征流量已经修改

image-20211124125228589

参考链接

https://cloud.tencent.com/developer/article/1764340

https://lengjibo.github.io/CobaltStrikeCode/

Author

ol4three

Posted on

2021-11-23

Updated on

2021-11-26

Licensed under


Comments