GHCTF 2025 Misc 流量分析与取证
字数 4332 2025-08-29 08:30:12

GHCTF 2025 流量分析与取证详解教学文档

1. mypcap 题目解析

1.1 题目概述

  • 题目文件:mypcap
  • 包含三小问:
    1. 被害者主机开放了哪些端口?
    2. 数据库密码是什么?
    3. 攻击者找到的重要数据是什么?

1.2 问题1:开放端口分析

分析方法:

  1. 在Wireshark中过滤TCP握手过程
  2. 查找目标主机回复的SYN+ACK数据包
  3. 识别TCP标志位:SYN=1, ACK=1

步骤详解:

  1. 使用Wireshark打开pcap文件
  2. 应用过滤器:tcp.flags.syn == 1 and tcp.flags.ack == 1
  3. 统计所有目标端口号
  4. 去除重复端口并按从小到大排序

答案: 22,3306,8080

1.3 问题2:数据库密码获取

分析流程:

  1. 检查HTTP对象列表(Wireshark: 文件 → 导出对象 → HTTP)
  2. 发现multipart/form-data类型的文件
  3. 导出t3st.war文件
  4. 使用7z解压得到index.jsp

技术要点:

  • multipart/form-data是HTTP中用于文件上传的编码类型
  • 文件分析:
    • 识别出冰蝎(Behinder)Java webshell
    • 获取AES密钥:8a1e94c07e3fb7d5
    • 使用AES ECB模式解密class文件
    • 使用jadx反编译解密后的class文件
    • 解密base64编码内容

答案: mysql password is n1cep4Ss

1.4 问题3:重要数据查找

分析步骤:

  1. 追踪TCP流(流编号2038)
  2. 查找SQL查询命令
  3. 发现关键查询:SELECT * FROM data
  4. 在全流量中搜索相关数据

答案: Th1s_1s_Imp0Rt4Nt_D4Ta

1.5 最终flag生成

将三问答案输入提供的Python脚本mypcap-flag.py运行得到:
NSSCTF{703663c4-1ff1-4c51-83b8-0f4303e82659}

2. mydisk-1 题目解析

2.1 题目概述

  • 磁盘镜像分析
  • 三小问:
    1. mrl64的登录密码
    2. 定时任务详情
    3. 邮件中的flag

2.2 问题1:登录密码获取

分析方法:

  1. 使用FTK Imager挂载磁盘镜像
  2. 查看/etc/shadow文件
  3. 使用John the Ripper爆破密码

技术细节:

  • 密码爆破:
    • 使用rockyou.txt字典
    • 修改shadow文件格式为John可识别
    • 命令:john --wordlist=rockyou.txt shadow.txt

答案: 密码在rockyou.txt中较靠后位置

2.3 问题2:定时任务分析

分析步骤:

  1. 查看/etc/crontab文件
  2. 分析定时任务格式:
    */2 * * * * root /usr/bin/python3 /usr/local/share/xml/entities/a.py
    
  3. 检查a.py脚本内容

crontab字段解释:

  • */2:每2分钟执行
  • *:每小时、每天、每月、每周
  • root:执行用户
  • 命令:执行Python脚本

答案: 120_http://192.168.252.1:8000 (120秒即2分钟)

2.4 问题3:邮件flag获取

分析流程:

  1. 检查用户目录:/home/l0v3miku
  2. 发现Foxmail相关文件:
    • remember.txt
    • Foxmail.desktop
  3. 分析Wine环境下的Foxmail配置:
    • 路径:/.wine
    • 关键文件:
      • Storage文件夹(邮件数据)
      • FMStorage.list(配置文件)
  4. 密码爆破:
    • 掩码:nmi3SDQ2****
    • 爆破得到:nmi3SDQ22580

答案: th3_TExt_n0w_YOU_kn0w!

2.6 最终flag生成

输入mydisk-flag1.py得到:
NSSCTF{88f96978-ec64-4255-8df7-43e5ec9c9b6e}

3. mydisk-2 题目解析

3.1 题目概述

  • 另一个磁盘镜像分析
  • 三小问:
    1. 系统名称
    2. ctfshow账号密码
    3. Docker容器中的重要信息

3.2 问题1:系统名称

分析方法:

  • 查看/etc/issue文件
  • 该文件通常包含操作系统发行版信息

答案: Linux Mint 22.1 Xia

3.3 问题2:ctfshow账号密码

分析步骤:

  1. 定位Firefox配置文件:
    • /home/l0v3miku/.mozilla/firefox/spk3lcsa.default-release
  2. 关键文件:
    • logins.json(存储加密的登录凭据)
    • key4.db(存储解密密钥)
  3. 使用firepwd工具解密:
    • GitHub项目:https://github.com/lclevy/firepwd

