QR码钓鱼的新变招:无图像的文本渲染QR码在PhishU框架中的应用

admin 2026-09-07 04:14:10 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文介绍QR码钓鱼新变种:攻击者用HTML表格或Unicode字符在邮件正文中直接渲染QR码,无图片对象,可绕过基于图片的SEG扫描和远程图片屏蔽机制。PhishU框架已加入此模式,开发中遇到Gmail移动端字体拉伸、约102KB截断限制及Outlook暗色模式重着色三个渲染问题,最终采用colspan游程压缩的HTML表格方案解决。防御方应关注完整渲染检测而非仅图片扫描,并通过授权测试验证防线有效性。 综合评分: 85 文章分类: 安全意识,安全工具,红队,渗透测试


QR码钓鱼的新变招:无图像的文本渲染QR码在PhishU框架中的应用

幻泉之洲

2026年9月6日 17:24 北京

在小说阅读器读本章

去阅读

在公众号小说中沉浸阅读

QR码钓鱼攻击正在绕过传统防线。安全网关和邮件客户端通常会拦截图片格式的QR码,于是攻击者改用纯文本和标记语言直接在邮件正文里”画”出一个QR码——没有图片文件,没有附件,OCR和图片扫描全部失效。PhishU框架加入了文本渲染QR码的测试模式,开发过程中踩了三个典型的邮件客户端渲染坑,值得防御方认真了解。

  QR码钓鱼,圈内叫”quishing”,已经流行了相当长时间。攻击者的逻辑很简单:给电脑前的目标扔一个QR码,大多数人会顺手用手机去扫。链接在一个防护相对薄弱的设备上打开——不在企业浏览器管控范围内,绕过了终端安全控制。而且QR码本身就藏着目的地,不扫根本不知道指向哪里。  防御方从两条线展开拦截。安全邮件网关开始扫描图片附件和内嵌图片,解码QR码并跟踪链接做信誉评估。邮件客户端也动作了,多数默认屏蔽远程图片,等用户手动点击”显示图片”才会加载。  这套组合拳确实堵住了不少简单攻击。网关能解码的QR码被拦下,远程图片形式的QR码可能根本显示不出来。于是攻击者换了思路——改变QR码的形态。  2026年年中,卡巴斯基的研究人员描述了一个正在流行的新变种:直接用文本字符和标记语言在邮件正文里构建QR码。没有图片对象,没有附件,没有内嵌图片,基于图片或OCR的扫描器完全找不到切入点。有意思的是,因为是标记语言而不是远程图片,即便收件箱设置了屏蔽图片,它照样能显示出来。收件人看到的是一张完全可以正常扫描的QR码,图片拦截形同虚设。  一句话总结:图片QR码有东西可解码,也可能被屏蔽远程图片的收件箱压制住。用标记语言拼出来的QR码两者都避开——没有图片对象供扫描,图片禁用也照样显示。PhishU框架现在把这种模式作为第二种QR码选项加入,让授权的安全测试可以验证它是否真的能突破防线。

图片QR码为什么容易被抓

  当QR码以附件或内嵌图片的形式到达时,现代的SEG有明确的处理流程:提取图片、解码QR码、抽取URL、执行信誉评估、追踪重定向链、比对已知恶意库。还能用OCR识别图片中的品牌logo或登录表单文字。这套流程现在已经是邮件过滤器的标配,也是普通图片式quishing效果大不如前的原因。

▲ 文本渲染的QR码在笔记本收件箱中显示,用手机即可扫描。邮件中不存在任何图片对象,但QR码可以正常读取。

  弱点是底层的那个假设:整个管线启动的前提是先找到一张图片。如果没有图片,管线根本不会运行。  还有第二个更常见的安全措施也依赖同样的假设。多数邮件客户端默认屏蔽远程图片,用户手动点击才加载。安全团队经常把这项设置当作应对quishing的部分答案——如果QR码是远程图片形式,它不会显示出来。对图片型QR码,这个逻辑基本成立。但对标记语言绘制的QR码,完全不奏效,因为没有远程图片可以屏蔽。QR网格本身就是邮件布局的一部分,立即渲染。

