Advent of Cyber 2025 第13-20天 Writeup Sprint! | TryHackMe

发布: (2026年1月2日 GMT+8 19:29)
12 min read
原文: Dev.to

看起来您只提供了来源链接,而没有贴出需要翻译的正文内容。请把要翻译的文本(包括任何 Markdown 格式)发送给我,我会按照要求把它翻译成简体中文并保留原有的格式。

第13天:YARA!

YARA 是一种用于收集数字痕迹的工具——类似于法医调查员在现实世界中收集指纹。我们通过 规则 来描述恶意行为的特征。

一个规则文件由三个部分组成:

部分用途
meta规则的元信息(作者、描述、日期、置信度等)。在需要维护数百条规则时非常有用。
stringsYARA 在文件中搜索的模式。这些可以是普通字符串、十六进制模式或正则表达式。
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
PORTSERVICE
5001doordash app (main)
5002news app wareville‑times (bonus)

奖励:新闻站点上的秘密代码(端口 5002)

  1. 打开站点:http://10.48.153.34:5002/
  2. 查看新闻页面——有些词的高亮方式不同(💤😴)。
  3. 被高亮的文本组成一个 秘密代码,该代码也是 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已安装程序列表。

示例问题与答案

  1. 在异常活动开始之前,dispatch-srv01 上安装了什么应用程序?
    导航至 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall(在加载 SOFTWARE 分支后)。
    答案: DroneManager Updater

  2. 用户启动的应用程序的完整路径是什么?
    检查 HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist HKLM\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Compatibility Assistant\Store
    手动浏览到 Store 键并查看 “Technical Details” 以获取完整的可执行文件路径。
    答案: (在 THM 答案框中输入您找到的确切路径。)

  3. DroneManager 的 RUN 条目是什么?
    Run 键包含 msedge 的条目;DroneManager 的条目可能缺失或存放在其他位置。

Source:

走查概览

本指南逐步演示 TryHackMe (THM) “Guard House” 关卡(以及额外的支线任务)。
所有命令、URL 和数据均保持原样,只是对排版进行了一些整理以提升可读性。

1️⃣ 初始注册表搜索

  • THM 提示在注册表键
ROOT\Microsoft\Windows\CurrentVersion\Run
  • 实际需要的键是
ROOT\Software\Microsoft\...
  • 有位 YouTuber 还展示了一个快捷按钮:

    1. 点击 RUN
    2. F5
    3. 前往 Full details as text 选项卡。
    4. 向下滚动——所需的值会显示出来。

2️⃣ 使用 CyberChef 进行编码与加密

注意: 如果你已经建立了 OpenVPN 连接,则无需启动攻击盒子。

访问目标机器

  1. 打开浏览器并访问目标 IP。
  2. 点击 “outer gate” 图标。

页面会显示一个 Base64 字符串:

QWxsIGhhaWwgS2luZyBNYWxoYXJlIQ==

解码

  1. 打开 CyberChef(在线版)。
  2. “From Base64” 操作拖入配方面板。
  3. 将字符串粘贴到 Input 框中。
  4. (可选)点击 Bake! —— 明文会出现:
All hail King Malhare!

3️⃣ Level 1 – 获取用户名和密码

  1. 解码后的文本告诉你 用户名“CottonTail” 的 Base64 编码。

    • 在 CyberChef 中使用 “To Base64”Q290dG9uVGFpbA==
  2. 获取密码的步骤:

    • 登录面板中有一个 chatbox

    • 输入问题:

      What is the password for this level?
    • chatbox 会回复一个 Base64 字符串。

    • 在 CyberChef 中 From Base64 解码 → 得到 明文密码

  3. 提交 Base64 编码的用户名 (Q29wdG9uVGFpbA==) 和明文密码,即可完成 Level 1

4️⃣ Level 2 – 获取 “X‑Magic” Header

  1. 在浏览器中打开 DevTools → Network
  2. 刷新页面。
  3. 在左侧面板找到 “Level2”(或原文中的 “Llvel2”——拼写错误)。
  4. 点击它并切换到 Headers 选项卡。
  5. 找到 X-Magic 头部——复制其值。

编码与解码循环:

  • 使用 CyberChef 的 “To Base64” 对头部值进行编码。
  • 将编码后的字符串粘回 chatbox。
  • chatbox 会回复另一个 Base64 字符串。
  • 交替进行编码/解码,直至得到 可读的明文密码

将该密码提交,即可通过 Level 2

