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

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

1. DinodasRAT Linux后门概述

DinodasRAT是一种针对Linux系统的远程访问木马(RAT),主要针对中国、台湾、土耳其和乌兹别克斯坦等地区进行攻击。该后门具有多种高级功能,包括持久化、加密通信和广泛的远控能力。

2. 样本信息

分析的两个主要样本特征:

MD5 特点 通信协议
decd6b94792a22119e1b5a1ed99e8961 保留原始函数名 TCP
8138f1af1dc51cde924aa2360f12d650 去除原始函数名 UDP

3. 功能分析

3.1 持久化机制

互斥锁实现

  • 在当前目录创建隐藏文件:.(程序名)(参数).mu
  • 示例:/home/kali/Desktop/.testd.mu

自启动机制

  • 检测系统类型(Red Hat/Ubuntu)
  • 通过以下方式实现持久化:
    • /etc/rc.local
    • /etc/init.d/

守护进程

  1. 调用daemon()函数创建守护进程
  2. 使用父进程PPID作为参数重新执行自身

3.2 信息收集

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

3.3 通信特性

硬编码C2地址

  • TCP样本:103.27.109.31:443
  • UDP样本:45.95.147.221:53

通信协议支持

  • 同时支持TCP和UDP协议
  • 所有通信数据经过加密

3.4 远控功能

支持24种远控指令:

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

(完整列表见原始文档)

3.5 心跳机制

  • 定期发送包含设备唯一标识码的数据包
  • 使用加密通信保持与C2的连接

4. 通信数据分析

4.1 数据包结构

TCP通信示例

30 78 00 00 00 [加密数据...]
  • 0x30:固定起始字节
  • 0x78000000:小端序表示的载荷长度(120字节)

UDP通信特点

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

4.2 加密算法分析

采用修改版的TEA算法,源自Pidgin的libqq qq_crypt库:

加密流程

  1. 取前8字节作为初始向量
  2. 混合随机数据与载荷长度
  3. 使用TEA算法进行多轮加密
  4. 每8字节块依赖前一块的加密结果

解密流程

  1. 提取前8字节并使用密钥解密
  2. 计算后续数据的解密密钥
  3. 逐块解密并验证数据完整性

密钥特征

  • TCP样本密钥:A101A8EAC010FB120671F318ACA061AF
  • UDP样本密钥:A1A118AA10F0FA160671B308AAAF31A1

5. 解密实现

5.1 解密算法实现

使用Golang实现的解密核心函数:

func qq_decipher(input []uint32, key []uint32) (result uint32, output []uint32) {
    v7 := uint32(0xE3779B90)
    v11 := input[0]
    v12 := input[1]
    // ... 解密逻辑 ...
    return
}

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

5.2 解密步骤详解

  1. 初始解密

    • 解密前8字节获取初始向量
    • 计算填充长度:padding := 2 + output[0]&0x7
  2. 循环解密

    • 保存前一块加密数据
    • 读取新数据块
    • 与前一块解密结果异或
    • 使用TEA算法解密
    • 与加密数据异或得到明文
  3. 数据处理

    • 处理第一块的额外字节
    • 拼接所有解密数据

5.3 完整解密程序

程序结构:

main.go       - 主程序入口
common.go     - 加解密核心实现

使用示例

key, _ := hex.DecodeString("A101A8EAC010FB120671F318ACA061AF")
plain, _ := hex.DecodeString("30780000009ef890d8...")
dec_data := common.Decrypt_out(plain_uint32, len(plain_uint32)*4, key_uint32)

6. 检测与防御建议

6.1 检测指标

主机侧检测

  • 检查异常隐藏文件:.*.mu
  • 监控/etc/rc.local/etc/init.d/的修改
  • 检测异常守护进程

网络侧检测

  • 监控与已知C2的通信(103.27.109.31, 45.95.147.221)
  • 检测固定起始字节0x30的加密流量
  • 识别特定端口(443/TCP, 53/UDP)的异常通信

6.2 防御措施

  1. 定期更新系统和安全补丁
  2. 限制不必要的网络出口连接
  3. 监控系统关键目录的变更
  4. 部署能够检测TEA加密流量的IDS/IPS
  5. 对可疑进程进行行为分析

7. 总结

DinodasRAT Linux后门是一个功能完备的高级威胁,具有:

  • 多种持久化技术
  • 完善的远控功能集
  • 基于TEA算法的加密通信
  • 针对特定地区的攻击活动

通过分析其通信协议和加密算法,可以有效地检测和阻断此类威胁。提供的解密程序可用于安全分析和事件响应。

