远程访问木马Cybergate RAT的样本分析
字数 1753 2025-08-20 18:18:40

Cybergate RAT 样本分析技术文档

1. 样本基础信息

1.1 样本标识

1.2 静态分析特征

  • 文件类型: 32位PE文件
  • 编译器: Delphi编写
  • 加壳情况: 使用UPX加壳(未魔改,可直接脱壳)
  • 节区特征: .rsrc节被加壳混淆,具有高熵值区域

2. 初始样本分析

2.1 脱壳处理

  • 使用UPX -d命令可直接脱壳
  • 脱壳后文件会覆盖原文件

2.2 关键函数分析

2.2.1 互斥锁创建

CreateMutexA("_x_X_UPDATE_X_x_")
CreateMutexA("_x_X_PASSWORDLIST_X_x_")
  • 检查互斥锁是否存在(GetLastError与0xB7比较)
  • 如果存在则关闭句柄并休眠12秒
  • 不存在则直接关闭句柄

2.2.2 文件创建

CreateFileA("XX--XX--XX.txt")
  • 创建并写入数据到临时文件
  • 与沙箱观察到的释放文件行为一致

2.2.3 进程注入技术

  1. 查找Shell_TrayWnd窗口获取进程ID
  2. 未找到则创建explorer.exe进程
  3. 关键注入流程:
    • VirtualAlloc分配内存
    • WriteProcessMemory写入恶意代码
    • CreateRemoteThread创建远程线程执行

3. 第二阶段样本分析

3.1 样本1:DLL文件

3.1.1 防火墙绕过技术

注册表路径: SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List
  • 添加"Windows Firewall Update"到授权应用列表
  • 设置":*:Enabled:"允许所有端口和协议通过

3.1.2 HTTP代理功能

  • 初始化TIdTCPServer对象建立TCP服务器
  • 实现远程控制通信能力

3.1.3 凭证窃取功能

Chrome密码窃取:

  1. 定位Chrome数据路径:
    %Local AppData%\Google\Chrome\User Data\Default\Web Data
    
  2. 操作SQLite数据库"\x0FTSQLiteDatabase"
  3. 解密流程:
    • 检索password_value, username_value, origin_url
    • 使用CryptUnprotectData解密数据

Firefox密码窃取:

  • 通过"Mozilla3_5Password"函数获取凭证
  • 同样使用加密API进行解密

3.2 样本2

  • 与初始样本功能相似

3.3 样本3:持久化DLL

3.3.1 持久化技术

注册表路径:
- Software\Microsoft\Windows\CurrentVersion\Run
- Policies\Explorer\Run
  • 实现用户登录时自启动
  • 通过系统策略强制启动

3.3.2 进程注入增强

  1. 获取SeDebugPrivilege权限
  2. 调整任意进程内存的能力
  3. 版本检测逻辑:
    • 检查dwMinorVersion判断Windows版本
    • 支持Windows NT 3.1/XP/7/Server 2008 R2

4. 网络行为特征

  • 建立大量网络连接
  • TCP服务器监听
  • 使用HTTP代理进行通信
  • 远程控制指令传输

5. 检测与防御建议

5.1 检测指标

  • 互斥锁名称特征:
    • "x_X_UPDATE_X_x"
    • "x_X_PASSWORDLIST_X_x"
  • 文件特征:
    • XX--XX--XX.txt模式
    • 临时目录中的异常文件创建
  • 注册表修改:
    • 防火墙授权应用列表异常条目
    • 自启动项异常修改

5.2 防御措施

  1. 监控关键API调用:
    • VirtualAlloc + WriteProcessMemory + CreateRemoteThread组合
    • CryptUnprotectData异常调用
  2. 限制调试权限分配
  3. 监控浏览器凭证访问行为
  4. 网络层检测异常TCP连接

