将.NET程序集注入Windows进程

Donut是一个工具,可从.NET程序集生成与位置无关的shellcode,用于注入Windows进程。它利用CLR Hosting API,对程序集进行加密并加载到新AppDomain,以躲避检测。Donut支持作为独立工具使用、库和模板重建shellcode,并包含绕过AMSI等安全功能的机制。
摘要由CSDN通过智能技术生成

Donut是一个shellcode生成工具,它可以从.NET程序集中创建与位置无关的shellcode payloads。此shellcode可用于将程序集注入任意Windows进程。给定一个任意.NET程序集,参数和入口点(如Program.Main),Donut就可为我们生成一个与位置无关的shellcode,并从内存加载它。.NET程序集可以通过直接嵌入shellcode从URL或Stageless进行分阶段。无论哪种方式,.NET程序集都将使用Chaskey block cipher和128-bit随机生成的密钥进行加密。通过CLR加载程序集后,原始引用将从内存中删除以躲避内存扫描程序检测。程序集将被加载到一个新的应用程序域(AppDomain) 中,以允许在可释放的AppDomain中运行程序集。它可以以多种方式使用。

作为独立工具使用
Donut可用于从任意.NET程序集生成shellcode。同时提供了Windows EXE和Python script(计划用于v1.0版的python)的payload生成。命令行语法如下。

usage: donut [options] -f <.NET assembly>

   -f <path>            .NET assembly to embed in PIC and DLL.
   -u <URL>             HTTP server that will host the .NET assembly.
   -c <namespace.class> Optional class name. (required for DLL)
   -m <method>          Optional method name. (required for DLL)
   -p <arg1,arg2...>    Optional parameters or command line, separated by comma or semi-colon.
   -a <arch>            Target architecture : 1=x86, 2=amd64, 3=amd64+x86(default).
   -r <version>         CLR runtime version. MetaHeader used by default or v4.0.30319 if none available.
   -d <name>            AppDomain name to create for assembly. Randomly generated by default.

examples:

donut -f assembly.exe
donut
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值