news 2026/10/6 3:37:26

二维码钓鱼与BEC升级:绕过邮件网关的新型攻击链路与防御实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
二维码钓鱼与BEC升级:绕过邮件网关的新型攻击链路与防御实战

作为长期跟反钓鱼打交道的人,我每次翻看APWG(Anti-Phishing Working Group)的季度报告都会有种“温水煮青蛙”的紧迫感。最新报告里最扎眼的两个变化,一个是二维码(QR code)钓鱼的占比肉眼可见地往上蹿,另一个是BEC(商业电子邮件诈骗)的手法又升级了。这俩不是孤立现象,背后其实是攻击者对传统邮件网关、对DMARC等认证机制的彻底摸清和绕行。

这篇文章我想以APWG报告披露的线索为骨架,结合团队在邮件安全、终端防护、账号接管处置上踩过的坑,把二维码规避和BEC升级的原理、链路、检测盲区和落地防御完整讲一遍。适合企业邮件管理员、安全运营工程师、CISO,以及对钓鱼攻击机理有好奇心的普通用户。先说明白,文中所有攻击链拆解都以防御视角展开,目的是知道对手怎么打我们,才能知道怎么守。

1. 报告里的新信号:不是钓鱼少了,而是你还没看见

1.1 APWG报告为什么值得盯:全球共享的钓鱼情报基线

APWG是全球最早的反钓鱼行业组织之一,它的季度趋势报告之所以有分量,是因为数据来源横跨数千家成员单位,包括邮件服务商、安全厂商、金融机构、执法机构和研究机构。报告里除了统计钓鱼网站数量和品牌仿冒排名,还会专门跟踪攻击载体(如恶意附件、恶意链接、二维码、短信钓鱼)的变化,以及BEC骗局造成的损失走势。

对我这种做防御的一线从业者来说,APWG报告最大的价值不是“看新闻”,而是提供一个基线:当某类攻击向量在报告里连续两到三个季度增长,说明它已经跨过了“个别人在用”的尝试期,进入“规模化利用”阶段。这时候再把防御资源压在过去那种“识别可疑附件+拦截恶意URL”的老路径上,就是在帮攻击者省成本。

这次报告里我关注到的两项核心变化,恰好对应标题里的两个关键词:二维码规避和BEC升级。两者表现出一个共同规律——攻击者不再跟你的检测规则硬碰硬,而是换了个你注定监测不到的通道进来。

1.2 二维码钓鱼抬头:绕过邮件网关的新暗门

报告里明确提到二维码钓鱼活动的活跃度在多个季度显著提升。这不是凭空来的,根因在于现代邮件安全网关已经能熟练识别“文本里带链接”“附件里带HTML/JS”“Office文档带宏”这些经典套路。攻击者发现,只要把一个钓鱼链接塞进二维码图片,再以附件或者直接贴进邮件正文的方式发给目标,绝大多数网关就不会报警。

二维码为什么能达成“规避”?核心在于“语义鸿沟”。安全网关的检测引擎拿到的是一张位图(或一张包含二维码的图片),它要么没有内置二维码解码能力,要么即便解出了URL,也没有上下文去判断这个URL是可疑的还是安全的。更麻烦的是,二维码天然被用户认知为“扫码进去的东西”,大家普遍觉得扫码是一个主动、可信的动作,防范心理比点击链接弱得多。

这背后还有一个不可忽略的背景:二维码在现实中几乎成了基础设施。扫码点餐、扫码登录、扫码绑定设备、扫码同步信息,这套交互已经深度嵌入国内数字生活,海外同样如此。攻击者不需要教育用户,只需要把“扫码是无害的”这个已经被培养好的心智拿过来用。你想想,一个H5页面在微信里识别二维码、React Native应用里扫码登录、甚至协议上的扫码登录——这些正常需求有多普遍,恶意二维码的伪装土壤就有多肥。

1.3 BEC升级:损失最大、最不容易被发现的社交工程

