【干货分享】记一次对CS4.4魔改/二开(下)
2022-11-29 17:32:35 Author: 戟星安全实验室(查看原文) 阅读量:53 收藏

戟星安全实验室

    忆享科技旗下高端的网络安全攻防服务团队.安服内容包括渗透测试、代码审计、应急响应、漏洞研究、威胁情报、安全运维、攻防演练等

本文约3786字,阅读约需10分钟。

接上篇

【干货分享】记一次对CS4.4魔改/二开(上)

修改checksum8特征扫描

扫描识别

针对默认配置的cs服务器,端口扫描可以识别到特征。使用fofa语法找一台服务器

cert.issuer="Cobalt Strike"

通过脚本进行爆破扫描,就可以获取到Stage端口的URI

https://github.com/jas502n/grab_beacon_config
--script=/home/kali/Desktop/grab_beacon_config-main/grab_beacon_config_rsa.nse

反向代理的内网地址也会泄露

使用自定义配置文件,可以规避默认扫描识别(无法规避uri扫描)

源码修改

在源码beacon/BeaconPayload.java修改CheckSum8的特征,异或值由2e(46)改为9A(154)

同时需要修改代码中出现的几个resources/*.dll文件(beacon.dll、beacon.x64.dll、dnsb.dll、dnsb.x64.dll、pivot.dll、pivot.x64.dll、extc2.dll、extc2.x64.dll)

jar包内dll提取、解密

一个根据cs密钥解密的脚本

https://pingmaoer.github.io/2020/06/24/CobaltStrike%E4%BA%8C%E6%AC%A1%E5%BC%80%E5%8F%91%E7%8E%AF%E5%A2%83%E5%87%86%E5%A4%87/

下载后修改源码,将解密的OriginKey修改为对应版本的(4.0、4.3、4.4保真,4.1、4.2未测试)

 // private static byte[] OriginKey40 = {27, -27, -66, 82, -58, 37, 92, 51, 85, -114, -118, 28, -74, 103, -53, 6 };    // private static byte[] OriginKey41 = {-128, -29, 42, 116, 32, 96, -72, -124, 65, -101, -96, -63, 113, -55, -86, 118 };    // private static byte[] OriginKey42 = {-78, 13, 72, 122, -35, -44, 113, 52, 24, -14, -43, -93, -82, 2, -89, -96};    // private static byte[] OriginKey43 = {58, 68, 37, 73, 15, 56, -102, -18, -61, 18, -67, -41, 88, -83, 43, -103};    // private static byte[] OriginKey44 = {94, -104, 25, 74, 1, -58, -76, -113, -91, -126, -90, -87, -4, -69, -110, -42};再将加密的CustomizeKey手动输入代码注释掉,改为对应版本的key

将CrackSleeve.java和原版jar包放一起

编译 javac -encoding UTF-8 -classpath cobaltstrike.jar CrackSleeve.java

无报错表示编译成功,同目录下多出两个class文件


解密文件 java -classpath cobaltstrike.jar;./ CrackSleeve decode

如果出现以下报错(Bad HMAC),则是对应cs版的解密key不对

修改8个dll

这里以beacon.dll为例,使用对应的32位ida打开dll

使用快捷键Alt+T搜索全部2Eh字符

双击异或指令行(其他dll同样只改异或指令行)

使用字节修改功能

将2E改为9A

将改变应用(保存)到输入文件

加密替换

将修改后的dll复制到decode文件夹下,替换

加密文件 java -classpath cobaltstrike.jar;./ CrackSleeve encode,会生成encode目录

将加密后的8个dll复制到src/sleeve/(新建)目录下

使用rebuild选项编译,查看生成的jar包,仅修改过的dll被替换

特征路径修改

以上的CheckSum8相关修改,只能防止设备对beacon异或解密(如果手动进行256爆破异或依旧可以解密),并不能bypass特征路径

因为即使如下配置自定义uri,如上图默认的Stage监听uri依旧会生效

在一些云服务或安全设备上依旧会被安全警告、标记,导致封禁网络出口

根据网上文章分析,可以不动CheckSum8算法本身,去修改uri计算方式

src/common/CommonUtils.java 生成代码,改动2个函数,每次checksum8生成的字符串是类似“/abcd”的5个字符,其中的“g-a8”可以改为任意带特殊字符的字符串,注意计算好修改后的总长度

src/cloudstrike/WebServer.java 解析代码,改动4个函数,先修改对总长度的校验,再对自定义的逻辑进行解析

测试,需要符合变化的请求才会返回

绕过beaconeye内存签名检测

开启内存睡眠绕过部分杀软扫描


“当启用`obfuscate-and-sleep`时,Beacon 会在进入睡眠状态之前在内存中混淆自身。”在cs配置文件中,配置:stage->sleep_mask为true

进程内存检测


“Beacon 的 obfuscate-and-sleep 选项只会混淆字符串和数据,而负责进行加解密的代码部分不会混淆,且在内存中可以被标记出来”4.2(~4.4)的内存特征hex$a_x64 = {4C 8B 53 08 45 8B 0A 45 8B 5A 04 4D 8D 52 08 45 85 C9 75 05 45 85 DB 74 33 45 3B CB 73 E6 49 8B F9 4C 8B 03}$a_x86 = {8B 46 04 8B 08 8B 50 04 83 C0 08 89 55 08 89 45 0C 85 C9 75 04 85 D2 74 23 3B CA 73 E6 8B 06 8D 3C 08 33 D2}

BeaconEye:一款开源cs进程内存检测工具,下载地址

https://github.com/CCob/BeaconEye

需要根据测试环境下载对应版本的exe

可发现未做内存bypass的cs进程,并解密部分beacon配置信息

修改dll

使用ida对两个dll(beacon.dll、beacon.x64.dll)再次汇编修改,先使用ida快捷键G,跳转到指定地址

sleeve/beacon.dll 修改汇编绕过beaconeye内存签名检测,地址位:1000A0B9处6A 00 修改为6A 09(00修改为任意)

sleeve/beacon.x64.dll 修改汇编绕过beaconeye内存签名检测,地址位:000000018001879B处xor edx, edx,修改为mov edx, esi(使用指令修改功能)

bypass测试


修改后cs的http、https上线测试

对正在运行的cs进程进行检测,无发现

CS功能测试


以http x86会话为例

文件浏览

文件上传与下载,注意是否有操作权限,默认下载到download目录

进程列表

屏幕截图

新建会话(进程派生),新建的进程也可以bypass内存检测

二次登录验证

功能实现


为防止密码泄露或被(蜜罐)反制后,被防守方登录操作,加上二次验证手段,网上的分析文章很多

https://github.com/HKirito/GoogleAuth

这里用这个项目源码稍微修改一下,src/main/java/sanwu/CsRewrite.java中,取消标题的自定义(非google的app也不识别)

设置生成的密钥保存到二维码图片

在idea的右边,使用maven插件生成jar包

先点击compile在点击install,到target目录下查看

如果生成报错,可以修改cs的jar路径

运行测试,生成的png用“标题-名称-SecretKey”格式命名

扫描二维码,绑定到app

这里分享两个apk安装包,来源于Google应用商店

链接:https://pan.baidu.com/s/18jrmNWYdTjsVyoBWYaPofw提取码:99fr

使用测试


按照提示在teamserver启动里加入javaagent

客户端用默认连接方式,返回错误无法登录

使用用户名加6位认证码方式,成功登录

注意服务器时间与本地时间同步,因为“客户端每30秒使用密钥SecretKey和时间戳通过算法生成一个6位数字的一次性密码”

往期回顾

【干货分享】记一次对CS4.4魔改/二开(上)
【干货分享】CFS多层内网几个注意点与原理详解
【干货分享】五分钟教你挖掘小程序漏洞

声明

    由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,戟星安全实验室及文章作者不为此承担任何责任。

    戟星安全实验室拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经戟星安全实验室允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。

戟星安全实验室

# 长按二维码 || 点击下方名片 关注我们 #


文章来源: http://mp.weixin.qq.com/s?__biz=MzkzMDMwNzk2Ng==&mid=2247508116&idx=1&sn=9293e5f2219c9d48c67f77ec2e2854fd&chksm=c27eaa85f5092393d3dd3969f7faedaa9a3af92b6e7069b54e7459278969d517535bf5e1f952#rd
如有侵权请联系:admin#unsafe.sh