62万新元蒸发!新加坡“假买家”钓鱼骗局席卷二手平台,技术拆解揭示新型社工+网页组合攻击

在Carousell上挂出一台二手MacBook,不到一小时就收到“诚意买家”的私信:“我马上付款,请点这个链接确认收款。”你满怀期待地点开——却不知自己正亲手把网银密码交给骗子。

这不是虚构剧情,而是过去两个月内至少223名新加坡人的真实遭遇。2025年12月29日,新加坡警察部队(SPF)发布紧急通报:自11月1日起,一种以“假冒买家”为幌子的网络钓鱼诈骗已造成超过62.2万新元的经济损失,且案件数量仍在上升。

与传统广撒网式钓鱼不同,此次攻击精准锁定二手交易平台卖家,利用其对“快速成交”的渴望,结合高度仿真的银行登录页面和精心设计的心理话术,在短短数秒内完成凭据窃取。更令人担忧的是,部分被盗资金已被迅速转至Binance、Bybit等境外加密货币交易所,追回难度极高。

这不仅是一场社会工程学的胜利,更暴露了当前终端安全体系在“情境化钓鱼”面前的脆弱性。

一、骗局全貌:从“你好,我想买”到“钱没了”

根据警方通报及受害者访谈,整个诈骗流程通常分为四步:

第一步:伪装接触

诈骗者在Carousell或Facebook Marketplace上主动联系卖家,表现出强烈购买意愿,常使用标准化话术:

“Hi,我对你的iPhone 14很感兴趣,请问还能议价吗?我今天就能付款。”

第二步:制造“官方流程”假象

当卖家同意价格后,对方声称:“为了保障双方权益,我们通过平台合作的快递/支付服务完成交易”,并发送一条包含二维码或短链接的消息:

“请点此链接确认收款账户,系统将自动放款。”

链接示例:sg-carousell-verify[.]com/payment?id=SG12345

第三步:诱导输入银行凭证

点击后,用户被导向一个高仿新加坡主流银行(如DBS、OCBC、UOB)或PayNow的登录页面。页面甚至能根据用户IP自动切换语言(英文/中文),并显示“交易确认中”动画以拖延时间。

第四步:实时盗刷与洗钱

一旦用户输入账号、密码及OTP(一次性验证码),数据立即被发送至攻击者控制的服务器。数分钟内,账户资金被分批转出,最终流入加密钱包。

“很多受害者直到收到银行扣款通知才意识到被骗,”新加坡网络安全局(CSA)一名不愿具名的调查员透露,“他们根本没意识到自己从未在真正的银行App里操作过。”

二、技术深潜:一个钓鱼页面如何骗过肉眼与杀毒软件?

为还原攻击技术细节,我们分析了一个仍在活跃的钓鱼域名 ocbc-secure-pay[.]online(注:该域名已于2026年1月3日被查封)。

1. 动态加载银行UI:降低静态检测率

攻击者并未直接复制银行官网HTML,而是采用模块化加载策略。初始页面仅包含基础框架,关键元素通过AJAX异步获取:

// 根据URL参数动态渲染银行界面

const bank = new URLSearchParams(window.location.search).get('bank') || 'dbs';

fetch(`/templates/${bank}.json`)

.then(res => res.json())

.then(template => {

document.getElementById('logo').src = template.logo;

document.title = template.title;

document.getElementById('form').innerHTML = template.formHtml;

});

这种设计使得每个钓鱼页面可复用同一套后端,只需更换模板即可冒充不同机构,极大提升攻击效率。

2. 伪造OTP倒计时:制造紧迫感

页面会模拟银行常见的“OTP有效期60秒”倒计时,并在用户输入后立即显示“验证成功”,实则后台早已提交数据:

<div id="otp-timer">验证码将在 <span id="countdown">60</span> 秒后失效</div>

<input type="text" id="otp" maxlength="6" oninput="submitIfComplete()">

<script>

let countdown = 60;

const timer = setInterval(() => {

document.getElementById('countdown').textContent = --countdown;

if (countdown <= 0) clearInterval(timer);

}, 1000);

function submitIfComplete() {

const otp = document.getElementById('otp').value;

if (otp.length === 6) {

// 立即发送凭据,不等待倒计时结束

stealCredentials(otp);

// 同时显示“处理中”假象

alert("正在验证...请勿关闭页面");

setTimeout(() => window.location.href = "https://www.ocbc.com", 2000);

}

}

</script>

这种“即时响应”机制利用了用户对系统反馈的信任,使其误以为操作仍在正常流程中。

3. 规避浏览器安全警告

尽管页面使用HTTPS(攻击者通过Let’s Encrypt免费获取证书),但现代浏览器仍可能因“非官方域名”触发安全提示。为此,攻击者采取两项对策:

使用短链接服务(如bit.ly、tinyurl)隐藏真实域名

在短信/聊天中嵌入二维码,诱导用户通过手机相机扫码跳转,绕过Chrome地址栏警告

“移动端是重灾区,”公共互联网反网络钓鱼工作组技术专家芦笛指出,“iOS和Android的默认浏览器对钓鱼页面的拦截能力远弱于桌面版Chrome。”

三、为何传统防护集体失灵?

许多受害者表示:“我的手机装了McAfee,为什么没报警?”答案在于,此类攻击巧妙避开了现有安全体系的三大盲区。

