)
文档教程网络安全【免费下载链接】mastgThe OWASP Mobile Application Security Testing Guide (MASTG) is a comprehensive manual for mobile app security testing and reverse engineering. It describes technical processes for verifying the OWASP Mobile Security Weakness Enumeration (MASWE) weaknesses, which are in alignment with the OWASP MASVS.项目地址https://gitcode.com/gh_mirrors/ow/mastg点击查看免费下载本指南基于 OWASP MASTGMobile Application Security Testing Guide中的技术条目 MASTG-TECH-0111系统讲解如何从 iOS Mach-O 二进制中提取 entitlements。entitlements 会揭示应用被授予的权限与能力是 iOS 应用安全评估、越狱环境检测分析与逆向工程中的关键侦察步骤读完本文你将掌握 rabin2、ldid、ipsw、codesign 四种工具的完整命令、参数语义与输出解读方法并能将其直接用于 MASTG 测试流程。为什么提取 Entitlements 是 iOS 安全评估的必修课在 iOS 平台上应用能调用哪些系统能力如 Keychain 访问、推送通知、调试附加、扩展点等并非由代码自由决定而是由签名阶段嵌入到可执行文件中的 entitlements授权声明约束。entitlements 以 XML plist 形式保存在 Mach-O 二进制的代码签名数据中安全测试人员通过读取它们可以在不运行应用的情况下快速回答以下问题应用是否以调试构建get-task-allow true分发从而允许调试器附加应用的 Team ID 与 Application Identifier 是什么可用于判断签名归属与重签名需求应用声明了哪些 Keychain 访问组keychain-access-groups应用是否申请了诸如aps-environment推送、com.apple.security.application-groupsApp Group等高权限 entitlement在 MASTG 的 iOS 测试方法论中这是分析阶段的第一步之一与后续的代码签名格式版本识别、调试符号提取共同构成完整的二进制侦察链路。以下四种工具均能完成提取任务各有适用场景rabin2 来自 Radare2 框架、ldid 是逆向圈的轻量经典、ipsw 是功能全面的 iOS/macOS 研究瑞士军刀、codesign 则是 Apple 官方原生工具。工具总览与对比工具对应仓库条目典型命令输出格式适用平台rabin2MASTG-TOOL-0129genericrabin2 -OC binaryXML plistWindows / Linux / macOSradare2 框架随附ldidMASTG-TOOL-0111iosldid -e -A16777228:0 binaryXML plistWindows / Linux / macOSipswMASTG-TOOL-0105iosipsw macho info -e binaryXML plistWindows / Linux / macOScodesignMASTG-TOOL-0114ioscodesign -d --entitlements - binary缩进文本plist 变体macOSApple 官方工具注意后文示例中的MASTestApp与iGoat-Swift.app/iGoat-Swift是 MASTG 测试环境中常见的待分析目标路径实际使用时应替换为你解包unzipIPA 后得到的.app目录及其主可执行文件路径。方法一rabin2Radare2 框架rabin2 是 Radare2 逆向框架附带的命令行二进制信息提取工具通过插件机制支持 Java CLASS、ELF、PE、Mach-O 等多种文件格式可导出符号表、导入导出、库依赖、数据段字符串、交叉引用、入口点地址、节区与架构类型等信息。使用-OC参数组合直接从 Mach-O 二进制中提取 entitlementsrabin2 -OC MASTestApp输出为标准的 XML plist?xml version1.0 encodingUTF-8? !DOCTYPE plist PUBLIC -//Apple//DTD PLIST 1.0//EN http://www.apple.com/DTDs/PropertyList-1.0.dtd plist version1.0 dict keyapplication-identifier/key stringAYRP7NNB54.org.owasp.mastestapp.MASTestApp-iOS/string keycom.apple.developer.team-identifier/key stringAYRP7NNB54/string keyget-task-allow/key true/ /dict /plistrabin2 的优势在于它并非专用签名工具而是通用二进制分析工具因此在一次 MASTG 测试中你往往已经用它执行过符号提取如 MASTG-TECH-0113 中rabin2 -s获取符号等操作无需额外安装专用工具即可顺带完成 entitlements 提取。其输出为完整的 XML plist便于程序化解析或直接与codesign等工具对比。方法二ldidldid 是 SaurikJay Freeman创建的 Link Identity Editor链接身份编辑器专门用于查看和更新 Mach-O 二进制的 entitlements是 iOS 逆向与重签名场景中最常用的轻量工具之一支持 Windows、Linux 与 macOS。由于原始源码已不可获取社区通常使用 ProcursusTeam 仓库中的预编译版本。使用-e标志指定提取 entitlements并用-A标志指定目标架构。示例中的16777228:0对应CPU_TYPE_ARM64:CPU_SUBTYPE_ARM64_ALLldid -e -A16777228:0 iGoat-Swift.app/iGoat-Swift输出为 XML plist?xml version1.0 encodingUTF-8? !DOCTYPE plist PUBLIC -//Apple//DTD PLIST 1.0//EN http://www.apple.com/DTDs/PropertyList-1.0.dtd plist version1.0 dict keyapplication-identifier/key stringTNAJ496RHB.OWASP.iGoat-Swift/string keycom.apple.developer.team-identifier/key stringTNAJ496RHB/string keyget-task-allow/key true/ keykeychain-access-groups/key array stringTNAJ496RHB.OWASP.iGoat-Swift/string /array /dict /plist参数要点-eextract提取 entitlements 并输出到标准输出-Aarch指定要读取的架构槽位。对胖universal二进制若省略架构参数ldid 可能无法确定读取哪个 slice因此显式指定-A16777228:0ARM64是最稳妥的做法。架构值由CPU_TYPE与CPU_SUBTYPE拼接而成ARM64 全子类型即16777228:0。ldid 的另一大价值在于它是读写双向工具除了-e提取还可以用-S重新签名/注入 entitlements这在重打包repack测试流程中与提取步骤天然衔接。方法三ipswipsw 自称 iOS/macOS Research Swiss Army Knife除获取与静态分析 IPSW、OTA 固件外还内置 Objective-C/Swift 类信息 dump、kernelcache 解析、设备树解析、反汇编器等能力支持 Windows、Linux 与 macOS。对于应用分析其类信息 dumpipsw class-dump、ipsw swift-dump尤其常用而对胖 Mach-O 文件可以通过--arch指定目标架构。使用ipsw macho info -e提取 entitlementsipsw macho info -e iGoat-Swift.app/iGoat-Swift输出为 XML plist?xml version1.0 encodingUTF-8? !DOCTYPE plist PUBLIC -//Apple//DTD PLIST 1.0//EN http://www.apple.com/DTDs/PropertyList-1.0.dtd plist version1.0 dict keyapplication-identifier/key stringTNAJ496RHB.OWASP.iGoat-Swift/string keycom.apple.developer.team-identifier/key stringTNAJ496RHB/string keyget-task-allow/key true/ keykeychain-access-groups/key array stringTNAJ496RHB.OWASP.iGoat-Swift/string /array /dict /plistmacho info子命令负责输出 Mach-O 的结构信息-eentitlements标志使其聚焦于授权声明部分。若待分析的是包含多个架构 slice 的胖二进制可参照该工具在 class-dump 场景下的用法--arch arm64补充架构参数。ipsw 的优势是单一工具覆盖从固件到应用层的大多数 iOS 研究需求适合作为多用途工具箱集成进测试环境。方法四codesignApple 官方codesign 是 Apple 提供的官方命令行工具主要用途是创建、验证与展示代码签名并查询系统中已签名代码的动态状态。虽然 Xcode 通常在构建与分发阶段自动完成签名但安全测试中手动检查签名细节、验证签名状态或重新签名时都需要直接调用它。提取 entitlements 的命令为codesign -d --entitlements - iGoat-Swift.app/iGoat-Swift参数解析-ddisplay显示签名信息而不执行签名操作--entitlements -指定要显示的 entitlements 输出目标其中参数-表示输出到标准输出stdout而非写入文件。这是最容易出错的地方——若省略末尾的-命令会将 entitlements 写入默认文件而非打印出来。输出为 codesign 的缩进格式注意与 XML plist 不同Executable/Users/owasp/iGoat/Payload/iGoat-Swift.app/iGoat-Swift [Dict] [Key] application-identifier [Value] [String] TNAJ496RHB.OWASP.iGoat-Swift [Key] com.apple.developer.team-identifier [Value] [String] TNAJ496RHB [Key] get-task-allow [Value] [Bool] true [Key] keychain-access-groups [Value] [Array] [String] TNAJ496RHB.OWASP.iGoat-Swift这种格式虽非标准 XML但结构自解释[Dict]/[Key]/[Value]/[String]/[Bool]/[Array]依次表示字典、键、值、字符串、布尔值与数组。codesign 还能进一步用于读取代码签名的 CodeDirectory 格式版本codesign -dv输出中的v20400等是唯一能同时覆盖提取 entitlements与检查签名格式版本的原生工具。解读输出中的关键 Entitlements无论使用哪种工具提取出的 entitlements 都指向相同的核心键值测试人员应掌握其语义键示例值含义与测试价值application-identifierTNAJ496RHB.OWASP.iGoat-Swift由 Team ID 前缀与 Bundle Identifier 组成唯一标识应用重签名时必须替换com.apple.developer.team-identifierTNAJ496RHB开发团队的 10 位标识符可据此判断签名归属get-task-allowtrue是否允许调试器附加到进程。为true通常是调试构建Debug为false/缺失则是发布构建Release——前者意味着进程可被lldb等调试器直接 attach显著降低逆向门槛keychain-access-groups[TNAJ496RHB.OWASP.iGoat-Swift]应用可访问的 Keychain 组反映钥匙串数据共享范围从测试角度看get-task-allow是判断该应用是否便于动态调试的快速信号而完整的 entitlements 清单还可用于对照 MASVS 中与权限最小化、平台交互相关的测试用例确认应用是否申请了超出其业务所需的系统能力。实战要点与延伸阅读胖二进制处理现代 iOS 应用常包含多个架构 slice。ldid 通过-Atype:subtype显式选择如-A16777228:0对应 ARM64ipsw 可通过--arch指定codesign 与 rabin2 通常会自动处理或输出全部分析前可用file/lipo -info确认架构组成。输出对比rabin2、ldid、ipsw 输出 XML plist可直接交给plutil/xmllint等解析codesign 输出缩进格式适合人读。若需程序化处理优先使用前三者。在测试流程中的位置entitlements 提取通常与调试符号提取rabin2 -s、objdump --syms、nm -a同步进行共同完成二进制的静态侦察确认get-task-allow后再决定是否投入动态调试手段。注意签名数据位置从 MASTG-TECH-0112 的codesign -dv输出CodeDirectory ... locationembedded可以推断包括 entitlements 在内的签名信息是内嵌embedded在二进制中的这也是上述工具都能直接离线提取的原因——无需运行应用或连接设备。本文涉及的命令与示例均可直接复现相关工具的具体背景与替代方案可在仓库中继续查阅rabin2 工具页、ldid 工具页、ipsw 工具页、codesign 工具页以及技术条目 MASTG-TECH-0111 本身。赞分享文档教程网络安全【免费下载链接】mastgThe OWASP Mobile Application Security Testing Guide (MASTG) is a comprehensive manual for mobile app security testing and reverse engineering. It describes technical processes for verifying the OWASP Mobile Security Weakness Enumeration (MASWE) weaknesses, which are in alignment with the OWASP MASVS.项目地址https://gitcode.com/gh_mirrors/ow/mastg点击查看免费下载相关推荐iOS 应用混淆技术全解Mach-O 二进制、运行时元数据与 O-MVLL 混淆方案OWASP MASTG iOS 混淆指南iOS 应用混淆技术全解Mach O 二进制、运行时元数据与 O MVLL 混淆方案OWASP MASTG iOS 混淆指南 本篇技术指南基于 OWASP文档教程网络安全MASTG 技术指南使用 IDA Pro 与 Ghidra 反汇编 iOS 应用二进制Mach-O 静态分析实战MASTG 技术指南使用 IDA Pro 与 Ghidra 反汇编 iOS 应用二进制Mach O 静态分析实战 本篇技术指南聚焦 OWASP Mobil文档教程网络安全OWASP MASTG 技术指南Android 二进制字符串提取Retrieving Strings实战OWASP MASTG 技术指南Android 二进制字符串提取Retrieving Strings实战 在 Android 应用安全测试与逆向工程中字文档教程网络安全上一篇如何免费下载百度文库文档3步极简指南与实用技巧下一篇Path of Building流放之路玩家的终极免费离线构建规划器创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考