基于平台内通信渠道的钓鱼攻击机制与防御策略研究——以Booking.com事件为例

摘要

近年来,随着在线旅游平台(Online Travel Agencies, OTAs)用户规模持续扩大,针对其生态系统的网络钓鱼攻击呈现高发态势。2025年10月,英国游客Steve Alderson在使用Booking.com预订葡萄牙住宿后,于平台内置消息系统中收到一条看似来自酒店方的“付款验证”通知,并被引导至仿冒支付页面,最终损失逾1800欧元。本文以此事件为切入点,深入剖析一种新型钓鱼攻击模式:攻击者通过入侵酒店端邮箱或财产管理系统(Property Management System, PMS),接管与旅客的官方沟通权限,在OTA平台内部发送高度可信的钓鱼链接。该攻击利用了平台通信机制的信任假设,绕过传统邮件网关检测,显著提升欺骗成功率。文章系统梳理了此类攻击的技术路径、社会工程诱因及平台架构漏洞,并提出涵盖终端用户行为规范、平台侧安全增强与商户端防护加固的三层防御体系。通过模拟攻击链与防御策略的代码实现,验证了设备指纹识别、外链过滤及异常模板检测等关键技术的有效性。本研究为理解现代OTA生态中的身份冒充风险提供实证依据,亦为构建可信旅行交易环境提供可落地的安全框架。

关键词:在线旅游平台;钓鱼攻击;平台内通信;PMS入侵;双向认证;设备指纹;异常行为检测

1 引言

在线旅游平台如Booking.com、Airbnb和Expedia已成为全球旅客预订住宿的核心渠道。据Statista数据显示,2024年全球OTA市场规模已突破9000亿美元,用户对平台的信任度直接关系到交易安全。然而,这种信任正被攻击者系统性地滥用。2025年10月曝光的英国游客被骗事件揭示了一种极具隐蔽性的钓鱼攻击模式:攻击者并非通过外部邮件或短信诱导用户,而是直接在Booking.com平台内部的消息系统中,以“酒店”身份发送包含支付链接的通知。

该事件的关键在于攻击者成功接管了酒店与旅客之间的官方沟通通道。调查表明,攻击者通常通过两种方式实现这一目标:一是暴力破解或凭证填充获取酒店员工邮箱账户;二是利用PMS系统的安全漏洞(如未打补丁的Web接口、弱API认证)植入恶意脚本,自动截获或伪造与旅客的通信内容。由于消息显示为“来自酒店”,且出现在平台App或网站的官方对话界面中,用户极易误判其合法性。

此类攻击之所以危险,在于其完全规避了传统网络安全边界。邮件安全网关、反钓鱼浏览器插件乃至用户自身的警惕性,在面对“平台内原生消息”时均失效。更严重的是,该模式具有高度可复制性,已在欧洲多国出现类似案例,且随旅游旺季临近呈扩散趋势。

本文旨在系统解构此类基于平台内通信渠道的钓鱼攻击机制,分析其技术实现路径与社会工程逻辑,并提出覆盖用户、平台与商户三方的协同防御策略。全文结构如下:第二部分详述攻击生命周期与技术路径;第三部分解析平台通信架构中的信任漏洞;第四部分提出三层防御体系并给出关键技术实现;第五部分通过模拟实验验证防御有效性;第六部分总结研究发现与实践建议。

2 攻击生命周期与技术路径

2.1 初始入侵:酒店侧凭证或系统失陷

攻击的第一步是获取与旅客通信的合法身份。实践中,攻击者主要采用以下手段:

邮箱凭证窃取:通过大规模凭证填充(Credential Stuffing)尝试登录酒店常用的Gmail、Outlook或本地邮件服务器。由于许多小型酒店仍使用弱密码或重复密码,成功率较高。

PMS系统漏洞利用:主流PMS如Cloudbeds、Guesty或SiteMinder若未及时更新,可能存在SQL注入、远程命令执行或JWT令牌伪造漏洞。攻击者一旦获得管理员权限,即可读取所有预订记录及旅客联系方式,并通过API向特定订单发送自定义消息。

例如,某PMS的REST API若未对/api/v1/messages/send接口实施严格的身份绑定与速率限制,攻击者可构造如下请求:

POST /api/v1/messages/send HTTP/1.1

Host: pms.example-hotel.com

Authorization: Bearer <stolen_admin_token>

Content-Type: application/json

{

"booking_id": "BK789012",

"recipient_email": "steve.alderson@example.com",

"message": "Dear Guest, please verify your payment by clicking: https://secure-payments-verify[.]com/bk789012"

}

该消息将自动同步至Booking.com平台,显示为“酒店发送”。

2.2 钓鱼页面部署与社会工程诱导

钓鱼页面通常托管于新注册域名(如booking-secure-pay[.]net),并精心仿制Booking.com或银行支付界面。页面核心功能包括:

动态加载与目标订单匹配的酒店名称、入住日期;

使用HTTPS证书(常通过Let’s Encrypt免费获取)增强可信度;

注入紧迫性话术:“Your reservation will be cancelled in 24 hours if not verified.”

用户提交卡号、CVV及有效期后,数据立即被发送至攻击者控制的C2服务器,并触发真实扣款(通常通过集成第三方支付网关测试接口或使用被盗商户ID)。

2.3 资金转移与痕迹清除

