Xeno-RAT通信模型剖析及自动化解密脚本实现
字数 1907 2025-08-03 16:43:52

Xeno-RAT通信模型剖析及自动化解密脚本实现

概述

Xeno-RAT是一款开源的远程访问工具(RAT),本文将从多个角度深入剖析其工作原理,包括利用分析、配置信息提取、功能分析、通信模型分析以及自动化解密脚本的实现。

开源Xeno-RAT利用分析

项目基本信息

  • 首次发布时间:2023年10月17日
  • 最新版本:v1.8.7(2024年2月15日发布)
  • 开发语言:C#
  • 核心模块:
    • Client端
    • Server端
    • Plugin插件模块
  • GitHub地址:https://github.com/moom825/xeno-rat

生成Client端木马

  1. 运行Xeno-RAT控制端GUI界面
  2. 选择【Builder】菜单进行自定义配置
  3. 配置包括:
    • 连接IP/域名
    • 监听端口
    • 通信加密密码
    • 其他自定义选项

木马上线流程

  1. 在控制端选择【Listener】菜单配置监听端口及通信加密密码
  2. 在受控主机运行Client端木马程序
  3. 木马成功连接后,控制端显示上线主机信息

Xeno-RAT配置信息提取

配置信息存储位置

  • Client端:位于xeno_rat_client命名空间的Program类中
  • Server端:位于控制端程序当前目录的Config.json文件

加密密钥生成

  • 通信加密密码通过SHA256运算生成EncryptionKey
  • 代码实现:
// 示例SHA256计算代码
byte[] keyBytes = Encoding.UTF8.GetBytes(password);
SHA256 sha256 = SHA256.Create();
byte[] hashBytes = sha256.ComputeHash(keyBytes);
string encryptionKey = BitConverter.ToString(hashBytes).Replace("-", "");

Xeno-RAT功能分析

核心功能实现

  1. 配置信息管理

    • 控制端修改配置后自动更新Config.json文件
    • Client端通过修改stub目录下的xeno rat client.exe程序生成
  2. 加密通信机制

    • 加密流程:
      1. 使用AES算法加密数据
      2. 调用ntdll.dllRtlCompressBuffer函数压缩数据
    • 解密流程:
      1. 调用ntdll.dllRtlDecompressBuffer函数解压数据
      2. 使用AES算法解密数据
  3. 插件式功能架构

    • 通过动态加载插件DLL实现各种远控功能
    • 主要功能插件列表:
插件文件名 对应菜单功能
Chat.dll Fun->Chat
File manager.dll System->File Manager
Hvnc.dll Surveillance->Hvnc
KeyLogger.dll Surveillance->Key Logger
ProcessManager.dll System->Process Manager
ScreenControl.dll Surveillance->Screen Control
WebCam.dll Surveillance->WebCam

Xeno-RAT通信模型分析

通信数据包结构

Xeno-RAT通信模型可分为三类:

  1. 第一类载荷

    • 结构:4字节载荷长度 + 1字节标志(00) + AES加密数据
    • 直接AES解密即可
  2. 第二类载荷

    • 结构:4字节载荷长度 + 1字节标志(03) + AES加密数据
    • AES解密后数据包含:
      • 1字节标志(00/01,指示是否压缩)
      • 载荷数据
  3. 第三类载荷

    • 结构:4字节载荷长度 + 1字节标志(03) + AES加密数据
    • AES解密后数据包含:
      • 1字节标志(01表示压缩)
      • 4字节后续载荷长度
      • 压缩的载荷数据

会话通信流程

  1. 第一个会话:获取系统基本信息
  2. 第二个会话:心跳连接及开启主会话
  3. 第三个会话:主会话,传输执行远控指令
  4. 功能插件会话
    • FileManager:开启两个会话(传输载荷+功能通信)
    • ProcessManager:开启一个会话(传输载荷及通信数据)

模拟构建通信解密程序

解密程序功能

  • 批量解密多个会话的通信数据
  • 自动识别并处理不同类型的通信载荷
  • 支持从Wireshark导出的"C Arrays"格式数据

代码结构

  1. main.go:主程序,处理文件输入和输出
  2. xenorat.go:核心解密逻辑实现
  3. common.go:通用工具函数

核心解密逻辑

func Decrypt(data []byte, key string) (decryptd_text []byte) {
    key_sha256 := HashData_sha256([]byte(key))
    aes_key, _ := hex.DecodeString(key_sha256)
    aes_iv, _ := hex.DecodeString("00000000000000000000000000000000")

    var header Header
    if data[0] == byte(3) {
        data1 := BTruncate(data, 1)
        data2, _ := Aes_z_Decrypt(data1, aes_key, aes_iv)
        if data2[0] == byte(2) {
            return data2
        }
        header.ParseHeader(data2)
        data3 := BTruncate(data2, header.T_offset)
        if header.Compressed {
            return decompress(data3, header.OriginalFileSize)
        }
        return data3
    }
    // ...其他解密逻辑
}

