不常见的内存与流量取证 -- WMCTF 2022 1!5!
字数 1349 2025-08-26 22:11:29

不常见的内存与流量取证分析技术 —— WMCTF 2022 解题详解

题目概述

这是一道结合内存取证和网络流量分析的综合性题目,考察选手对非常规取证场景的处理能力。题目包含一个特殊的内存镜像和网络流量数据包,常规取证工具如Volatility和取证大师无法直接识别该内存镜像。

解题工具准备

  • Autopsy:跨平台数字取证工具,支持内存分析
    • 官网:https://www.autopsy.com
    • macOS安装:brew install autopsy
    • 运行后访问:https://localhost:9999/autopsy
  • Wireshark:网络流量分析工具
  • jq:JSON处理工具

解题步骤详解

1. 流量分析

  1. 初始流量观察

    • 流量中首先出现QUIC加密流量
    • 随后是HTTP流量,GET请求获取flag并升级到WebSocket协议
    • WebSocket流量中第一个包包含明文"flag",后续包为加密内容
  2. WebSocket流量提取

    cat tc.json | jq '.[]._source.layers."data-text-lines"' | awk "NR % 3 == 2" | cut -d "\"" -f 2
    

    得到加密数据:

    SlAZT80ZTIXZTIcZSl9ZSlTZT80ZTIXZTIwC
    Sx0ZTf1ZTIuZSx0ZSluZSthZTf1ZTIuZSxnC
    ...
    

2. 内存分析

  1. Autopsy基本操作

    • 创建案件(Case)
    • 添加受害者信息(Host)
    • 以链接方式导入内存镜像
  2. 搜索假flag

    • 搜索字符串"WMCTF{"找到假flag和相关代码
    • 发现服务端Go代码片段,包含部分flag:
      var f1ags = "WMCTF{WebSOcket_And"
      
  3. 关键代码搜索

    • 搜索"websocket"和"key"关键字
    • 发现HTTP3服务端代码,包含flag后半部分:
      fmt.Fprintf(w, "_HTTP3_1s_C000L}\n")
      
    • 发现TLS证书和私钥文件内容
  4. 定位加密逻辑

    • 搜索"_keyStr"找到客户端JavaScript加密代码
    • 内存编号987382附近找到完整加密逻辑

3. 加密算法分析

  1. 加密流程

    • 服务端发送flag字符
    • 客户端对每个字符进行以下处理:
      function encrypto(str, xor, hex) {
        // 异或加密
        charCode = (charCode * 1) ^ xor;
        // 进制转换
        charCode = charCode.toString(hex);
        // 特殊分隔符连接
        splitStr = String.fromCharCode(hex + 97);
        return resultList.join(splitStr);
      }
      
    • 最后进行Base64变种编码
  2. 解密算法实现

    function decrypto(str, xor, hex) {
      let splitStr = String.fromCharCode(hex + 97);
      resultStr = str.split(splitStr);
      for(let i = 0; i<resultStr.length; i++) {
        charCode = parseInt(resultStr[i], hex);
        char2 = (char ^ xor);
        str = String.fromCharCode(char2);
      }
      return resultList.join("");
    }
    
  3. Base64变种解码

    this.decode = function(input) {
      // 特殊处理输入
      var buffer = _keyStr.indexOf(input.charAt(position));
      // 解码逻辑
      output += String.fromCharCode(0xFF & bitStorage >> (-2 * bitCounter & 6));
      return output;
    };
    

4. 最终flag拼接

解密得到:

WdzsPXdzs
MrtMmCrtM
...

拼接内存中找到的两部分flag:

  • 前半部分:WMCTF{WebSOcket_And
  • 后半部分:_HTTP3_1s_C000L}

完整flagWMCTF{LOL_StR1ngs_1s_F@ke_BUT_HTTP3_1s_C000L}

