.NET 逆向——AgentTesla样本分析(上)
字数 1637 2025-08-06 20:12:44

.NET逆向分析:AgentTesla样本技术解析

1. 样本概述

AgentTesla是全球主要病毒威胁之一,主要通过钓鱼邮件传播。本次分析的样本是C#编写的.NET程序,采用多层混淆和加密技术。

IOC指标

  • SHA256: 756feeaec24bcada5d473a53931ac665c2a159083f408d41e7fe1c8fcb0b9a6b
  • MD5: fa548af33ac073be63464186b33198aa
  • SHA1: 6a49f366a9e962fca0f33d4fbd9a7bab9b076306
  • SHA512: 47378048c422c793cffb091c782739ae34fd39788820c73c49215a6e859768c9e89d0e73f7aa7284ad5f6254add180d57c95b2a8a0b72b5f60524663eac7b962

2. 分析工具准备

必备工具

  • dnSpy: .NET反编译和调试工具
  • de4dot: .NET反混淆工具
  • PE工具: 如PEiD、CFF Explorer等

混淆技术

样本使用Eazfuscator.NET 2018进行混淆,这是功能强大的.NET混淆器和优化器。

3. 样本行为分析

3.1 初始加载流程

  1. 资源解密:

    • MyCoffeeProject.Properties.Resources获取Encrypted2资源
    • 使用AES算法解密,密钥派生自密码"newworldorder"
    • 解密后去除前16字节冗余数据,得到DLL文件
  2. DLL加载:

    • 使用Type.InvokeMember方法动态加载解密后的DLL

3.2 中间层DLL分析

  1. 资源解密:

    • 定位xakDaOzjgjlydnJRa资源
    • 两层解密:
      • 第一层: 提取图片像素的R、G、B属性值
      • 第二层: 前16字节为密钥,后续数据与密钥异或解密
  2. EXE加载:

    • 解密后得到PE格式文件
    • 使用Assembly.Load加载并获取入口点

3.3 持久化技术

  1. 文件复制:

    string targetPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\\IFaysgfEOJsfZd.exe";
    File.Copy(Assembly.GetEntryAssembly().Location, targetPath);
    
  2. 属性隐藏:

    directoryInfo.Attributes = FileAttributes.ReadOnly | FileAttributes.Hidden | 
                              FileAttributes.System | FileAttributes.NotContentIndexed;
    
  3. 权限设置:

    • 通过DirectorySecurityFileSystemAccessRule设置精细权限
    • 禁用写入、更改权限、更改所有者等敏感权限
  4. 计划任务:

    • 从XML资源创建计划任务
    • 使用schtasks.exe导入XML:
      Process.Start(new ProcessStartInfo("schtasks.exe", 
          "/Create /TN \"Updates\\[TASKNAME]\" /XML \"[XMLPATH]\""));
      

3.4 进程镂空技术

  1. 创建挂起进程:

    CreateProcess(targetPath, "\"{path}\"", ..., 4U /*CREATE_SUSPENDED*/, ...);
    
  2. 内存操作:

    • 获取线程上下文(GetThreadContext)
    • 读取进程内存(ReadProcessMemory)
    • 卸载内存区域(NtUnmapViewOfSection)
    • 分配新内存(VirtualAllocEx)
  3. PE注入:

    • 写入PE头(WriteProcessMemory)
    • 按节区写入数据
    • 设置新上下文(SetThreadContext)
    • 恢复线程(ResumeThread)

4. 加密技术详解

4.1 资源解密算法

  1. 第一层解密:

    byte[] keyBytes = Encoding.BigEndianUnicode.GetBytes("LVrVzJZqvR");
    for(int i=0; i<data.Length; i++) {
        decrypted[i] = (byte)(data[i] ^ key1 ^ keyBytes[i % keyBytes.Length]);
    }
    
  2. 第二层解密:

    byte[] key = new byte[16];
    Buffer.BlockCopy(encrypted, 0, key, 0, 16);
    for(int i=0; i<data.Length; i++) {
        decrypted[i] = (byte)(data[i] ^ key[i % 16]);
    }
    

4.2 AES解密

Rfc2898DeriveBytes rfc2898DeriveBytes = new Rfc2898DeriveBytes("newworldorder", new byte[8], 1000);
RijndaelManaged rijndaelManaged = new RijndaelManaged();
ICryptoTransform transform = rijndaelManaged.CreateDecryptor(rfc2898DeriveBytes.GetBytes(32), rfc2898DeriveBytes.GetBytes(16));
byte[] result = transform.TransformFinalBlock(encrypted, 0, encrypted.Length);