文本渲染QR码到底是什么

  QR码本质上是黑白方格的网格。没说这些方格必须来自位图。你可以用等宽字体里的方块字符画出同样的网格,也可以用HTML表格,每个单元格填充黑色或白色。邮件客户端根据标记语言渲染网格,收件人的手机摄像头看到的是有效的QR码,正常扫描。  邮件过滤器角度看,这封邮件就是文本加布局指令。没有图片可供提取,解码流程无事可做。这就是全部玄机。不是高深的密码学,是很多邮件扫描系统在构建逻辑上存在的一个分类盲区。

在PhishU框架中复现这个攻击

  PhishU框架原本就支持图片型quishing:邮件模板编辑器里的工具栏按钮可以放一个QR占位符,发送时平台会换成指向收件人个人跟踪链接的动态QR码。这是成熟稳定的路径,保留不动。

▲ 邮件模板编辑器里新增的”Insert QR (Text)”选项,旁边的图片式QR码按钮还在。安全人员选择渲染模式,发送时由框架自行处理。

  新加的工作是在旁边多放了一个按钮——”Insert QR (Text)”。选它之后,发送时PhishU会以HTML表格的形式构建QR码,用独立着色的小格子组成,不用图片。没有img标签,没有附件,邮件中任何一个位置都不存在位图。每个收件人仍然获得独立的跟踪目标,点击率、参与度、报告功能和其他攻击模拟技术完全一致。运营人员只需在工具栏下拉菜单里选一个模式,剩下的管道工作由框架完成。  实现细节值得说清楚,这涉及技术层面的诚实。PhishU用的不是Unicode方块字符绘制QR码——那是对野外攻击手法最字面的复刻。它采用的是彩色单元格表格。两种方式共享同一个关键属性:邮件中不存在图片对象可供扫描器发现。选择表格方案的原因是可靠性,这本身又是一个故事。

邮件渲染才是更难对付的对手

  绕过检测的思路很好描述。但让QR码在真实收件箱里以清晰、可扫描的方形呈现,才是真正的工程难题。开发过程中遇到了三个不同的渲染bug,每个都是通过发送到真实的Gmail和Outlook账户来发现和定位的。

Bug一:字体绘制的字符在移动端被拉伸

  第一版尝试忠实还原攻击手法:在等宽字体中用半块字符绘制QR码,放在预格式化的文本块里。在Outlook桌面端和Gmail网页版都能干净地扫描。但在Gmail移动应用里失败了,QR码渲染后明显不方正,向侧面拉伸,模块网格无法再被识别为QR码。  原因是字体处理。字符绘制的QR码依赖邮件客户端精确保留字体族、行高和字距。Gmail移动应用有自己的字体增强和自动缩放逻辑,无法把这些属性保持一致。半块字符技巧依赖的方形网格因此失真。这就是字体字形QR码作为生产技术很脆弱的核心原因——尽管它忠实复刻了攻击者的方法,但也继承了每个邮件客户端的字体渲染怪癖。

Bug二:Gmail静默截断超过约102KB的邮件

  解决字体问题的方法是放弃字体方案,改用HTML表格,每个模块是一个带显式像素宽高的单元格。表格单元格尺寸在邮件引擎中是最稳定支持的布局原语,HTML邮件开发者几十年来靠嵌套表格来对抗Outlook基于Word的渲染器,原因就在这里。  第一版没有优化,每个单元格重复完整的行内样式块。一个典型的短链接QR码有超过一千个单元格,生成大约230KB的HTML。Gmail会静默截断超过约102KB的消息,并显示一个”[Message clipped]”的横幅。截断恰好落在表格中间,浏览器尝试修复损坏的标记,结果网格变得支离破碎、半坍塌。看起来像CSS bug,其实不是。单独导出QR矩阵看,三个角的定位图案都完整清晰。网格结构本来就是好的,唯一的问题是体积。

Bug三:Outlook暗色模式下把白色单元格变成灰色

  体积问题是靠游程压缩解决的。QR码在静区边框和定位图案中有连续相同颜色的模块。用colspan合并行内连续的同色单元格,而不是一个模块一个单元格地输出,把标记从约230KB压到约50到65KB。这个大小远低于Gmail的截断阈值。  压缩后的方案完全依赖传统的HTML宽度、高度和bgcolor属性,不依赖CSS类或head区的样式块。这是故意的——这些代码片段会被拼接到运营人员已经写好的邮件中任意位置,那时候根本控制不了文档头部。  但还有最后一个问题。即使对每个白色单元格用了两种方式设置白色,Outlook的自动暗色模式重着色还是覆盖了设置,显示成灰色。Outlook在渲染时执行这个变换,源标记无法直接控制。解决办法是一个小型的覆盖规则,针对Outlook在激活暗色模式时打上页面标记,把显式的颜色强制设置回去。已在Outlook桌面端验证可用。

