【知识积累】CS4.4绕过vultr特征检测修改checksum8算法

前言

众所周知,关于cs相关的资料都非常的少,并且是打得特别紧,特别是这两年各个安全厂商对cs相关的内容都给予了特征识别等严重的打击,例如vultr网站会检测特征并关停服务器,我们可以同个多种方式更改特征绕过,接下来我们来讲更改cs的算法进行绕过。例如下面这样

我弄的环境,就因为开了cs结果就被强制破坏o(╥﹏╥)o

特征检测

关于被检测的特征详细来概述

首先我们新建监听器

这里我们一般用80和443来监听,因为其他端口的容易被封,这俩端口基本没人去管

接下来我们打开特征的的一些链接看下

可直接下载对应的文件,网上有一大堆检测脚本,我就不列举了

链接特征

1
2
3
80:http://IP/aaa9

443:https://ip:443/aaa9

当然特征不止这一个aaa9例如http://IP/HjIa 这个也会出现这种状态 并不是404 (部分浏览器假的404需要多打开几遍才会请求下载未知文件)只要是符合checksum8算法技术出来的文件都可以请求到 不是唯一值

我们可以看到这里面的请求的一些状态链接都是很短的,只有在发命令通过抓包才是那种长链接

下面就直接反编译,或者你找源码 都是有的

反编译

我们更改特征首先要反编译压缩包里面所有的.class文件,把他变成.java格式的我们才能编译

反编译这里推荐有一个工具比较方便,当然还有其他工具 但是讲的话文章会很长 我尽量很详细,我学习的时候搜索的资料大部分都有坑或者关键部分就直接跳过了这就很烦结合了多个文章内容我直达精髓。

JD-GUI:https://jd-gui.apponic.com/download/

我们可以看到很直观的就可以看到里面的内容

我们通过左上角File→Save All Sourcel来保存全部反编译的文件(也可以下载别人的源代码或者别的工具反编译),会让你选择路径以及各式,保存好,我们这里反编译好了出现了个cobaltstrike.jar.src.zip文件

然后我们安装JAVAIDE(这个工具里面也有反编译的包具体方法可以网上搜索)

1
Java ide:https://www.jetbrains.com/zh-cn/idea/.

下载安装 里面有两个版本 不用纠结 第一个收费 第二个社区的免费 正好也能满足我们的需求

安装完成后我们打开安装中文包插件(英文的我看不懂)在PLugins里面搜索chinese第二个就是

我们来安装他 点击安装后会重新启动软件就变成中文的了

项目和环境配置

这里我首先提醒大家最好用老版本的Java,原因是新版本的编译的老版本的java不能运行,而老版本的却向上兼容,这就很蛇皮了,太老的版本可能少程序 推荐java1.8 java1.8=java8 是一样的。(这个里面可以直接下载Java1.8.0,目前是可以的以后就不知道了)

1、我们新建项目就默认第一个java模块然后不停的下一步选择路径打开,看图

2、创建好之后我们新建俩文件夹,在软件里面和在外面创建都行都是同步刷新的,修改也是。这里我们新建decompiled_src和lib文件夹这里我就列举一个图减少占用

3、建立完成就是这个样子的,现在我们需要两个文件一个是反编译后cobaltstrike文件,一个是未反编译的cobaltstrike.jar原始文件,原因是编译需要依赖的文件环境和包,不然各种报错,非常的恼火,把原始文件cobaltstrike.jar放到lib文件夹,反编译后的解压到decompiled_src文件夹

4、弄好之后就是这个样子的,然后咱们来设置环境,左上角 文件→项目结构,看一下sdk是否正确,然后点击模块,然后看图

5、选择lib里面cs原始jar包点击确定,确定完成之后打勾然后应用

6、然后点击工件→JAR→来自有依赖项的模块→然后选择Aggressor 出现aggressor.Aggressor就说明正确了,然后确定,工件就设置完成了

7、接下来看一下sdk有没有设置正确,正确直接应用然后确定

修改checksum8算法

D:\cs\decompiled_src\cloudstrike里面有个WebServer.java文件包含算法,这个好像是监听器里面的,有这个算法的还有另一个D:\cs\decompiled_src\common\CommonUtils.java也包含checksum8

我们吧要修改的文件放到D:\cs\src 里面,这个文件代表着我们要编译的文件整合到jar文件里(就是实际只是编译的这两个文件)复制的之后要注意吧文件夹也复制过去 它会自动整合到路径

我们双击打开WebServer.java 然后ctrl+f搜索checksum8,这里我们很直观的就可以看到各种结果

