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

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

作者头像
Khan安全团队
发布2022-01-04 16:57:52
9330
发布2022-01-04 16:57:52
举报
文章被收录于专栏:Khan安全团队

该工具可替代 Cobalt Strike 的传统 fork 和 run 执行。加载器可以注入任何进程,包括当前的 Beacon。长时间运行的程序集将继续运行并将输出发送回 Beacon,类似于执行程序集的行为。

注入组装有两个组件:

  1. BOF 初始化程序:一个小程序,负责将程序集加载器注入远程进程并传递任何参数。它使用 BeaconInjectProcess 来执行注入,这意味着可以在 Malleable C2 配置文件中或使用进程注入 BOF(从 4.5 版开始)自定义此行为。
  2. PIC 程序集加载器:项目的大部分。加载程序将初始化 .NET 运行时、加载提供的程序集并执行程序集。加载程序将在目标进程中创建一个新的 AppDomain,以便在执行完成时可以完全卸载加载的程序集。

远程进程和 Beacon 之间的通信通过命名管道进行。Aggressor 脚本生成一个管道名称,然后将其传递给 BOF 初始值设定项。

显着特点

  • 修补 Environment.Exit() 以防止远程进程退出。
  • .NET 程序集标头踩踏(MZ 字节、e_lfanew、DOS 标头、富文本、PE 标头)。
  • 基于SourcePoint 的随机管道名称生成。
  • 即使程序集已加载到当前进程中,也不会阻塞 Beacon。

用法

下载并加载inject-assembly.cna Aggressor 脚本到Cobalt Strike 中。然后,您可以使用以下命令执行程序集:

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

指定 0 作为要在当前 Beacon 进程中执行的 PID。

建议使用其他工具(如FindObjects-BOF)来定位已加载 .NET 运行时的进程,但这不是注入程序集运行的要求。

警告

  • 目前仅支持 x64 远程进程。
  • 在整个程序中有几个检查来减少远程进程崩溃的可能性,但它仍然可能发生。
  • 默认的 Cobalt Strike 进程注入可能会让您陷入困境。考虑自定义注入 BOF 或 UDRL IAT 钩子。
  • 一些程序集依赖 Environment.Exit() 来完成执行。这将阻止加载程序的清理阶段发生,但您仍然可以使用jobkill.
  • 取消注释 scmain.c 的第 3 行或第 4 行以分别启用错误或详细模式。默认情况下禁用这些以减少 shellcode 大小。

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

本文系转载,前往查看

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

本文系转载前往查看

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 显着特点
  • 用法
  • 警告
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档