| 实现方案 | 出现的问题 | 结果 | | — | — | — | | 等宽字体中的Unicode半块字符 | Gmail移动端字体增强拉伸网格,失去方形比例 | 弃用,跨客户端不可靠 | | HTML表格,每个模块一个样式化单元格 | 约230KB体积触发Gmail约102KB的截断限制,渲染损坏 | 弃用,体积过大 | | HTML表格加colspan游程压缩 | Outlook暗色模式将白色单元格重着色为灰色(通过覆盖规则修复) | 正式采用 |

  有一个已知的残留问题,故意没去追:Gmail移动应用也有自己的暗色模式重着色逻辑,专门针对Outlook的修复代码覆盖不到,白色单元格在那里可能显示为浅灰色。纯粹是外观问题,QR码带着微弱的色调仍然可以正常扫描。实际quishing的威胁模型是电脑上显示QR码、用第二个设备扫描,而不是在同一部手机上边看邮件边扫码。所以这个优先级被放低了,没有继续死磕。

为什么用单元格表格而不是Unicode图形

  说句实话:PhishU的实现不是对”用Unicode字符构建QR码”的逐字复刻。它通过更可靠的底层原语达到了同样的无图片对象属性。这个区别应该坦诚说出来,这不是什么需要遮掩的事。  一台SEG如果先把整个邮件渲染到无头浏览器里,截图后再扫描,两种方式都能抓到——因为两者都会绘制一个可见的QR码。但如果SEG只盯着图片附件和内嵌图片对象,那两种方式都能绕过——因为两者都不含图片。差别不在躲避能力,而是跨真实邮件客户端的投递可靠性。这个结论值得发布,因为很多攻击技术分析从来没有验证过攻击是否真的能在收件箱里落地,而在这项研究中,我们遇到了三个可复现的客户端渲染bug,最终才得到一个真正能用的版本。

防御方应该从哪里着手

  要传达的重点不是”文本QR码防不住”。而是:仅仅扫描图片对象、仅仅靠屏蔽远程图片,都画错了防御线。

  • 不要把”没有图片”等同于”没有QR码”。能做完整渲染再对视觉输出做扫描的检测方案,无论QR码怎么画出来的都能发现。只提取图片对象的检测方案发现不了。
  • 默认屏蔽远程图片不是解决quishing的方法。它能压制基于图片的QR码,这算有效,但标记语言绘制的QR码在图片关闭的情况下照样渲染。管理人员应该知道这个缺口的存在,别把它悄悄归到”已处理”那一类。
  • 留意标记语言中的QR形状结构。密集的微小的黑白交替表格单元格,或者等宽字体中连续的半块字形块,本身就是很强的信号。
  • 针对行为培训,而不是针对格式。人防quishing的逻辑不取决于QR码怎么构建的:对要求你认证的QR码保持警惕,输入任何内容之前先搞清楚地址真的指向哪里。
  • 拿自己的过滤器去测。唯一能知道你的网关能不能拦截标记绘制QR码的方法,就是通过一次授权的安全测试实际发送一个,观察会发生什么。

  PhishU框架里的每一项技术都一样,文本渲染quishing会关联定向培训和按结果分类的报告。当一场模拟攻击使用了这种手法,收件人会在后续培训中看到这个变种的展示,他们因此会学到:QR码可以在图片禁用的情况下到达收件箱,而且仍然是一个陷阱——不只是之前可能警告过的那些图片式QR码。如果目标扫描并点击了,这个行为会记录在活动指标里,出现在报告中,也出现在解释他们所收到消息的培训内容里。

参考来源

  • Bizcommunity: Hackers using text-based QR codes to bypass email security tools(卡巴斯基研究,2026年)(https://www.bizcommunity.com/article/hackers-using-text-based-qr-codes-to-bypass-email-security-tools-845233a)
  • Kaspersky Daily: quishing 及邮件安全研究 (https://www.kaspersky.com/blog/)

参考资料

[1] https://phishu.net/blogs/blog-text-rendered-qr-phishing-in-the-phishu-framework.html


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:幻泉之洲 《QR码钓鱼的新变招:无图像的文本渲染QR码在PhishU框架中的应用》

评论:0   参与:  0