免杀对抗——第一百六十三天
安全工具篇&魔改二开CS&消除流量特征&Profile请求&个性主题&反编译去暗桩
前置知识
- 今天是关于CS免杀的部分,之前都是针对生成的木马进行免杀,但是在反连的过程中,我们的流量也是有特征的,所以可能木马是免杀了,但是连接之后流量被识别出来了,也会导致这个已经免杀的木马被杀掉,所以我们需要针对这款工具也做一下免杀
- 然后针对CS的魔改和之前哥斯拉、冰蝎的差不多,因为他们都是基于JAVA开发的,所以反编译然后读懂代码改就好了
- 我们用到的CS版本还是4.5,当然有能力的可以用新的,最新的好像是4.9的版本已经被破解了,不过高版本有很多暗桩,比较难搞,而且网上对更高版本的魔改教程很少,所以我们还是用4.5版本做一些简单的演示
- CS4.7魔改破解:Cobalt Strike剖析及免杀系列(五)cs4.7源码jar包破解篇 - 吾爱破解 - 52pojie.cn
安全工具 - 配置修改-CS流量特征
- 首先我们先看看可以修改的地方,也就是根据我们目前的能力,修改源码可以消除的特征点有:默认端口、http请求特征、https证书特征、防溯源等等
开在公网的teamserver不要使用默认端口:修改teamserver里面的启动端口
cobastrike.store不要使用默认文件:可以通过如下命令查看默认证书文件特征
keytool -list -v -keystore xxx.store当然这里可以直接使用Java自带的keytool工具进行证书的颁发,命令为:
keytool -keystore xxx.store --storepass password -keypass password -genkey -keyalg 加密方式 -alias 别名 -dname"证书颁发机构信息"然后将teamserver中的cobalstrike.store改为刚才生成的sohu.store,并且将启动命令中的keyStore和keyStorePassword修改即可:
- profile文件要换新的:启动服务端时记得加载,或直接把jar包里面默认配置改了
验证:
./c2lint xxx.profile使用:
./teamserver<IP><password>jquery-c2.4.5.profileprofile资源:
- https://github.com/threatexpress/malleable-c2
- https://github.com/zer0yu/AweSome-CobaltStrike?tab=readme-ov-file#0x02-c2-profiles
二开魔改资源: - zer0yu/Awesome-CobaltStrike: List of Awesome CobaltStrike Resources
那这个profile有什么用呢?我们先看看默认的文件上线它的流量包特征:
原生木马上线之后通过HTTP/HTTPS进行通信,然后这里的流量包如图中所示,基本分为:
GET /JwLP HTTP/1.1 ↓ GET /g.pixel HTTP/1.1 ↓ POST /submit.php?id=xxxx HTTP/1.1这里第一个数据包中的/JwLP是随机生成的,但是也有一定的规律,我们可以通过checksum8算法发现目标主机为x64时结果为93,为x86时结果为92
计算规则:ASCII码之和%256[74(J)+119(w)+76(L)+80(P)]%256=93第二三个数据包是固定不变的,因此这些请求路径、UA头等就是CS的流量特征,只要被检测到这个的话基本可以确定是CS
现在我们去刚才的网站上下载jquery-c2.4.5这个profile文件,通过上述命令加载之后再看流量包:
就能够发现它的数据包已经发生改变了,请求路径变成了正常的请求xxx.js,虽然仍然存在/g.pixel,但相比于之前已经明显降低了特征点
因为这个项目也已经是三年前的了,所以可能用这个也会被监测到,所以我们也需要对这个profile文件进行简单的修改,这个就直接打开源码文件修改即可
4.其他修改:
+ 反向代理 - 符合才上线
+ SSL隧道 - 隐匿CS服务器
+ 参考文章:CS部署修改
安全工具 - 魔改二开-CS个性化打造
- 参考文章:Cobalt Strike系列|从0开始破解
- 上面的东西都属于是在外部进行小修小改,真正的要做到免杀还是需要对源码进行修改,所以我们先搭建好修改的环境
- 这里我们就用Java自带的反编译工具反编译源码:
java -cp"IDEA_HOME/plugins/java-decopiler/lib/java-decompiler.jar"org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -dgs=true<src.jar><dest dir>然后在IDEA中创建一个新项目:
在这个文件夹下创建
lib目录,将原版的CS jar包放进去,再将反编译之后的jar包解压缩放到根目录下:接着我们在IDEA中创建模块,然后创建工件即可:
在魔改的时候,只将需要修改的代码文件放到
src目录下改动,最后重新构建即可比如我们这里将Aggressor.java文件拿出来改动,这个是它的启动文件,我们在这里加一个启动弹窗:
JOptionPane.showMessageDialog((Component)null,(String)"欢迎来到uli0n Sec!",(String)"提示",JOptionPane.INFORMATION_MESSAGE);它确实能够成功提示,但是之后就报出如下错误:
这个是因为在
/common/Requirements.java文件中存在限制,我们需要在启动时带上-XX:+AggressiveHeap(检查是否开启了激进堆内存优化),-XX:+UseParallelGC(检查是否使用了并行垃圾回收器)这两个参数:
-XX:ParallelGCThreads=4-XX:+AggressiveHeap -XX:+UseParallelGC当然更为简单直接的方法就是让这里的函数直接全部返回null,但是为了后面不会出错就没这样弄
然后再次打包运行jar包又会产生新的报错:
这里是因为校验不通过的问题,那么要解决这个就是我们去除暗桩的过程,首先改动
/beacon/BeaconData.java文件下第53行:然后改动
beacon/CommandBuilder.java文件第250行,将下面所有if语句全部注释掉(247~297),保证var1=true:再然后是改动
common/Authorization.java文件,注释掉cobaltstrike.auth文件校验(14~33),这里注意最后得删除一个}号,给var4赋值如下密钥:
byte[]var4={1,-55,-61,127,0,1,-122,-96,45,16,27,-27,-66,82,-58,37,92,51,85,-114,-118,28,-74,103,-53,6,16,-128,-29,42,116,32,96,-72,-124,65,-101,-96,-63,113,-55,-86,118,16,-78,13,72,122,-35,-44,113,52,24,-14,-43,-93,-82,2,-89,-96,16,58,68,37,73,15,56,-102,-18,-61,18,-67,-41,88,-83,43,-103,16,94,-104,25,74,1,-58,-76,-113,-91,-126,-90,-87,-4,-69,-110,-42,16,-13,-114,-77,-47,-93,53,-78,82,-75,-117,-62,-84,-34,-127,-75,66,0,0,0,24,66,101,117,100,116,75,103,113,110,108,109,48,82,117,118,102,43,86,89,120,117,119,61,61};接着修改
common/Helper.java文件,注释掉class文件的调用(30~50),保证var2=true:修改
common/Starter.java文件,同样注释掉class文件的调用(25~157),保证var2=true:最后修改
common/Starter2.java文件,注释掉class文件调用(45~72),确保var2=true:到这里我们去暗桩的部分就结束了,然后重新打包运行,这里就能够正常启动了:
接下来的一些个性化修改装逼功能这里我就不演示了,对应文件如下:
- 标题修改:
cobaltstrike/aggressor/AggressorClient.java - 界面修改:
cobaltstrike/aggressor/dialogs/ConnectDialog.java - 客户端和图标修改:
- 介绍部分位置:
cobaltstrike/resources/about.html - 许可部分位置:
cobaltstrike/resources/credits.txt - 图标位置:
cobaltstrike/resources/armitage-icon.gif(32x32px)和cobaltstrike/resources/armitage-logo.gif(256x256px) - 主题风格位置:
cobaltstrike/aggressor/Aggressor.java - Profile替换:
cobaltstrike/resources/default.profile
- 介绍部分位置:
- 标题修改:
然后这里的主题风格下载地址:https://mvnrepository.com/artifact/com.formdev/flatlaf/3.2
下载jar包,然后放到lib里面,通过依赖模块引入,工件加入jar,然后在
Aggressor.java文件里面加入FlatIntelliJLaf.setup()即可:启动CS,可以看到相比于原版更加美观了:
接着就是这里修改profile文件这里,默认的流量包为什么会请求
/submit.php这种文件呢?就是因为这里:当然这里的话,我们直接是可以通过启动命令去加载不同的profile文件的,所以改不改也无所谓:
./teamserver<IP><password><myprofile.profile>其他的就是它这里的资源文件里面会有一些自带的木马模板,比如powershell的,那这里我们可以替换成之前的免杀马,然后它生成出来就是已经免杀的马子了
当然如果有能力,还可以找找它的一个调用逻辑,尝试接入随机选择模板、混淆、调用三方工具免杀等等功能,这里我们就不多赘述了
安全工具 - 魔改二开-CS免杀流量对抗
- 这里主要是改动如下方面内容:
- 去除
checksum8特征 - 去除
listemerConfig特征 - 修改配置加解密
xorkey - 去除
beaconeye特征 bypass功能对抗生成- 新增放置CS反制功能
- 新增上线提示等功能
- …
- 去除
- 当然这里的话就是我们之后的内容了,会更难更复杂一点