BEC不是新鲜物种,但APWG报告提醒我们,它的成功率还在升。BEC与传统钓鱼最大的区别是不带恶意外链或附件,攻击者在邮件里只做一件事:说服你“做一笔合法的资金操作或敏感信息变更”。因为没有恶意载荷,邮件网关的沙箱、信誉库、杀毒引擎全都不好使。

升级后的BEC尤其体现在三个层面。第一,仿冒从“域名欺诈”进化到“身份欺诈”,SPF/DKIM/DMARC查得再严,攻击者只是换了一个和你同事同名、头像也复制过来、但域名看似合理的地址。第二,攻击者不再一上来就谈钱,而是长期潜伏在邮件往来中,观察语气、时机、审批链,在最接近真实业务流程的时刻发动。第三,结合语音伪造、账号接管后的真实会话截获,让验证身份的瞬间都可能被骗过。

2. 二维码规避链路:一个方块绕过一整条防线

2.1 攻击链拆解:从制造到收割的四步流程

我在实际处置中接触过的二维码钓鱼,链路高度相似,可以拆成四个阶段。

第一阶段是“生成诱饵”。攻击者注册一个仿冒品牌域名,例如把office.com写成office-verify.xyz这种变体,或者干脆租用一个看起来人畜无害的短链服务生成指向恶意页面的链接,再把这个链接做成二维码。做这一步成本极低,网上现成工具一大把,五分钟就能完成。

第二阶段是“投递”。投递方式有的走邮件附件(PDF/PNG里嵌入二维码),有的直接贴在邮件正文,有的打印成纸质卡片混在快递里,还有的以“升级验证”“扫码领券”“预约挂号”等名义发送到社交平台。在企业环境下,最常见的是攻击者先控制一个外部联系人的邮箱,给财务或 IT 人员发一封“附上二维码扫码查看报价单”的邮件。

第三阶段是“诱导上钩”。收件人用手机扫码后,跳转到仿冒的登录页,页面做得和真实系统几乎一致。关键点是页面上的URL前缀可能带有合法服务的重定向参数,比如denied=true&app=xx,导致部分URL分类引擎认为它属于受信任域名。

第四阶段是“收割与利用”。用户在仿冒页面输入账号密码和MFA验证码,攻击者实时接收并立刻将它们用于真实系统登录。此时你人都没走开,账号已经被接管。这就是为什么二维码钓鱼比普通链接钓鱼更“即时”——移动端扫码到提交数据,全程不会触发PC端的安全提示,也不会留下显著的浏览器历史。

2.2 邮件网关为什么失灵:图像、深度链接与人机验证的三层陷阱

先说“图像识别盲区”。很多邮件网关支持OCR和简单图像识别,但对手只需要稍微旋转角度、叠加噪点滤镜、改变前景背景对比度,就能让OCR误判。更流氓的办法是把二维码做成动态图,人眼扫码毫无障碍,解码结果却是分帧变化的,单帧检测毫无意义。

再说“深度链接”问题。一个二维码里可以塞下大量字符,攻击者常常把合法链接作为跳板,例如利用微信、支付宝、云盘、问卷平台的“扫码预览”功能,再通过参数跳转到钓鱼站。这类跳转在浏览器渲染层是正常的,网关如果只做信誉匹配,看不到最终落点。

最后是人机验证。现在的钓鱼页几乎标配了简单的拖动验证或点击验证,目的不是防机器人,而是防自动分析。安全设备抓到的只是空壳封面,真实的表单内容在人机验证通过后才动态加载。这种“动态加载”对恶意URL爬取和分类引擎来说几乎是降维打击,设备看的和用户交互的根本不是同一个页面。

我建议关注二维码规避的从业者不要指望“全靠网关”,要把它理解成一条“多层接力”的威胁路径:网关层负责降噪压缩投递量,终端层负责拦截恶意页面,身份层负责拦截无效凭证。任何单一环节都不能兜底,但组合起来效果会好非常多。

