首页
社区
课程
招聘
[原创]魔改CobaltStrike:重写Stager和Beacon
发表于: 2021-8-29 20:54 30441

[原创]魔改CobaltStrike:重写Stager和Beacon

2021-8-29 20:54
30441

这次我们一起用C#来重写stager及其Beacon中的大部分常用功能,帖子主要介绍该项目的运行原理(LolBins-->Stager-->Beacon)及相应的功能介绍及展示。LolBins部分是由GadgetToJs使Stager转换为js、vba、hta文件后,再结合相应的csript、mshta等程序来运行;Stager功能包括从网络中拉取Beacon的程序集并在内存中加载及AMSIBypass;Beacon部分主要有包括正常上线、文件管理、进程管理、令牌管理、结合SysCall进行注入、原生端口转发、关ETW等一系列功能。

项目地址:
https://github.com/mai1zhi2/SharpBeacon/tree/master

项目基于.net4.0,暂支持cs4.1(更高版本待测试),感谢M大、WBG师傅、SharpSploit、Geason的分享。另因最近出去广州找工作没时间弄,就暂时写到这里,开发进度比较赶致使封装不是很好、设计模式也没有用,但每个实现功能点都有较详细注释,等后续工作安定后会进行重构及完善更多功能。若有错误之处还请师傅指出,谢谢大家。

LOLBins,全称“Living-Off-the-Land Binaries”,直白翻译为“生活在陆地上的二进“,我大概将其分为两大类:
1、带有Microsoft签名的二进制文件,可以是Microsoft系统目录中二进制文件。
2、第三方认证签名程序。
LolBins的程序除了正常的功能外,还可以做其他意想不到的行为。在APT或红队渗透常用,常见于海莲花等APT组织所使用。下图是较常见的LolBins,还有很多就不一一列出了:

而GadgetToJS项目则可以把源码cs文件动态编译再base64编码后,保存在js、vba、vbs、hta文件,而在其相关文件中文件利用了当 BinaryFormatter属性在进行反序列化时,可以触发对 Activator.CreateInstance() 的调用,,从而实现 .NET 程序集加载/执行。

但这需要在.net程序集中把相应的功能写在默认/公共构造函数,这样才能触发 .NET 程序集执行。下面以实例程序为例:

在相应文件夹下执行如下命令:
.\GadgetToJScript.exe -w js -c Program.cs -d System.Windows.Forms.dll -b -o gg
其中命令参数解析如下:
-w js表示所生成的是js文件,可以生成其他形式的文件
-c Program.cs是所选择的cs文件
-d System.Windows.Forms.dll cs文件所用到的dll
-b 会在js文件中的引入第一个stager,因为当在.NET4.8+的版本中引入了旁路类型检查控件,默认值为false,如果所生成的脚本要在.NET4.8+的环境中运行,则设置为true(--Bypass/-b)。生成的stager1就是bypass这个检查的。
-o gg生成文件名
生成js、hta、vbs等文件后默认是会被杀的:

而我们只需要简单修改下单引号为/就行了:


最后执行所生成的js或hta:

Stager部分的功能可以包括下图几项:

我主要实现了从网络中拉取Beacon的程序集并在内存中加载及AMSIBypass,沙箱及虚拟机检测的方式有挺多方式的,师傅可以自行添加。
拉取程序集及内存加载这个较为简单,就不细说了:


下面说说bypassAMSI,这里一开始找的不是AmsiScanBuffer,而是找DllCanUnloadNow的地址:

然后再通过相关的硬编码找到AmsiScanBuffer后,再进行相应的patch:

Beacon部分主要有包括正常上线、文件管理、进程管理、令牌管理、结合SysCall进行注入、原生端口转发、关ETW等一系列功能。

先从文件管理部分说,包含了cp、mv、upload、download、filebrowse、rm、mkdir上述这七个功能点:
Cp:


Mv:

Upload:

Download:


Filebrowse:

rm:

mkdir

进程部分,已完成的有run、shell、execute、runas、kill,未完成的有runu:
Run:

shell:

execute:

runas:

ps:

kill:

令牌权限部分,已完成的有getprivs、make_token、steal_token、rev2self:
Getprivs:


make_token:测试时在make_token后执行了cmd.exe /C dir \10.10.10.165\C$

steal_token:测试时在steal_token后执行了whoami

rev2self:

端口转发部分,已完成的有rportfwd、rportfwd stop:
Rportfwd,注意这里端口转发teamserver只返回了本地需要绑定的端口,没有返回需转发的ip和port。
在192.168.202.180:22222上新建msf监听:

在本机地址192.168.202.1的23456端口转发到上述msf的监听


本地访问23456端口:

另一个网段访问23456端口:

rportfwd stop:


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2021-8-30 06:46 被快乐鸡哥编辑 ,原因:
收藏
免费 9
支持
分享
最新回复 (17)
雪    币: 12497
活跃值: (9432)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
啥也不说了,鸡哥牛啤。
2021-8-29 21:53
0
雪    币: 300
活跃值: (2477)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
mark
2021-8-29 21:58
0
雪    币: 264
活跃值: (1134)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
鸡哥yyds,M总yyds
2021-8-29 22:18
0
雪    币: 47
活跃值: (22)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
mark+1
2021-8-30 00:54
0
雪    币: 53
活跃值: (205)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
我id一直是WBG
2021-8-30 01:00
0
雪    币: 299
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
7
我写个空函数360都杀怎么破
2021-8-30 02:46
0
雪    币: 2865
活跃值: (8493)
能力值: ( LV13,RANK:390 )
在线值:
发帖
回帖
粉丝
8
WBGIII 我id一直是WBG[em_78]
手滑,我马上改回来
2021-8-30 06:47
0
雪    币: 2865
活跃值: (8493)
能力值: ( LV13,RANK:390 )
在线值:
发帖
回帖
粉丝
9
WBGIII 我id一直是WBG[em_78]


最后于 2021-8-30 06:48 被快乐鸡哥编辑 ,原因:
2021-8-30 06:48
0
雪    币: 2865
活跃值: (8493)
能力值: ( LV13,RANK:390 )
在线值:
发帖
回帖
粉丝
10
谢谢支持,互相学习
2021-8-30 06:49
0
雪    币: 5194
活跃值: (9722)
能力值: ( LV9,RANK:181 )
在线值:
发帖
回帖
粉丝
11
跟鸡哥学CS。
2021-8-30 10:01
0
雪    币: 15
活跃值: (62)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
支持鸡哥,学习学习
2021-8-30 10:36
0
雪    币: 210
活跃值: (1707)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
我鸡哥对CS玩弄的已经出神入化了!每日一问今天招娉到鸡哥没有?没有!
2021-8-30 12:31
0
雪    币: 2865
活跃值: (8493)
能力值: ( LV13,RANK:390 )
在线值:
发帖
回帖
粉丝
14
wx_0xC05StackOver 我鸡哥对CS玩弄的已经出神入化了!每日一问今天招娉到鸡哥没有?没有!
让师傅见笑了
2021-8-30 17:39
0
雪    币: 70
活跃值: (2031)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
鸡哥yyds    跟更上瘾啊
2021-9-6 17:53
0
雪    币: 23
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
16
鸡哥不要啊鸡哥,看,教程看不完了
2021-11-25 21:56
0
雪    币:
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
18
CS生成的key文件,怎么提取里边的密钥啊?大佬
2022-6-28 09:33
0
游客
登录 | 注册 方可回帖
返回
//