红队专题-Cobalt strike 4.x - Beacon重构
红队专题
- 招募六边形战士队员
- 重构后 Beacon 适配的功能
- windows平台
- linux和mac平台
- C2profile
- 重构思路
- 跨平台
- 功能免杀
- 代码部分
- sysinfo包
- packet包
- config.go
- 命令的执行
- shell、run、execute
- powershell
- powerpick命令
- powershell-import
- execute-assembly
- 堆内存加密
- 字符集
招募六边形战士队员
一起学习 代码审计、安全开发、web攻防、逆向等。。。
私信联系
重构后 Beacon 适配的功能
不局限于cobalt strike 功能的跨平台后渗透免杀信标
没有beacon的特征,针对beacon特征的AV是检测不出来的;
windows平台
sleep、
shell、
upload、
download、
exit、cd、pwd、file_browse、ps、kill、getuid、mkdir、rm、cp、mv、run、execute、drives、powershell-import、powershell命令混淆、免杀bypassuac(uac-to。ken-duplication)、
免杀系统服务提权(svc-exe)、
execute-assembly(不落地执行c#)、
多种线程注入的方法(可自己更换源码)、
spawn、
inject、shinject、
dllinject(反射型dll注入)、管道的传输、
多种cs原生反射型dll注入(mimikatz、portscan、screenshot、keylogger等)、
令牌的窃取与还原、令牌的制作、权限的获取、runu父进程欺骗、代理发包、自删除、timestomp更改文件时间等功能。支持cna自定义插件的reflectiveDll、execute-assembly、powershell、powerpick、upload and execute等功能。
linux和mac平台
sleep、shell、upload、download、exit、cd、pwd、file_browse、ps、kill、getuid、mkdir、rm、cp、mv、自删除、timestomp
后续会添加linux与mac平台下后渗透功能
进程管理部分、文件管理部分支持图形化交互
C2profile
适配了C2profile流量侧的设置与部分主机侧的设置,支持的算法有base64、base64url、mask、netbios、netbiosu。
重构思路
传统cs的免杀偏向于如何加载上线
杀软对beacon的特征查得非常严,尤其是卡巴这种查内存的
入门cs的通信协议以及cs原生的beacon实现。
根据实战的需求来调试并实现beacon的各种功能。
考虑稳定性
体积的大小
跨平台
部分功能需要分平台实现
不同平台间同一个功能部分的实现又是相同的
抽出了一个service层来实现不同平台间功能重复的部分,进而减少代码的冗余。
功能免杀
很多地方原封不动照搬cs的原生实现并不是很好
对部分功能进行了实现的调整,同时针对cs不免杀的功能进行了替换
代码部分
main.go作为主函数
在beacon第一次与服务端通信之前执行隐藏窗口、反沙箱等操作。
成功建立了连接则每隔一段时间向服务端发送请求,
查看是否有需要下发的命令及数据,如果有的话则根据下发的命令号进行不同的处理。
sysinfo包
获取不同平台下目标主机的基本信息的功能,
拼装了beacon与服务器建立通信所需的meta数据。
windows平台下部分复杂的功能被拆分成execute_assembly.go、jobs.go、token.go等来单独实现。
services.go实现了对不同命令的跨平台处理。
packet包
实现了对命令的具体的处理操作以及通信等功能。
config.go
是配置文件,类似于C2profile
适配了大部分C2profile流量端与部分主机端配置的同时
还加入了代理发包、自删除、反沙箱等cs没有的设置。
命令的执行
shell、run、execute
区别在于shell调用cmd,run调用执行的程序本身,而execute无回显。
基于go的os/exec实现了跨平台的shell
golang的底层库并不是很稳定
os/exec库的cmd不支持Token的使用 无法实现令牌的窃取
将命令执行的实现更改为了windows api CreateProcess。
首先会判断当前是否有窃取/制作的Token,若有的话则用CreateProcessWithTokenW以Token权限来执行,没有的话则用CreateProcess执行。
shell和run在执行之后会用管道将结果回传,而execute不会。
Linux和Mac平台下目前用/bin/bash来执行shell。
powershell
shell powershell是从cmd调用powershell,
而powershell命令本身是以-nop -exec bypass -EncodedCommand参数来执行编码后的命令,
如whoami
powershell -nop -exec bypass -EncodedCommand dwBoAG8AYQBtAGkA
对powershell命令集成了混淆
由于360对powershell命令执行监控的过于严格,powershell命令执行暂时过不了360
将混淆后落地的ps1文件用powershell -ExecutionPolicy Bypass -File执行可过360
可以用shell powershell执行未混淆的powershell。
powerpick命令
可以在内存中不通过powershell.exe执行powershell来绕过监控,
不过在实现的时候发现powerpick可以执行成功但是部分情况拿不到回显
可以考虑使用execute-assembly执行来代替powerpick。
powershell-import
beacon中有一个导入powershell模块的功能,
将powershell后渗透利用框架导入到内存中方便后续的利用。
在目标主机上开一个端口放上module的内容,
在下次要执行powershell命令的时候download下载该端口的module内容
并用iex进行不落地的执行。
尽管是不落地的执行,但最好还是把powershell模块混淆下。
execute-assembly
execute-assembly是在内存中执行C#程序,用不落地执行来绕过杀软的查杀,在实战中很常用。
服务端下发的主体内容为patch过的用于开环境的反射型dll、.NET程序、执行的参数
1、用CreateProcess拉起来一个rundll32.exe(默认)进程
2、服务端下发patch之后的反射型dll,
beacon将该反射型dll注入到1中的进程中并执行,该dll的作用是开.NET的环境。
3、beacon之后把.NET程序注到1的进程中并执行。
考虑到过于麻烦、某些杀软会查杀远程线程注入的操作、卡巴会内存查杀反射型dll、容易拿不到执行的回显,
用https://github.com/timwhitez/Doge-CLRLoad实现了go的原生execute-assembly。
堆内存加密
堆内存加密这个功能,即在sleep之前将内存中数据加密,sleep之后再解开,可以避免杀软对内存的扫描。
在sleep之前先将除主线程之外的线程挂起,之后遍历堆对堆内存进行加密。
sleep结束后解密并将线程恢复。
不过该功能较为不稳定,有时在进行堆遍历的时候会突然卡住或者直接退出,
并且考虑到后台可能会有keylogger或portscan这种的持久任务,将线程全部挂起有些不合适
go的time.Sleep函数在其他线程都挂起之后调用会一直沉睡,而调用windows.SleepEx就不会有问题
字符集
CobaltStrike在服务端与Beacon通信的时候协商了字符集类型,如windows默认的是GBK,linux则是UTF-8。
go对字符串的处理默认是UTF-8,但有时windows通信时服务端下发的命令中包含中文,由于是GBK无法进行正常的处理。
相关文章:

红队专题-Cobalt strike 4.x - Beacon重构
红队专题 招募六边形战士队员重构后 Beacon 适配的功能windows平台linux和mac平台C2profile 重构思路跨平台功能免杀代码部分sysinfo包packet包config.go命令的执行shell、run、executepowershell powerpick命令powershell-importexecute-assembly 堆内存加密字符集 招募六边形…...
一文掌握 Go 文件的写入操作
前言 通过案例展示如何读取文件里的内容。本文接着上篇文章的内容,介绍文件的写入操作。 File.Write、File.WriteString、File.WriteAt File.Write(b []byte) (n int, err error) 直接操作磁盘往文件里写入数据,写入单位为字节。 b 参数:…...

小程序入门及案例展示
目录 一、小程序简介 1.1 为什么要使用小程序 1.2 小程序可以干什么 二、前期准备 2.1 申请账号 2.2 开发工具下载与安装 三、电商案例演示 四、入门案例 4.1 项目结构解析 4.2 基础操作及语法 4.3 模拟器 4.4 案例演示 4.4.1 新建页面 4.4.2 头部样式设置 4.4.…...

linux 安装python django pip 遇到的问题
Python解决SSL不可用问题 解决方案: 首先要明白python版本需要和openssl的版本需要相对匹配的,在Python3.7之后的版本,依赖的openssl,必须要是1.1或者1.0.2之后的版本,或者安装了2.6.4之后的libressl,linux…...

【问题解决】【爬虫】抓包工具charles与pycharm发送https请求冲突问题
问题: 开启charles抓包,运行pycharm发送https请求报以下错误 解决: 修改python代码,发送请求时添加verify false,此时charles也能抓取到pycharm发送的请求 2. 关闭charles抓包,取消勾选window proxy...
Hadoop3教程(二):HDFS的定义及概述
文章目录 (40)HDFS产生的背景和定义(41)HDFS的优缺点(42)HDFS组成架构(43)HDFS文件块大小(面试重点)参考文献 (40)HDFS产生的背景和定…...

【物联网+JAVA 】智慧工地源码
一、什么是智慧工地? 工地本身不拥有智慧,工地的运作是依赖于人的智慧。工地信息化技术,能够减少对人的依赖,使工地拥有智慧。 智慧工地,就是立足于“智慧城市”和“互联网”,采用云计算、大数据和物联网…...

001数据安全传输-多端协议传输平台:Openssl安装和配置 - EVP代码测试
001数据安全传输-多端协议传输平台:Openssl安装和配置 - EVP代码测试 文章目录 001数据安全传输-多端协议传输平台:Openssl安装和配置 - EVP代码测试1. 安装1.1 windows下安装openssl1.2 Linux下安装OpenSSL 2. VS中使用openssl3. 测试 1. 安装 1.1 win…...
关于小编入坑第512天
机缘 最初成为创作者的初心:总结记录整个学习前端的历程 日常学习过程中的记录: 先思考,整个程序逻辑流程是否出现问题 再文档,根据相关文档了解源头,学会看懂文档,是一个锻炼自学前端能力的关键一步 …...

VS2015编译Qt工程发生MSB4018错误完整解决过程
一、错误产生环境 操作系统:Windows10 开发工具:VS2015企业版 Qt版本:Qt5.7.1 64位 二、错误内容 MSB4018 “VCMessage”任务意外失败。 System.FormatException: 索引(从零开始)必须大于或等于零,且小于参数列表的大小。 …...

如何使用JMeter测试导入接口/导出接口
今天一上班,被开发问了一个问题:JMeter调试接口,文件导入接口怎么老是不通?还有导出文件接口,不知道文件导到哪里去了? 我一听,这不是JMeter做接口测试经常遇到的嘛,但是一时半会又…...

[入门一]C# webApi创建、与发布、部署、api调用
一.创建web api项目 1.1、项目创建 MVC架构的话,它会有view-model-control三层,在web api中它的前端和后端是分离的,所以只在项目中存在model-control两层 1.2、修改路由 打开App_Start文件夹下,WebApiConfig.cs ,修改路由&…...

关于Vue+webpack使用unocss编写CSS,打包后CSS没加前缀
关于Vuewebpack使用unocss编写CSS,打包后CSS没加前缀,封装了一个插件去解决了这个问题 unocss-postcss-webpack-plugin unocss在vite中使用配置,关于unocss在vite中使用,自行查阅官网 https://unocss.dev/integrations/vite ,vi…...

软件工程与计算总结(十一)人机交互设计
目录 编辑 一.引例 二.目标 三.人类因素 1.精神模型 2.差异性 四.计算机因素 1.可视化设计 2.常见界面类型 五.人机交互设计的交互性 1.导航 2.反馈 3.设计原则 六.设计过程 1.基本过程 2.界面原型化 一.引例 无论软件功能多么出色,亦或内部的构造…...

Jmeter组件执行顺序与作用域
一、Jmeter重要组件: 1)配置元件---Config Element: 用于初始化默认值和变量,以便后续采样器使用。配置元件大其作用域的初始阶段处理,配置元件仅对其所在的测试树分支有效,如,在同一个作用域的…...