2.3 实操参考:搭建一个二维码钓鱼模拟测试方案

我们团队在内部做防钓鱼演练时,曾经专门模拟过二维码钓鱼链路。目的不是教人钓鱼,而是验证现有防线在哪个环节会哑火。方案不复杂,你可以参考。

  1. 搭建一个仅供内部测试的仿冒页面,域名用测试专用域名,页面里只有一个表单:账号输入框、密码输入框、OTP输入框。真正实战版本的攻击者还会模仿品牌CSS,我们的测试版本故意不做伪装,避免有人当真。
  2. 把页面地址生成二维码,放进一封模拟“供应商报价更新”的邮件中,通过内部测试收件人邮箱发送。
  3. 观察内容安全网关能否捕获该邮件(图),再观察能否对二维码解码并跟踪URL信誉。
  4. 用不同手机系统扫码,验证移动端的URL拦截策略是否生效。
  5. 最后用检测日志复盘:网关日志是否有“二维码”“图片附件”标记,终端EDR是否记录到访问测试域名,身份认证侧是否产生异常失败记录。

做完这轮模拟你会马上得出结论:大多数环境里,二维码邮件的检出率只有同场景下URL钓鱼邮件的零头。网关不是不想查,而是能力模型里根本没把这个维度当成重点。这就是为什么报告数据上涨和我们自己内部模拟的结果完全对得上。

3. BEC升级:从“伪造财务邮件”到“AI加持的深度骗局”

3.1 三代BEC的演变:骗子也在做产品迭代

如果你做过邮件诈骗的分析,会发现在过去十年里BEC有明显代际特征。

第一代BEC是“伪报式”。攻击者注册一个与真实公司近似的域名,仿冒CEO发一封“紧急转账”到指定账户。这代骗局主要靠人肉猜邮箱和粗略的邮箱命名规则,邮件内容有明显的翻译腔和句式错误,拦截率其实不低,因为它太“模板”了。

第二代BEC是“劫持式”。攻击者不再自己建域名,而是想办法通过钓鱼或密码喷洒攻入一个真实的外部合作方邮箱,然后用对方真实身份给本公司发邮件。这种攻击绕过了SPF/DKIM/DMARC的常见校验,因为邮件确实从合法服务器发出,只是发件人角色被劫持。到这里,传统邮件认证已经几乎失效。

第三代BEC是“大模型式”。攻击者用AI生成高仿真的邮件内容——不仅语法通顺,还能模仿收件人的写作习惯、引用历史邮件、准确使用内部术语。更夸张的会结合语音克隆打一个电话过来:“我现在开会不方便打字,刚才邮件里的账户就是最终版本。”这种多模态的交叉验证,让原本“打电话确认真伪”的安全习惯变成了一件危险的事——电话那头的声音已经不可信了。

3.2 技术原理:邮件认证协议为何拦不住BEC升级版

邮件认证协议解决的是“你声称是谁”以及“这封邮件是否从授权服务器发出”的问题。SPF校验来源IP对应的域名授权范围,DKIM校验邮件内容的哈希签名,DMARC告诉接收方如何处理SPF/DKIM均校验失败的邮件。这套体系对付域名仿冒和垃圾邮件极其有效,但对BEC几乎网开一面。

原因很简单:BEC攻击者大量使用被劫持的真实账户或自建但开启完整认证的域名。你自己注册一个域名,做好SPF/DKIM/DMARC,然后在上面发任何内容的邮件,在认证协议的角度它就是“合法邮件”。DMARC只看认证结果,不管邮件语义是否恶劣,也不管发件方是不是刚注册的域名。这是协议的天然边界,不是配置问题。

所以不能把DMARC当成反钓鱼终点,它只是起点。要对付升级版BEC,必须在“认证通过”之后继续做身份、上下文和行为判断。例如发件人是否首次与本公司通信、收件人是否属于审批链中的关键角色、邮件主题是否涉及转账/采购/人员变动、以及邮件中的外部账户是否与历史记录冲突。这些判断没有哪条SPF笔记能给出答案,需要业务侧的语义理解。

