红队专题-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.rhkb.cn/news/156686.html

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

相关文章

【计算机网络笔记】数据交换之电路交换

系列文章目录 什么是计算机网络? 什么是网络协议? 计算机网络的结构 文章目录 系列文章目录为什么需要数据交换数据交换的类型电路交换什么是多路复用?频分多路复用(FDM)时分多路复用(TDM)波分…

vue2.6 和 2.7对可选链的不同支持导致构建失败

有两个vue2项目,构建配置和依赖基本上都一样,但一个可以在 template 模板中使用可选链(?.),另一个使用就报错。 但是报错的那个项目,在另一个同事那又不报错。 已知 node14 之后就支持可选链了,我和同事用的是 node…

如何压缩视频?视频压缩变小方法汇总

视频是我们日常生活中不可或缺的一部分,但视频文件往往会占用大量存储空间,这在传输和分享过程中可能成为一个瓶颈。 为了解决这一问题,我们可以通过压缩的方式减小视频大小,视频压缩是指在保证视频质量的前提下,通过…

池州市的城市环境融合:OLED透明拼接屏展现自然与现代的完美结合

池州是中国安徽省的一个地级市,位于该省的西南部。池州市辖区包括贵池区、东至县、石台县、青阳县等地。 池州市拥有悠久的历史和丰富的文化遗产,同时也以其独特的自然风光而闻名。 首先,让我们来了解一下池州的历史和景点。 池州的历史可…

面试题:说说Java线程的状态及转换

文章目录 为何要了解Java线程状态Java线程状态转换图Java线程有哪些状态?关于wait()放在while循环的疑问BLOCKED 和 WAITING 状态的区别和联系 为何要了解Java线程状态 线程是 JVM 执行任务的最小单元,理解线程的状态转换是理解后续多线程问题的基础。 …

网站为什么需要https证书以及如何申请

随着互联网的快速发展,网站的安全性问题越来越受到人们的关注。因此,越来越多的网站开始使用https证书,以保护用户的数据安全和隐私。那么,网站为什么需要https证书呢? 首先,https证书可以提供加密保护&…

ROS IMU 数据发布---rviz_imu_plugin的安装

ROS中发布IMU传感器消息 - 润新知 按照上述链接的方法执行 catkin_make install -DCMAKE_INSTALL_PREFIX/opt/ros/noetic 后报错 这个错误是因为在安装过程中,CMake无法将文件复制到目标路径。这可能是由于权限不足导致的。可以尝试使用以下命令更改目标文件夹的…

破解mariadb密码

破解mariadb密码 小白教程,一看就会,一做就成。 1.先停止mariadb systemctl stop mariadb.service 2.进单用户模式 mysqld_safe --skip-grant-tables & 3.登录mariadb mysql -uroot #(不用密码也能登录) 4.切换到mysql …

堆叠、集群技术

1.堆叠、集群技术的概述 堆叠、集群简介 堆叠(iStack),将多台支持堆叠特性的交换机通过堆叠线缆连接在一起,从逻辑上虚拟成一台交换设备,作为一个整体参与数据转发。 集群(Cluster Switch System&#xf…

Davinci 集成NvM协议栈的步骤

BSW添加NvM和MemIf模块 Mcal添加Fls、Fee和Crc模块 NvM中添加数据块,Fee中添加相应的数据块。Mcal如果使用EB生成,需要在EB中配置Fee,或Davinci中配置好之后把配置导入到EB中。 NvM和Fee模块配置中不要启用Polling。 Fee模块需要启用Eras…

解决uniapp里scroll-view横向滚动的问题

一、前言 本以为是一件很简单的事,结果浪费了整整一个上午,并且问题并没有全部解决....后来没办法,用了touchmove模拟的滑动,如果有好的解决方法麻烦告诉我...非常感谢~ 一、问题 其实我想要实现的功能很简单,就是一…

elasticsearch(ES)分布式搜索引擎04——(数据聚合,自动补全,数据同步,ES集群)

目录 1.数据聚合1.1.聚合的种类1.2.DSL实现聚合1.2.1.Bucket聚合语法1.2.2.聚合结果排序1.2.3.限定聚合范围1.2.4.Metric聚合语法1.2.5.小结 1.3.RestAPI实现聚合1.3.1.API语法1.3.2.业务需求1.3.3.业务实现 2.自动补全2.1.拼音分词器2.2.自定义分词器2.3.自动补全查询2.4.实现…

【iOS】Fastlane一键打包上传到TestFlight、蒲公英

Fastlane一键打包上传到TestFlight、蒲公英 前言一、准备二、探索一、Fastlane配置1、Fastlane安装2、Fastlane更新3、Fastlane卸载4、查看Fastlane版本5、查看Fastlane位置6、Fastlane初始化 二、Fastlane安装蒲公英插件三、Fastlane文件编辑1、Gemfile文件2、Appfile文件3、F…

【安全】 Java 过滤器 解决存储型xss攻击问题

文章目录 XSS简介什么是XSS?分类反射型存储型 XSS(cross site script)跨站脚本攻击攻击场景解决方案 XSS简介 跨站脚本( cross site script )为了避免与样式css(Cascading Style Sheets层叠样式表)混淆,所以简称为XSS。 XSS是一种经常出现在web应用中的计算机安全…

stm32学习笔记:EXIT中断

1、中断系统 中断系统是管理和执行中断的逻辑结构,外部中断是众多能产生中断的外设之一。 1.中断: 在主程序运行过程中,出现了特定的中断触发条件 (中断源,如对于外部中断来说可以是引脚发生了电平跳变,对于定时器来…

24v转12v电源芯片 24v转5v开关电源芯片AH7691

AH7691是一款高-效-率、高压降压型DC-DC转换器。该芯片固定在130KHz的开关频率下工作,能够提供3A的输出电流能力,并具有低纹波、***软启动功能、过压保护功能和温度保护。 AH7691还具备峰值限流功能,使电路设计更加简单化。该芯片内置集成了高…

JFLASH基本使用总结

注意,不同版本的操作略有不同,本教程以J-Flash V5.12f为例。 烧录文件 如果是刚打开J-Flash,会弹出这样的一个工程选择界面,可以选择已有工程,或者创建新的工程,我们这里选择创建新工程。 注意&#xff0…

ffmpeg从一个视频中提取音频

ffmpeg -i ~/video/video.mp4 -vn -acodec copy ~/video/audioFile.m4a 从video.mp4中提取音频到文件audioFile.m4a中 查看提取的音频文件 ffprobe ~/video/audioFile.m4a

技术先驱视角:长城汽车工程师揭秘Hi4技术的无限潜力

文 | 智能相对论 作者 | 沈浪 汽车行业的变革正在回归平衡和理性,混动市场再度掀起新的浪潮,以Hi4技术为代表的混合动力解决方案备受瞩目,并爆发出无限潜力。 日前,工信部等七个部门联合印发了《关于汽车行业稳增长工作方案&am…

AlGaN/GaN结构的氧基数字蚀刻

引言 宽带隙GaN基高电子迁移率晶体管(HEMTs)和场效应晶体管(fet)能够提供比传统Si基高功率器件更高的击穿电压和电子迁移率。常关GaN非常需要HEMT来降低功率并简化电路和系统架构,这是GaN HEMT技术的主要挑战之一。凹进的AlGaN/GaN结构是实现常关操作的有用选择之一…