当前位置: 首页 > news >正文

红队专题-Cobalt strike4.5二次开发

红队专题

  • 招募六边形战士队员
  • IDEA 自动换行
  • 原版CS反编译破解
    • jar包反编译
    • 拔掉暗桩
    • 初始环境效果
  • stageless beacon http通信协议 过程分析
    • 上线&心跳get请求
    • teamserver 处理请求
  • 参考链接

招募六边形战士队员

一起学习 代码审计、安全开发、web攻防、逆向等。。。
私信联系
在这里插入图片描述

IDEA 自动换行

File->【Settings】
*.md; *.txt; *.rst; .adoc;.java
在这里插入图片描述

原版CS反编译破解

jar包反编译

 
CobaltStrike二次开发环境初探CobaltStrike 4.5原版 202251日 发布 + 破解及汉化加载4.3 及之前版本的暴力替换class文件的破解方法失效   IntelliJ IDEA自带了一个反编译java的工具  
IntelliJ IDEA安装目录/plugins/java-decompiler.jar对cobaltstrike的整个jar 包进行反编译
org/jetbrains/java/decompiler/main/decompiler/ 
org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler 提供反编译的这个类。因为没MANIFEST.MF中没有main class 属性,没有指定主类,
因此不能直接 使用 java -jar
如果 想要执行 java包中具体的类,要 使用 javacp输入如下命令:java -cp 命令中 cp 指的就是 classpath。
使用该命令可以运行jar中的某个指定的测试类 使用方法 Java -cp 依赖jar或者是依赖jar库新建两个文件
cs_bin里面放未反编译的cobaltstrike.jar 
再建一个CS_source_decompiler_src 文件,这个是空文件,是为了之后放反编译后的cobaltstrikejava -cp "D:\ideaIU-2018.1.1.win\plugins\java-decompiler\lib\java-decompiler.jar" org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler  -dsg=true cobaltstrike.jar G:\code\Saft_Code\CS_source_decompiler_src  反编译后,会自动打包成jar包,右键解压后打开可以看到都是.java了,
使用这个方法会非常方便,就不需要第三方工具,这个反编译出来的接放入就可以直接放到 IDEA中,
可直接实现代码搜索,相关的交叉引用。 IDEA 创建一个默认项目,然后创建一个对应的
decompile目录,将反编译的java源代码都放进去 

在这里插入图片描述


lib目录将的cobaltstrike.jar(这个jar是未反编译的jar包),放进去 
cobaltstrike.auth 也是将decompile/aggressor.Aggressor.java 复制到src/aggressor.Aggressor.java
右键 make Directory as  Source Root

在这里插入图片描述
在这里插入图片描述


并且将该jar包导入到依赖库中    设置依赖关系
file-->project Structure  
modules dependencies选择lib目录下面的文件,确保是Compile  打勾点击apply  Artifacts--->jar--->from modules with dependencies   MainClass
去新建一个Main Class Aggressor.Aggressor
名字可以在lib---->cs.jar---->meta-inf---->menifest.mf中找到
这样子可以使用菜单栏的Build里面Build Arifact进行jar打包了。结果会在out文件夹里里面。
启动文件使用打包的jar即可。JAR Application
设置对应的VM option为 -XX:ParallelGCThreads=4 -XX:+AggressiveHeap -XX:+UseParallelGC -Xms512M -Xmx1024M  
-XX:ParallelGCThreads=4  -XX:+AggressiveHeap -XX:+UseParallelGC加入测试语句
JOptionPane.showMessageDialog(null,"hello world!!!");参考资料
https://www.modb.pro/db/532313
https://cloud.tencent.com/developer/article/1808082服务端搭建  
再将decompile目录中的server.TeamServer类复制一份到src目录中  打包有问题src META-INF  MANIFEST.MF 复制E:\hack\conn\CobaltStrike\cobaltstrike.auth
E:\hack\conn\CobaltStrike\cobaltstrike.store 
-Djavax.net.ssl.keyStorePassword=123456设置对应的VM option为 -XX:ParallelGCThreads=4 -Dcobaltstrike.server_port=50050 -Djavax.net.ssl.keyStore=D:\ALL\javaidea\cs_disassemably\lib\google.store -Djavax.net.ssl.keyStorePassword=google -server -XX:+AggressiveHeap -XX:+UseParallelGC  注意:其中google.store可以是自己生成的ssl证书  https://www.cnblogs.com/haidragon/p/16852315.html  https://github.com/jas502n/cs-agent  

拔掉暗桩