3.3 一个典型的BEC案其实是这样发生的

拿我们处理过的一起内部事件举例:财务收到一封邮件,发件人显示是“供应商A的财务总监”,地址确实是供应商A的真实域名,邮件说“与我公司合作的结算账户已变更,请将下一期款项付至新账户”。SPF检查通过,DKIM签名匹配,DMARC结果为pass,网关做了退信分析和URL扫描,没有发现任何恶意载荷,于是这封邮件直接进了收件箱。

财务按流程打电话给供应商A的固定号码,接电话的也说“账户确实变更了”。这个电话是真实的吗?是。因为攻击者早一步用窃取到的账号资料登录了供应商A的邮件系统,在供应商内部也发布了同样通知,供应商员工不知道收件箱被冒充,电话那头是真实员工,只是他掌握的信息本身就是被人塞进去的。真正的破绽在哪里?新账户的开户名和原供应商并不完全一致,开户所在地和实际业务地存在错位,以及这场“账户变更”没有在两家公司签任何补充协议。

破案不是靠邮件网关,而是靠财务对公业务“用旧账户转账前,必须双方双人拨打背调电话+补充协议确认”的流程。技术在这里只做辅助验证,流程才是最后一道保险。

4. 反钓鱼防御的落地方案:从“识别恶意”走向“抑制行为”

4.1 邮件网关层的加固:把二维码当作一等公民对待

如果只用一条建议来总结邮件侧防御,那就是:别再把二维码图片当成普通图片附件忽略掉。具体可以从三个方向落地。

第一,对带有二维码图像的邮件做常规解码。从收到的邮件中提取图片附件或内嵌图片,如果图片中存在二维码,则解码出目标URL,然后把该URL拿去跑和普通链接完全一样的信誉查询和沙箱检测。大部分网关现在可以实现这个逻辑,但需要你显式开启相关策略。我在评估产品时发现,“支持二维码解码”和“默认开启并阻断恶意二维码”经常是两回事,部署时务必测试。

第二,对包含二维码的邮件在投递前做“无痕预览替换”或“外链警示”。即使暂时判定不了二维码指向的URL是否恶意,也可以采取一种保守策略:将邮件中的二维码图片替换为“二维码内容未知或被拦截”的提示,强制用户去浏览器环境手动输入链接。很多用户嫌麻烦,反而提高了警觉。

第三,升级DMARC策略到“p=reject”,同时针对自建域名做发件人对齐检查。SPF/DKIM/DMARC不是银弹,但它能把最容易的“仿冒真实域名”的门关死。很多中小企业连p=none都只做到监控,那等于敞开大门。用户发现域被仿冒时,至少需要一个可能拒绝的DMARC策略兜底。

4.2 终端与身份侧:让“扫码成功”也不等于“凭证有效”

二维码钓鱼的终点一定是凭据收集。如果能在身份认证侧做几件事,就算用户扫了码、填了密码,攻击者也拿不到实际权限。

优先启用FIDO2/Passkey这类无密码认证。二维码钓鱼页面诱导用户输入用户名密码和OTP,但它没办法变出一个物理安全密钥或设备绑定的平台凭据。当员工尝试进入真实系统时,系统要求Passkey而不是密码,钓鱼页面收集到的密码就变成了一堆无用的字符串。这是当前我能想到的、对二维码钓鱼最狠的抑制手段。

如果没有条件快速切换到无密码认证,至少要做到两步走的“风险自适应MFA”:在员工从陌生设备、新IP、非工作时段发起登录时,强制绑定设备身份校验,并且要求“被禁用设备的重新注册必须经过管理员审批”。很多BEC升级都是建立在一台永久失陷的终端上,攻击者拿到了会话Cookie后无限期复用。如果每次新会话都需要设备指纹绑定且旧设备可远程吊销,账户被接管后也会很快失效。