第一天商城项目
复盘 1.maven高级部分聚合和继承 maven聚合工程(深度剖析)_一宿君的博客-CSDN博客 2.yml配置文件 mybatis mybatis: mapper-locations: classpath:mappers/*mapper.xml mapper-locations:这是一个子键,用于指定MyBatis映射文件(Mapper XML…...

C++笔记之通用多态函数包装器std::function
C笔记之通用多态函数包装器std::function code review! 文章目录 C笔记之通用多态函数包装器std::function1.存储自由函数,lambda,std::bind 调用的结果2.存储到成员的调用3.存储到函数对象四.基本语法五.使用std::function定义函数对象六.使用std::fu…...
Linux命令(92)之passwd
linux命令之passwd 1.passwd介绍 linux命令passwd是用来设置/更改用户密码 2.passwd用法 passwd [参数] username passwd常用参数 参数说明--stdin非交互式密码设置-l停止用户使用-u启用停止的用户-d删除密码 [rootcentos79-3 ~]# passwd ztj Changing password for user …...

光电柴微电网日前调度报告
摘要 微电网是目前国内外应用较为广泛的一种绿色可再生能源,近几年我国微电网产业的发展十分迅速。然后,越来越多的微电网系统建立并网,微电网产生的电能受外界因素影响较大,具有一定的随机性和波动性,给并网后的电力系…...

Godot 单元测试
前言 单元测试是我们常用的功能,Godot作为一个游戏,单元测试和热重载是我们常用的功能。这里我们讲解最简单的单元测试的情况。 Godot 配置 我们添加一个最简单的节点,挂载一个最简单的脚本。 添加测试方法(只能是静态方法&…...

使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...

shell脚本--常见案例
1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件: 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...

UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...

selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...

华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...