Cobalt Strike 是一款主要针对内网的渗透测试和作为apt的控制终端的,用于团队协同作战的GUI渗透测试框架,集成了端口转发、服务扫描,自动化溢出,多模式端口监听,木马生成等。
最近在研究内网相关技术,不可避免的需要使用CS和MSF。为了打工人的世界和平,防止资本主义的守猪待兔。手上正好有一份CS4.2 fix版的本菜,决定简单分析一下这个CS4.2 fix版是否正经。
觉得每次分析都很麻烦,因此本次本菜决定带大家一起来进行简单的分析和修改,等屏幕前的你做出更多的分析和优化,然后,投稿给NOVASEC。
因此教程图片会稍微多一些,仅需要CS4.2 fix版本的朋友可以直接跳到最下面。
对比规则-取消时间戳对比
仅显示出有差别的文件
cobalt strike 4.2 fixcommonAuthCrypto.class
cobalt strike 4.2 fixbeaconBeaconC2.class
cobalt strike 4.2 fixresourcesauthkey.pub
首先需要这个工具:Java Decompiler v1.4.0.jar。
Sava ALl Source-保存源码
对比原包和Fix包反编译后的三个差异文件
resourcesauthkey.pub
authkey.pub是破解密钥文件,十六进制看了一下,啥也不懂。
冷静分析,分析失败。
commonAuthCrypto.class
其中将
(!"8bb4df00c120881a1945a43e2bb2379e".equals(CommonUtils.toHex(arrayOfByte2)))
改为了
("8bb4df00c120881a1945a43e2bb2379e".equals(CommonUtils.toHex(arrayOfByte2)))
这是一个简单的逻辑判断修改,没有问题。
beaconBeaconC2.class
其中仅修改了几个判断结果的返回值,也很正常。
冷静分析,一切正常。
分析结果:CS4.2 Fix版本一切正常。
-----相信世界是有光的。
watermark即为水印,此参数中在Authorization文件会进行赋值,在ListenerConfig按参数在代码中添加特征字符串。
由于和原包的差异文件没有这个文件,说明Fix作者没有进行修改它。
Authorization.class 判断是否认证,没认证就加水印
位于 cobaltstrike.jarcommonAuthorization.class
ListenerConfig.class 基于水印参数添加特征码字符串
位于 cobaltstrike.jarcommonListenerConfig.class
水印代码位于ListenerConfig文件,包含水印串代码的文件会被AV查杀。
localStringBuffer.append("5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*000");
Authorization.class
ListenerConfig.class
尝试直接反编译ListenerConfig.class并修改ListenerConfig.java文件。
修改思路为注释掉添加水印语句,改为不管何种判断都添加一个空字符串。
修改语句
修改前后对比
修改完以后编译为class文件,然后替换到fix版jar包内的同位置文件
javac -cp cobaltstrike.jar ListenerConfig.java
编译修改后的文件
使用方法:替换jar包内的相同文件
PS:这一点是从前辈们的CS4.1分析文章看到,我也不确定fix版本是否会带有该串,改就对了。
PS:这文章其实已经水了一年了,主要是摸鱼真的修电脑去了。所以一直没有发出来。
参考文献:
CS4.1真的有后门吗?- 酒仙桥六号部队
https://mp.weixin.qq.com/s/0rNDegooBngsQvrDAtGzfg
END
本文始发于微信公众号(NOVASEC):CS4.2 Fix版后门分析及修改编译-细节教材
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论