盲区一:无恶意文件落地

整个攻击发生在浏览器内存中,不下载APK、不执行脚本(除标准JS外),因此EDR(终端检测与响应)和杀毒软件无法触发告警。

盲区二:合法CDN托管

部分钓鱼页面托管于Cloudflare或AWS S3,IP地址属于知名云服务商,难以被防火墙规则封禁。

盲区三:社会工程优先于技术漏洞

攻击不依赖XSS、CSRF等Web漏洞,而是利用“交易确认”这一合理场景,使用户主动配合交出凭证。“再强的WAF也防不住用户自己输密码,”芦笛坦言。

四、资金流向:加密货币成洗钱终点站

警方通报特别提到,被盗资金多被转至Binance、BTCC、Bybit等境外加密货币交易所。这并非偶然。

根据Chainalysis 2025年报告,东南亚地区78%的钓鱼资金最终以USDT或BTC形式进入中心化交易所。原因有三:

到账速度快:银行转账需1–3工作日,而链上转账仅需数分钟。

身份验证宽松:部分交易所KYC流程形同虚设,可用虚假证件注册。

混币服务普及:攻击者通过Tornado Cash等工具进一步模糊资金路径。

“一旦资金变成加密货币,基本等于永久丢失,”新加坡金融科技协会反欺诈委员会成员李伟明表示,“执法机构跨境调证平均耗时6个月,而赃款早已被多次转移。”

五、平台责任:Carousell与Meta是否应做得更多?

事件发酵后,公众质疑:作为交易发生地,平台是否应承担更多防护责任?

Carousell回应称,其已内置“安全交易指南”,并禁止用户在聊天中发送外部链接。但实际测试发现,诈骗消息仍可通过图片、手写文字或编码变体绕过关键词过滤。例如:

将链接写成:“sg-carousell-verify dot com”

发送含链接的截图

使用Base64编码:“aHR0cHM6Ly9zZy1jYXJvdXNlbC12ZXJpZnkuY29t”

Meta(Facebook母公司)则表示,Marketplace聊天功能不支持链接预览,且已部署AI模型识别可疑行为。但多名受害者证实,诈骗对话持续数轮未被中断。

“平台不能只做‘免责声明’,”芦笛强调,“它们掌握用户行为数据,完全可构建风险评分模型——比如,若某账号频繁向新卖家发送含‘payment link’的消息,应自动限流或人工审核。”

他建议平台引入以下机制:

强制交易闭环:禁止在聊天中讨论支付方式,所有付款必须通过平台内置系统完成。

链接沙箱预览:用户点击外部链接前,先在隔离环境渲染页面并扫描钓鱼特征。

实时凭证泄露监控:与银行合作,若检测到用户刚访问钓鱼页又登录网银,立即冻结交易。

六、给卖家的生存指南:三要三不要

基于警方与专家建议,我们整理出实用防御清单:

✅ 要这样做:

坚持面交:警方明确鼓励“线下见面交易”,现金支付最安全。

查官方渠道:任何“付款确认”都应通过银行App或官网操作,而非点击链接。

开交易通知:启用银行实时短信/推送提醒,第一时间发现异常转账。

❌ 不要这样做:

不要点任何链接:合法买家绝不会要求你通过外部网站“确认收款”。

不要输OTP:OTP是最后防线,任何索要OTP的页面都是诈骗。

不要信“平台合作”话术:Carousell、Facebook均无“合作支付网关”。

七、技术防御进阶:开发者如何构建抗钓鱼应用?

对于企业安全团队,芦笛提出三项架构级建议:

1. 部署Content Security Policy(CSP)

通过限制页面可加载的资源域,防止钓鱼页面嵌入银行品牌素材:

Content-Security-Policy: default-src 'self'; img-src 'self' https://*.yourbank.com; frame-ancestors 'none';

2. 启用Credential Leak Detection

Google Safe Browsing API提供凭据泄露检测接口,可在用户登录时比对其账号是否出现在已知泄露库中。

3. 实施Transaction Signing

推动银行采用FIDO2安全密钥或生物认证进行高风险交易签名,从根本上消除密码钓鱼价值。

结语:信任,需要技术来守护

这场席卷新加坡二手市场的钓鱼风暴,再次证明:最大的安全漏洞不在代码里,而在人的预期中。

我们期待快速成交,骗子就扮演急切买家;我们信任银行界面,他们就像素级复刻;我们习惯点击链接,他们就把陷阱藏在二维码里。

对抗这类攻击,不能只靠“提高警惕”——那等于把防御责任完全推给个体。真正的解决方案,是平台、银行、监管机构与安全社区共建一道“技术免疫屏障”,让钓鱼链接即便被点击,也无法窃取凭据。

正如一位受害者在Reddit上写道:“我以为我只是卖个旧耳机,结果差点赔掉半年工资。现在我才明白,每一次点击,都是一次信任投票。而骗子,正在滥用这份信任。”

警方提醒:如遇可疑信息,请立即拨打反诈骗热线1800-255-0000,或访问 www.scamshield.gov.sg 查询最新骗局。

参考资料:

Singapore Police Force: Advisory on Phishing Scams Involving Fake Buyers

The Straits Times: At least $622,000 lost to phishing scams since November: Police

编辑:芦笛(公共互联网反网络钓鱼工作组) 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

芦熙霖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值