首页 / 资讯中心 / 文章详情

OWASP MASTG 实战指南:Android 深链(Deep Links)清单枚举与清单分析技术

OWASP MASTG 实战指南:Android 深链(Deep Links)清单枚举与清单分析技术 ★ FEATURED ARTICLE
文档教程网络安全【免费下载链接】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点击查看免费下载深链Deep Links是 Android 应用中常见的外部入口也是安全测试中必须优先盘点的一类攻击面。本文以 OWASP Mobile Application Security Testing GuideMASTG中的MASTG-TECH-0172技术条目为核心系统讲解如何通过解析AndroidManifest.xml、使用dumpsys以及自动化脚本完成深链的完整枚举并区分自定义 URL Scheme、Deep Link 与 App Link 三类入口的判定标准。读者完成本文学习后将能够在任何 Android 应用中快速、准确、无遗漏地列出全部深链为后续的 App Link 验证与处理器逻辑审计对应 MASTG-TEST-0028奠定基础。一、前置准备先取得可读的 AndroidManifest.xml深链的声明全部位于应用的AndroidManifest.xml中因此枚举深链的第一步是先提取并解码 Manifest。需要特别注意的是APK 内的 Manifest 以二进制 XML 格式存储直接解压得到的文件无法阅读必须借助工具将其转换为人类可读格式。MASTG 中对应的前置技术条目为 MASTG-TECH-0117获取 Manifest与 MASTG-TECH-0150分析 Manifest。1.1 使用 jadx 提取含 uses-sdk 信息jadx 可只解码资源、不反编译全部源码jadx --no-src -d out_dir MASTG-DEMO-0001.apkManifest 会完整输出到out_dir/resources/AndroidManifest.xml。与其他工具不同jadx 输出中包含uses-sdk元素minSdkVersion、targetSdkVersion这在评估深链风险与 Android 12 以上的行为差异时很有价值?xml version1.0 encodingutf-8? manifest xmlns:androidhttp://schemas.android.com/apk/res/android ... uses-sdk android:minSdkVersion29 android:targetSdkVersion35 /1.2 使用 apktool 提取apktool d -s -f -o output_dir MASTG-DEMO-0001.apk-s参数跳过 dex 反汇编baksmali速度更快。解码后的 Manifest 位于output_dir/AndroidManifest.xml。注意apktool 会将uses-sdk的值移入独立的apktool.yml而非写回 XMLsdkInfo: minSdkVersion: 29 targetSdkVersion: 351.3 使用 aapt2 快速查询如果只需要部分属性可使用 aapt2 直接查询输出不是 XML 格式属性命名也不同例如application-debuggable而非android:debuggableaapt2 d badging MASTG-DEMO-0001.apk拿到可读的 Manifest 后即可开始定位intent-filter元素。正如 MASTG-TECH-0150 所述也可用grep、aapt2、xmllint/xmlstarlet等工具做定向检索grep -i android.intent.action.VIEW output_dir/AndroidManifest.xml二、核心方法一在 Android Manifest 中识别深链深链是否被定义取决于activity或activity-alias内部是否存在包含android.intent.action.VIEW动作的intent-filter元素并配合对应的data声明。根据声明方式的不同可以将入口分为三类。2.1 自定义 URL Scheme下面的示例声明了一个自定义 URL Scheme 深链完整链接形式为myapp://pathactivity android:name.MyUriActivity intent-filter action android:nameandroid.intent.action.VIEW / category android:nameandroid.intent.category.DEFAULT / category android:nameandroid.intent.category.BROWSABLE / data android:schememyapp android:hostpath / /intent-filter /activity自定义 Scheme非http/https意味着设备上任意应用都可以构造并触发该入口。MASTG 的静态分析规则 mastg-android-custom-deeplink-scheme.yml 正是针对这种模式它匹配intent-filter内同时包含android.intent.action.VIEW、android.intent.category.BROWSABLE且data android:scheme的值不是http/https的声明并给出告警 Custom deeplink scheme detected in an intent-filter (potentially exposed deeplink). Any app on the device can invoke this handler.。2.2 标准 Deep Linkhttp/https如果同时使用http://与https://Scheme并指定 host 与 path即可构成标准 Web 深链。下面的示例中完整匹配的 URL 为https://www.myapp.com/my/app/pathintent-filter ... data android:schemehttp android:hostwww.myapp.com android:path/my/app/path / data android:schemehttps android:hostwww.myapp.com android:path/my/app/path / /intent-filter2.3 App Link需验证成功若intent-filter带有android:autoVerifytrue标志Android 系统会访问声明的android:host域名尝试获取其上的 Digital Asset Links 文件assetlinks.json以验证 App Link 归属intent-filter android:autoVerifytrue关键判定标准只有验证成功深链才能被称为 App Link。如果验证失败例如文件缺失、JSON 无效、存在重定向等该链接在 Android 12API level 31之前会扩大应用攻击面甚至可能导致同一应用内其他 App Link 全部失效——这一点在 MASTG-TEST-0028 中有明确的风险描述。相应地规则 mastg-android-deeplink-autoverify-missing.yml 会捕获那些声明了 http/https 深链却缺少android:autoVerifytrue的 intent-filter提示恶意应用可能劫持链接。2.4 易被忽略的 data 元素合并规则枚举深链时最容易出错的地方同一个intent-filter内的多个data元素并非各行其是而是按笛卡尔积合并覆盖所有属性组合。看下面的例子intent-filter ... data android:schemehttps android:hostwww.example.com / data android:schemeapp android:hostopen.my.app / /intent-filter直觉上可能认为它只支持https://www.example.com与app://open.my.app但实际支持的是以下 4 个入口https://www.example.comapp://open.my.appapp://www.example.comhttps://open.my.app这意味着手动读清单时极易漏报。因此实际测试中应优先采用下面的自动化手段将全部组合显式列出。三、核心方法二使用 dumpsys 枚举 Scheme如果目标应用已经安装到设备或模拟器上可以使用 adbMASTG-TOOL-0004通过dumpsys直接查询已注册的深链信息adb shell dumpsys package com.example.package该命令会输出该包名下所有已解析的 intent-filter 数据包括自定义 Scheme 与 http/https 深链。它反映的是系统层面实际注册的入口与静态读取 Manifest 互为印证。若设备为 Android 12API level 31及以上还可以进一步使用adb shell pm get-app-links com.example.package查看每个域名的 App Link 验证状态verified、legacy_failure等相关内容可参见 MASTG-TEST-0028。四、核心方法三使用 Android App Link Verification Tester 脚本在脱机场景仅有 APK、无设备下推荐使用 Android App Link Verification Tester 脚本deeplink_analyser.py直接对 APK 做全量枚举。它支持两种主要操作list-all列出全部深链含自定义 Scheme 与 http/httpslist-applinks仅列出 App Linkpython3 deeplink_analyser.py -op list-all -apk ~/Downloads/example.apk示例输出.MainActivity app://open.my.app app://www.example.com https://open.my.app https://www.example.com可以看到脚本自动给出了 4 个入口组合——正是上一节所述data合并规则的全量展开避免了人工阅读清单时的漏报。建议以该输出为基准与 Manifest 手工分析结果逐一比对。五、从枚举走向验证下一步测试要点MASTG-TECH-0172 属于深链测试的起点环节。完成枚举后在 MASTG-TEST-0028 的完整测试流程中还需要继续做三件事验证网站关联App Link Verification对每个声明了autoVerifytrue的域名检查其/.well-known/assetlinks.json是否可访问、JSON 是否合法、是否包含目标应用的包名与签名指纹注意系统不会验证存在重定向如http://example.com→https://example.com或裸域 →www子域的链接若一个 intent-filter 声明了多个子域如www.example.com与mobile.example.com每个子域都必须有独立的合法 Digital Asset Links 文件通配符域名*.example.com则需要在根域example.com上发布文件。审计处理器逻辑在 Manifest 中找到承载intent-filter的activity再定位其中对getIntent()、getData()、getQueryParameter()的使用检查外部可控的 URI 参数是否被校验与清洗。MASTG 提供了对应静态分析规则 mastg-android-deeplink-unvalidated-parameter.yml它会定位深链处理器入口点及读取的 URI 参数并提示逐一验证每个值在使用前的类型转换、边界检查或清洗。动态触发与监控使用 adb 的 Activity Manager 直接构造显式 Intent 触发深链配合 Frida hookIntent.getData观察实际传入数据若多个应用注册了相同 Scheme系统可能弹出选择对话框此时应显式指定包名构造 Intent。深链参数未经校验直接进入 WebView 等组件时可能演变为 XSS 或注入类漏洞这也是 MASTG-TEST-0027WebView URL 加载等测试关注的重点场景。六、小结三种枚举手段的适用场景方法前置条件输出形态适用场景手工分析 Manifestjadx / apktool / aapt2仅有 APKXML 或 badging 文本快速定性、理解声明结构adb shell dumpsys package pkg已安装到设备/模拟器系统解析后的包信息与静态结果互证、查看系统层面注册情况deeplink_analyser.pylist-all / list-applinks仅有 APK深链列表自动展开 data 组合全量枚举避免data合并导致的漏报将三种手段结合使用即可完成对 Android 应用深链攻击面的完整、无遗漏盘点先以脚本输出为基准清单再以 Manifest 手工分析确认声明结构最后用dumpsys或pm get-app-links在真实设备上验证系统解析与 App Link 验证状态为后续的处理器逻辑审计与漏洞验证提供可靠输入。赞分享文档教程网络安全【免费下载链接】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 MASTG 深链接安全测试指南Android Deep Links 与 App Links 的声明、验证与攻击面分析OWASP MASTG 深链接安全测试指南Android Deep Links 与 App Links 的声明、验证与攻击面分析 本篇指南聚焦 OWASP M文档教程网络安全OWASP MASTG 应用包探索指南APK 解包、Android 清单分析与二进制定位实战MASTG-TECH-0007OWASP MASTG 应用包探索指南APK 解包、Android 清单分析与二进制定位实战MASTG TECH 0007 导读 本文对应 OWASP M文档教程网络安全OWASP MASTG 实战使用 aapt、adb 与 Manifest 提取获取 Android 应用权限清单OWASP MASTG 实战使用 aapt、adb 与 Manifest 提取获取 Android 应用权限清单 本篇技术指南源自 OWASP MASTGM文档教程网络安全上一篇React-Redux游戏开发5个高效状态管理模式揭秘下一篇palera1n 越狱指南A8-A11 checkm8 完整利用流程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?
咨询建站