ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

TrollStore 构建前置:用 Victim/make_cert.sh 生成与目标 App 同 Team ID 的开发者证书

TrollStore 构建前置:用 Victim/make_cert.sh 生成与目标 App 同 Team ID 的开发者证书 应用安全【免费下载链接】TrollStoreJailed iOS app that can install IPAs permanently with arbitary entitlements and root helpers because it trolls Apple项目地址https://gitcode.com/GitHub_Trending/tr/TrollStore点击查看免费下载TrollStore 是一个可永久安装 IPA、并附带任意 entitlements 与 root helper 的 Jailed iOS 应用。在其构建流程中生成 pwned被植入持久化工具链的 TrollHelperOTA arm64 IPA 时需要一个与你所选 victim受害者应用相同 Team ID 的开发者证书。本文以仓库中 Victim/README.md 为线索完整讲解这一证书的用途、./make_cert.sh TEAM_ID的用法并结合 Victim/make_cert.sh 逐行剖析其底层证书链构建逻辑说明产物victim.p12如何被 Makefile 的 IPA 组装流程与 fastPathSign 的 CoreTrust 绕过机制所消费。一、为什么需要 Victim 证书同 Team ID 是整套流程的前提Victim/README.md 开宗明义In order to compile a pwned TrollHelperOTA arm64 IPA, you need to provide a dev cert with the same team ID as your victim app in this directory.也就是说如果你希望以某个已在 App Store 上架的 App即 victim app作为载体来构建 TrollHelper 安装包那么本目录Victim/中必须预先放置一份与该 victim app 具有相同 Team ID的开发者证书。这一要求的深层原因可以在 Exploits/fastPathSign/src/coretrust_bug.c 的绕过逻辑中找到当 fastPathSign 将 App Store 签名结构移植到目标二进制时会从 App Store CodeDirectory 中提取 Team ID并强制要求真实 CodeDirectory 与它保持一致// For the bypass to work, both code directories need to have the same team ID char *appStoreTeamID csd_code_directory_copy_team_id(appStoreCodeDirectoryBlob, NULL); ... if (csd_code_directory_set_team_id(realCodeDirBlob, appStoreTeamID) ! 0) {可见Team ID 匹配是整个 CoreTrust 校验绕过的硬性前提。因此make_cert.sh的第一个也是唯一一个参数就是TEAM_ID它会被写进整条证书链每个证书的OU字段。二、使用方式与产物在仓库根目录下将TEAM_ID替换为你 victim app 的真实 Team ID 后执行./make_cert.sh TEAM_ID脚本运行完毕后Victim/目录下会得到唯一的最终产物产物说明Victim/victim.p12带完整证书链的 PKCS#12 格式开发者证书友好名 TrollStore iPhone OS Application Signing密码为空仓库中已存在一份Victim/victim.p12即此前用该脚本生成的示例产物。除victim.p12外的所有中间文件各 PEM 证书、私钥、CSR、序列号文件都会在脚本末尾被清理保证目录干净、只保留最终需要的签名材料。运行前提需要可用的openssl命令行工具。脚本在make_cert.sh开头导入了 Homebrew 的 OpenSSL 3 路径export PATH/opt/homebrew/Cellar/openssl3/3.0.5/bin:$PATH这意味着脚本默认面向 macOS Homebrew 环境若你的 OpenSSL 不在该路径请自行调整PATH。脚本使用set -e任何一步失败都会立即中止避免产出不完整的证书链。注意脚本以rm清理中间文件如需保留中间证书用于调试可自行注释末尾的清理段落仓库当前以最终产物为准。三、脚本逐行拆解三条证书链的构建Victim/make_cert.sh 实际构建了一个三级证书链Root CA → CodeSigning CA代码签名二级 CA→ Leaf 开发证书再打包为victim.p12。$1Team ID会贯穿全部三级证书的OU字段。1. 自签 Root CATrollStore iPhone Root CAopenssl req -newkey rsa:2048 -nodes -keyout root_key.pem -x509 -days 3650 -out root_certificate.pem \ -subj /CCA/OTrollStore/OU$1/CNTrollStore iPhone Root CA \ -addext 1.2.840.113635.100.6.2.18DER:0500 \ -addext basicConstraintscritical, CA:true -addext keyUsagecritical, digitalSignature, keyCertSign, cRLSign生成 2048 位 RSA 密钥-nodes表示私钥不加密自签-x509有效期3650 天10 年。Subject 中OU$1写入 Team IDCN为 TrollStore iPhone Root CA。关键点附加了 Apple 专有的证书扩展 OID1.2.840.113635.100.6.2.18值为 DER 编码的0500。1.2.840.113635是 Apple 的企业 OID 前缀该扩展用于标记可签发 Apple 相关签名证书的 CA0500是 DER 编码的空 NULL 值表示该扩展只作标记、不含额外数据。同时声明CA:true与keyCertSign等 CA 基本约束。2. 二级 CodeSigning CATrollStore iPhone Certification Authorityopenssl req -newkey rsa:2048 -nodes -keyout codeca_key.pem -out codeca_certificate.csr \ -subj /CCA/OTrollStore/OU$1/CNTrollStore iPhone Certification Authority \ -addext 1.2.840.113635.100.6.2.18DER:0500 \ -addext basicConstraintscritical, CA:true -addext keyUsagecritical, keyCertSign, cRLSign openssl x509 -req -CAkey root_key.pem -CA root_certificate.pem -days 3650 \ -in codeca_certificate.csr -out codeca_certificate.pem -CAcreateserial -copy_extensions copyall先生成 CSR再由 Root CA 签发同样 3650 天。-copy_extensions copyall会把 CSR 中的扩展包括 Apple 专有 OID 扩展复制进签发的证书中。该 CA 同样带CA:true但 keyUsage 只保留keyCertSign, cRLSign无digitalSignature职责更收敛——它只负责给叶子证书签发。3. 叶子开发证书TrollStore iPhone OS Application Signingopenssl req -newkey rsa:2048 -nodes -keyout dev_key.pem -out dev_certificate.csr \ -subj /CCA/OTrollStore/OU$1/CNTrollStore iPhone OS Application Signing \ -addext basicConstraintscritical, CA:false \ -addext keyUsage critical, digitalSignature -addext extendedKeyUsage codeSigning \ -addext 1.2.840.113635.100.6.1.3DER:0500 openssl x509 -req -CAkey codeca_key.pem -CA codeca_certificate.pem -days 3650 \ -in dev_certificate.csr -out dev_certificate.pem -CAcreateserial -copy_extensions copyall叶子证书CA:falsekeyUsage 仅digitalSignature并声明extendedKeyUsage codeSigningOID1.3.6.1.5.5.7.3.3表明它是一张标准的代码签名证书。额外附加 Apple 专有 OID1.2.840.113635.100.6.1.3值同样为 DER0500这是 Apple 用于标记应用签名Application Signing用途的扩展。签发后同样拷贝全部扩展。4. 组装证书链并导出 victim.p12cat codeca_certificate.pem root_certificate.pem certificate_chain.pem /usr/bin/openssl pkcs12 -export -in dev_certificate.pem -inkey dev_key.pem -certfile certificate_chain.pem \ -keypbe NONE -certpbe NONE -passout pass: \ -out victim.p12 -name TrollStore iPhone OS Application Signing将二级 CA 与 Root CA 拼接为证书链文件随叶子证书与私钥一起导出 PKCS#12。注意这里特意调用/usr/bin/opensslmacOS 系统自带版本而非前面 PATH 中的 Homebrew OpenSSL因为 macOS 系统 OpenSSL 的pkcs12实现支持-keypbe NONE -certpbe NONE参数可导出无密码保护的 p12——这正是后续ldid免密加载证书的前提。-name指定友好名 TrollStore iPhone OS Application Signing与叶子证书 CN 一致。5. 清理中间文件脚本末尾依次删除certificate_chain.pem、各级 CSR/PEM/私钥等全部中间产物只留下victim.p12。四、证书参数速查表证书CNOUTeam IDkeyUsage其他关键扩展Root CATrollStore iPhone Root CA$1digitalSignature, keyCertSign, cRLSignCA:trueApple OID 1.2.840.113635.100.6.2.18DER:0500CodeSigning CATrollStore iPhone Certification Authority$1keyCertSign, cRLSignCA:trueApple OID 1.2.840.113635.100.6.2.18DER:0500Leaf开发证书TrollStore iPhone OS Application Signing$1digitalSignatureCA:falseEKUcodeSigningApple OID 1.2.840.113635.100.6.1.3DER:0500三个证书有效期均为 3650 天10 年密钥统一为 2048 位 RSA。五、victim.p12 在构建流程中的消费点victim.p12并非孤立产物它被仓库顶层 Makefile 的 IPA 组装流程直接引用build_installer15iOS 15 系列安装器build_installer15: unzip ./Victim/InstallerVictim.ipa -d ./_build/tmp15 cp ./_build/PersistenceHelper_Embedded_Legacy_arm64 ./_build/TrollStorePersistenceHelperToInject pwnify set-cpusubtype ./_build/TrollStorePersistenceHelperToInject 1 ldid -s -K./Victim/victim.p12 ./_build/TrollStorePersistenceHelperToInject ... pwnify pwn ./_build/tmp15/Payload/$$APP_NAME/$$BINARY_NAME ./_build/TrollStorePersistenceHelperToInject流程要点解包InstallerVictim.ipa即 victim app 的 IPA取出编译好的PersistenceHelper_Embedded_Legacy_arm64先用pwnify set-cpusubtype调整 CPU subtype再执行ldid -s -K./Victim/victim.p12用我们生成的victim.p12对它重新签名——这正是victim.p12的核心用途通过pwnify pwn将已签名的 PersistenceHelper 植入 victim App 的主二进制重新打包为TrollHelper_iOS15.ipa。build_installer64earm64e 版本安装器build_installer64e: unzip ./Victim/InstallerVictim.ipa -d ./_build/tmp64e ... pwnify pwn64e ./_build/tmp64e/Payload/$$APP_NAME/$$BINARY_NAME ./_build/PersistenceHelper_Embedded_Legacy_arm64e逻辑与 iOS 15 版一致差异仅在于使用 arm64e 变体与pwnify pwn64e同样以./Victim/InstallerVictim.ipa为 victim 载体并依赖此前用victim.p12签名的持久化辅助程序。注意以上两个 target 依赖./Victim/InstallerVictim.ipa这一文件——它是本机侧的 victim app IPA由使用者自行准备未随仓库分发仓库只包含Victim/victim.p12与证书生成脚本。因此完整构建前需要先把自己选定的 victim app IPA 放入Victim/目录并命名为InstallerVictim.ipa。六、Team ID 匹配与 CoreTrust 绕过的关系回到 Exploits/fastPathSign/src/coretrust_bug.c 的apply_coretrust_bypass函数可以完整串起 victim 证书 的意义函数把二进制原有的真实 SHA-256 CodeDirectory 降级为CSSLOT_ALTERNATE_CODEDIRECTORIES并把从 Exploits/fastPathSign/src/Templates/AppStoreCodeDirectory.h 模板取出的App Store CodeDirectorySHA-1插入为主 CodeDirectoryExploits/fastPathSign/src/coretrust_bug.c 中的注释说明了修改后的槽位顺序随后提取 App Store CodeDirectory 中的 Team ID并用csd_code_directory_set_team_id将真实 CodeDirectory 的 Team ID 改为一致同时把 flags 清零去除 adhoc 等标志位通过 Exploits/fastPathSign/src/Templates/CADetails.h 中内嵌的 CA 证书/私钥基于 CDHash 生成新的 CMS 签名槽完成看起来由 Apple 签发的签名。而victim.p12中的 Team IDOU$1必须与 victim app 的 Team ID 完全一致才能保证第 2 步的匹配关系成立、使整条链路在设备侧通过校验。这就是 Victim/README.md 所强调的 same team ID as your victim app 的完整技术背景。七、常见问题与注意事项Team ID 从哪来Team ID 是 victim app 开发者账号的 10 位字符团队标识可从 Apple Developer 后台或已签名 IPA 的 entitlements/证书信息中查看。./make_cert.sh TEAM_ID只把它写进证书OU字段脚本本身不校验其真实性。p12 密码为空-passout pass:配合-keypbe NONE -certpbe NONE使victim.p12无密码这是为了ldid -K能直接加载如需安全存储可自行调整导出参数需同步修改 Makefile 的签名调用方式。证书有效期各级证书均为 3650 天10 年长期有效无需频繁重建重建时直接重新运行./make_cert.sh覆盖victim.p12即可。环境依赖脚本面向 macOS Homebrew OpenSSL 环境且pkcs12导出刻意使用系统/usr/bin/openssl。在 Linux 上运行时需确保 openssl 命令与参数兼容。只读仓库说明本文涉及的Victim/目录是构建材料目录仓库中只包含make_cert.sh与已生成的victim.p12实际构建时需自行放置InstallerVictim.ipa并执行脚本无需修改仓库源码。八、总结从 Victim/README.md 的 3 行说明出发可以看到 TrollStore 的完整构建链条中victim 证书并非可有可无的装饰而是连接victim app 选择 → Team ID 注入 → ldid 签名 → PersistenceHelper 植入 → CoreTrust 绕过校验整条流水线的关键一环。Victim/make_cert.sh 用三条 openssl 命令构建出 Apple 风格的三级代码签名证书链并产出无密码victim.p12配合 Makefile 的build_installer15/build_installer64e与 Exploits/fastPathSign 的 Team ID 对齐逻辑即可产出可在目标设备上运行的 TrollHelper OTA 安装包。理解这一前置步骤是自行复现与定制 TrollStore 构建流程的必修课。赞分享应用安全【免费下载链接】TrollStoreJailed iOS app that can install IPAs permanently with arbitary entitlements and root helpers because it trolls Apple项目地址https://gitcode.com/GitHub_Trending/tr/TrollStore点击查看免费下载相关推荐Bark 推送证书APNs Auth Key使用指南Key ID、Team ID 与 .p8 证书获取详解Bark 推送证书APNs Auth Key使用指南Key ID、Team ID 与 .p8 证书获取详解 导读 本文基于 Bark 官方文档中的「推送证开发工具移动开发nds-bootstrap终极指南在3DS/DSi上原生运行NDS游戏的完整教程nds bootstrap终极指南在3DS/DSi上原生运行NDS游戏的完整教程 你是否想在3DS或DSi设备上重温经典的任天堂DS游戏nds bootst嵌入式固件Real-Debrid Client Proxy 上手指南三步接好 Sonarr 自动下载Real Debrid Client Proxy 上手指南三步接好 Sonarr 自动下载 还在 Debrid 网站上手动复制链接、再贴进下载工具里Real上一篇SSD目标检测学习率调度终极指南快速提升训练收敛速度的7个技巧下一篇推荐 NestJS构建高效 Node.js 后端应用的首选框架创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表