记一次特洛伊木马实战分析
字数 3252 2025-08-05 19:10:02

特洛伊木马实战分析教学文档

1. 样本概述

这是一个DDOS木马样本,具有多种功能模块,包括:

  • 持久化机制(自启动项)
  • 反调试技术
  • 多模块执行路径
  • 后门安装
  • 系统信息收集
  • DDOS攻击能力

2. 样本文件组成

原始样本包含:

  • 一个名为"beijing"的程序(实际是某逆向题目)
  • 主要恶意程序"soft"
  • 一个文件夹(推测包含攻击模块)

3. 字符串分析

初步字符串分析发现:

  • "attack"相关字符串
  • HTTP协议相关字符串
  • 大量IP地址列表

4. 主程序分析

4.1 初始执行流程

v3 = alloca(16);
CSysTool::CloseAllFileDescs();  // 关闭所有文件描述符
CSysTool::Ower6msf();           // 第一组数据解密

// 获取模块完整路径并检查文件大小
std::string::string((std::string *)&v11);
CUtility::GetModuleFullPath((CUtility *)&v11, v8);
v4 = (CFileOp *)std::string::c_str((std::string *)&v11);
if ( CFileOp::GetTgtFileSize(v4, v5) != g_iFileSize )
    MEMORY[0] = 0;

// 反调试检查
CUtility::GetParentPath((CUtility *)&v10);
v6 = std::string::c_str((std::string *)&v10);
if ( strstr(v6, "gdb") != 0 )  // 检测是否在gdb调试环境下运行
    MEMORY[0] = 0;

4.2 关键字符串解密

程序通过多个解密函数初始化关键字符串:

HGrd9((int)&v12);
std::string::operator=(&g_strSN, &v12);  // g_strSN = "DbSecuritySpt"

Mndyuf((int)&v13);
std::string::operator=(&g_strBDSN, &v13); // g_strBDSN = "selinux"

BGtd98();
std::string::operator=(&g_strBDG, &v14); // g_strBDG = "getty"

Osdku6();
std::string::operator=(&g_strML, &v15);  // g_strML = "/tmp/moni.lod"

wer54();
std::string::operator=(&g_strGL, &v16);  // g_strGL = "/tmp/gates.lod"

4.3 执行路径选择

程序根据g_iGatesType值选择不同执行路径:

CSysTool::CheckGatesType();  // 检查GatesType
CSysTool::Ikdfu94();        // 第二组数据解密

if ((unsigned __int8)CSysTool::IsUpdateTemporary()) {
    CSysTool::DoUpdate((CSysTool *)argc, (int)argv, v9);
} else if (g_iGatesType == 1) {
    MainBeikong();
} else if (g_iGatesType > 1) {
    if (g_iGatesType == 2) {
        MainBackdoor();
    } else if (g_iGatesType == 3) {
        MainSystool(argc, (char **)argv);
    }
} else if (!g_iGatesType) {
    MainMonitor();
}

5. GatesType判定机制

CheckGatesType()函数通过比较当前程序所在目录确定g_iGatesType值:

GatesType值 对应路径
0 /usr/bin/.sshd
1 其他路径
2 /usr/bin/bsd-port/getty
3 系统工具路径(见下表)

系统工具路径包括:

  • /bin/netstat
  • /bin/lsof
  • /bin/ps
  • /bin/ss
  • /usr/bin/netstat
  • /usr/bin/lsof
  • /usr/bin/ps
  • /usr/bin/ss
  • /usr/sbin/netstat
  • /usr/sbin/lsof
  • /usr/sbin/ps
  • /usr/sbin/ss

6. 各功能模块分析

6.1 MainMonitor (GatesType == 0)

功能:

  1. 创建子进程
  2. /tmp/moni.lod写入进程ID
  3. 读取并删除/tmp/notify.file
  4. 线程循环挂起(每分钟一次)

6.2 MainBeikong (GatesType == 1)