DinodasRAT Linux后门深度分析与通信解密技术 1. DinodasRAT Linux后门概述 DinodasRAT是一种针对Linux系统的远程访问木马(RAT),主要针对中国、台湾、土耳其和乌兹别克斯坦等地区进行攻击。该后门具有多种高级功能,包括持久化、加密通信和广泛的远控能力。 2. 样本信息 分析的两个主要样本特征: | MD5 | 特点 | 通信协议 | |----------------------------------|-----------------------------------|--------| | decd6b94792a22119e1b5a1ed99e8961 | 保留原始函数名 | TCP | | 8138f1af1dc51cde924aa2360f12d650 | 去除原始函数名 | UDP | 3. 功能分析 3.1 持久化机制 互斥锁实现 : 在当前目录创建隐藏文件: .(程序名)(参数).mu 示例: /home/kali/Desktop/.testd.mu 自启动机制 : 检测系统类型(Red Hat/Ubuntu) 通过以下方式实现持久化: /etc/rc.local /etc/init.d/ 守护进程 : 调用 daemon() 函数创建守护进程 使用父进程PPID作为参数重新执行自身 3.2 信息收集 收集主机硬件信息 结合当前时间生成唯一设备标识码 标识码用于后续心跳通信 3.3 通信特性 硬编码C2地址 : TCP样本: 103.27.109.31:443 UDP样本: 45.95.147.221:53 通信协议支持 : 同时支持TCP和UDP协议 所有通信数据经过加密 3.4 远控功能 支持24种远控指令: | 功能函数 | 描述 | |--------------------|------------------------| | DirClass | 列目录 | | DelDir | 删除目录 | | UpLoadFile | 上传文件 | | DownLoadFile | 下载文件 | | DealChgIp | 修改C2地址 | | EnumProcess | 枚举进程 | | StopProcess | 终止进程 | | EnumService | 枚举服务 | | ControlService | 控制服务 | | DealExShell | 执行shell命令 | | DealProxy | 执行指定文件 | | StartShell | 开启交互式shell | | DealFile | 更新后门版本 | | UninstallMm | 卸载自身 | (完整列表见原始文档) 3.5 心跳机制 定期发送包含设备唯一标识码的数据包 使用加密通信保持与C2的连接 4. 通信数据分析 4.1 数据包结构 TCP通信示例 : 0x30:固定起始字节 0x78000000:小端序表示的载荷长度(120字节) UDP通信特点 : 在加密数据外额外封装一层结构 可从UDP载荷中直接提取加密数据 4.2 加密算法分析 采用修改版的TEA算法,源自Pidgin的libqq qq_ crypt库: 加密流程 : 取前8字节作为初始向量 混合随机数据与载荷长度 使用TEA算法进行多轮加密 每8字节块依赖前一块的加密结果 解密流程 : 提取前8字节并使用密钥解密 计算后续数据的解密密钥 逐块解密并验证数据完整性 密钥特征 : TCP样本密钥: A101A8EAC010FB120671F318ACA061AF UDP样本密钥: A1A118AA10F0FA160671B308AAAF31A1 5. 解密实现 5.1 解密算法实现 使用Golang实现的解密核心函数: 5.2 解密步骤详解 初始解密 : 解密前8字节获取初始向量 计算填充长度: padding := 2 + output[0]&0x7 循环解密 : 保存前一块加密数据 读取新数据块 与前一块解密结果异或 使用TEA算法解密 与加密数据异或得到明文 数据处理 : 处理第一块的额外字节 拼接所有解密数据 5.3 完整解密程序 程序结构: 使用示例 : 6. 检测与防御建议 6.1 检测指标 主机侧检测 : 检查异常隐藏文件: .*.mu 监控 /etc/rc.local 和 /etc/init.d/ 的修改 检测异常守护进程 网络侧检测 : 监控与已知C2的通信(103.27.109.31, 45.95.147.221) 检测固定起始字节0x30的加密流量 识别特定端口(443/TCP, 53/UDP)的异常通信 6.2 防御措施 定期更新系统和安全补丁 限制不必要的网络出口连接 监控系统关键目录的变更 部署能够检测TEA加密流量的IDS/IPS 对可疑进程进行行为分析 7. 总结 DinodasRAT Linux后门是一个功能完备的高级威胁,具有: 多种持久化技术 完善的远控功能集 基于TEA算法的加密通信 针对特定地区的攻击活动 通过分析其通信协议和加密算法,可以有效地检测和阻断此类威胁。提供的解密程序可用于安全分析和事件响应。