Autopsy工具优势总结

  1. 强大的字符串搜索能力,支持:

    • 正则表达式
    • 大小写不敏感搜索
    • 宽字符(如S\x00T\x00R\x00I\x00N\x00G\x00)识别
  2. 数据分析功能:

    • 关键词搜索(Keyword Search)
    • 基于偏移量(Data Unit)的搜索
    • 内存单元上下文分析
  3. 相比传统工具优势:

    • 比Volatility更友好的界面
    • 比取证大师更强大的非常规内存分析能力
    • 比strings/hex编辑器更系统化的分析流程

教学要点总结

  1. 取证思路

    • 当常规工具失效时,考虑非常规工具组合
    • 流量和内存分析要结合进行
    • 关注代码片段中的关键字符串和算法逻辑
  2. 技术要点

    • WebSocket协议分析技巧
    • 内存中代码片段定位方法
    • 自定义加密算法的逆向分析
  3. 工具使用

    • Autopsy的高级搜索功能
    • Wireshark的WebSocket流量导出
    • jq和awk等命令行工具的数据处理

这道题目展示了综合取证分析的典型流程,强调了在面对非常规取证场景时的灵活思维和工具运用能力。

不常见的内存与流量取证分析技术 —— WMCTF 2022 解题详解 题目概述 这是一道结合内存取证和网络流量分析的综合性题目,考察选手对非常规取证场景的处理能力。题目包含一个特殊的内存镜像和网络流量数据包,常规取证工具如Volatility和取证大师无法直接识别该内存镜像。 解题工具准备 Autopsy :跨平台数字取证工具,支持内存分析 官网:https://www.autopsy.com macOS安装: brew install autopsy 运行后访问:https://localhost:9999/autopsy Wireshark :网络流量分析工具 jq :JSON处理工具 解题步骤详解 1. 流量分析 初始流量观察 : 流量中首先出现QUIC加密流量 随后是HTTP流量,GET请求获取flag并升级到WebSocket协议 WebSocket流量中第一个包包含明文"flag",后续包为加密内容 WebSocket流量提取 : 得到加密数据: 2. 内存分析 Autopsy基本操作 : 创建案件(Case) 添加受害者信息(Host) 以链接方式导入内存镜像 搜索假flag : 搜索字符串"WMCTF{"找到假flag和相关代码 发现服务端Go代码片段,包含部分flag: 关键代码搜索 : 搜索"websocket"和"key"关键字 发现HTTP3服务端代码,包含flag后半部分: 发现TLS证书和私钥文件内容 定位加密逻辑 : 搜索"_ keyStr"找到客户端JavaScript加密代码 内存编号987382附近找到完整加密逻辑 3. 加密算法分析 加密流程 : 服务端发送flag字符 客户端对每个字符进行以下处理: 最后进行Base64变种编码 解密算法实现 : Base64变种解码 : 4. 最终flag拼接 解密得到: 拼接内存中找到的两部分flag: 前半部分: WMCTF{WebSOcket_And 后半部分: _HTTP3_1s_C000L} 完整flag : WMCTF{LOL_StR1ngs_1s_F@ke_BUT_HTTP3_1s_C000L} Autopsy工具优势总结 强大的字符串搜索能力,支持: 正则表达式 大小写不敏感搜索 宽字符(如 S\x00T\x00R\x00I\x00N\x00G\x00 )识别 数据分析功能: 关键词搜索(Keyword Search) 基于偏移量(Data Unit)的搜索 内存单元上下文分析 相比传统工具优势: 比Volatility更友好的界面 比取证大师更强大的非常规内存分析能力 比strings/hex编辑器更系统化的分析流程 教学要点总结 取证思路 : 当常规工具失效时,考虑非常规工具组合 流量和内存分析要结合进行 关注代码片段中的关键字符串和算法逻辑 技术要点 : WebSocket协议分析技巧 内存中代码片段定位方法 自定义加密算法的逆向分析 工具使用 : Autopsy的高级搜索功能 Wireshark的WebSocket流量导出 jq和awk等命令行工具的数据处理 这道题目展示了综合取证分析的典型流程,强调了在面对非常规取证场景时的灵活思维和工具运用能力。