使用 Frida 与 objection 监控 iOS 剪贴板(Pasteboard)泄露:OWASP MASTG 实战指南

发布时间:2026/10/9 4:41:23
使用 Frida 与 objection 监控 iOS 剪贴板(Pasteboard)泄露:OWASP MASTG 实战指南 文档教程网络安全【免费下载链接】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 Mobile Application Security Testing GuideMASTG的 iOS 剪贴板监控技术MASTG-TECH-0134展开。iOS 剪贴板是跨应用共享数据的系统级通道任何应用复制的文本、URL、图片等敏感数据都会短暂驻留在其中成为移动应用安全测试中容易被忽视的泄露点。读完本文你将掌握如何通过 hookUIPasteboard类获取剪贴板内容与数据类型、使用 objection 的ios pasteboard monitor命令进行快速轮询监控并能够编写自定义 Frida 脚本对敏感数据进行实时追踪。剪贴板为什么值得监控在 iOS 安全模型中每个应用的数据都被限制在沙盒目录内详见 App Sandbox Directories应用之间无法直接读写对方的文件。但剪贴板UIPasteboard是例外——它由系统统一管理进程间共享任何应用都可以读取用户复制的数据无需任何权限申请。这意味着用户在一个 App 中复制了账号、口令、Token、地址等敏感信息另一个恶意 App 即可在后台静默读取应用自身若将敏感数据写入剪贴板例如点击复制验证码后不做清除也会扩大数据暴露面MASTG 在代码质量测试中也明确将 Pasteboards 列为不受信任的外部输入来源之一见 Testing Code Quality。因此安全测试中需要监控剪贴板检查是否有敏感数据被复制到其中以检测潜在的数据泄露或剪贴板滥用行为。获取剪贴板信息HookUIPasteboard的四个切入点UIPasteboard是 UIKit 提供的剪贴板接口MASTG 建议在运行时通过 Frida 等工具 hook 以下方法/属性获取剪贴板的状态与内容1. 获取剪贴板实例名HookpasteboardWithName:create:检查其输入参数剪贴板名称可确认应用正在使用哪个命名剪贴板HookpasteboardWithUniqueName检查其返回值可捕获应用创建的临时唯一剪贴板。2. 读取剪贴板项内容获取第一个可用的剪贴板项例如对于字符串使用string方法对于其他标准数据类型如 URL、图片、颜色、HTML 等使用对应的读取方法如URL、image、color、HTML等。3. 统计项数量使用numberOfItems属性获取当前剪贴板中的项数可用于判断剪贴板是否被写入新内容。4. 检查数据类型是否存在使用便捷方法convenience methods快速检查标准数据类型是否存在例如hasImages、hasStrings、hasURLshasURLs自 iOS 10 起可用使用containsPasteboardTypes:inItemSet:检查更具体的数据类型通常是 UTI即 Uniform Type Identifier。可以检查诸如public.png、public.tiff之类的图片 UTI也可以检查自定义数据类型如com.mycompany.myapp.mytype。注意对于自定义 UTI只有声明了解declare knowledge of该类型的应用才能理解写入剪贴板的数据——这与 UIActivity 分享机制中的行为一致详见 UIActivity Sharing 一节使用itemSetWithPasteboardTypes:并设置对应的 UTI 列表批量取回这些类型的剪贴板项。5. 检查被排除或即将过期的剪贴板项HooksetItems:options:检查其 options 中是否包含UIPasteboardOptionLocalOnly仅本地可用、不参与系统级共享或UIPasteboardOptionExpirationDate指定过期时间以确认应用是否主动限制了剪贴板内容的传播范围与生命周期。快速通道使用 objection 的ios pasteboard monitor命令如果只需监控字符串类型的数据最快捷的方式是使用 objectionMASTG-TOOL-0074内置的剪贴板监控命令ios pasteboard monitor该命令的实现原理是hook 进 iOS 的UIPasteboard类每 5 秒轮询一次generalPasteboard通用剪贴板。如果发现与上次轮询不同的新数据就将其显示在屏幕上。使用 objection 前需要先连接到目标应用。objection 支持两种连接方式详见 MASTG-TOOL-0074越狱设备 frida-server直接附加到正在运行的应用objection -n AppName start非越狱设备 重打包应用先对 IPA 进行重打包以注入 Frida Gadget见 MASTG-TECH-0092再以objection -n Gadget start启动。进入 objection REPL 后即可运行ios pasteboard monitor开始监控适合在测试中快速确认复制操作是否携带敏感数据。进阶编写自定义 Frida 剪贴板监控脚本对于需要追踪特定类型数据的场景可以自行构建剪贴板监控器。MASTG 提供了一个基于 objection 剪贴板监控脚本pasteboard.ts思路编写的 Frida 示例脚本每 5 秒读取一次剪贴板项若有新内容则打印出来const UIPasteboard ObjC.classes.UIPasteboard; const Pasteboard UIPasteboard.generalPasteboard(); var items ; var count Pasteboard.changeCount().toString(); setInterval(function () { const currentCount Pasteboard.changeCount().toString(); const currentItems Pasteboard.items().toString(); if (currentCount count) { return; } items currentItems; count currentCount; console.log([* Pasteboard changed] count: count hasStrings: Pasteboard.hasStrings().toString() hasURLs: Pasteboard.hasURLs().toString() hasImages: Pasteboard.hasImages().toString()); console.log(items); }, 1000 * 5);脚本原理逐行解析获取剪贴板对象UIPasteboard.generalPasteboard()拿到系统通用剪贴板与应用内命名剪贴板相对generalPasteboard是跨应用共享的主剪贴板记录基准状态changeCount()返回剪贴板内容的变更计数器——每次剪贴板内容被写入/替换该计数都会递增是判断是否有新数据的可靠依据定时轮询setInterval每 5 秒1000 * 5毫秒执行一次变更检测将当前的changeCount与上次记录的值比较相同则直接返回跳过不同则说明剪贴板发生了写入内容快照items()返回剪贴板所有项打印前先更新基准count类型标注通过hasStrings()、hasURLs()、hasImages()三个便捷方法快速标注新内容的类型便于在日志中一眼识别敏感数据类型。实际输出解读脚本运行时的输出如下[* Pasteboard changed] count: 64 hasStrings: true hasURLs: false hasImages: false ( { public.utf8-plain-text hola; } ) [* Pasteboard changed] count: 65 hasStrings: true hasURLs: true hasImages: false ( { public.url https://codeshare.frida.re/; public.utf8-plain-text https://codeshare.frida.re/; } ) [* Pasteboard changed] count: 66 hasStrings: false hasURLs: false hasImages: true ( { com.apple.uikit.image UIImage: 0x1c42b23c0 size {571, 264} orientation 0 scale 1.000000; public.jpeg UIImage: 0x1c44a1260 size {571, 264} orientation 0 scale 1.000000; public.png UIImage: 0x1c04aaaa0 size {571, 264} orientation 0 scale 1.000000; } )输出展示了三次连续的剪贴板写入纯文本changeCount64复制了字符串hola对应 UTI 为public.utf8-plain-textURLchangeCount65复制了https://codeshare.frida.re/。注意同一条数据同时以public.url和public.utf8-plain-text两种 UTI 呈现——iOS 会自动为 URL 提供文本表示图片changeCount66复制了一张尺寸为 571×264 的图片同时以com.apple.uikit.image、public.jpeg、public.png三种 UTI 呈现。关于 UTI 与数据可达性从输出可以看出同一份剪贴板数据往往可通过多种 UTI 读取。是否能够读懂取决于读取方是否声明了解对应类型public.utf8-plain-text、public.url、public.png、public.jpeg等系统标准 UTI 对几乎所有应用可见因此文本、URL、图片默认会暴露给其他应用而com.apple.uikit.image这类私有 UTI 或应用自定义类型如com.mycompany.myapp.mytype只有声明了解该类型的应用才能正确解析其余应用即使读到也无法理解。这与 UIActivity Sharing 一节中自定义 UTI 需双方声明知识才能互通的机制完全一致——测试者在分析剪贴板泄露面时应同时关注标准 UTI 覆盖的通用数据与自定义 UTI 承载的应用专属数据。将剪贴板监控纳入完整测试流程剪贴板监控并不是孤立操作它与 MASTG 中多个测试与知识模块相互印证数据分享场景应用通过UIActivityViewController分享数据时参见 UIActivity Sharing 知识 与 测试 UIActivity Sharing分享的 items 同样可能被写入剪贴板或经剪贴板中转。测试时应把剪贴板监控与 UIActivity 分享的 hook如initWithActivityItems:applicationActivities:结合完整还原数据的传播路径不受信任输入剪贴板内容属于应用外部输入恶意来源可向剪贴板注入内容应用若信任剪贴板数据如自动粘贴到输入框可能引入注入风险越权读取面结合沙盒目录知识可知剪贴板是少数不受沙盒约束的共享通道测试报告中应将剪贴板中的敏感数据单独列为泄露风险点。实战建议与注意事项优先使用 changeCount 而非内容比对changeCount是系统级的变更计数器比逐字节比对内容更可靠也能捕获内容相同但被重新写入的情况区分监控范围generalPasteboard只能看到通用剪贴板。若应用使用命名剪贴板pasteboardWithName:create:创建需额外 hook 该方法捕获剪贴板名称后再针对监控关注剪贴板生命周期HooksetItems:options:检查UIPasteboardOptionExpirationDate与UIPasteboardOptionLocalOnly可判断应用是否设置了数据过期时间或限制本地可见性——这是评估应用剪贴板安全设计的重要依据轮询间隔权衡objection 与示例脚本默认 5 秒轮询一次适合人工观察如需捕获瞬时写入的敏感数据如自动填充的验证码可适当缩短轮询间隔但要注意过于频繁的轮询会增加运行时开销结合静态分析在动态监控的同时检查应用源码中所有写入剪贴板的调用点UIPasteboard.generalPasteboard().setItems、setString等确认复制内容是否包含口令、令牌、身份证号等高敏数据并在测试报告中给出清除剪贴板如复制后置空或改用专用安全通道如系统验证码自动填充 API的修复建议。通过以上命令级快速监控 脚本级自定义监控的组合测试者可以全面掌握 iOS 应用在剪贴板维度的数据泄露情况从而在 MASTG 的测试框架下形成完整的证据链与修复指引。赞分享文档教程网络安全【免费下载链接】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 通用剪贴板General Pasteboard敏感数据静态检测OWASP MASTG 测试用例 MASTG-TEST-0276 深度解析iOS 通用剪贴板General Pasteboard敏感数据静态检测OWASP MASTG 测试用例 MASTG TEST 0276 深度解析 本文基于文档教程网络安全MASTG 实战用 Frida 与 idevicesyslog 双通道监测 iOS 应用日志检测实现细节泄露MASTG-DEMO-0125MASTG 实战用 Frida 与 idevicesyslog 双通道监测 iOS 应用日志检测实现细节泄露MASTG DEMO 0125 本文围绕 O文档教程网络安全使用 Frida 运行时监控 iOS WKWebView 本地文件访问OWASP MASTG MASTG-DEMO-0099 实战解析使用 Frida 运行时监控 iOS WKWebView 本地文件访问OWASP MASTG MASTG DEMO 0099 实战解析 本文基于 OWASP文档教程网络安全上一篇如何构建企业级大语言模型战略Qwen架构演进与跨平台部署最佳实践下一篇终极指南Kubernetes Federation v2多集群管理实战5步实现跨云资源统一调度创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询