不常见的内存与流量取证 -- 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. 流量分析
-
初始流量观察:
- 流量中首先出现QUIC加密流量
- 随后是HTTP流量,GET请求获取flag并升级到WebSocket协议
- WebSocket流量中第一个包包含明文"flag",后续包为加密内容
-
WebSocket流量提取:
cat tc.json | jq '.[]._source.layers."data-text-lines"' | awk "NR % 3 == 2" | cut -d "\"" -f 2得到加密数据:
SlAZT80ZTIXZTIcZSl9ZSlTZT80ZTIXZTIwC Sx0ZTf1ZTIuZSx0ZSluZSthZTf1ZTIuZSxnC ...
2. 内存分析
-
Autopsy基本操作:
- 创建案件(Case)
- 添加受害者信息(Host)
- 以链接方式导入内存镜像
-
搜索假flag:
- 搜索字符串"WMCTF{"找到假flag和相关代码
- 发现服务端Go代码片段,包含部分flag:
var f1ags = "WMCTF{WebSOcket_And"
-
关键代码搜索:
- 搜索"websocket"和"key"关键字
- 发现HTTP3服务端代码,包含flag后半部分:
fmt.Fprintf(w, "_HTTP3_1s_C000L}\n") - 发现TLS证书和私钥文件内容
-
定位加密逻辑:
- 搜索"_keyStr"找到客户端JavaScript加密代码
- 内存编号987382附近找到完整加密逻辑
3. 加密算法分析
-
加密流程:
- 服务端发送flag字符
- 客户端对每个字符进行以下处理:
function encrypto(str, xor, hex) { // 异或加密 charCode = (charCode * 1) ^ xor; // 进制转换 charCode = charCode.toString(hex); // 特殊分隔符连接 splitStr = String.fromCharCode(hex + 97); return resultList.join(splitStr); } - 最后进行Base64变种编码
-
解密算法实现:
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(""); } -
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}
完整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等命令行工具的数据处理
这道题目展示了综合取证分析的典型流程,强调了在面对非常规取证场景时的灵活思维和工具运用能力。