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

admin 2022年2月10日01:08:04评论97 views字数 919阅读3分3秒阅读模式

关于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中。

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

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

inject-assembly pid assembly [args...]

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

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

工具使用演示

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

项目地址

inject-assembly:【GitHub传送门】

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


原文始发于微信公众号(盾山实验室):将.NET程序集注入至现有进程

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年2月10日01:08:04
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   将.NET程序集注入至现有进程http://cn-sec.com/archives/770131.html

发表评论

匿名网友 填写信息