使用说明

  1. 从Wireshark导出通信数据为"C Arrays"格式
  2. 将多个会话数据保存到同一目录
  3. 运行解密程序,指定密钥和输入目录
  4. 程序将自动解密并输出结果文件

总结

本文全面剖析了Xeno-RAT的工作原理,重点分析了其通信模型和加密机制,并提供了自动化解密脚本的实现方案。通过理解这些技术细节,安全研究人员可以更好地检测和分析Xeno-RAT的攻击活动,开发相应的防御措施。

Xeno-RAT通信模型剖析及自动化解密脚本实现 概述 Xeno-RAT是一款开源的远程访问工具(RAT),本文将从多个角度深入剖析其工作原理,包括利用分析、配置信息提取、功能分析、通信模型分析以及自动化解密脚本的实现。 开源Xeno-RAT利用分析 项目基本信息 首次发布时间:2023年10月17日 最新版本:v1.8.7(2024年2月15日发布) 开发语言:C# 核心模块: Client端 Server端 Plugin插件模块 GitHub地址:https://github.com/moom825/xeno-rat 生成Client端木马 运行Xeno-RAT控制端GUI界面 选择【Builder】菜单进行自定义配置 配置包括: 连接IP/域名 监听端口 通信加密密码 其他自定义选项 木马上线流程 在控制端选择【Listener】菜单配置监听端口及通信加密密码 在受控主机运行Client端木马程序 木马成功连接后,控制端显示上线主机信息 Xeno-RAT配置信息提取 配置信息存储位置 Client端:位于 xeno_rat_client 命名空间的 Program 类中 Server端:位于控制端程序当前目录的 Config.json 文件 加密密钥生成 通信加密密码通过SHA256运算生成 EncryptionKey 代码实现: Xeno-RAT功能分析 核心功能实现 配置信息管理 控制端修改配置后自动更新 Config.json 文件 Client端通过修改 stub 目录下的 xeno rat client.exe 程序生成 加密通信机制 加密流程: 使用AES算法加密数据 调用 ntdll.dll 的 RtlCompressBuffer 函数压缩数据 解密流程: 调用 ntdll.dll 的 RtlDecompressBuffer 函数解压数据 使用AES算法解密数据 插件式功能架构 通过动态加载插件DLL实现各种远控功能 主要功能插件列表: | 插件文件名 | 对应菜单功能 | |------------|--------------| | Chat.dll | Fun->Chat | | File manager.dll | System->File Manager | | Hvnc.dll | Surveillance->Hvnc | | KeyLogger.dll | Surveillance->Key Logger | | ProcessManager.dll | System->Process Manager | | ScreenControl.dll | Surveillance->Screen Control | | WebCam.dll | Surveillance->WebCam | Xeno-RAT通信模型分析 通信数据包结构 Xeno-RAT通信模型可分为三类: 第一类载荷 结构:4字节载荷长度 + 1字节标志(00) + AES加密数据 直接AES解密即可 第二类载荷 结构:4字节载荷长度 + 1字节标志(03) + AES加密数据 AES解密后数据包含: 1字节标志(00/01,指示是否压缩) 载荷数据 第三类载荷 结构:4字节载荷长度 + 1字节标志(03) + AES加密数据 AES解密后数据包含: 1字节标志(01表示压缩) 4字节后续载荷长度 压缩的载荷数据 会话通信流程 第一个会话 :获取系统基本信息 第二个会话 :心跳连接及开启主会话 第三个会话 :主会话,传输执行远控指令 功能插件会话 : FileManager:开启两个会话(传输载荷+功能通信) ProcessManager:开启一个会话(传输载荷及通信数据) 模拟构建通信解密程序 解密程序功能 批量解密多个会话的通信数据 自动识别并处理不同类型的通信载荷 支持从Wireshark导出的"C Arrays"格式数据 代码结构 main.go :主程序,处理文件输入和输出 xenorat.go :核心解密逻辑实现 common.go :通用工具函数 核心解密逻辑 使用说明 从Wireshark导出通信数据为"C Arrays"格式 将多个会话数据保存到同一目录 运行解密程序,指定密钥和输入目录 程序将自动解密并输出结果文件 总结 本文全面剖析了Xeno-RAT的工作原理,重点分析了其通信模型和加密机制,并提供了自动化解密脚本的实现方案。通过理解这些技术细节,安全研究人员可以更好地检测和分析Xeno-RAT的攻击活动,开发相应的防御措施。