深度剖析:利用Python 3.12.x二进制文件与多阶段Shellcode的DCRat传播技术
字数 1812 2025-08-29 08:30:06

利用Python 3.12.x二进制文件与多阶段Shellcode的DCRat传播技术深度分析

概述

本文详细分析了一种利用Python 3.12.x二进制文件与多阶段Shellcode技术传播DCRat远控木马的高级攻击手法。该攻击具有以下特点:

  • 使用高度混淆的Python脚本(实际为PYC文件)
  • 依赖Python 3.12.x特定版本执行
  • 采用多阶段Shellcode加载技术
  • 最终部署DCRat远控木马

技术分析

1. 初始攻击载体分析

攻击者使用了一个看似普通的Python脚本,但实际上是一个PYC(Python编译字节码)文件:

PYC文件识别特征

  • Python 3.12.x PYC文件头特征:CB 0D 0D 0A
  • 其他Python版本PYC文件头特征对比:
Python版本 PYC文件头特征
1.x 99 4E 0D 0A
2.0 87 C6 0D 0A
... ...
3.11 A7 0D 0D 0A
3.12 CB 0D 0D 0A

版本依赖性

  • 仅Python 3.12.x版本能成功加载执行
  • 其他版本会报编码错误:SyntaxError: Non-UTF-8 code starting with '\xcb'...

2. PYC反编译与解密

原始PYC文件经过反编译后,核心功能是解密内嵌的编码数据:

解密流程

  1. 使用Base64解码初始数据
  2. 使用RC4算法二次解密,密钥为noVOMsCG
  3. 最终得到可执行的Python代码

内存操作

解密后的Python代码执行以下操作:

import ctypes
# 申请内存
buf = ctypes.create_string_buffer(shellcode)
# 修改内存保护属性
ctypes.windll.kernel32.VirtualProtect(buf, len(shellcode), 0x40, ctypes.byref(ctypes.c_ulong()))
# 执行shellcode
fn = ctypes.cast(buf, ctypes.CFUNCTYPE(ctypes.c_void_p))
fn()

3. 第一阶段Shellcode分析

主要功能

  1. 解密PE载荷

    • 调用VirtualAlloc申请内存
    • 复制并解密内嵌的PE文件数据
  2. 绕过安全机制

    • Patch AmsiScanBuffer函数绕过AMSI
    • Patch WldpQueryDynamicCodeTrust函数绕过WLDP
  3. 内存加载PE

    • 实现PE加载器功能
    • 在内存中完整加载PE文件
    • 执行PE入口点函数

技术细节

  • 使用直接系统调用(syscall)而非API调用
  • 完全在内存中操作,不落地文件

4. 第一阶段PE载荷分析

功能概述

  1. 解密并显示字符串(可能用于调试)

  2. 解密第二阶段Shellcode:

    • 使用AES+XOR组合加密
    • 密钥信息:
      • AES key: 698ea39fa70ae4eecba9217a86006f21c79c5e276a7191f7d298974d76ac5a52
      • AES IV: 72a96c539aeedbee30f8dee608495cc4
      • XOR key: B43B72E4068B5DB4C03CE1C95EC90A54
  3. 进程注入:

    • 使用APC注入技术将Shellcode注入notepad.exe
    • 调用NtResumeThread执行注入的代码

5. 第二阶段Shellcode分析

与第一阶段类似,但加载不同的PE载荷:

  • 相同的多阶段解密流程
  • 相同的内存加载技术
  • 最终加载DCRat远控木马

6. DCRat远控木马分析

特征识别

  • 配置信息中包含"DcRAT"标识
  • 使用特定算法解密配置信息

配置信息解密方法

  1. 定位加密的配置数据
  2. 使用自定义算法解密
  3. 提取C2地址、端口等关键信息

防御建议

  1. Python环境防护

    • 严格控制Python版本使用,特别是3.12.x
    • 监控异常PYC文件执行
  2. 行为检测

    • 检测多阶段内存加载行为
    • 监控VirtualProtect等敏感API调用
    • 关注notepad.exe等常见进程的异常注入
  3. AMSI/WLDP强化

    • 监控对AmsiScanBuffer等安全函数的patch尝试
    • 启用增强型WLDP策略
  4. 网络流量分析

    • 检测与已知DCRat C2的通信特征
    • 分析异常TLS证书(含"DcRAT"字样)

