以中国为目标的DinodasRAT Linux后门剖析及通信解密尝试
字数 2353 2025-08-05 08:20:09

DinodasRAT Linux后门深度分析与通信解密技术

概述

DinodasRAT是一种针对Linux系统的远程访问木马(RAT),主要攻击目标为中国、台湾、土耳其和乌兹别克斯坦等地区。该后门具有多种远控功能,采用加密通信机制,能够持久化驻留受害主机。本文将全面剖析其技术细节,包括功能分析、通信机制及解密方法。

样本信息

分析使用的两个主要样本:

MD5 特点
decd6b94792a22119e1b5a1ed99e8961 保留原始函数名,使用TCP协议通信
8138f1af1dc51cde924aa2360f12d650 无原始函数名,使用UDP协议通信

功能分析

1. 互斥机制

  • 创建隐藏文件作为互斥锁:(当前程序运行目录)/.(当前程序名)(当前程序运行的传递参数).mu
  • 示例:/home/kali/Desktop/.testd.mu

2. 持久化机制

  • 根据系统类型实现自启动:
    • Red Hat系统:附加到/etc/rc.local
    • Ubuntu系统:附加到/etc/init.d/

3. 进程隐藏

  • 调用daemon()函数创建守护进程
  • 使用父进程PPID作为参数重新运行后门程序

4. 信息收集

  • 收集主机硬件信息
  • 结合当前时间生成唯一设备标识码
  • 用于后续心跳通信

5. C2通信配置

  • 硬编码C2服务器地址:
    • TCP样本:45.95.147.221:443
    • UDP样本:45.95.147.221:53

6. 通信协议

  • 支持TCP和UDP两种通信方式
  • 所有通信数据均加密

7. 远控功能

支持24种远控指令:

功能函数 描述
DirClass 列目录
DelDir 删除目录
UpLoadFile 上传文件
DownLoadFile 下载文件
DealChgIp 修改C&C地址
EnumProcess 枚举进程列表
StopProcess 终止进程
EnumService 枚举服务
ControlService 控制服务
DealExShell 执行shell命令
DealProxy 执行指定文件
StartShell 开启交互式shell
DealFile 下载并更新后门版本
UninstallMm 卸载自身

8. 心跳机制

  • 定期发送包含设备唯一标识码的数据包
  • 用于维持与C2服务器的连接

通信数据分析

TCP通信数据包特征

  • 固定起始字节:0x30
  • 后续4字节为载荷长度(小端序)
  • 示例数据包:
    30 78000000 9ef890d85707490248f9991ff1b21feb...
    

UDP通信数据包特征

  • 在加密数据外额外封装一层结构
  • 可从UDP载荷中直接提取加密数据

通信解密技术

加密算法

  • 基于Pidgin的libqq qq_crypt库
  • 使用TEA算法的变种
  • 两个样本使用不同密钥:
    • TCP样本:A101A8EAC010FB120671F318ACA061AF
    • UDP样本:A1A118AA10F0FA160671B308AAAF31A1

加密流程

  1. 取前8字节作为初始向量
  2. 存放实际载荷长度及随机填充
  3. 循环加密过程:
    • plain32 = crypted32 ^ p32_prev
    • 调用qq_encipher加密
    • crypted32 = crypted32 ^ p32_prev
    • 更新向量值

解密流程

  1. 取前8字节作为初始向量
  2. 调用qq_decipher解密获得第一段数据
  3. 循环解密后续数据:
    • 取下一8字节
    • 与前一段解密结果异或
    • 调用qq_decipher解密
    • 与前一加密块异或获得明文

解密实现代码

// qq_decipher 解密函数核心
func qq_decipher(input []uint32, key []uint32) (result uint32, output []uint32) {
    v7 := uint32(0xE3779B90)
    v11 := input[0]
    v12 := input[1]
    // ... 解密算法实现 ...
    return
}

// Decrypt_out 完整解密流程
func Decrypt_out(enc_data []uint32, enc_data_len int, key []uint32) (output []byte) {
    // 初始化变量
    crypted32 := []uint32{0x00, 0x00}
    c32_prev := []uint32{0x00, 0x00}
    // ... 完整解密实现 ...
    return
}

检测与防御建议

检测指标

  1. 文件特征:

    • 隐藏的互斥文件:.*.mu
    • 自启动位置修改
  2. 网络特征:

    • 特定IP的TCP 443或UDP 53连接
    • 固定起始字节0x30的加密流量
  3. 进程特征:

    • 异常守护进程
    • 进程自我复制行为