checksum8,辅助算法计算脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class EchoTest {
public static long checksum8(String text) {
if (text.length() < 4) {
return 0L;
}
text = text.replace("/", "");
long sum = 0L;
for (int x = 0; x < text.length(); x++) {
sum += text.charAt(x);
}

return sum;
}


public static void main(String[] args) throws Exception {
System.out.println(checksum8("ds6f565sdf44s65d4f21dsf1.jpg"));
}
}

首先,我们想一个自己想要生成的stage访问下载地址“ds6f565sdf44s65d4f21dsf1.jpg”可以随意更换的

我们对于ds6f565sdf44s65d4f21dsf1.jpg这个可以随意换字符,这个是我乱打的到时候请求这个会请求到我们的文件,这个文件用于生成的那种20kb的他是后续会自动下载这个载入进去 你不想要这个可以直接web里边杀掉这俩stager站点,为了我的内容能少点我就不讲其他的了,可以从别的文章了解。

我们通过这个技术按脚本可以把他复制到在线java运行的网站查询结果,我这边呢就列举一个

在线运行java:https://c.runoob.com/compile/10/

进去之后把技术按脚本复制粘贴到里面然后自己把这个字符串随意编辑一下点击运行,这里这个运行结果就是我们要更改的值,这里我们需要技术两个不一样的值,一样的话只能生效一个,x64和x86随意分配计算

注意:x64和x86是分别弄两个固定的下载stage的文件

首先,我们第一个x86就如图所示,checksum8计算之后值等于2260就可以上线

第二步,此处同理,我们得出第二个想要的值2665,对应的就是传入的固定jpg路径

第三步,修改对应位置的我们刚刚生成的值和字符串

删完之后是这个结果如下图,可别把人家的括号和符号给人家干没了,不然要报错,如图所示

注意:同是小白提醒下,请勿删多删少,报错会让你知道

第四步、然后我们先编译测试下 因为反编译的肯定有错误的地方会报错,有时候不报错运气好,我们点击构建→构建工件,然后点击构建

接下来我们会看到3个错误,这个错误就是表示重复引用了某个字符,解决也简单 直接删除,如图

编译不出错的不用管这个,这3错误搞完就可以编译了,输出目录在D:\cs\out\artifacts\cs_jar

改完这一个他们通过原本的特征无法检测到你了,但是你只改这一个的话是无法上线的,你可以在c2文件中吧请求的url改成ds6f565sdf44s65d4f21dsf1.jpg或者跟我进行下一步

解释一下:CommonUtils对应的就是你小马20kb会主动访问服务器下载stage的,你得改对访问路径,相应是我们上面生成的

接下来改上线,没错就是这个 CommonUtils.java文件 但是注意别改错文件了 改src文件夹里面的 CommonUtils.java文件,我们打开他,还是老样子,搜索checksum8字符定位到相关代码附近

把这俩结果更改为你的随机字符串 我这里是return “ds6f565sdf44s65d4f21dsf1.jpg”;和return “ds78d4fg4er784gdfg4df9g4d8g4.jpg”;到时候的成品我也会有打包,不会的可以替换过渡一下

接着构建工件,构建完成了, 接下来开始测试

收尾

在D:\cs\out\artifacts\cs_jar找打了咱们编译好的文件 ,打开压缩包把cs.jar\cs\WebServer.class和WebServer$WebListener.class还有cs.jar\common\CommonUtils.class和CommonUtils$1.class文件移动到到你原本的cobaltstrike.jar文件里对应目录

问:为什莫么不直接用生成的cs.jar文件

答:可以直接用 但是需要修改teamserver所有相关cobaltstrike.jar的名称并且有一些启动的汉化包什么的也需要改,不能直接重命名,直接重命名是无法打开的,可能是包的名字写到了java文件里,我也不是很清楚,我这里直接重命名失败了,并且很容易出错。

过程很顺利, 没有丝毫错误,然后启动咱们的cs团队服务器,在启动客户端测试之前测试的链接

再次访问特征处是无法下载的,如图看流程

结果就是可以直接通过我们设置对应的路径进行上线了

注意一点:我中途是遇到过坑的,所以可能有些数值对不上,望请谅解

可以看到是原来默认的是完全访问不了了的直接就是404状态,并且cs也是可以上线的,到这里就结束了,希望我的教程可以帮助到您,谢谢您的观看!!!

超详细过程改checksum8武装cs完成,下篇讲如何防溯源,经过测试vultr并没有再检测出我的teamserver的监听特征

获取我文中部分素材请公众号回复”2021-12-03“获取

个人博客

本文标题:【知识积累】CS4.4绕过vultr特征检测修改checksum8算法

文章作者:孤桜懶契

发布时间:2021年12月03日 - 17:38:34

最后更新:2022年05月20日 - 11:44:39

原始链接:https://gylq.gitee.io/posts/179.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

-------------------本文结束 感谢您的阅读-------------------