巅峰极客2024 Rev&Misc WP
字数 1367 2025-08-24 07:48:09

巅峰极客2024 Rev&Misc 题目解析与教学文档

题目概述

这是一道结合逆向工程(Reverse Engineering)和杂项(Miscellaneous)的CTF题目,主要考察UPX脱壳、虚拟机检测绕过、恶意软件分析、Python配置解码器使用、隐写术以及自定义加密算法分析等技能。

Misc 部分解析

1. 初始分析

  • 源文件带有UPX壳,首先需要脱壳:

    upx -d filename
    
  • 脱壳后程序在沙箱中无法正常运行,IDA分析发现存在虚拟机检测机制,必须在真实环境中运行。

2. 程序行为分析

  • 运行后释放两个文件:

    1. 一张图片
    2. 一个名为"file"的可疑文件
  • "file"文件分析:

    • 沙箱分析显示为木马,会释放"default"程序
    • 逆向分析发现大量Python对象和"pupy"字段
    • 实际是Pupy RAT(远程访问工具)的配置文件

3. 配置文件解码

使用专用解码工具:

git clone https://github.com/CaledoniaProject/pupyrat-config-decoder
cd pupyrat-config-decoder
python2 main.py

注意:

  • 需要Python2环境
  • 直接执行./main.py可能会报错,应使用python2 main.py执行
  • 解码后会得到IP地址等配置信息

4. 图片分析

  • 使用zsteg工具分析图片:
    zsteg image.png
    
  • 图片中隐藏了与释放的"file"相同的二进制数据
  • 提取方法多样,关键是要识别出这是Pupy RAT的配置

Reverse 部分解析

1. 加密流程分析

  1. 输入验证

    • 程序在513行附近验证输入字符
    • 允许字符:数字、大小写字母、"-"和"{}"
  2. 加密过程

    • 主要加密逻辑在276行附近
    • 使用大量SHA256哈希算法
    • 结合异或操作进行加密
  3. 加密特点

    • 每次处理3个字节
    • 每个循环处理窗口向后移动1字节(重叠2字节)
    • 生成32字节的密文
    • 密文总长度1280字节(40个32字节块)

2. 加密算法细节

  1. 对每3字节明文:

    def encrypt(data):
        data_bytes = data.encode()
        sha256_hash = hashlib.sha256()
        sha256_hash.update(data_bytes)
        hash_bytes = sha256_hash.digest()
    
        result = bytearray()
        for i in range(len(hash_bytes)):
            result.append(data_bytes[i % len(data_bytes)] ^ hash_bytes[i % len(hash_bytes)])
        return result
    
  2. 密文存储:

    • 不是按明文顺序排列
    • 可能使用二叉搜索树(BST)结构存储
    • 需要按特征重新排序解密结果

3. 解密方法

  1. 爆破策略

    • 由于无法逆向哈希,采用3字节爆破
    • 爆破所有可能的3字节组合(使用可打印字符)
    • 计算每个组合的加密结果并与密文比对
  2. 爆破脚本

    import hashlib
    import itertools
    
    enc = "EB74464F7924C56210CBFFC5A239BE0399ED2C8FB9542BA7C58A7E560F352CA0..."
    enc_list = [enc[i:i+64] for i in range(0, len(enc), 64)]  # 分割为64字符(32字节)的块
    
    char_list = "1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM-{}"
    flag_list = []
    
    for data in itertools.product(char_list, repeat=3):
        data = ''.join(data)
        enc_result = encrypt(data).hex().upper()
    
        if enc_result in enc_list:
            flag_list.append(data)
    
    # 排序拼接
    current = "fla"  # 已知起始段
    start_index = flag_list.index('fla')
    
    i = start_index
    while i < len(flag_list):
        if flag_list[i][:2] == current[-2:]:
            current += flag_list[i][2]
            i = 0
        else:
            i += 1
    
    print(current)  # 输出完整flag
    
  3. 最终flag
    flag{194a39a4-7937-48fb-bfea-80bd17729f8a}

关键技术点总结

  1. UPX脱壳:识别和脱去UPX壳是第一步
  2. 反虚拟机技术:识别并绕过简单的反虚拟机检测
  3. 恶意软件分析:识别Pupy RAT及其配置
  4. 专用工具使用:找到并正确使用Pupy配置解码器
  5. 隐写分析:使用zsteg等工具分析图片中的隐藏数据
  6. 自定义加密分析:理解SHA256+异或的加密方式
  7. 部分爆破:针对3字节可打印字符的爆破策略
  8. 密文重组:根据已知模式("fla")重组乱序的爆破结果