5. 防御检测建议

  1. 行为检测:

    • 监控异常的进程镂空行为
    • 检测隐藏属性的可执行文件
    • 监控计划任务的异常创建
  2. 特征检测:

    • 识别资源中的加密模式
    • 检测已知的IOC指标
    • 监控使用"newworldorder"等硬编码密钥的加密操作
  3. 加固建议:

    • 限制非特权用户的计划任务创建权限
    • 监控和限制schtasks.exe的异常调用
    • 实施文件完整性监控

6. 参考资源

  1. Agent Tesla样本分析 - CSDN
  2. Windows进程镂空技术 - FreeBuf
  3. .NET逆向工程指南 - GitHub
  4. Windows计划任务进阶 - Payloads

本分析文档详细记录了AgentTesla样本的技术细节,包括混淆技术、加密算法、持久化方法和进程注入技术,可作为.NET恶意软件分析的参考指南。

.NET逆向分析:AgentTesla样本技术解析 1. 样本概述 AgentTesla是全球主要病毒威胁之一,主要通过钓鱼邮件传播。本次分析的样本是C#编写的.NET程序,采用多层混淆和加密技术。 IOC指标 SHA256 : 756feeaec24bcada5d473a53931ac665c2a159083f408d41e7fe1c8fcb0b9a6b MD5 : fa548af33ac073be63464186b33198aa SHA1 : 6a49f366a9e962fca0f33d4fbd9a7bab9b076306 SHA512 : 47378048c422c793cffb091c782739ae34fd39788820c73c49215a6e859768c9e89d0e73f7aa7284ad5f6254add180d57c95b2a8a0b72b5f60524663eac7b962 2. 分析工具准备 必备工具 dnSpy : .NET反编译和调试工具 de4dot : .NET反混淆工具 PE工具 : 如PEiD、CFF Explorer等 混淆技术 样本使用 Eazfuscator.NET 2018 进行混淆,这是功能强大的.NET混淆器和优化器。 3. 样本行为分析 3.1 初始加载流程 资源解密 : 从 MyCoffeeProject.Properties.Resources 获取 Encrypted2 资源 使用AES算法解密,密钥派生自密码"newworldorder" 解密后去除前16字节冗余数据,得到DLL文件 DLL加载 : 使用 Type.InvokeMember 方法动态加载解密后的DLL 3.2 中间层DLL分析 资源解密 : 定位 xakDaOzjgjlydnJRa 资源 两层解密: 第一层: 提取图片像素的R、G、B属性值 第二层: 前16字节为密钥,后续数据与密钥异或解密 EXE加载 : 解密后得到PE格式文件 使用 Assembly.Load 加载并获取入口点 3.3 持久化技术 文件复制 : 属性隐藏 : 权限设置 : 通过 DirectorySecurity 和 FileSystemAccessRule 设置精细权限 禁用写入、更改权限、更改所有者等敏感权限 计划任务 : 从XML资源创建计划任务 使用 schtasks.exe 导入XML: 3.4 进程镂空技术 创建挂起进程 : 内存操作 : 获取线程上下文( GetThreadContext ) 读取进程内存( ReadProcessMemory ) 卸载内存区域( NtUnmapViewOfSection ) 分配新内存( VirtualAllocEx ) PE注入 : 写入PE头( WriteProcessMemory ) 按节区写入数据 设置新上下文( SetThreadContext ) 恢复线程( ResumeThread ) 4. 加密技术详解 4.1 资源解密算法 第一层解密 : 第二层解密 : 4.2 AES解密 5. 防御检测建议 行为检测 : 监控异常的进程镂空行为 检测隐藏属性的可执行文件 监控计划任务的异常创建 特征检测 : 识别资源中的加密模式 检测已知的IOC指标 监控使用"newworldorder"等硬编码密钥的加密操作 加固建议 : 限制非特权用户的计划任务创建权限 监控和限制 schtasks.exe 的异常调用 实施文件完整性监控 6. 参考资源 Agent Tesla样本分析 - CSDN Windows进程镂空技术 - FreeBuf .NET逆向工程指南 - GitHub Windows计划任务进阶 - Payloads 本分析文档详细记录了AgentTesla样本的技术细节,包括混淆技术、加密算法、持久化方法和进程注入技术,可作为.NET恶意软件分析的参考指南。