6. 分析技巧总结

  1. Delphi程序分析

    • 禁用IDA的自动分析
    • 关注VCL库函数调用模式
  2. 内存提取技巧

    • 在VirtualAlloc设置断点
    • 使用硬件断点跟踪内存写入
    • 注意多次分配内存的情况
  3. 行为分析组合

    • 静态分析 + 沙箱动态分析
    • 注册表操作与网络行为关联分析
  4. 对抗反分析

    • 处理反调试call
    • 绕过互斥锁检查
    • 修复dump文件的PE结构
Cybergate RAT 样本分析技术文档 1. 样本基础信息 1.1 样本标识 SHA1 : 83ebbf632e25dbe69b060d190a42a5125ffe3902 MD5 : 0ee2f7d6a851faf44bf235186be91a19 SHA256 : b64c40843b011d715c431b761680e8565383ac702f5ed80492fb30bd6aa33929 Unpacme分析链接 : https://www.unpac.me/results/7ec3268f-b1ed-49af-a8ff-218513c127db/ 1.2 静态分析特征 文件类型 : 32位PE文件 编译器 : Delphi编写 加壳情况 : 使用UPX加壳(未魔改,可直接脱壳) 节区特征 : .rsrc节被加壳混淆,具有高熵值区域 2. 初始样本分析 2.1 脱壳处理 使用UPX -d命令可直接脱壳 脱壳后文件会覆盖原文件 2.2 关键函数分析 2.2.1 互斥锁创建 检查互斥锁是否存在(GetLastError与0xB7比较) 如果存在则关闭句柄并休眠12秒 不存在则直接关闭句柄 2.2.2 文件创建 创建并写入数据到临时文件 与沙箱观察到的释放文件行为一致 2.2.3 进程注入技术 查找Shell_ TrayWnd窗口获取进程ID 未找到则创建explorer.exe进程 关键注入流程: VirtualAlloc 分配内存 WriteProcessMemory 写入恶意代码 CreateRemoteThread 创建远程线程执行 3. 第二阶段样本分析 3.1 样本1:DLL文件 3.1.1 防火墙绕过技术 添加"Windows Firewall Update"到授权应用列表 设置":* :Enabled:"允许所有端口和协议通过 3.1.2 HTTP代理功能 初始化 TIdTCPServer 对象建立TCP服务器 实现远程控制通信能力 3.1.3 凭证窃取功能 Chrome密码窃取 : 定位Chrome数据路径: 操作SQLite数据库"\x0FTSQLiteDatabase" 解密流程: 检索password_ value, username_ value, origin_ url 使用 CryptUnprotectData 解密数据 Firefox密码窃取 : 通过"Mozilla3_ 5Password"函数获取凭证 同样使用加密API进行解密 3.2 样本2 与初始样本功能相似 3.3 样本3:持久化DLL 3.3.1 持久化技术 实现用户登录时自启动 通过系统策略强制启动 3.3.2 进程注入增强 获取 SeDebugPrivilege 权限 调整任意进程内存的能力 版本检测逻辑: 检查 dwMinorVersion 判断Windows版本 支持Windows NT 3.1/XP/7/Server 2008 R2 4. 网络行为特征 建立大量网络连接 TCP服务器监听 使用HTTP代理进行通信 远程控制指令传输 5. 检测与防御建议 5.1 检测指标 互斥锁名称特征: " x_ X_ UPDATE_ X_ x " " x_ X_ PASSWORDLIST_ X_ x " 文件特征: XX--XX--XX.txt模式 临时目录中的异常文件创建 注册表修改: 防火墙授权应用列表异常条目 自启动项异常修改 5.2 防御措施 监控关键API调用: VirtualAlloc + WriteProcessMemory + CreateRemoteThread组合 CryptUnprotectData异常调用 限制调试权限分配 监控浏览器凭证访问行为 网络层检测异常TCP连接 6. 分析技巧总结 Delphi程序分析 : 禁用IDA的自动分析 关注VCL库函数调用模式 内存提取技巧 : 在VirtualAlloc设置断点 使用硬件断点跟踪内存写入 注意多次分配内存的情况 行为分析组合 : 静态分析 + 沙箱动态分析 注册表操作与网络行为关联分析 对抗反分析 : 处理反调试call 绕过互斥锁检查 修复dump文件的PE结构