4.3 流程侧:从“相信人”到“设计不依赖人的护栏”

BEC的终局不是一封邮件,而是一笔资金或一条数据的转移。把防线压到最后一步的“人”身上,一定会被社会工程学击穿。我在落地防御时坚持一个原则:把BEC防范写进业务流程,而不是员工手册。

资金变更类流程必须做到“两线分离”。第一线是邮件/电话申报的账户信息,只作为意向线索,不作为执行依据;第二线是拥有法律效力的补充协议或对公函件,并且由双方财务负责人交替独立确认。用AI伪造的语音可以骗过接线员,但补不出一份盖了章的文件,也骗不过另一套独立的审批流。

权限变更类流程同样需要“二次确认”。当系统检测到员工邮箱中发生“收款账户变更、受益人变更、手机号变更、自动转发生效”等敏感事件时,必须自动进入“冷静期”,例如24小时内禁止生效,期间通过企业微信/钉钉或线下见面二次确认。冷静期机制能显著压制BEC的即时性,而这些敏感事件日志就是你排查时的第一现场。

4.4 人员意识:不再教人“识别钓鱼”,而是教人“延迟危险行为”

以前的安全教育总让人分辨“这封邮件是真的假的”,可面对APWG报告里这种二维码和AI语音加持的BEC,多数人根本不可能靠肉眼分辨。强求用户当鉴伪专家,既不公平也不现实。

更有效的是行为抑制型教育:不要求用户判断邮件真假,而是要求用户在遇到“账号变更、紧急转账、凭据录入、扫码后输入密码”这几类行为时,强制走一个“不即时执行”的流程。你可以把它编成一句话:凡是让你立刻输入账号密码、立刻确认账户变更、立刻转款的,先停下来,走规定的第二条确认渠道。

日常演练也应该是这个思路,不再发“你的邮箱已满”这种一眼假的邮件,而是直接模拟“CEO要求出一笔加急采购款”,观察有多少人会在审批流里卡住。测试目标不是羞辱失败者,而是判断流程护栏是否可靠。

5. 常见问题与排查技巧实录

5.1 为什么报告说二维码钓鱼涨了,我们网关却没告警?

最常见的解释是网关根本没有“二维码图片识别与解码”能力,或者虽然支持但策略未开启。排查方法很简单:用公司真实域名生成一个二维码放进测试邮件发给自己,观察网关日志里是否有“QR code detected”这项记录。如果没有,说明状态是“裸奔”。后续可以联系网关厂商开启该检测或引入专门的钓鱼演练平台做验证。

5.2 怎么区分正常二维码与恶意二维码?

正常业务二维码的共性有两点:一是场景明确,比如点餐、支付、加好友,都在App内完成闭环,不需要跳转到奇怪的登录页;二是URL前缀基本落在已知大域名或标准短链域名下。恶意二维码则倾向于“扫码后出现登录页、要求输入账号密码、要求扫码授权登录、要求转发分享”。执行一个快速的技巧:无论在哪个渠道拿到二维码,先用手机浏览器打开生成的链接,看一眼域名,再决定要不要继续。这与邮件里的URL检查逻辑完全一致,只是载体换成了二维码。

5.3 BEC账户被接管后,怎么把损失压缩到最小?

第一时间要做的是禁用会话,而不是急着改密码。攻击者往往持有有效会话Cookie,光改密码踢不掉现有会话。正确的处置顺序是:在身份管理平台强制注销全部活跃会话,吊销RefreshToken,把可疑设备标记为失陷并远程擦除。第二步冻结相关的外部账户变更,立即调取IMAP日志、自动转发规则、邮件归档设置,看是否有静默转发配置。第三步再考虑通知关联方——最好通过语音通话而不是已经失陷的邮件沟通。

5.4 一个实用技巧:用“行为日志反查”还原攻击链

