对一例包含特殊字符的远控木马进行逆向分析
字数 1434 2025-08-07 08:22:09

远控木马逆向分析教学文档

1. 样本概述

  • 样本类型:远控木马(大灰狼家族变种)
  • 特点:
    • 使用"Mother360"作为解密密钥
    • 创建事件时使用"Cao360"作为事件名
    • 未加壳,可直接分析
    • 采用动态加载API技术
    • 使用RC4加密算法

2. 基本分析

2.1 静态分析

  • 使用PEiD确认未加壳
  • IDA Pro查看导入表:
    • 关键导入函数:
      • LoadLibraryA
      • GetProcAddress
      • WS2_32.dll中的网络相关函数(recv、gethostname等)

2.2 动态分析

  • Process Monitor监控:
    • 确认有网络连接行为
    • 可获取C2服务器地址

3. 详细分析

3.1 动态加载函数技术

  1. LoadLibraryA

    • 功能:获取模块句柄,未加载则加载模块
    • 原型:HMODULE LoadLibraryA([in] LPCSTR lpLibFileName)
  2. GetProcAddress

    • 功能:从DLL中检索导出函数/变量地址
    • 原型:FARPROC GetProcAddress([in] HMODULE hModule, [in] LPCSTR lpProcName)
  3. 实现方式:

    • 通过字符串拼接构造库名和函数名
    • 示例:
      ; 加载kernel32.dll
      push "kernel32.dll"
      call LoadLibraryA
      
      ; 获取函数地址
      push "CreateToolhelp32Snapshot"
      push eax ; LoadLibraryA返回的句柄
      call GetProcAddress
      

3.2 配置信息解密

  1. 解密过程:

    • 两次解密:
      • 第一次:地址416208,大小472字节
      • 第二次:地址416068,大小410字节
    • 解密密钥:"Mother360"
    • 解密算法:RC4
  2. 解密结果:

    • 第一段配置信息:
      [配置内容示例]
      
    • 第二段配置信息:
      [配置内容示例]
      
    • 包含:分组信息、C2服务器IP等

3.3 进程遍历技术

  1. 实现流程:

    • 获取CreateToolhelp32Snapshot函数地址
    • 调用获取进程快照:
      HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
      
    • 使用Process32FirstProcess32Next遍历进程
  2. 特殊行为:

    • 查找"rundll32.exe"进程
    • 发现后执行:
      taskkill /f /im rundll32.exe
      
    • 目的:不明(可能为对抗安全软件)

3.4 C2通信建立

  1. 事件创建:

    • 创建名为"Cao360"的事件
  2. 网络连接:

    • 创建socket套接字
    • 使用解密出的C2地址和端口
    • 调用connect连接C2服务器
  3. 信息收集:

    • 创建线程进行持续通信
    • 收集系统信息:
      • 系统版本
      • CPU频率(通过注册表查询)
      • 磁盘空间
    • 使用send发送信息
    • 使用recv接收指令
  4. 指令执行:

    • 调用VirtualAlloc分配内存
    • 将接收内容复制到新内存
    • 执行C2下发的指令(加密且压缩)

4. 远控功能分析

  • 键盘记录
  • 进程管理
  • 远程CMD
  • 服务管理
  • 其他常见远控功能

5. 通信特征

  • 加密流量但有固定格式
  • 前五个字节固定
  • 使用RC4加密算法

6. 分析工具推荐

  1. 静态分析:

    • PEiD
    • IDA Pro
  2. 动态分析:

    • Process Monitor
    • OllyDbg
    • Wireshark
  3. 辅助工具:

    • 字符串分析工具
    • 加密算法识别工具

7. 防御建议

  1. 检测点:

    • 查找"Mother360"、"Cao360"等字符串
    • 检测动态加载API行为
    • 监控异常进程终止行为(如rundll32.exe被终止)
    • 检测特定格式的网络通信
  2. 防护措施:

    • 启用行为检测
    • 监控可疑的网络连接
    • 限制未知程序的进程操作权限

8. 扩展分析方向

  1. 加密算法:

    • 深入分析RC4实现
    • 尝试破解通信内容
  2. 通信协议:

    • 分析固定格式的含义
    • 尝试模拟通信
  3. 功能模块:

    • 分析各远控功能的实现
    • 研究持久化机制

