FortinetHunter(@YogSoth0)二进制破解应用。FortinetHunter CTF 的一部分。ELF 门:一个经过剥离的 Nuitka onefile、一个 XOR 混淆的 Argon2id 验证器、AES-GCM 完整性校验。

TUI,用于重新设置“Fortinet Hunter 2026” Nuitka 密码门禁的密钥。属于 @YoSoth0 的夺旗挑战的一部分。 分析文章:Hunting the Fortinet Hunter 0-day
该 ELF 从不在宿主机上运行。GateX 静态解包 onefile 载荷,对经过 XOR 掩码处理的乱序 Argon2id 哈希和 AES-GCM 横幅进行解掩码,重写这些数据块,使 FH_PASS=gatex 同时满足两项校验,然后在锁定加固的 Docker 笼中执行内部二进制文件。
这并不能恢复作者的原始口令。Argon2id(m=65536,t=3,p=4)正在发挥其作用。插件早已编译进内部 ELF;密码只是用于解包一个横幅。
abraxas
7350FH.zip(未随附)该载荷是来自 CTF 的不可信、类似恶意软件的代码。GateX 仅在以下条件下 exec 它:
--platform linux/amd64--network none--read-only + 用于解包的 tmpfs--cap-drop ALL --security-opt no-new-privileges:true65532,2 GiB 内存,1 CPU,256 个 pidsgit clone [email protected]:abraxas/GateX.git
cd GateX
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt
将挑战压缩包(或内部 ELF)放到 GateX 能看到的位置:
mkdir -p files
cp /path/to/7350FH.zip files/7350FH.zip
TUI:
.venv/bin/python -m gatex --target files/7350FH.zip
在 TUI 中:
/probe # 静态 zstd 解包 + 组装 Argon2id 哈希(不执行)
/sandbox up # 启动 Docker,构建 gatex-cage:noble
/bypass # 重新设置密钥为 FH_PASS=gatex 并在笼中执行 list
/cmd --help # 针对已修补的内部 ELF 传入 argv
/cmd --version
/cmd score --ml
无界面模式:
# 解包 + 打印组装后的 argon2id 哈希(无 TUI,不执行)
.venv/bin/python -m gatex --target files/7350FH.zip --probe
# 重新设置密钥 + 在笼中执行 list
.venv/bin/python -m gatex --target files/7350FH.zip --bypass
可选的 --session name 会将状态保存在 ~/.gatex/sessions/ 下(权限模式 0600)。
| 命令 | 作用 |
|---|---|
/help | 命令列表 |
/probe | 静态解包 + 组装 Argon2id 哈希(不执行) |
/bypass [password] | 重新设置门禁数据块密钥(默认 gatex)并在笼中执行 |
/cmd [args…] | 传递给已修补 ELF 的 argv(list、--help、--version、……) |
/sandbox /sandbox up /sandbox down | Docker 状态 / 构建 / 销毁 |
/target <zip|elf> | 切换二进制文件 |
/session name | 切换可复用会话 |
/timeout <seconds> | 笼中执行超时 |
/quit | 保存并退出 |
F1 = 帮助。
KAY + zstd)。内部镜像为 7350FH.bin。BYTES 常量 c + fh-slim-hardened-v2 之前。utf-8(xor(b64decode(ct), cycle(b64decode(key))))。三个片段组装出真正的 PHC。二进制中的明文 Argon2 字符串是 argon2-cffi doctest 的诱饵——忽略它。fh-slim-v2-salt-2026 / fh-slim-v2-core)→ 对 79 字节横幅进行 AES-256-GCM 加密。然后是 cli.main()。漏洞利用并不在密文中。/bypass 写入一个你知道的密码的新 PHC,在 AAD b"fh-slim-hardened-v2"(该字节值,而非磁盘上的 cfh-… 针)下加密一个替换横幅,并以 /opt/fh/7350FH.bin 运行已修补的内部文件,同时设置 LD_LIBRARY_PATH=$ORIGIN。原始内部文件 + FH_PASS=gatex 仍会打印 [!] access denied。这就是该实验。
针对重新设置密钥后的内部文件进行实时 docker exec,linux/amd64,无网络,已丢弃 capabilities,uid 65532。捕获于 2026-08-26。




完整记录:files/evidence/*.txt 和 files/hunter-cli/。
.venv/bin/pip install pytest
.venv/bin/python -m pytest tests/test_offline.py -q
需要 files/7350FH.zip 的补丁/解包测试在该 zip 缺失时会跳过。
为作者许可的 CTF 而编写。不要将其指向你不拥有的系统。GateX 不附带任何漏洞利用代码,也不包含 7350FH 的副本。