Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
inject-assembly — 将 .NET 程序集注入现有进程 | Kitploit
工具/GitHubGitHub/kyleavery/inject-assembly
漏洞利用Shellcode后渗透利用红队
GitHubkyleavery/inject-assembly

inject-assembly

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

查看仓库
5087444年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

inject-assembly - 在现有进程中执行 .NET

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

inject-assembly 包含两个组件:

  1. BOF 初始化器:一个小型程序,负责将程序集加载器注入远程进程并附带任意参数。它使用 BeaconInjectProcess 执行注入,这意味着此行为可通过 Malleable C2 配置文件或进程注入 BOF(从 4.5 版本开始)进行自定义。

  2. PIC 程序集加载器:项目的主体部分。加载器会初始化 .NET 运行时、加载提供的程序集并执行该程序集。加载器会在目标进程中创建新的 AppDomain,以便执行完成后可以完全卸载已加载的程序集。

远程进程与 Beacon 之间的通信通过命名管道进行。Aggressor 脚本会生成一个管道名称,然后将其传递给 BOF 初始化器。

显著特性

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

使用方法

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

root@kitploit:~
inject-assembly pid assembly [args...]

指定 PID 为 0 可在当前 Beacon 进程中执行。

建议使用另一款工具(如 FindObjects-BOF)来定位已加载 .NET 运行时的进程,但这并非 inject-assembly 运行的强制要求。

警告

  • 目前仅支持 x64 远程进程。
  • 程序中包含多项检查以降低远程进程崩溃的可能性,但仍可能发生。
  • 默认的 Cobalt Strike 进程注入方式可能导致被检测到。请考虑使用自定义注入 BOF 或 UDRL IAT hook。
  • 部分程序集依赖 Environment.Exit() 完成执行。这会阻止加载器的清理阶段,但你仍可使用 jobkill 断开命名管道。
  • 取消注释 scmain.c 中的第 3 或第 4 行可分别启用错误模式或详细模式。默认情况下这些模式处于禁用状态以减小 shellcode 大小。

参考

如果没有以下项目,本项目将无法实现:

  • 与 CLR 相关的定义与实现 - https://github.com/TheWover/donut
  • Beacon 作业接口与项目结构 - https://github.com/SecIdiot/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
下载工具