附录:关键函数原型

  1. Windows API:

    // 进程快照
    HANDLE CreateToolhelp32Snapshot(DWORD dwFlags, DWORD th32ProcessID);
    BOOL Process32First(HANDLE hSnapshot, LPPROCESSENTRY32 lppe);
    BOOL Process32Next(HANDLE hSnapshot, LPPROCESSENTRY32 lppe);
    
    // 进程操作
    UINT WinExec(LPCSTR lpCmdLine, UINT uCmdShow);
    
    // 网络通信
    int send(SOCKET s, const char *buf, int len, int flags);
    int recv(SOCKET s, char *buf, int len, int flags);
    
    // 内存操作
    LPVOID VirtualAlloc(LPVOID lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect);
    
  2. 数据结构:

    typedef struct tagPROCESSENTRY32 {
      DWORD     dwSize;
      DWORD     cntUsage;
      DWORD     th32ProcessID;
      ULONG_PTR th32DefaultHeapID;
      DWORD     th32ModuleID;
      DWORD     cntThreads;
      DWORD     th32ParentProcessID;
      LONG      pcPriClassBase;
      DWORD     dwFlags;
      CHAR      szExeFile[MAX_PATH];
    } PROCESSENTRY32;
    
远控木马逆向分析教学文档 1. 样本概述 样本类型:远控木马(大灰狼家族变种) 特点: 使用"Mother360"作为解密密钥 创建事件时使用"Cao360"作为事件名 未加壳,可直接分析 采用动态加载API技术 使用RC4加密算法 2. 基本分析 2.1 静态分析 使用PEiD确认未加壳 IDA Pro查看导入表: 关键导入函数: LoadLibraryA GetProcAddress WS2_ 32.dll中的网络相关函数(recv、gethostname等) 2.2 动态分析 Process Monitor监控: 确认有网络连接行为 可获取C2服务器地址 3. 详细分析 3.1 动态加载函数技术 LoadLibraryA : 功能:获取模块句柄,未加载则加载模块 原型: HMODULE LoadLibraryA([in] LPCSTR lpLibFileName) GetProcAddress : 功能:从DLL中检索导出函数/变量地址 原型: FARPROC GetProcAddress([in] HMODULE hModule, [in] LPCSTR lpProcName) 实现方式: 通过字符串拼接构造库名和函数名 示例: 3.2 配置信息解密 解密过程: 两次解密: 第一次:地址416208,大小472字节 第二次:地址416068,大小410字节 解密密钥:"Mother360" 解密算法:RC4 解密结果: 第一段配置信息: 第二段配置信息: 包含:分组信息、C2服务器IP等 3.3 进程遍历技术 实现流程: 获取 CreateToolhelp32Snapshot 函数地址 调用获取进程快照: 使用 Process32First 和 Process32Next 遍历进程 特殊行为: 查找"rundll32.exe"进程 发现后执行: 目的:不明(可能为对抗安全软件) 3.4 C2通信建立 事件创建: 创建名为"Cao360"的事件 网络连接: 创建socket套接字 使用解密出的C2地址和端口 调用 connect 连接C2服务器 信息收集: 创建线程进行持续通信 收集系统信息: 系统版本 CPU频率(通过注册表查询) 磁盘空间 使用 send 发送信息 使用 recv 接收指令 指令执行: 调用 VirtualAlloc 分配内存 将接收内容复制到新内存 执行C2下发的指令(加密且压缩) 4. 远控功能分析 键盘记录 进程管理 远程CMD 服务管理 其他常见远控功能 5. 通信特征 加密流量但有固定格式 前五个字节固定 使用RC4加密算法 6. 分析工具推荐 静态分析: PEiD IDA Pro 动态分析: Process Monitor OllyDbg Wireshark 辅助工具: 字符串分析工具 加密算法识别工具 7. 防御建议 检测点: 查找"Mother360"、"Cao360"等字符串 检测动态加载API行为 监控异常进程终止行为(如rundll32.exe被终止) 检测特定格式的网络通信 防护措施: 启用行为检测 监控可疑的网络连接 限制未知程序的进程操作权限 8. 扩展分析方向 加密算法: 深入分析RC4实现 尝试破解通信内容 通信协议: 分析固定格式的含义 尝试模拟通信 功能模块: 分析各远控功能的实现 研究持久化机制 附录:关键函数原型 Windows API: 数据结构: