摘要
2025年黑色星期五及年末购物高峰期,一种以实体包裹为载体的新型二维码钓鱼(Quishing)攻击在全球范围内显著上升。攻击者利用消费者对物流信息的高度关注,结合从数据泄露、社交媒体爬取等渠道获取的个人身份信息,投递伪造的“误送”或“退货”包裹,并在表面粘贴看似合法的二维码。受害者扫描后被重定向至高仿真的电商或快递登录页面,诱导其输入账户凭证、支付信息甚至完成二次身份验证。由于二维码内容不可见、移动端缺乏安全上下文提示,且攻击融合了物理与数字双重欺骗,传统网络防御体系难以有效拦截。本文基于BetaNews披露的案例与实际样本分析,系统解构此类攻击的技术实现路径、社会工程策略及规避检测机制;进而提出一套涵盖终端防护、链接预检与用户行为干预的多层防御框架,并通过可部署的Python与JavaScript原型系统验证关键检测逻辑的有效性。研究表明,应对Quishing威胁需打破“纯线上安全”思维,将物理交付环节纳入整体安全治理范畴,同时强化移动设备端的安全能力建设。

一、引言
随着无接触配送与移动支付的普及,二维码(QR Code)已成为连接物理世界与数字服务的关键媒介。消费者习惯通过扫描包裹上的二维码查询物流状态、申请退货或验证商品真伪。然而,这一便利性正被网络犯罪分子系统性滥用。2025年11月,安全媒体BetaNews披露,诈骗团伙正大规模实施一种新型钓鱼攻击——通过投递印有受害者真实姓名地址的虚假包裹,并附带恶意二维码,诱使其在不知情中访问钓鱼网站。该手法被业界称为“Quishing”(QR + Phishing),其独特之处在于将社会工程攻击从纯数字空间延伸至物理交付链,形成“线下诱导—线上窃密”的闭环。
此类攻击在假日购物季尤为猖獗。据Tomorrow Lab安全团队观察,当消费者同时追踪多个订单、收件频率激增时,对意外包裹的警惕性显著下降,“可能是送错的礼物”成为普遍心理预期。攻击者正是利用这一认知盲区,使伪造包裹获得初始信任。更危险的是,二维码本身不携带可见内容,用户无法在扫描前判断其指向,而多数移动操作系统默认使用内置相机直接跳转链接,缺乏桌面浏览器常见的安全警告(如“此网站可能危险”)。一旦进入钓鱼页面,即使界面高度仿真,普通用户也难以识别域名差异。
本文聚焦于Quishing攻击在2025年购物季的典型特征与技术实现,旨在回答三个核心问题:(1)攻击者如何构建可信的物理诱饵并规避溯源?(2)现有终端与网络防御体系为何对此类混合攻击失效?(3)如何设计兼顾可用性与安全性的检测与响应机制?全文结构如下:第二部分综述Quishing的技术背景与历史演进;第三部分基于公开案例解析攻击链条;第四部分提出并实现多层防御方案;第五部分讨论局限性与扩展方向;第六部分总结研究结论。

二、背景与相关工作
2.1 Quishing 的定义与演变
Quishing最早可追溯至2020年,当时攻击者在公共场所(如停车场、餐厅)张贴伪造的支付二维码,替换商户真实码以窃取资金。此后,攻击场景逐步转向个人化:2023年出现针对企业员工的“IT设备更新”钓鱼邮件附带二维码;2024年则演变为“包裹异常”通知。2025年的关键变化在于物理投递+身份定制——攻击者不再依赖邮件或短信,而是直接将诱饵送达受害者门口,极大提升可信度。
2.2 移动端安全能力的缺失
与桌面环境相比,移动设备在安全提示方面存在结构性缺陷:
无地址栏常显:多数应用内浏览器隐藏URL,用户仅见页面内容。
默认跳转无确认:iOS/Android相机扫描二维码后自动打开Safari/Chrome,无中间拦截。
权限模型限制:第三方安全应用难以监控所有扫码行为。
这使得Quishing在移动端的成功率远高于传统钓鱼邮件。

2.3 现有防御措施的不足
当前主流方案包括:
用户教育:“不要扫描未知二维码”——但难以执行,因包裹二维码被视为正常。
企业监控:组织可部署MDM策略限制扫码应用——但对个人消费者无效。
链接信誉服务:如Google Safe Browsing——但新注册钓鱼域名存在检测延迟。
因此,亟需一种能在扫描前或跳转瞬间介入的轻量级防护机制。

