红队专题-Cobalt strike 4.x - Beacon重构

news2024/9/24 11:33:47

红队专题

  • 招募六边形战士队员
  • 重构后 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无法进行正常的处理。

参考链接

红队兵器:跨平台重构Cobaltstrike Beacon
https://mp.weixin.qq.com/s/VEIQYXiqJkXXgU1X4F3pBw
Z3ratu1 H4de5-7

CobaltStrike’s Beacon in Go
https://github.com/darkr4y/geacon
4.0 geacon_plus
https://github.com/Z3ratu1/geacon_plus
鸡哥文章

cs的通信协议以及cs原生的beacon实现
https://github.com/WBGlIl/ReBeacon_Src

go的原生execute-assembly
https://github.com/timwhitez/Doge-CLRLoad

跨平台重构CobaltStrike的Beacon并使行为对主流杀软免杀
https://mp.weixin.qq.com/s/cVBPbR_hbQVyrwaj-nG2sw

魔改CobaltStrike重写Stager和Beacon
https://mp.weixin.qq.com/s/vMd_K28sxFpOyqdZactc3A
dotnet beacon
https://github.com/mai1zhi2/SharpBeacon

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1079525.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

STM32使用HAL库驱动TA6932数码管驱动芯片

TA6932介绍 8段16位,支持共阴共阳LED数码管。 2、STM32CUBEMX配置引脚 推挽配置即可。 3、头文件 /******************************************************************************************** * TA6932:8段16位数码管驱动 *******************…

【AI视野·今日CV 计算机视觉论文速览 第264期】Tue, 10 Oct 2023

AI视野今日CS.CV 计算机视觉论文速览 Tue, 10 Oct 2023 (showing first 100 of 188 entries) Totally 100 papers 👉上期速览✈更多精彩请移步主页 Daily Computer Vision Papers FLATTEN: optical FLow-guided ATTENtion for consistent text-to-video editing Au…

盲盒商城源码 盲盒开箱源码 潮物盲盒商城源码 仿CSGO盲盒开箱源码

百度seo的要求对于网页内容的伪原创是相对严格的,需要进行一定的修改使其符合百度seo的标准 根据您的要求,我们将对后面的这段话进行伪原创修改,只修改文字符号,不对字数进行调整: 盲盒商城源码、盲盒开箱源码、潮物盲盒商城源码、仿CSGO盲盒开箱源码 带有Vue源代码,前端…

睿趣科技:抖音开网店怎么开通

在当前的数字时代,电子商务已经成为一种主流的商业模式。抖音作为中国最大的短视频平台,也提供了这种能力,让商家能够在平台上开设自己的网店。那么,如何在抖音上开通网店呢?下面是详细的步骤: 注册抖音账号 首先&…

BCYD-A10-33-L85、BCYD-A16-21-S150电比例先导阀放大器

BCYD-A16-31-L150、BCYD-A10-33-L85、BCYD-A16-21-S150、BCYD-A25-23-L320是先导式电液比例换向阀,导阀和主阀都没有阀芯位置反馈,通过比例电磁铁驱动作为功率级的先导阀芯工作。此类阀工作时是通过电子放大器提供功率级的先导阀比例电磁铁的驱动电流&am…

项目1-基于STM32制作T12洛铁(更新中)

视频补充处(待补充。。。。) 一、简介 当使用STM32来制作T12型号的烙铁,并集成OLED-0.96寸显示器时,你将进入一个令人兴奋的嵌入式系统开发领域。这个项目将涉及硬件和软件的复杂工作,以实现一个功能强大的烙铁控制器…

交流回馈老化测试负载的应用

交流回馈老化测试负载的应用非常重要,老化测试是一种对产品进行长时间运行和负载测试的方法,旨在模拟产品在实际使用中的长期稳定性和可靠性。在老化测试过程中,负载是指对产品施加的工作负荷,可以是CPU、内存、硬盘等资源的使用情…

vue3学习(四)--- watch和watchEffect监听

文章目录 watchsource侦听源不同类型侦听ref侦听reactive侦听没有响应式的数据侦听多个源 watchEffect清除副作用清除侦听flush用法 watch watch() 默认是懒侦听的初始化不触发,只有在侦听源发生变化时才执行回调函数。 watch的结构: source 侦听源call…

pandas-进阶

apply、transform 分组聚合agg

电商API接口:数据分析,代购商城建站,erp系统商品数据选品,价格监控,品牌维权,商家搬货,店铺铺货

淘宝(1688拼多多京东等)商品详情API接口(item_get-获得taobao商品详情接口),淘宝API接口可获取到商品链接,商品ID,商品标题,商品价格,品牌名称,店铺昵称&…

基于图像识别的迁移学习之一

案例分析 加载数据部分同上一个案例,只需把数据输入到预训练的VGG-16或者ResNet50中。VGG-16的网络结构为右侧图绿色栏所示,其中block1中有2个包含64个卷积核的卷积层,block2包含2个128个卷积核的卷积层,block3有3个包含256个卷积…

SSH Tunneling隧道 - 探究与实践

1.应用场景 主要用于探究与实践SSH Tunneling隧道技术, 在日常开发中能到得心应手,提高工作效率. 2.学习/操作 1.文档阅读 chatgpt & 其他资料 Results for SSH tunneling [medium.com] The power of SSH tunneling. How it can make your developer life easier Connect…

华为、小鹏大定爆单,智驾苦尽甘来,车主终于愿意买单

‍作者|德新 编辑|王博 国庆假期结束,车圈的最大热点事件,当属问界M7卖爆,上市不到一个月时间内,狂揽5万张大定订单。 在华为手机强势回归,改款问界M7大热的高光之下,还有一个重要趋势值得关注&#xff1…

Java程序员要掌握vue2知识

1. Vue 基础 1) 环境准备 安装脚手架 npm install -g vue/cli-g 参数表示全局安装,这样在任意目录都可以使用 vue 脚本创建项目 创建项目 vue ui使用图形向导来创建 vue 项目,如下图,输入项目名 选择手动配置项目 添加 vue router 和 …

计算机网络面试知识点

计算机网络面试知识点 OSI七层模型 为什么网络分层 各层之间相互独立;任务细分,大事化小;提高整体灵活性; TCP/IP TCP面向连接,确认应答机制和超时重传机制;滑动窗口、TCP流量控制、拥塞控制机制实现流…

软件测试工具有什么作用?有哪些好用的测试工具推荐?

软件测试工具是现代软件测试中不可或缺的重要组成部分,指的是一系列在软件开发过程中使用的工具,用于帮助测试人员进行测试活动,提高测试效率,减少测试成本。选择并使用合适的软件测试工具,可提高软件质量和效率。 一…

QT作业三

1、思维导图 https://www.zhixi.com/view/9e899ee0 2、作业 #include <iostream>using namespace std;class Per { private:string name;int age;int *h;int *w; public://构造函数Per(string name,int age,int h,int w):name(name),age(age),h(new int (h)),w(new int…

UI自动化怎么做?不会代码能不能做

UI自动化测试是一种通过编写脚本或使用自动化测试工具对用户界面&#xff08;UI&#xff09;进行自动化测试的方法。它可以模拟用户与应用程序或网站的交互&#xff0c;自动化执行用户界面上的操作&#xff0c;如点击按钮、输入文本、选择选项等&#xff0c;并检查应用程序或网…

Node18.x进阶使用总结(四)

Node18.x进阶使用总结之MongoDB7.x 1、接口1.1、接口的组成1.2、RESTful API1.3、json-server1.4、接口测试工具1.4.1、apipost1.4.2、apifox1.4.3、postman 2、会话2.1、cookie2.1.1、特点2.1.2、cookie的运行流程2.1.3、cookie的代码操作 2.2、session2.2.1、session的运行流…

电容笔什么牌子好?比较好用的ipad手写笔推荐

哪一种电容笔适合学生党&#xff1f;作为一名数字爱好者&#xff0c;我对电容笔还是有所了解的。其实苹果的电容笔&#xff0c;与一般的电容笔最大的不同之处&#xff0c;就是在于压感方面上。因为苹果的电容笔具有独一无二的“重力压感”&#xff0c;所以我们可以在绘图时使用…