前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何将.NET程序集注入至现有进程

如何将.NET程序集注入至现有进程

作者头像
FB客服
发布2022-02-25 14:12:31
6800
发布2022-02-25 14:12:31
举报
文章被收录于专栏:FreeBuf

关于inject-assembly

inject-assembly这款工具是Cobalt Strike的传统“fork-and-run”执行方式的替代方法。在该工具的帮助下,加载器可以注入到任何进程中,包括当前Beacon在内。长时间运行的程序集将继续运行并会将输出发送回Beacon,这种特性类似于execute-assembly的执行行为。

该工具主要由以下两个组件组成:

1、BOF初始化工具:一个实用工具,负责将程序集加载器注入至远程进程中,并携带任意参数。它可以使用BeaconInjectProcess来执行注入操作,这也就意味着,这种行为可以在可延展的C2配置文件或进程注入BOF中进行自定义。

2、PIC程序加载器:它也是该工具的主要部分,它负责初始化.NET运行时环境,然后加载并执行提供的程序集。加载程序将在目标进程中创建一个新的AppDomain,以便在执行完成时完全卸载调之前加载的程序集。

远程进程和Beacon之间的通信是通过一个命名管道进行,我们可以通过脚本来生成一个管道名称,然后通过参数将其传递给BOF初始化工具。

主要功能

1、修复了Environment.Exit()以防止远程进程退出运行;

2、.NET程序集Header Stomping(MZ直接、e_Ifanew、DOS Header、富文本、PE Header);

3、给予SourcePoint随机生成管道名称;

4、不屏蔽Beacon,即使程序集已加载至当前进程中;

工具使用

广大研究人员可以访问该项目的【Releases页面】下载最新版本的inject-assembly,并将inject-assembly.cna脚本加载进Cobalt Strike中。

接下来,就可以使用下列命令来执行程序集了:

代码语言:javascript
复制
inject-assembly pid assembly [args...]

如果PID设置为0的话,则会在当前Beacon进程中执行。

我们建议广大研究人员使用类似FindObjects-BOF之类的工具来定位已加载.NET运行时的进程。

工具使用演示

项目地址

https://github.com/kyleavery/inject-assembly

参考来源

https://github.com/Tylous/SourcePoint

https://github.com/kyleavery/inject-assembly/releases

https://github.com/outflanknl/FindObjects-BOF

https://github.com/TheWover/donut

https://github.com/SolomonSklash/netntlm

https://github.com/med0x2e/ExecuteAssembly

https://github.com/anthemtotheego/InlineExecute-Assembly

https://www.mdsec.co.uk/2020/08/massaging-your-clr-preventing-environment-exit-in-in-process-net-assemblies

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-02-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 主要功能
  • 工具使用
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档