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

戟星安全实验室

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

本文约2392字,阅读约需6分钟。

前言

CobaltStrike简称CS,由一个服务端和多个客户端组成,能让多个攻击者在一个团队服务器上共享目标资源和信息

  • CS服务端和客户端

服务端可以部署在远程服务器下或者部署在kali里,客户端可以部署到本地(支持windows和linux系统)

  • CS功能

1.Payload生成,如EXE,dll,vbs,图片马,bad,vba宏,shellcode等

2.钓鱼攻击,自动化挂马链接生成

3.后渗透,如浏览器代理模块,端口转发、扫描,提权,socks代理,令牌窃取等

攻防演练中众多攻击队的梦中情人。

反编译原版jar包

全程编译环境java1.8,运行测试环境java11,idea版本2019,系统版本Windows 10 x64,建议安装类似everything的软件,方便查找文件

通过渠道获取到官方版jar包

与官网https://verify.cobaltstrike.com/验证对比相同

相关文章很多,个人参考的这篇文章,一步一步慢慢操作即可,最好不要有中文路径

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/

反编译的小部分java文件出错,可以用jd-gui看原版包,复制内容过来

反编译代理逻辑不好分析时,可用luyten-0.5.4做一个格式补充

暗桩修复

根据启动流流程分析

common/Starter.java 注释暗装 启动失败

common/Starter2.java 注释暗装 启动失败

common/Helper.java注释暗桩帮助退出?(测试工具栏按钮时触发了)

beacon/BeaconData.java 改暗桩 上线30分钟后 添加的命令任务 会默认加一个exit 导致beacon断开

授权破解

方式一、 自生成授权文件

RSAKeyPairGenerator通过这个项目,修改代码中的认证key为对应版本

编译运行直接生成符合条件的认证文件

cmd执行javac -encoding utf-8 RSAKeyPairGenerator.java编译代码

运行java RSAKeyPairGenerator生成RSA证书文件

common/AuthCrypto.java 修改md5值为自定义生成的authkey.pub md5

cmd执行certutil -hashfile ./RSA/authkey.pub MD5获取md5

方式二、 通过java agent hook签名函数

之前开放的CSAgent项目,找渠道获取源码分析

兼容jdk1.8与java11解决

客户端运行报错(服务端运行不报错)

Exception in thread "main" java.lang.NoClassDefFoundError:sun/swing/plaf/synth/SynthIcon

查询解决方法“反编译jar包后不要忘记修改自己的MANIFEST.MF文件”

decompiled_src/cobaltstrike/META-INF/MANIFEST.MF

的内容拷贝到

src/META-INF/MANIFEST.MF

服务端防登录密码爆破

ssl/SecureSocket.java teamserver 防爆破, 修改默认标识数,48879(\x00\x00\xbe\xef)为6220810(\x00\x5e\xec\x0a)
ssl/SecureServerSocket.javateamserver 防爆破,修改默认标识数,48879(\x00\x00\xbe\xef)为6220810(\x00\x5e\xec\x0a)

服务端防配置文件反制

aggressor/Prefs.java 改配置文件名防反制 修改.aggressor.prop为.agg2022ressor.p0810rop

修复stage泄露漏洞

cloudstrike/WebServer.java中添加对请求路径的判断

测试

修复xss引起的rce漏洞

方法1. 添加替换函数

直接硬转,在432行左右添加一个转义函数

对相关字符串进行替换转义

测试效果
方法二、使用escapeHtml4(未成功)

个人对java依赖处理不熟悉,生成jar包找不到这个text依赖,没有测试成功

下载commons.text包

https://commons.apache.org/proper/commons-text/download_text.cgi
导入依赖

在common/BeaconEntry.java中,文件头添加引用 

 import org.apache.commons.text.StringEscapeUtils;

使用StringEscapeUtils.escapeHtml4对输入的字符串进行html编码,修复xss问题,在432行左右对传入的字符串进行html编码

修改后

apache官方api描述

未完。

往期回顾

【干货分享】CFS多层内网几个注意点与原理详解
【干货分享】五分钟教你挖掘小程序漏洞
【干货分享】使用selenium实现异步流量获取和反爬处理

声明

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

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

戟星安全实验室

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


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