当检测到账户被劫持时,不要只看邮件日志,记得把认证日志和沙箱访问日志关联起来。手法如下:从身份认证系统里导出该账户在异常时间段内的登录IP、设备指纹和User-Agent;把这些字段与EDR日志做碰撞,定位疑似受控终端;再从这个终端的浏览器历史中找访问过的仿冒页面,反向提取攻击者使用的域名与二维码内容。这一系列证据串起来之后,才能对攻击者基础设施做完整封堵。

我在实际追查中遇到过不少案子,最后反转点就在“异常登录日志里多了一个可疑的MFA验证码消费记录”或者“终端上残留了一个从来没有打开过的HTML文件”。细节往往藏在日志交叉里,别指望单个设备告诉你全部真相。

5.5 免费工具和低成本的检查清单

很多人问有没有不需要买商业产品的自检办法。我推荐三步走。第一步,使用开源或免费工具定期对DMARC记录做评估,查看是否达到p=reject;第二步,在全员邮件网关策略里开启“二维码解码并检测URL”并每月用模拟二维码邮件验证;第三步,给高危岗位(财务、IT、HR)建一个“高风险邮件标记规则”:凡是包含“二维码图片+附件PDF+敏感词汇”的邮件,单独划入等待区,延长投递时间,给SOC留出分析窗口。

这些措施单项都不贵,合在一起却能显著压缩攻击面。有没有完全替代人工的办法?恐怕很长一段时间内都没有。钓鱼攻击进化到今天,本质是信任滥用,技术手段是提高攻击成本,流程设计才是切断收益的那道闸。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/6 3:37:02

基于Spring Boot的网上书城系统设计与实现全解析

2026年毕业季和课程设计的选题清单里,基于Spring Boot的网上书城系统设计与实现又毫无悬念地出现了一次。作为一个从零搭过图书商城、也给不少同学做过选题拆解的人,我可以负责任地说:这个题目是Java Web项目里少有的既完整又克制的选择。它能…

作者头像 李华
网站建设 2026/10/6 3:34:20

严蔚敏数据结构习题答案PDF的工程化用法

简介:本资源是严蔚敏《数据结构(C语言版)习题集》的官方配套全答案解析PDF,面向计算机专业本科生、考研备考学生及算法初学者,旨在解决课后习题无标准参考、代码实现无详细注解、核心算法(如冒泡排序、动态…

作者头像 李华
网站建设 2026/10/6 3:33:24

FastAdmin自定义导出实战:多Sheet报表与权限校验

做后台管理系统这几年,FastAdmin 是我用得比较多的一套框架,它的 CRUD 一键生成、后台权限、通用搜索确实是省事。不过真正到了报表导出、明细汇总这类需求,默认那套导出功能就会暴露短板。这篇文章就把我在 FastAdmin 里做自定义导出功能的完…

作者头像 李华
网站建设 2026/10/6 3:33:20

社区老人健康管理系统:SpringBoot+Vue+MySQL毕设实战解析

每年毕业季后台都会收到类似的私信:"学长,SpringBootVue的毕设题,到底怎么做才不像应付差事?"今天借"社区老人健康信息管理系统"这个题目,把从选题拆解、数据库设计、前后端编码到最后的部署联调完…

作者头像 李华
网站建设 2026/10/6 3:32:52

API调用实战指南:从鉴权、流式输出到工程化避坑全解析

这两年做AI应用和数据科学项目,我最大的体感变化是:真正需要自己训练模型的项目越来越少,把别人已经训练好的能力通过API拿过来用的项目越来越多。不管你是接大语言模型做问答和文档分析,还是接行情数据、文档解析、向量化服务&am…

作者头像 李华
网站建设 2026/10/6 3:32:35

GEO生成式引擎优化实操指南:从AI搜索引用机制到内容重构

我用手机查“XX品牌空调怎么样”,结果已经不再是一排蓝色链接,而是一段经过提炼、带引用的综合答案。这几个段落是谁“写”的?是AI生成引擎从全网内容里聚合、总结出来的。这意味着,过去我们拼命优化的那个搜索结果页,…

作者头像 李华