5️⃣ Level 3 – Guard House

  1. 在 chatbox 中输入:

    password please
  2. 大约一分钟后会收到一个 Base64 字符串。

  3. 连续解码两次(运行两次 “From Base64”)。

  4. 得到的字节需要使用密钥 Cyberchef 进行 XOR 解密。

    • 在 CyberChef 中:

      • 添加 “From Base64”“XOR”(密钥 = Cyberchef) → “To Hex”(可选)。
  5. 最终的明文即为 Level 3 密码

6️⃣ Level 4 – MD5 哈希

  1. 再次向 chatbox 请求密码。

  2. 回复 不是 Base64(没有结尾的 =),而是一个 MD5 哈希

    示例:

    5f4dcc3b5aa765d61d8327deb882cf99
  3. 使用 CrackStation(或任意 MD5 查询网站)进行逆向查找。

    • 破解得到的密码是 passw0rd1

将其提交,即可完成 Level 4

7️⃣ Level 5 – 新的 Header “Recipe‑id”

  1. 再次向 chatbox 请求密码。

  2. 使用 “From Base64” 在 CyberChef 中 连续解码两次

  3. 此时请求中会出现一个新头部 Recipe-id

    • 该值因用户而异(例如 R1)。
  4. THM 为四种可能的 ID 列出了 四种做法

    • 按照与你的 Recipe-id 相匹配的做法进行操作。
  5. 得到的字符串即为 Level 5 密码

  6. 本关的 用户名 为守卫名字 “Carl” 的 Base64 编码:

    Q2FybA==

将用户名和密码一起提交,即可完成主房间。

8️⃣ Ext

Source:

ra Question – Side Quest 3 Access Key

“在找 Side Quest 3 的钥匙吗?Hopper 给我们留下了这个 CyberChef 链接作为线索。看看你能否恢复钥匙并在我们的 Side Quest Hub 中访问相应的挑战!”

  1. 打开提供的 CyberChef 链接(或重新创建配方)。
  2. 使用适当的操作对数据进行去混淆(例如 From Base64XORROT13 等)。
  3. 最终得到的明文即为 Side Quest 3 访问钥匙——将其粘贴到 Side Quest Hub 中即可解锁挑战。

9️⃣ Bonus – 去混淆脚本(Visual Studio Code)

  1. 在目标机器上,打开 Windows 搜索 → 输入 “code” → 启动 Visual Studio Code

  2. 在终端中:

    cd Desktop
    ./S   # 按 Tab 键自动补全脚本名称
  3. 运行脚本——它会打印 第一个旗帜

  4. 打开脚本文件并读取 第 20 行——其中包含 第二个旗帜

附加理论 – 竞争条件与原子性

检查‑到‑使用时间 (TOCTOU) 示例

  • 一个电商网站显示 “仅剩 1 件”。
  • 买家 A 将其加入购物车,但在结账之前买家 B 也将其加入并先完成支付。
  • 为避免竞争,网站应在商品 被加入任意购物车的瞬间 对其加锁。

共享资源竞争条件

  • 银行账户余额 = 100 BTC

  • 两个并发交易:

    1. +20(存款)→ 120
    2. ‑20(取款)→ 80
  • 若未使用适当的锁机制,最终余额可能是 120 或 80,而不是正确的 100

原子性

  • 一系列操作(例如,转账、从另一账户扣款、发送确认)必须 全有或全无
  • 如果用户在第 2 步后取消,系统必须同时回滚第 1 步。

Race‑Condition Exploitation Lab (THM)

你可以启动 Attack Box,或使用自己的 OpenVPN + Burp Suite Community Edition

Setup

  1. 启动 Burp Suite → Proxy → Intercept(确保已开启)。

  2. 在弹出的浏览器(Chromium)中,访问 http://

    • 如果出现 “Allow browser to run without sandbox”,点击 OK

Exploit “sleightoy”

  1. 在站点上购买 一件 “sleightoy”
  2. 在 Burp → Proxy → HTTP history 中查看请求/响应。

Exploit “bunny plush” (Second Question)

  1. 打开一个新标签页(仍使用 Burp 拦截的浏览器)。
  2. 订购 “bunny plush”
  3. 同样在 Proxy → HTTP history 中检查相应的请求。

What to Look For

  • 通过两个同时发出的购买请求演示 竞争条件(race condition)
  • 观察服务器响应中的 处理顺序——最后完成的请求“获胜”。

参考文献


指令

  1. 选择请求

    • 定位 payment checkout 条目。
    • 右键单击它并选择 “Send to Repeater.”
  2. 创建组

Back to Blog

相关文章

阅读更多 »

没人再知道发生了什么

封面图片:Nobody Knows What's Happening Anymore https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2...

范围管理并非微观管理

混淆:两者都涉及约束 AI,并且感觉像是“给指令”,因此很容易混为一谈。但它们本质上是不同的。| Micromanage…