总结

该攻击链展示了高级威胁攻击者的典型手法:

  • 利用合法工具链(Python)作为攻击载体
  • 多阶段载荷解密与加载
  • 高级进程注入技术
  • 最终部署功能完善的远控木马

防御方需采取纵深防御策略,重点关注内存操作、进程注入和配置解密等关键环节。

利用Python 3.12.x二进制文件与多阶段Shellcode的DCRat传播技术深度分析 概述 本文详细分析了一种利用Python 3.12.x二进制文件与多阶段Shellcode技术传播DCRat远控木马的高级攻击手法。该攻击具有以下特点: 使用高度混淆的Python脚本(实际为PYC文件) 依赖Python 3.12.x特定版本执行 采用多阶段Shellcode加载技术 最终部署DCRat远控木马 技术分析 1. 初始攻击载体分析 攻击者使用了一个看似普通的Python脚本,但实际上是一个PYC(Python编译字节码)文件: PYC文件识别特征 Python 3.12.x PYC文件头特征: CB 0D 0D 0A 其他Python版本PYC文件头特征对比: | Python版本 | PYC文件头特征 | |------------|--------------| | 1.x | 99 4E 0D 0A | | 2.0 | 87 C6 0D 0A | | ... | ... | | 3.11 | A7 0D 0D 0A | | 3.12 | CB 0D 0D 0A | 版本依赖性 仅Python 3.12.x版本能成功加载执行 其他版本会报编码错误: SyntaxError: Non-UTF-8 code starting with '\xcb'... 2. PYC反编译与解密 原始PYC文件经过反编译后,核心功能是解密内嵌的编码数据: 解密流程 使用Base64解码初始数据 使用RC4算法二次解密,密钥为 noVOMsCG 最终得到可执行的Python代码 内存操作 解密后的Python代码执行以下操作: 3. 第一阶段Shellcode分析 主要功能 解密PE载荷 : 调用VirtualAlloc申请内存 复制并解密内嵌的PE文件数据 绕过安全机制 : Patch AmsiScanBuffer函数绕过AMSI Patch WldpQueryDynamicCodeTrust函数绕过WLDP 内存加载PE : 实现PE加载器功能 在内存中完整加载PE文件 执行PE入口点函数 技术细节 使用直接系统调用(syscall)而非API调用 完全在内存中操作,不落地文件 4. 第一阶段PE载荷分析 功能概述 解密并显示字符串(可能用于调试) 解密第二阶段Shellcode: 使用AES+XOR组合加密 密钥信息: AES key: 698ea39fa70ae4eecba9217a86006f21c79c5e276a7191f7d298974d76ac5a52 AES IV: 72a96c539aeedbee30f8dee608495cc4 XOR key: B43B72E4068B5DB4C03CE1C95EC90A54 进程注入: 使用APC注入技术将Shellcode注入notepad.exe 调用NtResumeThread执行注入的代码 5. 第二阶段Shellcode分析 与第一阶段类似,但加载不同的PE载荷: 相同的多阶段解密流程 相同的内存加载技术 最终加载DCRat远控木马 6. DCRat远控木马分析 特征识别 配置信息中包含"DcRAT"标识 使用特定算法解密配置信息 配置信息解密方法 定位加密的配置数据 使用自定义算法解密 提取C2地址、端口等关键信息 防御建议 Python环境防护 : 严格控制Python版本使用,特别是3.12.x 监控异常PYC文件执行 行为检测 : 检测多阶段内存加载行为 监控VirtualProtect等敏感API调用 关注notepad.exe等常见进程的异常注入 AMSI/WLDP强化 : 监控对AmsiScanBuffer等安全函数的patch尝试 启用增强型WLDP策略 网络流量分析 : 检测与已知DCRat C2的通信特征 分析异常TLS证书(含"DcRAT"字样) 总结 该攻击链展示了高级威胁攻击者的典型手法: 利用合法工具链(Python)作为攻击载体 多阶段载荷解密与加载 高级进程注入技术 最终部署功能完善的远控木马 防御方需采取纵深防御策略,重点关注内存操作、进程注入和配置解密等关键环节。