NET环境下的多款同源RAT对比
字数 1800 2025-08-05 12:50:33
.NET环境下多款同源RAT对比分析技术文档
概述
本文档对.NET环境下的多款同源远程访问工具(RAT)进行了详细对比分析,包括VenomRAT、DcRAT、xRAT及其在野样本。这些RAT工具在配置信息加密、通信协议等方面具有相似性,但也存在关键差异。
分析对象
- VenomRAT项目及在野样本
- DcRAT项目及在野样本
- xRAT项目
配置信息解密算法对比
通用解密流程
- 使用PBKDF2算法生成密钥
- 使用AES算法解密配置数据
- 部分样本需要二次处理base64编码数据
各RAT解密参数差异
| RAT类型 | PBKDF2 salt值 | 密钥生成方式 |
|---|---|---|
| VenomRAT | "VenomByVenom" | 生成16字节AES密钥和64字节HMAC密钥 |
| DcRAT | "DcRatByqwqdanchun" | 同上 |
| 在野DcRAT | 通过函数参数传入 | 同上 |
| 在野VenomRAT | 固定十六进制值(BFEB1E56...) | 同上 |
| xRAT | 无PBKDF2 | 使用key的MD5值作为AES key |
xRAT特殊解密流程
- 将配置中的Password字符串进行MD5哈希作为AES密钥
- 加密数据前16字节为IV,后续为加密数据
- 解密后可能需要进行QuickLZ解压缩
通信协议分析
通用通信特征
- 多数使用TLS加密通信
- 通信数据通常采用两层加密:
- 第一层:TLS加密
- 第二层:gzip压缩加密载荷
各RAT通信差异
| RAT类型 | 通信协议 | 特殊特征 |
|---|---|---|
| VenomRAT | TLS+gzip | 与AsyncRAT通信结构相似 |
| DcRAT | TLS+gzip | 同上 |
| 在野DcRAT | HTTP | 不使用TLS |
| xRAT | 原始socket | 无TLS层 |
TLS解密方法
- 修改TLS密钥套件
- 提取私钥进行解密
- 解密后可进一步解压gzip载荷
各RAT详细分析
VenomRAT分析
木马生成配置
- IP/DNS配置:外联IP、端口、Pastebin、Group Name、互斥对象名
- Startup选项:自启动、反虚拟机、禁用任务管理器、蓝屏
- Assembly信息:属性、图标
上线特征
- 控制端显示上线主机信息
- 支持多种远控功能
配置信息解密
- 反编译代码结构与AsyncRAT相似
- Settings类中包含加密配置
- 使用修改后的AsyncRAT解密脚本可解密
DcRAT分析
木马生成配置
- 基本配置:外联IP、端口、Pastebin、Group Name、互斥对象
- 高级选项:自启动、反虚拟机、禁用任务管理器、蓝屏
- 程序信息:属性、图标
上线特征
- 图形化控制界面
- 完整远控功能集
在野样本差异
- 代码结构与项目版本不同
- 使用HTTP而非TLS通信
- 解密后数据包含额外base64编码
xRAT分析
木马生成配置
- Connection:IP、端口、密码、重连延迟
- Install:互斥量、安装选项、路径、注册表键
- Assembly信息:属性
- 附加设置:管理员权限、图标、键盘记录
通信特点
- 不使用TLS加密
- 通信数据先AES解密再QuickLZ解压
- 密码MD5作为AES密钥
检测与防御建议
-
配置信息检测
- 监控程序中的特定salt字符串
- 检测PBKDF2算法使用特征
-
通信流量检测
- 识别TLS+gzip双层加密流量
- 注意异常HTTP通信模式
-
行为检测
- 监控互斥量创建(如"DCR_MUTEX-*")
- 检测异常的自启动项修改
-
解密工具
- 开发通用解密脚本处理不同变种
- 针对xRAT需实现MD5密钥生成和QuickLZ解压
附录:解密代码示例
xRAT解密核心代码
func decrypt_xRAT_str(key string, input []byte) {
aeskey, _ := hex.DecodeString(common.CalculateMD5(key))
aes_iv := input[:16]
encode_data := input[16:]
output, _ := common.Aes_z_Decrypt(encode_data, aeskey, aes_iv)
fmt.Println(string(output))
}
func Aes_z_Decrypt(input, key, iv []byte) (output, newiv []byte) {
output, err := aes_decrypt_cbc(input, key, iv)
if err != nil {
panic(err)
}
newiv = append(newiv, input[len(input)-16:]...)
return
}
通用PBKDF2解密流程
- 使用特定salt进行PBKDF2运算
- 生成AES密钥和HMAC密钥
- AES-CBC解密配置数据
- 必要时进行base64解码等后处理
总结
本文档详细分析了.NET环境下多款同源RAT工具的异同点,重点对比了它们的配置信息加密算法和通信协议特点,并提供了检测防御建议和实用解密代码。这些分析结果可用于恶意软件分析、检测规则编写和防御策略制定。