Home 技术文章 如何保护您的OTT服务免遭撞库攻击
Applications

如何保护您的OTT服务免遭撞库攻击

About The Author

Outline

撞库攻击对OTT流媒体服务构成的威胁最近变得非常清楚。 在一项广受欢迎的流媒体服务推出后的几个小时内,用户帐户就被黑客攻击,并以折扣价出售。 随着成千上万的订阅者转向社交媒体,发泄他们对锁定账户访问和服务可访问性问题的不满,这种漏洞演变为公关挑战。

正如此经验所示,凭据填充攻击是OTT安全团队面临的新挑战。 流服务订阅由免费试用,电线切割和独家内容驱动,产生了大量用户信息集合,使OTT服务成为数据窃取的目标。 转售被泄露帐户的访问权限并不是黑客的唯一动机。 他们还可以从被泄露的用户帐户中获取有价值的私人详细信息,例如地址,电话和浏览历史记录以及信用卡数据。 然后,黑客可以通过暗网出售此信息,或通过社交工程和网络钓鱼攻击造成进一步损害。

撞库攻击的损害区远远超出了对用户隐私和财务的影响。 凭据填充攻击使用的僵尸网络能够自动处理每小时数百万次登录请求,对应用程序基础设施造成严重破坏。 即使成功率较低,请求量如此之大也会增加流媒体平台的运营成本。 额外的CPU周期,内存和数据入口/出口费用随着时间的推移而增加。 鉴于管理应用程序后端的成本相对较高,尤其是在云中,登录请求(严重依赖于后端系统)是最昂贵的攻击。 最终,大量未经检查的恶意活动会降低试图验证,浏览和流式传输内容的合法用户的服务质量。

流媒体服务如何抵消这一日益增长的威胁? 这篇技术文章将回顾当今世界管理爬虫程序所需的条件,以及流服务需要采取哪些措施来最大限度地减少撞库攻击的影响并降低其可能性。

撞库攻击的解剖结构

网络罪犯可以通过多种方式获取被盗的凭据,包括发现配置错误的数据库,钓鱼攻击,用恶意软件感染用户的设备或在暗网上购买黑客入侵的凭据,从而发起撞库攻击。 接下来,攻击者通过分布式代理服务器路由无数登录请求,以掩盖攻击的来源并放大请求。 犯罪分子可以通过暗网论坛从爬虫程序牧民那里以可负担得起的小时费率购买代理服务。 最后,攻击者创建脚本,使用被破坏的凭据列表自动执行身份验证请求,通常利用重复使用的或简单的密码来获取服务访问权限。 攻击者还可能在暗网上购买工具包,例如CAPTCHA解算器,浏览器仿真器或指纹欺骗脚本,以帮助抵御现有的防御。

抵御撞库攻击

阻止此类攻击需要区分爬虫程序和人类的能力。 遗憾的是,爬虫程序操作员不断寻找新的方法来规避爬虫程序检测方法。 最新一代的爬虫程序与人类几乎无法区分。

随着爬虫程序变得越来越复杂,过去可能有效的简单缓解策略(例如阻止爬虫程序的请求,IP地址或用户代理(UA))不再足够。 如今,攻击者最有可能使用一种廉价而丰富的旋转IP代理服务,而不是从静态IP进行攻击,这有助于他们规避速率限制和简单访问控制列表(ACL)保护。 此外,拦截不可取,因为它是爬虫程序操作员有用的反馈机制,告诉他们改进自动化以击败检测方法。

爬虫程序检测技术必须变得更加复杂,以适应日益复杂的爬虫程序攻击。 当今最先进的爬虫程序检测技术涉及服务器端和客户端的三种分析形式。 它们是:

  1. 请求指纹识别
  2. 客户端指纹识别
  3. 行为指纹识别

您需要将这三种方法结合起来,才能击败复杂的凭据填充攻击。

攻击检测方法1:请求指纹

请求指纹通常在服务器从客户端接收到所有请求的信息后在服务器端完成。 客户端请求通常由网络(IP),连接,加密和其他HTTP元数据的组合组成,这些元数据分析用于生成请求指纹。 此指纹包括核心细节,如IP地址,TCP握手,TLS握手(即TLS协议,密码和扩展),HTTP标头和标头顺序,以及从元数据(如ASN和设备类型)派生的其他信息。 将这些请求特征组合在一起时,可以为每个客户端生成唯一的签名或指纹。

图1. 请求特性的一个小样本,可协同工作以创建唯一的请求指纹。

从指纹,我们可以开始寻找异常。 例如,如果请求声称来自Chrome UA,它是否包含用户代理中指示的该版本Chrome浏览器中预期顺序的标头? 它是否使用典型的HTTP和TLS协议? ClientHello消息是否包含此Chrome版本典型的首选顺序的协议和密码? 除了分析请求元数据外,服务器还可以执行一些有限的行为分析,例如请求数及其频率,以及是否存在有助于确定请求是否自动化的浏览模式。

请求指纹识别是必要的第一步,但单凭指纹本身是不够的。

攻击检测方法2:客户端指纹识别

请求指纹的挑战在于,攻击者现在可以欺骗请求指纹,这些指纹通常与真实客户端完全相同。 如果攻击者犯了错误,请求指纹将识别这些错误,但您不能指望定期发生。

从根本上讲,请求指纹只能说明一半的情况。 服务器需要查看客户端发生的情况,并生成客户端指纹以补充请求指纹,从而获得更多见解。 这使爬虫程序检测系统能够更全面地了解客户端,并使攻击者更难逃避检测。