功能:

  1. 结束并删除/tmp/moni.lod记录的进程

  2. 创建持久化机制:

    • 创建自启动项/etc/init.d/DbSecuritySpt,内容为:
      #!/bin/bash
      (filepath)  # 当前程序路径
      
    • 创建自启动链接/etc/rc(1-5).d/S97DbSecuritySpt
    • 执行ln -s /etc/init.d/DbSecuritySpt (filepath)
  3. 后门安装(当g_iDoBackdoor为true且当前进程为root时):

    • 结束/usr/bin/bsd-port/getty.lock进程
    • 结束/usr/bin/bsd-port/udevd.lock进程
    • 删除/usr/bin/bsd-port/udevd.lock文件
    • 拷贝当前进程到/usr/bin/bsd-port/getty
  4. 其他操作:

    • 如果是root执行,拷贝进程到/usr/bin/.sshd
    • 非root执行则删除/tmp/notify.file
    • 执行MainProcess函数

6.3 MainProcess函数

功能:

  1. 删除进程路径下的update_temporary
  2. 修改DNS配置(在/etc/resolv.conf添加8.8.8.8和8.8.4.4)
  3. 初始化配置文件:
    • conf.n
    • cmd.n
  4. 收集系统信息:
    • CPU信息
    • 操作系统信息
    • 网络信息
    • 内存信息
    • 磁盘信息
  5. 初始化330个DNS地址
  6. 读取/usr/lib/libamplify.so配置amp资源数据
  7. 根据收集的信息执行对应的DDOS攻击

6.4 MainBackdoor (GatesType == 2)

功能:

  1. 检查/usr/bin/bsd-port/getty.lock后门文件
    • 存在则写入进程ID
  2. 创建持久化机制:
    • 创建/etc/init.d/selinux
    • 创建/etc/rc(1-5).d/S99selinux
  3. 检查系统工具路径:
    • 如果存在,则复制到/usr/bin/dpkgd/md目录下
    • 生成netstatlsof等文件
    • 设置0755权限
  4. 执行MainProcess函数

6.5 MainSystool (GatesType == 3)

功能:

  1. 调用被复制的系统工具:
    • netstat
    • lsof
    • ps
  2. 过滤掉进程目录信息
  3. 向服务端输出结果

7. 持久化技术分析

该木马使用了多种持久化技术:

7.1 自启动项

  1. DbSecuritySpt版本:

    • 主文件:/etc/init.d/DbSecuritySpt
    • 启动链接:/etc/rc(1-5).d/S97DbSecuritySpt
  2. selinux版本:

    • 主文件:/etc/init.d/selinux
    • 启动链接:/etc/rc(1-5).d/S99selinux

7.2 后门文件

  1. /usr/bin/.sshd
  2. /usr/bin/bsd-port/getty
  3. /usr/bin/bsd-port/getty.lock
  4. /usr/bin/bsd-port/udevd.lock

7.3 临时文件

  1. /tmp/moni.lod - 存储监控进程ID
  2. /tmp/gates.lod - 功能未知
  3. /tmp/notify.file - 用于进程间通信

8. 反分析技术

  1. 反调试

    • 检查父进程路径是否包含"gdb"
    • 如果检测到调试器,执行MEMORY[0] = 0导致崩溃
  2. 多阶段解密

    • 第一组解密:CSysTool::Ower6msf()
    • 第二组解密:CSysTool::Ikdfu94()
  3. 路径依赖执行

    • 根据自身所在路径决定执行逻辑

9. 攻击流程总结

  1. 初始感染

    • 通过某种方式将木马植入目标系统
    • 初始执行路径通常为非系统路径(GatesType=1)
  2. 持久化安装

    • 创建自启动项
    • 安装后门到系统目录
    • 可能替换系统工具
  3. 信息收集

    • 收集系统硬件和网络信息
    • 初始化DNS配置
  4. 攻击执行

    • 根据C&C服务器指令执行DDOS攻击
    • 隐藏自身网络活动
  5. 自我更新

    • 通过IsUpdateTemporary检查更新
    • 使用DoUpdate函数执行更新

10. 检测与清除建议