答案: l0v3Miku/mrl64_love_miku

3.4 问题3:Docker容器信息

分析方法:

  1. Docker容器存储路径:
    • /var/lib/docker/containers/
  2. 查看配置文件:
    • config.v2.json
  3. 使用工具美化JSON:
    • CyberChef的JSON Beautify功能

答案: Y0U_FouNd_mE!

3.5 最终flag生成

输入mydisk-flag2.py得到:
NSSCTF{085edba8-dd9d-4758-a90c-14c6816b5077}

4. mymem-1 题目解析

4.1 题目概述

  • 内存取证分析
  • 三小问:
    1. 下载文件中的pass1
    2. 画图软件中的pass2
    3. 系统产品ID

4.2 问题1:pass1获取

分析流程:

  1. 检查浏览器下载记录
  2. 发现可疑文件:rWFA8Xcd.py
  3. 使用Volatility工具:
    • filescan获取文件偏移
    • 使用dump或R-Studio恢复文件
  4. 分析文件内容:
    • 涉及RSA加密
    • 使用mimikatz获取password
    • 解密AES

答案: OK_p4ss1_y0u_G3T_1t_n0w

4.3 问题2:画图软件中的pass2

分析方法:

  1. 定位画图软件进程:
    • mspaint.exe
  2. 使用Volatility dump进程内存
  3. 分析内存文件:
    • 修改后缀为.data
    • 使用GIMP打开
    • 调整参数:
      • 分辨率:1280x720
      • 垂直翻转图像

答案: OHHHH_y0u_c4n_s3e_MY_P@ss2

4.4 问题3:产品ID获取

分析步骤:

  1. Windows产品ID存储位置:
    • 注册表路径:SOFTWARE\Microsoft\Windows NT\CurrentVersion
  2. 使用Volatility:
    • hivelist查看注册表配置单元
    • printkey打印注册表键值
  3. 或使用注册表查看器(WinRegEdit)分析dump文件

答案: 00371-220-0367543-86165

4.5 最终flag生成

输入mymem-flag1.py得到:
NSSCTF{101e5799-55e8-42c9-b58a-5f1d30039126}

5. mymem-2 题目解析

5.1 题目概述

  • 高级内存取证
  • 三小问:
    1. 可疑进程的物理偏移
    2. 进程运行次数和焦点时间
    3. 进程的PoolTag

5.2 问题1:进程物理偏移

