红队专题-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无法进行正常的处理。

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

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

相关文章

云原生安全应用场景有哪些?

当今数字化时代,数据已经成为企业最宝贵的资产之一,而云计算作为企业数字化转型的关键技术,其安全性也日益受到重视。随着云计算技术的快速发展,云原生安全应用场景也越来越广泛,下面本文将从云原生安全应用场景出发&a…

深入了解桶排序:原理、性能分析与 Java 实现

桶排序(Bucket Sort)是一种排序算法,通常用于将一组数据分割成有限数量的桶(或容器),然后对每个桶中的数据进行排序,最后将这些桶按顺序合并以得到排好序的数据集。 桶排序原理 确定桶的数量&am…

Linux寄存器+Linux2.6内核进程调度队列+命令行参数+环境变量

目录 一、寄存器 二、Linux2.6内核进程调度队列 (一)优先级 (二)活动队列 (三)过期队列 (四)active指针和expired指针 三、命令行参数 (一)举例一 &…

Stm32_标准库_10_TIM_显示时间日期

利用TIM计数耗费1s,启动中断,秒表加一 时间显示代码: #include "stm32f10x.h" // Device header #include "Delay.h" #include "OLED.h"uint16_t num 0; TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure; NVIC_I…

三十四、【进阶】MySQL索引的操作

1、创建索引 (1)基础语法 (2)唯一索引 唯一索引与普通索引不同的是,索引列的数值必须唯一,但允许有空值null; 唯一索引与主键索引不同的是,主键索引不允许出现空值null&#xff0…

FPGA设计时序约束五、设置时钟不分析路径

一、背景 在进行时序分析时,工具默认对所有的时序路径进行分析,在实际的设计中,存在一些路径不属于逻辑功能的,或者不需要进行时序分析的路径,使用set_false_path对该路径进行约束,时序分析时工具将会直接忽…

百度车牌识别AI Linux使用方法-armV7交叉编译

1、获取百度ai的sdk 百度智能云-登录 (baidu.com) 里面有两个版本的armV7和armV8架构。v7架构的性能比较低往往需要交叉编译,v8的板子性能往往比较好,可以直接在板子上编译。 解压到ubuntu里面。这里介绍v7架构的。 2、ubuntu环境配置 ubuntu下安装软件…

网络编程基础知识总结——IP,端口,协议

目录 1. 什么是网络编程? 2. 网络编程的三要素 3. IP 3.1 IP地址的概念 3.2 IP地址的分类 3.3 IPv4解析 3.4 Ipv6解析 4. IPv4 的使用细节 5. 特殊IP地址 4. 端口号 5. 协议 5.1 UDP协议 5.2 TCP协议 1. 什么是网络编程? 总的来说就是一句…

[计算机提升] Windows系统权限

1.2 Windows系统权限 在Windows操作系统中,权限是指授予用户或用户组对系统资源进行操作的权利。权限控制是操作系统中重要的安全机制,通过权限控制可以限制用户对系统资源的访问和操作,从而保护系统安全。 Windows操作系统中包含以下几种权…

Leetcode算法解析——查找总价格为目标值的两个商品

1. 题目链接:LCR 179. 查找总价格为目标值的两个商品 2. 题目描述: 商品价格按照升序记录于数组 price。请在购物车中找到两个商品的价格总和刚好是 target。若存在多种情况,返回任一结果即可。 示例 1: 输入:price …

大语言模型迎来重大突破!找到解释神经网络行为方法

前不久,获得亚马逊40亿美元投资的ChatGPT主要竞争对手Anthropic在官网公布了一篇名为《朝向单义性:通过词典学习分解语言模型》的论文,公布了解释经网络行为的方法。 由于神经网络是基于海量数据训练而成,其开发的AI模型可以生成…

以单颗CMOS摄像头重构三维场景,维悟光子发布单目红外3D成像模组

维悟光子近期发布全新单目红外3D成像模组,现可提供下游用户进行测试导入。通过结合微纳光学元件编码和人工智能算法解码,维悟光子单目红外3D成像模组采用单颗摄像头,通过单帧拍摄,可同时获取像素级配准的3D点云和红外图像信息,可被应用于机器人、生物识别等广阔领域。 市场…

Qt 5.12.12 静态编译(MinGW)

前置准备 系统环境 版本 Windows 11 专业版 版本 22H2 安装日期 ‎2023/‎6/‎18 操作系统版本 22621.2428 体验 Windows Feature Experience Pack 1000.22674.1000.0依赖工具 gcc Qt 5.12.12 安装 MinGW 后自动安装 https://download.qt.io/archive/qt/5.12/5.12.12/qt-ope…

三防PDA手持终端开发板-联发科MTK6765平台安卓主板方案

三防手持终端安卓主板方案采用了联发科12nm八核MT6765处理器,配备4G64GB内存(可选配6GB256GB),并搭载最新的Android 10.0操作系统。该方案支持许多功能,包括高亮显示屏、高清摄像头、NFC、3A快速充电、1D/2D扫描(可选配)、高精度定位(可选配)…

VMware _ Ubuntu _ root 密码是什么,怎么进入 root 账户

文章目录 进入 root 账户设置 root 密码小结 在 VMware 安装 ubuntu 虚拟机之后,root 用户的密码是什么?安装的过程也没有提示输入 root 用户的密码,只有创建第一个非 root 用户的密码。但是 root 用户是存在的,又怎么切换到 root…

红帽Linux的安装和部署

目录 一、红帽Linux的安装阶段 1、下载redhat7.9的iso镜像 2、安装阶段 二、红帽Linux的配置阶段 1、第一次进入装机配置 2、进入机器后的一些配置 三、远程连接阶段 1、关闭防火墙 2、使用Xshell远程连接(其他连接工具也行) 1.开启SSH服务 2.连…

利达卓越:关注环保事业,持续赋能科技

随着全球环境问题的日益突出,绿色金融作为一种新兴的金融模式逐渐受到各国的重视。绿色金融是指在金融活动中,通过资金、信贷和风险管理等手段,支持环境友好和可持续发展的项目和产业。绿色金融的出现是为了应对气候变化、资源短缺、污染问题等现实挑战,促进经济的绿色转型和可…

基于海洋捕食者优化的BP神经网络(分类应用) - 附代码

基于海洋捕食者优化的BP神经网络(分类应用) - 附代码 文章目录 基于海洋捕食者优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.海洋捕食者优化BP神经网络3.1 BP神经网络参数设置3.2 海洋捕食者算法应用 4…

Delay-Based 拥塞控制算法

上班七天了,有点崩溃,看一篇论文提神:A Delay-Based Approach for Congestion Avoidance in Interconnected Heterogeneous Computer networks,来自 Raj Jain,1989 年。这篇论文基于下图展开: 是不是很熟…

SiC外延片测试方案

外延材料是实现器件制造的关键,主要技术指标有外延层厚度、晶格布局,材料结构,形貌以及物理性质,表面粗糙度和掺杂浓度等。下面阐述SiC外延表面常见的测试手段: 1. 外延层厚度(傅里叶变换红外FT-IR&#xf…