三、攻击技术剖析
3.1 物理诱饵构建
攻击者通过以下途径获取受害者信息:
数据泄露数据库:如2023年某电商平台泄露的姓名、地址、手机号组合。
社交媒体抓取:从Facebook、Instagram公开帖子提取住址线索。
公共记录:房产登记、选民名册等开放数据源。
利用这些信息,攻击者可批量打印带有真实姓名、地址的包裹标签,并模仿FedEx、UPS或本地邮政(如Poste Italiane)的视觉风格。部分高级变种甚至包含伪造的追踪号码,可在快递公司官网显示“已发货”状态(通过API模拟或缓存页面)。
3.2 二维码内容构造
恶意二维码通常编码一个短链接(如bit.ly/xxx),经多层跳转后抵达钓鱼页面:
qr → short URL → redirector (e.g., Cloudflare Worker) → phishing site
跳转器用于隐藏真实IP并绕过URL信誉检查。钓鱼页面则高度仿冒Amazon、eBay或快递公司登录页,常见特征包括:
使用官方Logo与配色
域名含品牌词(如“amaz0n-support[.]com”)
请求“验证地址以完成配送”
3.3 规避检测机制
为延长钓鱼页面存活时间,攻击者采用:
地理IP过滤:仅向目标国家IP返回钓鱼内容,屏蔽安全研究人员。
一次性会话:每个链接仅有效一次,防止沙箱重复访问。
HTTPS加密:使用Let's Encrypt免费证书,消除浏览器“不安全”警告。
四、防御机制设计与实现
针对上述挑战,本文提出三层防御体系:终端侧预检、网络侧拦截与用户侧干预。
4.1 终端侧:安全扫码代理
我们开发一个轻量级扫码应用原型,强制在跳转前显示目标URL并进行初步检查:
// secure_qr_scanner.js (Web-based prototype)
async function scanAndVerify(qrData) {
if (!qrData.startsWith('http')) {
alert('非HTTP链接,可能为Wi-Fi或联系人,谨慎操作');
return;
}
// 显示完整URL供用户确认
const userConfirmed = confirm(`即将访问:\n${qrData}\n\n是否继续?`);
if (!userConfirmed) return;
// 调用安全API检查
const safe = await checkUrlSafety(qrData);
if (!safe) {
alert('⚠️ 链接被标记为高风险,请勿继续!');
logThreat(qrData); // 上报至本地日志
return;
}
// 安全则跳转
window.open(qrData, '_blank');
}
async function checkUrlSafety(url) {
// 模拟调用Google Safe Browsing API
const apiEndpoint = 'https://safebrowsing.googleapis.com/v4/threatMatches:find';
const payload = {
client: { clientId: "quish-defender", clientVersion: "1.0" },
threatInfo: {
threatTypes: ["MALWARE", "SOCIAL_ENGINEERING"],
platformTypes: ["ANY_PLATFORM"],
threatEntryTypes: ["URL"],
threatEntries: [{ url: url }]
}
};
try {
const resp = await fetch(apiEndpoint, {
method: 'POST',
body: JSON.stringify(payload)
});
const data = await resp.json();
return !data.matches; // 无匹配则安全
} catch (e) {
console.warn('安全检查失败,谨慎访问');
return true; // 默认放行,避免阻断正常链接
}
}
该方案可集成至手机厂商的相机应用或作为独立工具分发。
4.2 网络侧:DNS层钓鱼域名拦截
在家庭或企业路由器部署本地DNS过滤规则,阻止已知Quishing域名解析:
# dns_blocker.py
import dnslib
from dnslib.server import DNSServer, DNSHandler, BaseResolver
PHISHING_DOMAINS = {
"amaz0n-support.com",
"fedex-verify.net",
"parcel-return[.]xyz"
}
class QuishingResolver(BaseResolver):
def resolve(self, request, handler):
reply = request.reply()
qname = str(request.q.qname).rstrip('.')
if any(phish in qname for phish in PHISHING_DOMAINS):
# 返回空响应或指向本地警告页
reply.add_answer(dnslib.RR(qname, rdata=dnslib.A("127.0.0.1")))
else:
# 正常转发至上游DNS
pass
return reply
if __name__ == "__main__":
resolver = QuishingResolver()
server = DNSServer(resolver, port=53, address="0.0.0.0")
server.start_thread()
print("Quishing DNS blocker running...")
该模块可与Pi-hole等开源广告拦截系统集成。
4.3 用户侧:行为干预与教育
默认不扫描:收到非预期包裹时,应通过官方App手动输入追踪号查询,而非扫描二维码。
启用MFA:即使凭证泄露,多因素认证可阻止账户完全失陷。
定期审查交易:设置银行交易实时通知,及时发现异常扣款。
组织可开展模拟Quishing演练:向员工投递测试包裹,评估其是否遵循安全流程。
五、讨论
本方案的有效性受限于几个因素:首先,攻击者可快速更换域名,要求威胁情报实时更新;其次,普通用户可能忽略URL预览提示;最后,物理投递环节难以被数字系统监控。未来工作可探索与快递公司合作,在官方包裹上嵌入数字水印或NFC芯片,提供可信验证通道。
此外,操作系统厂商应考虑在系统级扫码功能中集成安全检查。例如,Android可在相机扫描后弹出“此链接来自未知来源,建议使用安全浏览器打开”的提示。
六、结语
Quishing攻击的兴起标志着网络犯罪正从纯虚拟空间向物理-数字融合场景迁移。2025年假日购物季的案例表明,攻击者已能高效整合身份数据、物流伪装与移动交互漏洞,构建高转化率的钓鱼闭环。本文提出的防御框架强调,安全不能仅依赖用户警惕性,而需通过技术手段在关键决策点(如扫码跳转前)提供上下文感知的干预。终端预检、网络过滤与行为规范三者协同,方能有效遏制此类混合威胁。后续研究将聚焦于自动化钓鱼页面生成的对抗检测,以及基于区块链的包裹溯源验证机制,以从根本上切断物理诱饵的信任链。
编辑:芦笛(公共互联网反网络钓鱼工作组)

被折叠的 条评论
为什么被折叠?