分析方法:

  1. 使用Volatility:
    • pslist查看进程列表(显示虚拟偏移)
    • psxview查看物理偏移
  2. 识别可疑进程:
    • 使用AI辅助识别(如mal.exe

答案: 0x000000007fca3820

5.3 问题2:进程运行统计

分析方法:

  1. 使用UserAssist功能:
    • Windows跟踪用户运行程序频率和时间
  2. Volatility命令:
    • userassist查看程序运行记录

答案: 2_0:00:00.546000 (运行2次,总焦点时间546ms)

5.4 问题3:PoolTag识别

高级分析技术:

  1. 内存结构分析:
    • pool_header: 0x10字节
    • optional_header: 可变长度
    • object_header: 0x30字节
    • object_body: 对象本身大小
  2. 计算步骤:
    • 从地址减去0x30获取optional_header
    • 根据InfoMask值确定header类型
    • 减去0x10考虑内存对齐
    • 最终减去0x60获取pool_header
  3. 小端序转换

答案: Pro\xe3

5.5 最终flag生成

输入mymem-flag2.py得到:
NSSCTF{fc3778a7-0eed-4735-8a31-450635f075f4}

6. 关键工具总结

工具名称 用途
Wireshark 流量分析、HTTP对象导出
FTK Imager 磁盘镜像挂载与分析
John the Ripper 密码爆破
Volatility 内存取证分析
firepwd Firefox密码解密
jadx Java反编译
GIMP 图像分析
CyberChef 数据解码与转换
R-Studio 数据恢复

7. 关键知识点总结

  1. 端口扫描识别:通过SYN+ACK包识别开放端口
  2. Webshell分析:冰蝎(Behinder)的特征与解密
  3. Linux系统取证
    • /etc/shadow密码分析
    • crontab定时任务分析
    • Firefox密码存储位置
  4. Docker取证:/var/lib/docker/containers/结构
  5. Windows内存取证
    • 进程内存dump与分析
    • UserAssist记录分析
    • PoolTag内存结构
  6. 注册表分析:Windows产品ID存储位置
  7. 加密数据解密:AES、RSA等加密算法分析

8. 完整Flag汇总

  1. mypcap: NSSCTF{703663c4-1ff1-4c51-83b8-0f4303e82659}
  2. mydisk-1: NSSCTF{88f96978-ec64-4255-8df7-43e5ec9c9b6e}
  3. mydisk-2: NSSCTF{085edba8-dd9d-4758-a90c-14c6816b5077}
  4. mymem-1: NSSCTF{101e5799-55e8-42c9-b58a-5f1d30039126}
  5. mymem-2: NSSCTF{fc3778a7-0eed-4735-8a31-450635f075f4}
GHCTF 2025 流量分析与取证详解教学文档 1. mypcap 题目解析 1.1 题目概述 题目文件:mypcap 包含三小问: 被害者主机开放了哪些端口? 数据库密码是什么? 攻击者找到的重要数据是什么? 1.2 问题1:开放端口分析 分析方法: 在Wireshark中过滤TCP握手过程 查找目标主机回复的SYN+ACK数据包 识别TCP标志位:SYN=1, ACK=1 步骤详解: 使用Wireshark打开pcap文件 应用过滤器: tcp.flags.syn == 1 and tcp.flags.ack == 1 统计所有目标端口号 去除重复端口并按从小到大排序 答案: 22,3306,8080 1.3 问题2:数据库密码获取 分析流程: 检查HTTP对象列表(Wireshark: 文件 → 导出对象 → HTTP) 发现multipart/form-data类型的文件 导出t3st.war文件 使用7z解压得到index.jsp 技术要点: multipart/form-data是HTTP中用于文件上传的编码类型 文件分析: 识别出冰蝎(Behinder)Java webshell 获取AES密钥: 8a1e94c07e3fb7d5 使用AES ECB模式解密class文件 使用jadx反编译解密后的class文件 解密base64编码内容 答案: mysql password is n1cep4Ss 1.4 问题3:重要数据查找 分析步骤: 追踪TCP流(流编号2038) 查找SQL查询命令 发现关键查询: SELECT * FROM data 在全流量中搜索相关数据 答案: Th1s_1s_Imp0Rt4Nt_D4Ta 1.5 最终flag生成 将三问答案输入提供的Python脚本 mypcap-flag.py 运行得到: NSSCTF{703663c4-1ff1-4c51-83b8-0f4303e82659} 2. mydisk-1 题目解析 2.1 题目概述 磁盘镜像分析 三小问: mrl64的登录密码 定时任务详情 邮件中的flag 2.2 问题1:登录密码获取 分析方法: 使用FTK Imager挂载磁盘镜像 查看/etc/shadow文件 使用John the Ripper爆破密码 技术细节: 密码爆破: 使用rockyou.txt字典 修改shadow文件格式为John可识别 命令: john --wordlist=rockyou.txt shadow.txt 答案: 密码在rockyou.txt中较靠后位置 2.3 问题2:定时任务分析 分析步骤: 查看/etc/crontab文件 分析定时任务格式: 检查a.py脚本内容 crontab字段解释: */2 :每2分钟执行 * :每小时、每天、每月、每周 root :执行用户 命令:执行Python脚本 答案: 120_http://192.168.252.1:8000 (120秒即2分钟) 2.4 问题3:邮件flag获取 分析流程: 检查用户目录: /home/l0v3miku 发现Foxmail相关文件: remember.txt Foxmail.desktop 分析Wine环境下的Foxmail配置: 路径: /.wine 关键文件: Storage文件夹(邮件数据) FMStorage.list(配置文件) 密码爆破: 掩码: nmi3SDQ2**** 爆破得到: nmi3SDQ22580 答案: th3_TExt_n0w_YOU_kn0w! 2.6 最终flag生成 输入 mydisk-flag1.py 得到: NSSCTF{88f96978-ec64-4255-8df7-43e5ec9c9b6e} 3. mydisk-2 题目解析 3.1 题目概述 另一个磁盘镜像分析 三小问: 系统名称 ctfshow账号密码 Docker容器中的重要信息 3.2 问题1:系统名称 分析方法: 查看/etc/issue文件 该文件通常包含操作系统发行版信息 答案: Linux Mint 22.1 Xia 3.3 问题2:ctfshow账号密码 分析步骤: 定位Firefox配置文件: /home/l0v3miku/.mozilla/firefox/spk3lcsa.default-release 关键文件: logins.json(存储加密的登录凭据) key4.db(存储解密密钥) 使用firepwd工具解密: GitHub项目:https://github.com/lclevy/firepwd 答案: l0v3Miku/mrl64_love_miku 3.4 问题3:Docker容器信息 分析方法: Docker容器存储路径: /var/lib/docker/containers/ 查看配置文件: config.v2.json 使用工具美化JSON: CyberChef的JSON Beautify功能 答案: Y0U_FouNd_mE! 3.5 最终flag生成 输入 mydisk-flag2.py 得到: NSSCTF{085edba8-dd9d-4758-a90c-14c6816b5077} 4. mymem-1 题目解析 4.1 题目概述 内存取证分析 三小问: 下载文件中的pass1 画图软件中的pass2 系统产品ID 4.2 问题1:pass1获取 分析流程: 检查浏览器下载记录 发现可疑文件: rWFA8Xcd.py 使用Volatility工具: filescan 获取文件偏移 使用 dump 或R-Studio恢复文件 分析文件内容: 涉及RSA加密 使用mimikatz获取password 解密AES 答案: OK_p4ss1_y0u_G3T_1t_n0w 4.3 问题2:画图软件中的pass2 分析方法: 定位画图软件进程: mspaint.exe 使用Volatility dump进程内存 分析内存文件: 修改后缀为.data 使用GIMP打开 调整参数: 分辨率:1280x720 垂直翻转图像 答案: OHHHH_y0u_c4n_s3e_MY_P@ss2 4.4 问题3:产品ID获取 分析步骤: Windows产品ID存储位置: 注册表路径: SOFTWARE\Microsoft\Windows NT\CurrentVersion 使用Volatility: hivelist 查看注册表配置单元 printkey 打印注册表键值 或使用注册表查看器(WinRegEdit)分析dump文件 答案: 00371-220-0367543-86165 4.5 最终flag生成 输入 mymem-flag1.py 得到: NSSCTF{101e5799-55e8-42c9-b58a-5f1d30039126} 5. mymem-2 题目解析 5.1 题目概述 高级内存取证 三小问: 可疑进程的物理偏移 进程运行次数和焦点时间 进程的PoolTag 5.2 问题1:进程物理偏移 分析方法: 使用Volatility: pslist 查看进程列表(显示虚拟偏移) psxview 查看物理偏移 识别可疑进程: 使用AI辅助识别(如 mal.exe ) 答案: 0x000000007fca3820 5.3 问题2:进程运行统计 分析方法: 使用UserAssist功能: Windows跟踪用户运行程序频率和时间 Volatility命令: userassist 查看程序运行记录 答案: 2_0:00:00.546000 (运行2次,总焦点时间546ms) 5.4 问题3:PoolTag识别 高级分析技术: 内存结构分析: pool_ header: 0x10字节 optional_ header: 可变长度 object_ header: 0x30字节 object_ body: 对象本身大小 计算步骤: 从地址减去0x30获取optional_ header 根据InfoMask值确定header类型 减去0x10考虑内存对齐 最终减去0x60获取pool_ header 小端序转换 答案: Pro\xe3 5.5 最终flag生成 输入 mymem-flag2.py 得到: NSSCTF{fc3778a7-0eed-4735-8a31-450635f075f4} 6. 关键工具总结 | 工具名称 | 用途 | |---------|------| | Wireshark | 流量分析、HTTP对象导出 | | FTK Imager | 磁盘镜像挂载与分析 | | John the Ripper | 密码爆破 | | Volatility | 内存取证分析 | | firepwd | Firefox密码解密 | | jadx | Java反编译 | | GIMP | 图像分析 | | CyberChef | 数据解码与转换 | | R-Studio | 数据恢复 | 7. 关键知识点总结 端口扫描识别 :通过SYN+ACK包识别开放端口 Webshell分析 :冰蝎(Behinder)的特征与解密 Linux系统取证 : /etc/shadow密码分析 crontab定时任务分析 Firefox密码存储位置 Docker取证 :/var/lib/docker/containers/结构 Windows内存取证 : 进程内存dump与分析 UserAssist记录分析 PoolTag内存结构 注册表分析 :Windows产品ID存储位置 加密数据解密 :AES、RSA等加密算法分析 8. 完整Flag汇总 mypcap: NSSCTF{703663c4-1ff1-4c51-83b8-0f4303e82659} mydisk-1: NSSCTF{88f96978-ec64-4255-8df7-43e5ec9c9b6e} mydisk-2: NSSCTF{085edba8-dd9d-4758-a90c-14c6816b5077} mymem-1: NSSCTF{101e5799-55e8-42c9-b58a-5f1d30039126} mymem-2: NSSCTF{fc3778a7-0eed-4735-8a31-450635f075f4}