以中国为目标的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/
- Red Hat系统:附加到
3. 进程隐藏
- 调用
daemon()函数创建守护进程 - 使用父进程PPID作为参数重新运行后门程序
4. 信息收集
- 收集主机硬件信息
- 结合当前时间生成唯一设备标识码
- 用于后续心跳通信
5. C2通信配置
- 硬编码C2服务器地址:
- TCP样本:
45.95.147.221:443 - UDP样本:
45.95.147.221:53
- TCP样本:
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
- TCP样本:
加密流程
- 取前8字节作为初始向量
- 存放实际载荷长度及随机填充
- 循环加密过程:
plain32 = crypted32 ^ p32_prev- 调用
qq_encipher加密 crypted32 = crypted32 ^ p32_prev- 更新向量值
解密流程
- 取前8字节作为初始向量
- 调用
qq_decipher解密获得第一段数据 - 循环解密后续数据:
- 取下一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
}
检测与防御建议
检测指标
-
文件特征:
- 隐藏的互斥文件:
.*.mu - 自启动位置修改
- 隐藏的互斥文件:
-
网络特征:
- 特定IP的TCP 443或UDP 53连接
- 固定起始字节0x30的加密流量
-
进程特征:
- 异常守护进程
- 进程自我复制行为
防御措施
- 监控系统关键目录的修改
- 检查异常网络连接
- 使用YARA规则检测样本特征
- 部署能够解密DinodasRAT流量的IDS/IPS
总结
DinodasRAT Linux后门是一个功能全面的远控工具,具有隐蔽性强、功能完善的特点。通过分析其加密机制并实现解密工具,可以有效检测和防御此类威胁。安全团队应关注其通信特征,建立相应的检测规则。