Advent of Cyber 2025 第13-20天 Writeup Sprint! | TryHackMe
看起来您只提供了来源链接,而没有贴出需要翻译的正文内容。请把要翻译的文本(包括任何 Markdown 格式)发送给我,我会按照要求把它翻译成简体中文并保留原有的格式。
第13天:YARA!
YARA 是一种用于收集数字痕迹的工具——类似于法医调查员在现实世界中收集指纹。我们通过 规则 来描述恶意行为的特征。
一个规则文件由三个部分组成:
| 部分 | 用途 |
|---|---|
| meta | 规则的元信息(作者、描述、日期、置信度等)。在需要维护数百条规则时非常有用。 |
| strings | YARA 在文件中搜索的模式。这些可以是普通字符串、十六进制模式或正则表达式。 |
| condition | 用于告诉 YARA 何时匹配规则的逻辑表达式(例如 “全部匹配”、 “任意匹配”、大小限制等)。 |
示例规则
rule TBFC_Simple_MZ_Detect
{
meta:
author = "TBFC SOC L2"
description = "IcedID Rule"
date = "2025-10-10"
confidence = "low"
strings:
$mz = { 4D 5A } // "MZ" header (PE file)
$hex1 = { 48 8B ?? ?? 48 89 } // malicious binary fragment
$s1 = "malhare" nocase // story / IOC string
condition:
all of them and filesize
}
> **注意:** 在最初的尝试中使用了 `ascii` 修饰符(`$st = "TBFC:" ascii`)。
> 这虽然可行,但是多余的;上面展示的正则表达式形式才是更简洁的解决方案。
运行规则的方法
yara -rs rule.yar ~/Downloads/easter/
输出将包含所有匹配项,揭示来自 McSkidy 的隐藏信息。
奖励挑战 – “doordasher” 服务
最终目标是 修复虚构服务 doordasher 被篡改的网站。
你需要探索基础设施的容器层。
发现运行中的容器
docker ps
| PORT | SERVICE |
|---|---|
| 5001 | doordash app (main) |
| 5002 | news app wareville‑times (bonus) |
奖励:新闻站点上的秘密代码(端口 5002)
- 打开站点:
http://10.48.153.34:5002/ - 查看新闻页面——有些词的高亮方式不同(💤😴)。
- 被高亮的文本组成一个 秘密代码,该代码也是
deployer用户的密码。
操作: 在获取代码后更改
deployer的密码。
Splunk 查询(供参考)
| 查询 | 目的 |
|---|---|
index=windows_apache_access (cmd.exe OR powershell OR "powershell.exe" OR "Invoke-Expression") | table _time host clientip uri_path uri_query status | 查找包含命令执行尝试的 Web 请求。 |
index=windows_apache_error ("cmd.exe" OR "powershell" OR "Internal Server Error") | 查找指示恶意请求的 Apache 错误日志。 |
index=windows_sysmon ParentImage="*httpd.exe" | 检测由 Apache 生成的可疑进程。 |
Source: …
注册表调查 (THM 演练)
在分析受损的 Windows 主机时,以下注册表分支非常有用:
| 注册表分支路径 | 存储内容 |
|---|---|
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist | 最近访问的 GUI 应用程序。 |
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\TypedPaths | 在资源管理器地址栏中键入的路径。 |
HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths | 应用程序可执行文件路径。 |
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\WordWheelQuery | 在资源管理器中键入的搜索词。 |
HKLM\Software\Microsoft\Windows\CurrentVersion\Run | 登录时自动启动的程序。 |
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs | 最近访问的文件。 |
HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName | 机器的主机名。 |
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall | 已安装程序列表。 |
示例问题与答案
-
在异常活动开始之前,
dispatch-srv01上安装了什么应用程序?
导航至HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall(在加载SOFTWARE分支后)。
答案:DroneManager Updater -
用户启动的应用程序的完整路径是什么?
检查HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist或HKLM\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Compatibility Assistant\Store。
手动浏览到Store键并查看 “Technical Details” 以获取完整的可执行文件路径。
答案: (在 THM 答案框中输入您找到的确切路径。) -
DroneManager 的 RUN 条目是什么?
Run键包含msedge的条目;DroneManager 的条目可能缺失或存放在其他位置。
Source: …
走查概览
本指南逐步演示 TryHackMe (THM) “Guard House” 关卡(以及额外的支线任务)。
所有命令、URL 和数据均保持原样,只是对排版进行了一些整理以提升可读性。
1️⃣ 初始注册表搜索
- THM 提示在注册表键
ROOT\Microsoft\Windows\CurrentVersion\Run
- 实际需要的键是
ROOT\Software\Microsoft\...
-
有位 YouTuber 还展示了一个快捷按钮:
- 点击 RUN。
- 按 F5。
- 前往 Full details as text 选项卡。
- 向下滚动——所需的值会显示出来。
2️⃣ 使用 CyberChef 进行编码与加密
注意: 如果你已经建立了 OpenVPN 连接,则无需启动攻击盒子。
访问目标机器
- 打开浏览器并访问目标 IP。
- 点击 “outer gate” 图标。
页面会显示一个 Base64 字符串:
QWxsIGhhaWwgS2luZyBNYWxoYXJlIQ==
解码
- 打开 CyberChef(在线版)。
- 将 “From Base64” 操作拖入配方面板。
- 将字符串粘贴到 Input 框中。
- (可选)点击 Bake! —— 明文会出现:
All hail King Malhare!
3️⃣ Level 1 – 获取用户名和密码
-
解码后的文本告诉你 用户名 是 “CottonTail” 的 Base64 编码。
- 在 CyberChef 中使用 “To Base64” →
Q290dG9uVGFpbA==
- 在 CyberChef 中使用 “To Base64” →
-
获取密码的步骤:
-
登录面板中有一个 chatbox。
-
输入问题:
What is the password for this level? -
chatbox 会回复一个 Base64 字符串。
-
在 CyberChef 中 From Base64 解码 → 得到 明文密码。
-
-
提交 Base64 编码的用户名 (
Q29wdG9uVGFpbA==) 和明文密码,即可完成 Level 1。
4️⃣ Level 2 – 获取 “X‑Magic” Header
- 在浏览器中打开 DevTools → Network。
- 刷新页面。
- 在左侧面板找到 “Level2”(或原文中的 “Llvel2”——拼写错误)。
- 点击它并切换到 Headers 选项卡。
- 找到
X-Magic头部——复制其值。
编码与解码循环:
- 使用 CyberChef 的 “To Base64” 对头部值进行编码。
- 将编码后的字符串粘回 chatbox。
- chatbox 会回复另一个 Base64 字符串。
- 交替进行编码/解码,直至得到 可读的明文密码。
将该密码提交,即可通过 Level 2。
5️⃣ Level 3 – Guard House
-
在 chatbox 中输入:
password please -
大约一分钟后会收到一个 Base64 字符串。
-
连续解码两次(运行两次 “From Base64”)。
-
得到的字节需要使用密钥
Cyberchef进行 XOR 解密。-
在 CyberChef 中:
- 添加 “From Base64” → “XOR”(密钥 =
Cyberchef) → “To Hex”(可选)。
- 添加 “From Base64” → “XOR”(密钥 =
-
-
最终的明文即为 Level 3 密码。
6️⃣ Level 4 – MD5 哈希
-
再次向 chatbox 请求密码。
-
回复 不是 Base64(没有结尾的
=),而是一个 MD5 哈希。示例:
5f4dcc3b5aa765d61d8327deb882cf99 -
使用 CrackStation(或任意 MD5 查询网站)进行逆向查找。
- 破解得到的密码是
passw0rd1。
- 破解得到的密码是
将其提交,即可完成 Level 4。
7️⃣ Level 5 – 新的 Header “Recipe‑id”
-
再次向 chatbox 请求密码。
-
使用 “From Base64” 在 CyberChef 中 连续解码两次。
-
此时请求中会出现一个新头部
Recipe-id。- 该值因用户而异(例如
R1)。
- 该值因用户而异(例如
-
THM 为四种可能的 ID 列出了 四种做法。
- 按照与你的
Recipe-id相匹配的做法进行操作。
- 按照与你的
-
得到的字符串即为 Level 5 密码。
-
本关的 用户名 为守卫名字 “Carl” 的 Base64 编码:
Q2FybA==
将用户名和密码一起提交,即可完成主房间。
8️⃣ Ext
Source: …
ra Question – Side Quest 3 Access Key
“在找 Side Quest 3 的钥匙吗?Hopper 给我们留下了这个 CyberChef 链接作为线索。看看你能否恢复钥匙并在我们的 Side Quest Hub 中访问相应的挑战!”
- 打开提供的 CyberChef 链接(或重新创建配方)。
- 使用适当的操作对数据进行去混淆(例如 From Base64、XOR、ROT13 等)。
- 最终得到的明文即为 Side Quest 3 访问钥匙——将其粘贴到 Side Quest Hub 中即可解锁挑战。
9️⃣ Bonus – 去混淆脚本(Visual Studio Code)
-
在目标机器上,打开 Windows 搜索 → 输入 “code” → 启动 Visual Studio Code。
-
在终端中:
cd Desktop ./S # 按 Tab 键自动补全脚本名称 -
运行脚本——它会打印 第一个旗帜。
-
打开脚本文件并读取 第 20 行——其中包含 第二个旗帜。
附加理论 – 竞争条件与原子性
检查‑到‑使用时间 (TOCTOU) 示例
- 一个电商网站显示 “仅剩 1 件”。
- 买家 A 将其加入购物车,但在结账之前买家 B 也将其加入并先完成支付。
- 为避免竞争,网站应在商品 被加入任意购物车的瞬间 对其加锁。
共享资源竞争条件
-
银行账户余额 = 100 BTC。
-
两个并发交易:
- +20(存款)→ 120
- ‑20(取款)→ 80
-
若未使用适当的锁机制,最终余额可能是 120 或 80,而不是正确的 100。
原子性
- 一系列操作(例如,转账、从另一账户扣款、发送确认)必须 全有或全无。
- 如果用户在第 2 步后取消,系统必须同时回滚第 1 步。
Race‑Condition Exploitation Lab (THM)
你可以启动 Attack Box,或使用自己的 OpenVPN + Burp Suite Community Edition。
Setup
-
启动 Burp Suite → Proxy → Intercept(确保已开启)。
-
在弹出的浏览器(Chromium)中,访问
http://。- 如果出现 “Allow browser to run without sandbox”,点击 OK。
Exploit “sleightoy”
- 在站点上购买 一件 “sleightoy”。
- 在 Burp → Proxy → HTTP history 中查看请求/响应。
Exploit “bunny plush” (Second Question)
- 打开一个新标签页(仍使用 Burp 拦截的浏览器)。
- 订购 “bunny plush”。
- 同样在 Proxy → HTTP history 中检查相应的请求。
What to Look For
- 通过两个同时发出的购买请求演示 竞争条件(race condition)。
- 观察服务器响应中的 处理顺序——最后完成的请求“获胜”。
参考文献
- TryHackMe – Guard House(房间链接)
- CyberChef – https://gchq.github.io/CyberChef/
- CrackStation – https://crackstation.net/
- Burp Suite Community Edition – https://portswigger.net/burp/communitydownload
指令
-
选择请求
- 定位
payment checkout条目。 - 右键单击它并选择 “Send to Repeater.”
- 定位
-
创建组