HackerRank7/pwn-diaries
GitHub: HackerRank7/pwn-diaries
记录在 TryHackMe、HackTheBox 等平台上完成的网络安全挑战详细解题过程,涵盖网络取证、Web 利用与权限提升。
Stars: 0 | Forks: 0
# 精简打包 — TryHackMe (HackerHolidays)
  
## 📌 概述
- **平台:** TryHackMe — HackerHolidays 活动
- **难度:** 简单
- **分类:** 取证 / PCAP 分析 / 密码学
- **积分:** 60
**场景:** 一段来自酒店客户网络的简短数据包捕获显示了体积很小且规律性可疑的出站数据包——就像数据被伪装成微小碎片被偷偷运出一样。任务是找到这个隐蔽通道,重组隐藏数据,对其进行解码,并恢复出 flag。
**攻击路径总结:** 一个在客户机器上运行的恶意 Python 脚本 (`updates.py`),每次将 flag 逐字进行 XOR + Base64 编码,并将其隐藏在循环发送至外部服务器 8080 端口的 HTTP `Cookie` 请求头 (`hotel_sess_state`) 中。
## 🔍 初步分析 (Wireshark)
在 Wireshark 中打开了 `traffic.pcapng`。发现在客户机主机 `192.168.1.141` 与外部 IP `34.41.103.191` 之间存在大量重复的小型 `8080` 端口 TCP 连接,并伴随着 `127.0.0.1` 上的本地回环噪声。
📸 *(显示重复的 8080 连接和回环流量的数据包列表)*
## 📂 寻找释放的脚本
进入 **File → Export Objects → HTTP** 列出捕获文件中通过 HTTP 传输的每一个文件。
发现了一个可疑文件:
| 数据包 | 主机名 | 内容类型 | 大小 | 文件名 |
|--------|----------|--------------|------|----------|
| 19 | byte-lotus-hotel.thm:8080 | text/x-python | 1,086 字节 | `updates.py` |
这立刻引起了注意——提供/传输一个 `.py` 文件不是酒店网络服务通常会做的事。将其导出并阅读后,证实了这是一个读取密钥、将其分块进行 XOR + Base64 编码,并将每个数据块伪装成会话 Cookie 发送出去的脚本。
📸 *(突出显示 updates.py 的导出对象列表)*
## 🍪 提取隐蔽通道 (Cookie 数据外发)
专门过滤了携带外发数据 Cookie 的出站请求:
```
tshark -r traffic.pcapng -Y 'tcp.port == 8080 && http.request && http.cookie' -T fields -e http.cookie
```
每个 HTTP 请求都返回了一个 `hotel_sess_state=` Cookie——每一个都是编码数据的一个独立小块,并在循环中发送。
📸 *(Wireshark 过滤器 tcp.port==8080 && http.request && http.cookie 显示了重复的 GET / 请求)*
## 🧩 清理与重组数据
剥离了 `hotel_sess_state=` 前缀,并将所有数据块拼接成了一个单一的 Base64 数据块:
```
tshark -r traffic.pcapng -Y 'tcp.port == 8080 && http.request && http.cookie' -T fields -e http.cookie \
| sed 's/^hotel_sess_state=//' \
| tr -d '\n'
```
**重组后的 Base64 字符串:**
```
HA==AA==BQ==Mw==Hg==ew==Og==fA==Fw==eQ==Ow==Fw==Pw==fA==PA==Kw==IA==eQ==Jg==Lw==Fw==eA==Pg==LQ==Gg==Fw==MQ==eA==PQ==NQ==
```
## 🔓 解码 (CyberChef)
由于 `updates.py` 在进行 Base64 编码之前对数据进行了 XOR 编码,因此在 CyberChef 中的操作步骤需要分为两步:
1. **From Base64** (字母表: `A-Za-z0-9+/=`,移除非字母表字符)
2. **XOR** — 密钥: `H` (UTF8),标准方案
对重组后的字符串应用此步骤,最终揭示了明文形式的 flag。
📸 *(CyberChef 步骤: From Base64 → 使用密钥 'H' 进行 XOR,输出显示了 flag)*
## 🏁 Flag
```
THM{V3r4_1s_w4tch1ng_0veR_y0u}
```
## 🧠 关键学习点
- 隐蔽数据外发通道并不总是需要自定义协议——滥用常见的、容易被忽略的 HTTP 请求头(如 `Cookie`),并配合微小、“看起来枯燥”的重复请求,是一种简单但有效的明文隐藏数据的方法。
- Wireshark 中的 **Export Objects (HTTP)** 是一种发现异常文件传输(如 `.py` 脚本)隐藏在看似正常流量中的快速方法。
- 将 `tshark` 字段提取与基础 Unix 文本工具(`sed`、`tr`)结合使用,是在将其送入解码器之前提取并重组分散数据的高效方法。
- 识别双重编码方案(先 XOR **再** Base64)是关键——仅解码外层(Base64)是不够的;你必须以正确的顺序逆转每一层。
## 🛠️ 使用的工具
`Wireshark` `tshark` `sed` `tr` `CyberChef`
## 🔗 参考
- [Packed Light — TryHackMe HackerHolidays](https://tryhackme.com/room/packedlight)
标签:DNS 反向解析, Wireshark, Writeup, 协议分析, 句柄查看, 应用安全, 权限提升, 网络安全, 逆向工具, 防御加固, 隐私保护