10.1 检测指标

  1. 文件系统

    • 检查是否存在以下文件:
      • /etc/init.d/DbSecuritySpt
      • /etc/init.d/selinux
      • /usr/bin/.sshd
      • /usr/bin/bsd-port/getty
      • /usr/bin/bsd-port/getty.lock
      • /usr/bin/bsd-port/udevd.lock
      • /tmp/moni.lod
      • /tmp/gates.lod
      • /usr/bin/dpkgd/md目录下的工具
  2. 进程

    • 检查异常进程名
    • 监控/tmp/moni.lod中记录的进程
  3. 网络

    • 监控与大量IP地址的连接
    • 检查DNS配置是否被修改

10.2 清除步骤

  1. 终止相关进程
  2. 删除所有恶意文件和启动项
  3. 恢复被替换的系统工具
  4. 检查并清理DNS配置
  5. 检查定时任务和其他持久化机制
  6. 审计系统日志查找入侵痕迹

11. 技术亮点

  1. 模块化设计

    • 根据执行环境自动切换功能
  2. 隐蔽性

    • 伪装成系统进程(sshd、getty等)
    • 替换系统工具隐藏自身
  3. 持久化多样性

    • 多种自启动机制
    • 多位置后门安装
  4. 信息收集全面

    • 收集系统各方面信息用于定制攻击
  5. 抗分析能力

    • 反调试技术
    • 多阶段解密
    • 路径依赖执行

12. 防御建议

  1. 文件完整性监控

    • 监控系统关键目录和文件的变更
  2. 权限控制

    • 限制对系统目录的写入权限
    • 使用最小权限原则
  3. 进程监控

    • 监控异常进程行为
    • 建立进程白名单
  4. 网络监控

    • 监控异常外连
    • DNS请求监控
  5. 安全加固

    • 定期更新系统
    • 使用安全工具进行扫描
    • 实施适当的沙箱和隔离措施
