QSYRUPWD 背后的密码:重构 IBM i 哈希
The Cipher Behind Qsyrupwd: Reconstructing IBM i Password Hashes

在一次 IBM i 渗透测试中,我发现当系统值 QPWDLVL 设为 2 时,QSYRUPWD API 返回的密码数据格式与 John the Ripper 的现有破解模块不兼容。这导致即使拥有 *ALLOBJ 和 *SECADM 权限,也无法直接进行密码强度测试。为了揭开真相,我编写了 CL 程序调用该 API,并利用 STRTRC 工具追踪调用链,最终定位到涉及 qsy_cipher 和 qsy_aes_decrypt 的加密逻辑。通过 System Service Tools (SST) 对底层汇编代码进行反汇编,我确认系统通过 SCV 10 指令将敏感操作委托给底层 LIC 模块处理。本文详细记录了从发现异常到逆向分析 IBM i 内部加密机制的全过程。
QPWDLVL 2 到 4 级别下,QSYRUPWD 返回的内容发生了变化,导致无法直接使用现有的 John the Ripper IBM i 格式进行破解。