客户端指纹识别服务器可以注入一小段JavaScript (JS)以在客户端运行,方法是重写HTML以响应请求的页面。 或者,服务器可以注入一个指向远程JS的脚本标记,客户端可以在加载登录页时下载该远程JS。 JS可以在客户端执行检查并收集设备信息,例如是否启用了JS或Cookie ,并检查操作系统,画布,渲染器,浏览器,JS引擎等,以生成完整的客户端指纹。

一个普通的浏览器应该有Cookie支持并启用JS (这样他们就可以正确登录和使用您的流媒体服务);没有启用它可能会引起怀疑。 客户端指纹识别可识别其他可疑元素,这些可疑元素不是广告设备的典型特征,这些可疑元素可能表明存在潜在的虚假客户端,例如带有Blink的Safari浏览器UA (浏览器引擎)或带有SpiderMonkey JS引擎的Chrome浏览器。

这些详细信息将被收集并作为API调用发送到远程服务器以进行进一步分析,或者加密并设置为Cookie或标头,以便在后续客户端请求中进行分析。 上述用于收集和生成客户端指纹的技术也可用于非浏览器流应用程序,如iPhone/Android应用程序,Roku或三星电视(通过不同的SDK)。

图2. 可协同工作以创建唯一客户端指纹的一小部分特征示例。

虽然请求和客户端指纹的组合在早期机器人程序中非常有效,但更高级的机器人程序基于与人类相同的客户端,包括Chrome,Firefox和Safari。 他们还可能采用无头浏览器,如无头Chrome。 与可能缺少功能(如JavaScript和Cookie支持)的基本机器人不同,更高级的机器人可以利用适当的浏览器和JS引擎来执行正确格式的TCP和TLS握手以及与其设备类型一致的HTTP请求。

通过在数千个IP地址中分发请求,取消任何基于速率的检测方法,可以执行低攻击和慢攻击。 为了使问题进一步复杂化,真实用户设备上的真实浏览器可能会被劫持并用于凭据填充活动,而仅使用这些方法几乎肯定会错过此类攻击。

攻击检测方法3:行为指纹识别

要真正击败凭据填充,您必须添加智能行为指纹。 当用户与流媒体服务交互时,他们不仅仅是发出内容请求,还在移动,单击,点击和浏览应用程序。 行为指纹通过在客户端(通常通过JS)收集用户遥测数据来研究这些操作。 这些可能包括鼠标移动模式,击键,动作的计时,甚至触摸手机加速计或陀螺仪等设备传感器来测量用户的移动模式和定位。

根据收集的数据,生成并发送行为指纹,以进行实时或离线分析。 用户是否表现出随机或非有机模式? 鼠标是否以线性模式移动,或者滚动速度是否快于人类所能达到的速度? 手机在整个浏览会话中是否始终处于固定角度? 每秒登录请求的数量是否人为可行?

这是数据科学家和研究人员的战场,他们必须运用机器学习技术来持续分析数据,并获得有关请求是否自动化的情报。 部分原因是收集的请求,设备和行为属性组合呈指数级增长。 由于爬虫程序通过行为劫持提高了其模仿人类行为的能力,依赖基本行为特征(如鼠标移动)不再足够,可能会增加误报率并影响真实用户的体验。

这些类型的爬虫程序是缓解撞库的最困难挑战。 阻止最复杂的爬虫程序需要更多数据(如客户端在整个会话期间的浏览行为)来分析客户端的意图,从而识别请求是否为恶意。 例如,当用户直接访问流媒体服务的登录页面而不通过主页时,这是正常的行为吗? 用户登录流服务后立即导航至帐户页面而不执行任何其他操作是否正常? 这些数据点可以精确识别爬虫程序的意图。 在整个会话和其他行为数据中,用户与流媒体服务的交互可以产生更丰富,更完整的指纹,从而降低误报的几率。

管理爬虫程序

成功检测到爬虫程序试图发出登录请求后,正确答案是什么? 它是阻止爬虫程序并希望它消失吗? 在大多数情况下,这是错误的行动。 假设您以4xx错误进行响应,例如401未经授权的响应。 攻击者知道当前技术不足,并更新他们的自动化工具,通过尝试和错误克服您的检测机制。 在这种情况下,您通过提供反馈循环提醒攻击者改进方法,无意中帮助了攻击者。

虽然复杂的爬虫程序操作员最终会检测到他们正在被抵御并改进其方法,但仍有一些好的做法可以避免或延迟这些努力。 检测到后,服务器不会阻止爬虫程序请求,而是可以在登录尝试成功时发送标准的预期响应代码(例如200 OK),同时发送不暴露敏感数据的静态样板响应。

爬虫程序操作员更有可能假设成功的响应表明他们当前的方法是成功的。 而且窃取的凭据很有用,即使可能并非如此,也能让攻击者处于黑暗中。 另一种选择是通过不提供任何响应来定位爬虫程序请求,让爬虫程序请求暂停,直到超时。 如果您使用具有大量服务器容量的大型全球分布式平台(如内容交付网络(CDN)),则可以完成此操作。 这些错误信息的方法可能比简单地阻止爬虫程序请求更有效。

另一种管理爬虫程序的策略是在出现误报时对用户体验的影响较小,需要使用可疑爬虫程序来解决验证码。 只有在完成验证码后才能成功登录。 这使真实用户即使被错误地识别为爬虫程序,也能继续工作。 它还提供宝贵的反馈,帮助您调整检测方法,以减少误报。

保持流媒体安全

防止撞库攻击是任何OTT流媒体服务的重要优先事项。 随着这些服务越来越受欢迎,安全风险也越来越大。 应用程序安全和爬虫程序管理的多层方法可以准确识别用于支持凭据填充攻击的最复杂的爬虫程序,并防止此类攻击影响您的客户体验或声誉。

详细了解我们的云安全功能如何保护您的在线状态免受凭据填充攻击,DDoS攻击等。