特洛伊木马实战分析教学文档 1. 样本概述 这是一个DDOS木马样本,具有多种功能模块,包括: 持久化机制(自启动项) 反调试技术 多模块执行路径 后门安装 系统信息收集 DDOS攻击能力 2. 样本文件组成 原始样本包含: 一个名为"beijing"的程序(实际是某逆向题目) 主要恶意程序"soft" 一个文件夹(推测包含攻击模块) 3. 字符串分析 初步字符串分析发现: "attack"相关字符串 HTTP协议相关字符串 大量IP地址列表 4. 主程序分析 4.1 初始执行流程 4.2 关键字符串解密 程序通过多个解密函数初始化关键字符串: 4.3 执行路径选择 程序根据 g_iGatesType 值选择不同执行路径: 5. GatesType判定机制 CheckGatesType() 函数通过比较当前程序所在目录确定 g_iGatesType 值: | GatesType值 | 对应路径 | |------------|---------| | 0 | /usr/bin/.sshd | | 1 | 其他路径 | | 2 | /usr/bin/bsd-port/getty | | 3 | 系统工具路径(见下表) | 系统工具路径包括: /bin/netstat /bin/lsof /bin/ps /bin/ss /usr/bin/netstat /usr/bin/lsof /usr/bin/ps /usr/bin/ss /usr/sbin/netstat /usr/sbin/lsof /usr/sbin/ps /usr/sbin/ss 6. 各功能模块分析 6.1 MainMonitor (GatesType == 0) 功能: 创建子进程 向 /tmp/moni.lod 写入进程ID 读取并删除 /tmp/notify.file 线程循环挂起(每分钟一次) 6.2 MainBeikong (GatesType == 1) 功能: 结束并删除 /tmp/moni.lod 记录的进程 创建持久化机制: 创建自启动项 /etc/init.d/DbSecuritySpt ,内容为: 创建自启动链接 /etc/rc(1-5).d/S97DbSecuritySpt 执行 ln -s /etc/init.d/DbSecuritySpt (filepath) 后门安装(当 g_iDoBackdoor 为true且当前进程为root时): 结束 /usr/bin/bsd-port/getty.lock 进程 结束 /usr/bin/bsd-port/udevd.lock 进程 删除 /usr/bin/bsd-port/udevd.lock 文件 拷贝当前进程到 /usr/bin/bsd-port/getty 其他操作: 如果是root执行,拷贝进程到 /usr/bin/.sshd 非root执行则删除 /tmp/notify.file 执行 MainProcess 函数 6.3 MainProcess函数 功能: 删除进程路径下的 update_temporary 修改DNS配置(在 /etc/resolv.conf 添加8.8.8.8和8.8.4.4) 初始化配置文件: conf.n cmd.n 收集系统信息: CPU信息 操作系统信息 网络信息 内存信息 磁盘信息 初始化330个DNS地址 读取 /usr/lib/libamplify.so 配置amp资源数据 根据收集的信息执行对应的DDOS攻击 6.4 MainBackdoor (GatesType == 2) 功能: 检查 /usr/bin/bsd-port/getty.lock 后门文件 存在则写入进程ID 创建持久化机制: 创建 /etc/init.d/selinux 创建 /etc/rc(1-5).d/S99selinux 检查系统工具路径: 如果存在,则复制到 /usr/bin/dpkgd/md 目录下 生成 netstat 、 lsof 等文件 设置0755权限 执行 MainProcess 函数 6.5 MainSystool (GatesType == 3) 功能: 调用被复制的系统工具: netstat lsof ps 等 过滤掉进程目录信息 向服务端输出结果 7. 持久化技术分析 该木马使用了多种持久化技术: 7.1 自启动项 DbSecuritySpt 版本: 主文件: /etc/init.d/DbSecuritySpt 启动链接: /etc/rc(1-5).d/S97DbSecuritySpt selinux 版本: 主文件: /etc/init.d/selinux 启动链接: /etc/rc(1-5).d/S99selinux 7.2 后门文件 /usr/bin/.sshd /usr/bin/bsd-port/getty /usr/bin/bsd-port/getty.lock /usr/bin/bsd-port/udevd.lock 7.3 临时文件 /tmp/moni.lod - 存储监控进程ID /tmp/gates.lod - 功能未知 /tmp/notify.file - 用于进程间通信 8. 反分析技术 反调试 : 检查父进程路径是否包含"gdb" 如果检测到调试器,执行 MEMORY[0] = 0 导致崩溃 多阶段解密 : 第一组解密: CSysTool::Ower6msf() 第二组解密: CSysTool::Ikdfu94() 路径依赖执行 : 根据自身所在路径决定执行逻辑 9. 攻击流程总结 初始感染 : 通过某种方式将木马植入目标系统 初始执行路径通常为非系统路径(GatesType=1) 持久化安装 : 创建自启动项 安装后门到系统目录 可能替换系统工具 信息收集 : 收集系统硬件和网络信息 初始化DNS配置 攻击执行 : 根据C&C服务器指令执行DDOS攻击 隐藏自身网络活动 自我更新 : 通过 IsUpdateTemporary 检查更新 使用 DoUpdate 函数执行更新 10. 检测与清除建议 10.1 检测指标 文件系统 : 检查是否存在以下文件: /etc/init.d/DbSecuritySpt /etc/init.d/selinux /usr/bin/.sshd /usr/bin/bsd-port/getty /usr/bin/bsd-port/getty.lock /usr/bin/bsd-port/udevd.lock /tmp/moni.lod /tmp/gates.lod /usr/bin/dpkgd/md 目录下的工具 进程 : 检查异常进程名 监控 /tmp/moni.lod 中记录的进程 网络 : 监控与大量IP地址的连接 检查DNS配置是否被修改 10.2 清除步骤 终止相关进程 删除所有恶意文件和启动项 恢复被替换的系统工具 检查并清理DNS配置 检查定时任务和其他持久化机制 审计系统日志查找入侵痕迹 11. 技术亮点 模块化设计 : 根据执行环境自动切换功能 隐蔽性 : 伪装成系统进程(sshd、getty等) 替换系统工具隐藏自身 持久化多样性 : 多种自启动机制 多位置后门安装 信息收集全面 : 收集系统各方面信息用于定制攻击 抗分析能力 : 反调试技术 多阶段解密 路径依赖执行 12. 防御建议 文件完整性监控 : 监控系统关键目录和文件的变更 权限控制 : 限制对系统目录的写入权限 使用最小权限原则 进程监控 : 监控异常进程行为 建立进程白名单 网络监控 : 监控异常外连 DNS请求监控 安全加固 : 定期更新系统 使用安全工具进行扫描 实施适当的沙箱和隔离措施