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

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

二维码钓鱼与BEC升级:绕过邮件网关的新型攻击链路与防御实战 ★ FEATURED ARTICLE
作为长期跟反钓鱼打交道的人我每次翻看APWGAnti-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前缀可能带有合法服务的重定向参数比如deniedtrueappxx导致部分URL分类引擎认为它属于受信任域名。第四阶段是“收割与利用”。用户在仿冒页面输入账号密码和MFA验证码攻击者实时接收并立刻将它们用于真实系统登录。此时你人都没走开账号已经被接管。这就是为什么二维码钓鱼比普通链接钓鱼更“即时”——移动端扫码到提交数据全程不会触发PC端的安全提示也不会留下显著的浏览器历史。2.2 邮件网关为什么失灵图像、深度链接与人机验证的三层陷阱先说“图像识别盲区”。很多邮件网关支持OCR和简单图像识别但对手只需要稍微旋转角度、叠加噪点滤镜、改变前景背景对比度就能让OCR误判。更流氓的办法是把二维码做成动态图人眼扫码毫无障碍解码结果却是分帧变化的单帧检测毫无意义。再说“深度链接”问题。一个二维码里可以塞下大量字符攻击者常常把合法链接作为跳板例如利用微信、支付宝、云盘、问卷平台的“扫码预览”功能再通过参数跳转到钓鱼站。这类跳转在浏览器渲染层是正常的网关如果只做信誉匹配看不到最终落点。最后是人机验证。现在的钓鱼页几乎标配了简单的拖动验证或点击验证目的不是防机器人而是防自动分析。安全设备抓到的只是空壳封面真实的表单内容在人机验证通过后才动态加载。这种“动态加载”对恶意URL爬取和分类引擎来说几乎是降维打击设备看的和用户交互的根本不是同一个页面。我建议关注二维码规避的从业者不要指望“全靠网关”要把它理解成一条“多层接力”的威胁路径网关层负责降噪压缩投递量终端层负责拦截恶意页面身份层负责拦截无效凭证。任何单一环节都不能兜底但组合起来效果会好非常多。2.3 实操参考搭建一个二维码钓鱼模拟测试方案我们团队在内部做防钓鱼演练时曾经专门模拟过二维码钓鱼链路。目的不是教人钓鱼而是验证现有防线在哪个环节会哑火。方案不复杂你可以参考。搭建一个仅供内部测试的仿冒页面域名用测试专用域名页面里只有一个表单账号输入框、密码输入框、OTP输入框。真正实战版本的攻击者还会模仿品牌CSS我们的测试版本故意不做伪装避免有人当真。把页面地址生成二维码放进一封模拟“供应商报价更新”的邮件中通过内部测试收件人邮箱发送。观察内容安全网关能否捕获该邮件图再观察能否对二维码解码并跟踪URL信誉。用不同手机系统扫码验证移动端的URL拦截策略是否生效。最后用检测日志复盘网关日志是否有“二维码”“图片附件”标记终端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策略到“preject”同时针对自建域名做发件人对齐检查。SPF/DKIM/DMARC不是银弹但它能把最容易的“仿冒真实域名”的门关死。很多中小企业连pnone都只做到监控那等于敞开大门。用户发现域被仿冒时至少需要一个可能拒绝的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记录做评估查看是否达到preject第二步在全员邮件网关策略里开启“二维码解码并检测URL”并每月用模拟二维码邮件验证第三步给高危岗位财务、IT、HR建一个“高风险邮件标记规则”凡是包含“二维码图片附件PDF敏感词汇”的邮件单独划入等待区延长投递时间给SOC留出分析窗口。这些措施单项都不贵合在一起却能显著压缩攻击面。有没有完全替代人工的办法恐怕很长一段时间内都没有。钓鱼攻击进化到今天本质是信任滥用技术手段是提高攻击成本流程设计才是切断收益的那道闸。
阅读完成 · 觉得有帮助?
咨询建站