防御措施

  1. 监控系统关键目录的修改
  2. 检查异常网络连接
  3. 使用YARA规则检测样本特征
  4. 部署能够解密DinodasRAT流量的IDS/IPS

总结

DinodasRAT Linux后门是一个功能全面的远控工具,具有隐蔽性强、功能完善的特点。通过分析其加密机制并实现解密工具,可以有效检测和防御此类威胁。安全团队应关注其通信特征,建立相应的检测规则。

DinodasRAT Linux后门深度分析与通信解密技术 概述 DinodasRAT是一种针对Linux系统的远程访问木马(RAT),主要攻击目标为中国、台湾、土耳其和乌兹别克斯坦等地区。该后门具有多种远控功能,采用加密通信机制,能够持久化驻留受害主机。本文将全面剖析其技术细节,包括功能分析、通信机制及解密方法。 样本信息 分析使用的两个主要样本: | MD5 | 特点 | |----------------------------------|-------------------------------------| | decd6b94792a22119e1b5a1ed99e8961 | 保留原始函数名,使用TCP协议通信 | | 8138f1af1dc51cde924aa2360f12d650 | 无原始函数名,使用UDP协议通信 | 功能分析 1. 互斥机制 创建隐藏文件作为互斥锁: (当前程序运行目录)/.(当前程序名)(当前程序运行的传递参数).mu 示例: /home/kali/Desktop/.testd.mu 2. 持久化机制 根据系统类型实现自启动: Red Hat系统:附加到 /etc/rc.local Ubuntu系统:附加到 /etc/init.d/ 3. 进程隐藏 调用 daemon() 函数创建守护进程 使用父进程PPID作为参数重新运行后门程序 4. 信息收集 收集主机硬件信息 结合当前时间生成唯一设备标识码 用于后续心跳通信 5. C2通信配置 硬编码C2服务器地址: TCP样本: 45.95.147.221:443 UDP样本: 45.95.147.221:53 6. 通信协议 支持TCP和UDP两种通信方式 所有通信数据均加密 7. 远控功能 支持24种远控指令: | 功能函数 | 描述 | |-------------------|--------------------------| | DirClass | 列目录 | | DelDir | 删除目录 | | UpLoadFile | 上传文件 | | DownLoadFile | 下载文件 | | DealChgIp | 修改C&C地址 | | EnumProcess | 枚举进程列表 | | StopProcess | 终止进程 | | EnumService | 枚举服务 | | ControlService | 控制服务 | | DealExShell | 执行shell命令 | | DealProxy | 执行指定文件 | | StartShell | 开启交互式shell | | DealFile | 下载并更新后门版本 | | UninstallMm | 卸载自身 | 8. 心跳机制 定期发送包含设备唯一标识码的数据包 用于维持与C2服务器的连接 通信数据分析 TCP通信数据包特征 固定起始字节:0x30 后续4字节为载荷长度(小端序) 示例数据包: UDP通信数据包特征 在加密数据外额外封装一层结构 可从UDP载荷中直接提取加密数据 通信解密技术 加密算法 基于Pidgin的libqq qq_ crypt库 使用TEA算法的变种 两个样本使用不同密钥: TCP样本: A101A8EAC010FB120671F318ACA061AF UDP样本: A1A118AA10F0FA160671B308AAAF31A1 加密流程 取前8字节作为初始向量 存放实际载荷长度及随机填充 循环加密过程: plain32 = crypted32 ^ p32_prev 调用 qq_encipher 加密 crypted32 = crypted32 ^ p32_prev 更新向量值 解密流程 取前8字节作为初始向量 调用 qq_decipher 解密获得第一段数据 循环解密后续数据: 取下一8字节 与前一段解密结果异或 调用 qq_decipher 解密 与前一加密块异或获得明文 解密实现代码 检测与防御建议 检测指标 文件特征: 隐藏的互斥文件: .*.mu 自启动位置修改 网络特征: 特定IP的TCP 443或UDP 53连接 固定起始字节0x30的加密流量 进程特征: 异常守护进程 进程自我复制行为 防御措施 监控系统关键目录的修改 检查异常网络连接 使用YARA规则检测样本特征 部署能够解密DinodasRAT流量的IDS/IPS 总结 DinodasRAT Linux后门是一个功能全面的远控工具,具有隐蔽性强、功能完善的特点。通过分析其加密机制并实现解密工具,可以有效检测和防御此类威胁。安全团队应关注其通信特征,建立相应的检测规则。