针对一道CS面试题样本的详细分析
字数 1478 2025-08-05 08:19:13

Python编译的CS木马样本分析教学文档

1. 样本概述

这是一个使用Python 3.10编译的Cobalt Strike (CS)木马样本,包含以下组件:

  • 一个EXE可执行文件
  • 一个JSON配置文件(1.json)

样本特点:

  • 使用AES加密算法保护payload
  • 包含Loader和Shellcode两部分
  • 具有反分析特性(pycdc工具无法完全反编译)

2. 样本分析步骤

2.1 初始文件检查

样本包含两个文件:

  1. 可执行文件(EXE):使用PyInstaller编译的Python程序
  2. 1.json:加密的配置文件,包含"code"和"load"两个字段

2.2 反编译Python EXE

使用工具链:

  1. pyinstxtractor:解包PyInstaller编译的EXE
    • 确认Python版本为3.10
  2. pycdc:尝试反编译pyc文件
    • 只能部分反编译,遇到困难
  3. pycdas:反汇编pyc文件获取字节码

2.3 字节码分析关键发现

通过分析字节码发现:

  • AES密钥硬编码在代码中:dfhkAsDFAjDShdfu
  • 解密流程:
    key = "dfhkAsDFAjDShdfu"
    decrypted_data = aesdecypto.decrypt(encrypted_data)
    hex_data = decrypted_data.fromhex()
    

2.4 AES解密模块分析

aesdecypto模块特性:

  • 算法:AES-CBC模式
  • 填充:PKCS7Padding
  • 数据块:128位
  • KEY和IV相同,均为16字节

可以使用在线工具解密(如http://tool.chacuo.net/cryptaes):

  • 输入:加密的JSON数据
  • 密钥:dfhkAsDFAjDShdfu
  • IV:与密钥相同

2.5 解密后的payload分析

解密1.json后得到两部分:

  1. code部分:Shellcode

    • C2服务器:119.29.82.40
    • HTTP请求路径:/QlXH
    • 行为:循环执行HTTP请求等待服务器指令
  2. load部分:Loader程序

    • 功能:分配内存空间
    • 将Shellcode加载到内存
    • 创建线程执行Shellcode

2.6 威胁情报验证

通过威胁情报平台查询C2 IP(119.29.82.40):

  • 已被标记为Cobalt Strike木马
  • 自动化分析脚本匹配到CS反向Shell特征

3. 技术难点解析

本样本分析的难点在于:

  1. pycdc无法完全反编译pyc文件

    • 解决方案:使用pycdas反汇编获取字节码
    • 需要人工阅读和理解字节码逻辑
  2. 加密算法识别

    • 通过字节码中的常量加载指令发现硬编码密钥
    • 识别加密模式为AES-CBC
  3. 多层payload结构

    • EXE → 解密JSON → Loader → Shellcode
    • 需要逐层分析

4. 分析技巧总结

  1. 多工具结合:当主要工具失效时,尝试替代方案
  2. 字节码阅读:掌握Python字节码有助于分析编译后的样本
  3. 加密算法识别:关注硬编码字符串和常量加载
  4. 威胁情报关联:验证发现的IoC(如C2 IP)
  5. 自动化特征匹配:使用脚本匹配已知恶意代码特征

5. 防御建议

针对此类攻击的防御措施:

  1. 监控Python编译的可执行文件行为
  2. 检测AES解密例程的内存操作
  3. 阻止与已知C2 IP的通信
  4. 分析网络流量中的可疑HTTP路径(如/QlXH)
  5. 使用沙箱分析可疑的Loader行为

6. 扩展研究方向

  1. PyInstaller编译样本的其他分析方法
  2. Python字节码混淆和反混淆技术
  3. Cobalt Strike Beacon的更多变种分析
  4. 内存中Shellcode检测技术
  5. 无文件攻击的检测方法

通过本案例的分析,可以掌握Python编译恶意样本的分析方法,特别是当自动化工具失效时的人工分析技巧。

Python编译的CS木马样本分析教学文档 1. 样本概述 这是一个使用Python 3.10编译的Cobalt Strike (CS)木马样本,包含以下组件: 一个EXE可执行文件 一个JSON配置文件(1.json) 样本特点: 使用AES加密算法保护payload 包含Loader和Shellcode两部分 具有反分析特性(pycdc工具无法完全反编译) 2. 样本分析步骤 2.1 初始文件检查 样本包含两个文件: 可执行文件(EXE):使用PyInstaller编译的Python程序 1.json:加密的配置文件,包含"code"和"load"两个字段 2.2 反编译Python EXE 使用工具链: pyinstxtractor :解包PyInstaller编译的EXE 确认Python版本为3.10 pycdc :尝试反编译pyc文件 只能部分反编译,遇到困难 pycdas :反汇编pyc文件获取字节码 2.3 字节码分析关键发现 通过分析字节码发现: AES密钥硬编码在代码中: dfhkAsDFAjDShdfu 解密流程: 2.4 AES解密模块分析 aesdecypto模块特性: 算法:AES-CBC模式 填充:PKCS7Padding 数据块:128位 KEY和IV相同,均为16字节 可以使用在线工具解密(如http://tool.chacuo.net/cryptaes): 输入:加密的JSON数据 密钥: dfhkAsDFAjDShdfu IV:与密钥相同 2.5 解密后的payload分析 解密1.json后得到两部分: code部分 :Shellcode C2服务器:119.29.82.40 HTTP请求路径:/QlXH 行为:循环执行HTTP请求等待服务器指令 load部分 :Loader程序 功能:分配内存空间 将Shellcode加载到内存 创建线程执行Shellcode 2.6 威胁情报验证 通过威胁情报平台查询C2 IP(119.29.82.40): 已被标记为Cobalt Strike木马 自动化分析脚本匹配到CS反向Shell特征 3. 技术难点解析 本样本分析的难点在于: pycdc无法完全反编译pyc文件 解决方案:使用pycdas反汇编获取字节码 需要人工阅读和理解字节码逻辑 加密算法识别 通过字节码中的常量加载指令发现硬编码密钥 识别加密模式为AES-CBC 多层payload结构 EXE → 解密JSON → Loader → Shellcode 需要逐层分析 4. 分析技巧总结 多工具结合 :当主要工具失效时,尝试替代方案 字节码阅读 :掌握Python字节码有助于分析编译后的样本 加密算法识别 :关注硬编码字符串和常量加载 威胁情报关联 :验证发现的IoC(如C2 IP) 自动化特征匹配 :使用脚本匹配已知恶意代码特征 5. 防御建议 针对此类攻击的防御措施: 监控Python编译的可执行文件行为 检测AES解密例程的内存操作 阻止与已知C2 IP的通信 分析网络流量中的可疑HTTP路径(如/QlXH) 使用沙箱分析可疑的Loader行为 6. 扩展研究方向 PyInstaller编译样本的其他分析方法 Python字节码混淆和反混淆技术 Cobalt Strike Beacon的更多变种分析 内存中Shellcode检测技术 无文件攻击的检测方法 通过本案例的分析,可以掌握Python编译恶意样本的分析方法,特别是当自动化工具失效时的人工分析技巧。