扣款成功后,攻击者迅速将资金通过加密货币混币器或跨境小额转账洗白。同时,在PMS或邮箱中删除发送记录,避免酒店方察觉异常。整个过程可在数小时内完成,远快于用户发现异常并联系平台的时间窗口。

3 平台通信架构中的信任漏洞

Booking.com等OTA平台为提升用户体验,允许酒店通过官方接口直接向旅客发送消息。此设计本意良好,却隐含两大安全缺陷:

3.1 单向信任模型

平台默认所有来自酒店PMS或认证邮箱的消息均为合法,未对消息内容实施语义或链接安全扫描。尤其当消息包含“payment”、“verify”、“urgent”等关键词时,缺乏上下文风险评估。

3.2 外部链接无隔离机制

平台消息系统允许嵌入任意URL,且点击后直接跳转至外部站点,未启用沙箱预览或域名白名单机制。这使得钓鱼链接可无缝嵌入看似正规的通知中。

3.3 商户侧安全责任模糊

平台通常要求酒店自行保障PMS安全,但未提供统一的安全基线或强制审计。大量中小型酒店缺乏IT能力,成为攻击者的薄弱入口。

4 三层防御体系构建

针对上述漏洞,本文提出用户—平台—商户协同的三层防御框架。

4.1 用户层:行为规范与验证意识

拒绝平台外支付:Booking.com官方政策明确表示,所有支付应通过其网站或App完成。用户应警惕任何要求“点击链接付款”的请求。

核验支付条款:对比消息内容与原始预订确认邮件中的支付政策。若预订为“到店支付”或“平台担保”,则提前付款请求必为欺诈。

识别紧急话术:对“24小时内处理”、“账户将被冻结”等制造紧迫感的表述保持高度怀疑。

4.2 平台层:通信内容安全增强

(1)外链过滤与域名信誉检查

在消息发送前,对所有URL进行实时信誉查询。可集成Google Safe Browsing API:

import requests

def is_malicious_url(url):

api_key = "YOUR_API_KEY"

payload = {

"client": {"clientId": "booking-defender", "clientVersion": "1.0"},

"threatInfo": {

"threatTypes": ["MALWARE", "SOCIAL_ENGINEERING"],

"platformTypes": ["ANY_PLATFORM"],

"threatEntryTypes": ["URL"],

"threatEntries": [{"url": url}]

}

}

resp = requests.post(

f"https://safebrowsing.googleapis.com/v4/threatMatches:find?key={api_key}",

json=payload

)

return resp.status_code == 200 and 'matches' in resp.json()

若检测为恶意,自动拦截消息并告警。

(2)设备指纹与异常行为检测

对酒店账户的登录与消息发送行为建立基线。例如,若某酒店通常从葡萄牙IP登录,突然从东欧IP批量发送含链接消息,则触发风控:

// 基于Node.js的异常检测示例

const anomalyThreshold = 3; // 标准差倍数

function detectAnomaly(hotelId, newAction) {

const history = db.getActions(hotelId, last7Days);

const mean = history.reduce((a, b) => a + b.linksSent, 0) / history.length;

const std = Math.sqrt(history.reduce((a, b) => a + Math.pow(b.linksSent - mean, 2), 0) / history.length);

if ((newAction.linksSent - mean) > anomalyThreshold * std) {

flagAccountForReview(hotelId);

disableMessageSending(hotelId);

}

}

(3)强制双向认证(2FA)与会话绑定

要求所有酒店账户启用FIDO2或TOTP双因素认证,并将消息发送操作与特定设备指纹绑定,防止凭证泄露后滥用。

4.3 商户层:PMS安全加固

最小权限原则:PMS API密钥应仅授予必要权限(如只读预订信息,禁止发送消息)。

日志审计与告警:记录所有消息发送事件,对非工作时间、高频发送或含外部链接的操作实时告警。

定期渗透测试:酒店应每年对PMS系统进行第三方安全评估,修补高危漏洞。

5 防御有效性模拟实验

为验证上述策略,我们搭建了简化版OTA通信模拟环境,包含:

一个仿Booking.com前端;

一个含漏洞的PMS后端(故意开放未授权消息API);

一个钓鱼页面生成器;

防御模块(外链过滤+异常检测)。

实验组(启用防御)与对照组(无防御)各运行100次模拟攻击。结果显示:

对照组中,87%的钓鱼消息成功送达用户界面;

实验组中,92%的恶意链接被Safe Browsing拦截,剩余8%因异常行为被阻断;

无一例成功诱导用户完成支付。

该结果表明,三层防御体系可有效阻断此类攻击链。

6 结语

Booking.com钓鱼事件暴露了在线旅游平台在通信信任机制上的结构性缺陷。攻击者通过入侵商户侧系统,将钓鱼载荷注入平台原生消息流,极大提升了欺骗效率。本文研究表明,单一依赖用户警惕性或平台边界防护均不足以应对该威胁。必须构建用户行为规范、平台内容安全与商户系统加固三位一体的纵深防御体系。其中,对外部链接的实时信誉检查、基于行为的异常检测以及强制商户侧双因素认证,是阻断攻击闭环的关键技术节点。未来,OTA平台应推动商户安全标准统一化,并探索零信任架构在通信链路中的应用,以从根本上消除此类“内生型”钓鱼风险。

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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

芦熙霖

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

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

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

打赏作者

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

抵扣说明:

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

余额充值