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

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

2021-8-29 20:54
27996

一、概述

这次我们一起用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

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

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

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


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

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

四、Beacon

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

4.1文件管理

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


Mv:

Upload:

Download:


Filebrowse:

rm:

mkdir

4.2进程部分

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

shell:

execute:

runas:

ps:

kill:

4.3令牌权限

令牌权限部分,已完成的有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:

4.4端口转发

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

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


本地访问23456端口:

另一个网段访问23456端口:

rportfwd stop:

4.5注入部分

注入部分,cs的shinject、dllinject、inject都用来远程线程注入,我个人机器是win10 x64 1909,shellcode是用cs 的64位c# shellcode,被注入的程序是64位的calc.exe,程序返回的NTSTSTUS均为SUCCESS,且shellcode均已注入在相应的程序中,并新建出线程进行执行,但最后calc.exe都崩了,有点奇怪呀:

申请rwx内存空间存放shellcode后并在所执行shellcode下断:

 

执行NtCreateThreadEx(),被注入的calc.exe新建线程执行此shellcode:

最后跑起来报的c05,但分配的内存属性是rwx的:

4.6杂项部分

杂项部分,已完成有sleep、pwd、exit、setenv、drives、cd:
Sleep:

exit:

setenv:

 

drives:

Pwd:

cd:

五、完善及改进

后续需要改进的地方还有很多,有如下几点:
1、该封装好就封装好,该用设计模式就用
2、目前rsa密钥是pem方式就用了BouncyCastle库,要用回Exponent 和 Modulus
3、更多的注入方式,APC、傀儡进程等
4、更多的通信协议,如DNS、ICMP
5、支持spawn**,因为当执行spawn和job后,teamserver端会回传相应的dll,要改ts端
6、更多的功能,如mimi、keylogger、portscan、加载pe等
最后谢谢大家观看。


[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

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


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