教学建议

  1. 环境准备

    • 安装Python2环境
    • 熟悉UPX、zsteg等工具
    • 准备沙箱分析环境
  2. 分析流程

    • 先静态分析(IDA、strings等)
    • 再动态分析(调试、沙箱)
    • 最后针对性破解
  3. 调试技巧

    • 关注加密API调用点(如SHA256)
    • 跟踪内存中的明文和密文
    • 注意输入验证和加密之间的逻辑
  4. 爆破优化

    • 缩小字符集范围(如先尝试小写字母)
    • 利用已知flag格式("flag{"开头)
    • 并行计算加速爆破过程

通过这道题目,可以全面锻炼逆向分析、加密算法理解和CTF解题的综合能力。

巅峰极客2024 Rev&Misc 题目解析与教学文档 题目概述 这是一道结合逆向工程(Reverse Engineering)和杂项(Miscellaneous)的CTF题目,主要考察UPX脱壳、虚拟机检测绕过、恶意软件分析、Python配置解码器使用、隐写术以及自定义加密算法分析等技能。 Misc 部分解析 1. 初始分析 源文件带有UPX壳,首先需要脱壳: 脱壳后程序在沙箱中无法正常运行,IDA分析发现存在虚拟机检测机制,必须在真实环境中运行。 2. 程序行为分析 运行后释放两个文件: 一张图片 一个名为"file"的可疑文件 "file"文件分析: 沙箱分析显示为木马,会释放"default"程序 逆向分析发现大量Python对象和"pupy"字段 实际是Pupy RAT(远程访问工具)的配置文件 3. 配置文件解码 使用专用解码工具: 注意: 需要Python2环境 直接执行 ./main.py 可能会报错,应使用 python2 main.py 执行 解码后会得到IP地址等配置信息 4. 图片分析 使用 zsteg 工具分析图片: 图片中隐藏了与释放的"file"相同的二进制数据 提取方法多样,关键是要识别出这是Pupy RAT的配置 Reverse 部分解析 1. 加密流程分析 输入验证 : 程序在513行附近验证输入字符 允许字符:数字、大小写字母、"-"和"{}" 加密过程 : 主要加密逻辑在276行附近 使用大量SHA256哈希算法 结合异或操作进行加密 加密特点 : 每次处理3个字节 每个循环处理窗口向后移动1字节(重叠2字节) 生成32字节的密文 密文总长度1280字节(40个32字节块) 2. 加密算法细节 对每3字节明文: 密文存储: 不是按明文顺序排列 可能使用二叉搜索树(BST)结构存储 需要按特征重新排序解密结果 3. 解密方法 爆破策略 : 由于无法逆向哈希,采用3字节爆破 爆破所有可能的3字节组合(使用可打印字符) 计算每个组合的加密结果并与密文比对 爆破脚本 : 最终flag : flag{194a39a4-7937-48fb-bfea-80bd17729f8a} 关键技术点总结 UPX脱壳 :识别和脱去UPX壳是第一步 反虚拟机技术 :识别并绕过简单的反虚拟机检测 恶意软件分析 :识别Pupy RAT及其配置 专用工具使用 :找到并正确使用Pupy配置解码器 隐写分析 :使用zsteg等工具分析图片中的隐藏数据 自定义加密分析 :理解SHA256+异或的加密方式 部分爆破 :针对3字节可打印字符的爆破策略 密文重组 :根据已知模式("fla")重组乱序的爆破结果 教学建议 环境准备 : 安装Python2环境 熟悉UPX、zsteg等工具 准备沙箱分析环境 分析流程 : 先静态分析(IDA、strings等) 再动态分析(调试、沙箱) 最后针对性破解 调试技巧 : 关注加密API调用点(如SHA256) 跟踪内存中的明文和密文 注意输入验证和加密之间的逻辑 爆破优化 : 缩小字符集范围(如先尝试小写字母) 利用已知flag格式("flag{"开头) 并行计算加速爆破过程 通过这道题目,可以全面锻炼逆向分析、加密算法理解和CTF解题的综合能力。