采用全局搜索The Cobalt Strike Team Server process cannot be started with a javaagent
The Cobalt Strike Client process cannot be started with a javaagent.
[-] Your authorization file is not valid: pre-4.0 authorization file. Run update to get new fileCommonUtils.print_error 
Requirements.checkGUI()->common.requirements
//aming_changebeacon/BeaconData中将shouldPad方法的值固定为false:common/Helper增加.class判断public final boolean startHelper(Class var1)断点修改
common->class Authorization->
License-> checkLicenseGUI->JOptionPane.showMessageDialog ->showMessageDialog ->showOptionDialog ->dialog.show()super.initializeStarter->common.starter->starter2dialogs->public ConnectDialog(MultiFrame var1)JFrame var3 = DialogUtils.dialog("Connect", 640, 480);A Cobalt Strike team server is not available onthe specified host and port. You must start aCobalt Strike team server first
G:\code\Saft_Code\CobaltStrike_debug\out\artifacts\CobaltStrike_debug_jar\teamserver.bat 192.168.31.19 Msr010527browsers.public class Connect->public void dialogAction->
common->TeamSocket->public class TeamQueue->this.tqueue.call("aggressor.authenticate"var2.dialogAction(var1x, DialogManager.this.options);dialogs.ConnectDialog->
DialogManager.B((JComponent)var1x.getSource(), true)private static void B(final JComponent var0, final boolean var1) {CommonUtils.runSafe(new Runnable() {public void run() {var0.setEnabled(var1);}});}commonUtils-> public static void runSafe调试中断
[!] Trapped java.net.SocketTimeoutException during client (192.168.31.19) read [TeamQueue Reader]: Read timed out参考文章https://www.yii666.com/blog/355849.html
http://www.taodudu.cc/news/show-4636865.html?action=onClick

初始环境效果

在这里插入图片描述

stageless beacon http通信协议 过程分析

为了看cs 各个功能实现 以及具体的通信包结构以便自己实现beacon。

rsa 公私钥
序列化存储在.cobaltstrike.beacon_keys 里

上线&心跳get请求

beacon 上线第一个请求就是一个带有metadata 信息的get包
然后服务端再返回一个没内容的响应包。
在这里插入图片描述

默认这个metadata 信息是用rsa 公钥加密放在cookie 里的,
这个行为的在profile 文件的http-get.client.metadata 里定义。

后续的心跳请求也是这个,

如果服务端有命令要下发给beacon执行 就是通过心跳请求的响应包来传递。

teamserver 处理请求

teamserver 的NanoHTTPD -> run方法在获取到请求后传给WebServer.serve,

最终请求信息传递给WebServer._serve 来处理请求信息。

_serve 方法先检测User-Agent是否在黑名单里
在就把blockedByUA 设置为true,

然后又检查ua 是否在白名单里,
如果有设置白名单并且没有匹配到的话就把allowedByUA 设置我false,
在这里插入图片描述
allowedByUA默认为true。

      boolean allowedByUA = true;String hook;if (this.allowedUAArray.length > 0) {allowedByUA = false;String[] arr$ = this.allowedUAArray;len$ = arr$.length;for(int i$ = 0; i$ < len$; ++i$) {hook = arr$[i$];if (hook.trim().length() > 0 && CSUtils.matchesSimpleGeneric(useragent, hook.trim())) {allowedByUA = true;}}}

只有当满足 allowedByUA && !blockedByUA 条件时才继续执行函数,
否则就在控制台提示然后返回404
在这里插入图片描述

黑白名单的ua 可以在profile的http-config 中配置,
curl/lynx/wget* 是默认黑名单

下一步就是判断请求方法是不是OPTIONS ,
是就返回200 和允许的方法
在这里插入图片描述再往下就是之前爆出的路径不规范泄露stager信息漏洞的地方,

这里看this.hooks里的内容如果直接传入一个类似GET stager HTTP/1.1,
这样的请求头就会泄露stager信息
在这里插入图片描述
在这里插入图片描述

参考链接

cobaltstrike4.5 stageless beacon 通信分析
https://mp.weixin.qq.com/s/xhRvAEFftmNEW97uW5BNOQ

http whoami
https://github.com/l3anma/cobaltstrike4.5_http_dec

相关文章:

红队专题-Cobalt strike4.5二次开发

红队专题 招募六边形战士队员IDEA 自动换行原版CS反编译破解jar包反编译拔掉暗桩初始环境效果 stageless beacon http通信协议 过程分析上线&心跳get请求teamserver 处理请求 参考链接 招募六边形战士队员 一起学习 代码审计、安全开发、web攻防、逆向等。。。 私信联系 …...

Java数据结构之Deque(双端队列)

一、Queue和Deque异同介绍 我们知道&#xff0c;Queue是队列&#xff0c;只能一头进&#xff0c;另一头出。 如果把条件放松一下&#xff0c;允许两头都进&#xff0c;两头都出&#xff0c;这种队列叫双端队列&#xff08;Double Ended Queue&#xff09;&#xff0c;学名Deq…...

flink以增量+全量的方式更新广播状态

背景 flink在实现本地内存和db同步配置表信息时&#xff0c;想要做到类似于增量(保证实时性) 全量(保证和DB数据一致)的效果&#xff0c;那么我们如何通过flink的广播状态外部定时器定时全量同步的方式来实现呢&#xff1f; 实现增量全量的效果 package wikiedits.schedule…...

Java:org.apache.commons.io包的工具类:IOUtils、FileUtils、FilenameUtils

文档 https://commons.apache.org/proper/commons-io/https://central.sonatype.com/artifact/commons-io/commons-io/2.14.0/jar 工具类 IOUtils io工具类FileUtils 文件操作工具类FilenameUtils 文件名工具类 依赖 <dependency><groupId>commons-io</gro…...

【JavaEE】文件操作

文章目录 前言什么是文件树型结构组织和目录文件路径文件类型文件权限Java中的文件操作File 类的常见属性File 类常见构造方法File 类常用方法 前言 文件是我们日常生活中使用非常广泛的&#xff0c;我们使用任何一个程序都离不开文件操作&#xff0c;这个文件不仅仅指平时可以…...

高精度电流源的应用领域有哪些

高精度电流源是一种能够提供稳定、准确、可控的电流输出的仪器设备&#xff0c;广泛应用于多个领域。以下是一些高精度电流源的应用领域。 科学研究&#xff1a;在物理学、化学、材料科学等领域中&#xff0c;需要进行精确的电流实验和测试。高精度电流源可以提供稳定的电流输出…...

多线程 - 线程池

线程池 相关的背景知识 线程池存在的意义: 使用进程来实现并发编程,效率太低了,任务太重了,为了提高效率,此时就引入了线程,线程也叫做“轻量级进程”,创建线程比创建进程更高效;销毁线程比销毁进程更高效;调度线程比调度进程更高效…此时,使用多线程就可以在很多时候代替进程…...

vue3 setup中defineEmits与defineProps的使用案例

目录 一、defineEmits的使用 二、 defineProps的使用 总结 一、defineEmits的使用 使用说明 1、在子组件中调用defineEmits并定义要发射给父组件的方法 const emits defineEmits([foldChange]) 2、使用defineEmits会返回一个方法&#xff0c;使用一个变量emits(变量名随意…...

Vs - Qt - 下拉窗口示例

下列代码定义了一个窗口&#xff0c;窗口采用竖直布局&#xff1a;一个按钮及一个label。按下按钮时候&#xff0c;窗口扩张&#xff0c;显示label控件。再次按下按钮时&#xff0c;窗口收缩&#xff0c;隐藏label控件。 详细代码如下&#xff1a; #include <QApplication&g…...

深圳自贸区的形成与发展

深圳自贸区的形成与发展源于中国政府推出的自贸试验区政策。自贸试验区是指在特定区域内&#xff0c;允许实行特殊的行政管理措施和贸易政策&#xff0c;以促进贸易自由化、投资便利化和经济转型升级。 深圳自贸区成立于2015年4月以来&#xff0c;主要着眼于优化区域布局、提高…...

机器人中的数值优化(二十一)—— 伴随灵敏度分析、线性方程组求解器的分类和特点、优化软件

本系列文章主要是我在学习《数值优化》过程中的一些笔记和相关思考&#xff0c;主要的学习资料是深蓝学院的课程《机器人中的数值优化》和高立编著的《数值最优化方法》等&#xff0c;本系列文章篇数较多&#xff0c;不定期更新&#xff0c;上半部分介绍无约束优化&#xff0c;…...

BACnet /IP转MQTT网关

在工业自动化和楼宇自动化领域中&#xff0c;Modbus、MQTT和BACnet/IP是三种常用的通信协议。Modbus是一种串行通信协议&#xff0c;常用于连接工业电子设备&#xff1b;MQTT是一种基于发布/订阅模式的轻量级通信协议&#xff0c;适用于远程监测和控制系统&#xff1b;BACnet/I…...

Web API 基础 (Web Workers API)

Web Workers API 1、指南 1.1 使用Web Workers Web Workers是一种让Web内容在后台线程中运行脚本的简单方法。工作线程可以在不干扰用户界面的情况下执行任务。此外&#xff0c;它们还可以使用XMLHttpRequest(尽管responseXML和channel属性总是为空)或fetch(没有此类限制)执…...

如何看待程序员不写注释?

程序员对代码注释可以说是又爱又恨又双标……你是怎么看待程序员不写注释这一事件的呢&#xff1f; 对于程序员来说&#xff0c;注释是一种非常重要的实践&#xff0c;可以帮助他们自己和其他人更好地理解和维护代码。以下是一些关于注释的观点&#xff1a; 维护代码的重要性&a…...

2.6 方法

思维导图&#xff1a; 2.6.1 什么是方法 ### 2.6.1 什么是方法 **定义**: - 方法就是一段可以重复调用的代码&#xff0c;使得程序的可读性、可维护性都得以提高。 **示例**: - 假设有一个游戏中需要反复发射炮弹。而发射炮弹的代码有100行。为了避免在程序中多次写下这100…...

【排序算法】插入排序

文章目录 一&#xff1a;基本概念1.1 介绍1.2 原理1.3 插入排序法思想 二&#xff1a;代码实现2.1 源码2.2 执行结果2.3 测试八万条数据 三&#xff1a;算法分析3.1 时间复杂度3.2 空间复杂度3.3 稳定性 一&#xff1a;基本概念 1.1 介绍 插入式排序属于内部排序法&#xff0…...

Gnuradio+AM解调

1. https://wiki.gnuradio.org/index.php/PLL_Carrier_Tracking 2. https://wiki.gnuradio.org/index.php?titleComplex_to_Mag#Example_Flowgraph...

解决java.io.IOException: Broken pipe的报错

问题说明&#xff1a; 订单服务&#xff0c;查询预售但是出现Broken pipe&#xff1b; 测试版是正常的&#xff0c;正式版报错 解决方案 1、延长客户端超时时间 // 查询预售单列表 export function listPreOrder(query) {return request({url: /order/presale/list,method:…...

微信小程序--》从模块小程序项目案例23.10.09

配置导航栏 导航栏是小程序的门户&#xff0c;用户进来第一眼看到的便是导航栏&#xff0c;其起着对当前小程序主题的概括。而我们 新建的小程序 时&#xff0c;第一步变开始配置导航栏。如下&#xff1a; 配置tabBar 因为配置tabBar需要借助字体图标&#xff0c;我这里平常喜…...

爱尔眼科角膜塑形镜验配超百万,全力做好“角塑镜把关人”

你知道吗?过去的2022年&#xff0c;我国儿童青少年总体近视率为53.6%&#xff0c;其中6岁儿童为14.5%&#xff0c;小学生为36%&#xff0c;初中生为71.6%&#xff0c;高中生为81%①。儿童青少年眼健康问题俨然成为全社会关心的热点与痛点&#xff0c;牵动着每一个人的神经。 好…...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室&#xff08;Algorithms, Machines, and People Lab&#xff09;开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目&#xff0c;8个月后成为Apache顶级项目&#xff0c;速度之快足见过人之处&…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候&#xff0c;难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵&#xff0c;或者买了二手 iPhone 却被原来的 iCloud 账号锁住&#xff0c;这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

1.3 VSCode安装与环境配置

进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件&#xff0c;然后打开终端&#xff0c;进入下载文件夹&#xff0c;键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用

文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么&#xff1f;1.1.2 感知机的工作原理 1.2 感知机的简单应用&#xff1a;基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...

基于IDIG-GAN的小样本电机轴承故障诊断

目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) ​梯度归一化(Gradient Normalization)​​ (2) ​判别器梯度间隙正则化(Discriminator Gradient Gap Regularization)​​ (3) ​自注意力机制(Self-Attention)​​ 3. 完整损失函数 二…...

GO协程(Goroutine)问题总结

在使用Go语言来编写代码时&#xff0c;遇到的一些问题总结一下 [参考文档]&#xff1a;https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现&#xff1a; 今天在看到这个教程的时候&#xff0c;在自己的电…...

解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用

在工业制造领域&#xff0c;无损检测&#xff08;NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统&#xff0c;以非接触式光学麦克风技术为核心&#xff0c;打破传统检测瓶颈&#xff0c;为半导体、航空航天、汽车制造等行业提供了高灵敏…...

spring Security对RBAC及其ABAC的支持使用

RBAC (基于角色的访问控制) RBAC (Role-Based Access Control) 是 Spring Security 中最常用的权限模型&#xff0c;它将权限分配给角色&#xff0c;再将角色分配给用户。 RBAC 核心实现 1. 数据库设计 users roles permissions ------- ------…...