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

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

About The Author

Outline

凭据填塞攻击对OTT流媒体服务构成的威胁 最近变得非常明显。 在大肆宣传的流行流媒体服务推出后的几个小时内,用户帐户被黑客入侵并以折扣价出售。 这种漏洞演变为公关挑战,因为成千上万的订阅者转向社交媒体,抱怨他们对锁定帐户访问和服务可访问性问题的不满。

如此经验所示,撞库攻击是OTT安全团队面临的新挑战。 由免费试用,线切割和独家内容推动的流媒体服务订阅产生了大量用户信息集合,使得OTT服务越来越成为数据盗窃的目标。 对被入侵的帐户进行转售访问并不是黑客的唯一动机。 他们还可以从被入侵的用户帐户中删除有价值的私人详细信息,例如地址,电话和浏览历史记录以及信用卡数据。 然后,黑客可以在暗网中销售这些信息,或通过社交工程和网络钓鱼攻击造成进一步损害。

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

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

撞库攻击的剖析

网络犯罪分子可以通过多种方式获取被盗凭据来发起撞库攻击,包括发现配置错误的数据库,网络钓鱼攻击,用恶意软件感染用户设备或在暗网中购买遭黑客攻击的凭据。 接下来,攻击者通过分布式代理服务器路由无数登录请求,以掩盖攻击的来源并放大请求。 犯罪分子可以在黑暗的Web论坛上以经济实惠的小时费率从爬虫程序牧民处购买代理服务访问权限。 最后,攻击者创建脚本,使用被破坏的凭据列表自动执行身份验证请求,通常利用重复使用或简单化的密码来获取服务访问权限。 攻击者还可能在暗网中购买诸如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或cookies,并检查操作系统,画布,渲染器,浏览器,JS引擎, 以及生成完整的客户端指纹。

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

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

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

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

通过通过数千个IP地址分发请求,可以执行低攻击和慢攻击,从而使任何基于速率的检测方法无效。 使问题进一步复杂化的是,来自真实用户设备的真实浏览器可能会被劫持并用于撞库活动,仅通过这些方法,几乎肯定会错过此类攻击。

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

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

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

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

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

管理爬虫程序

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

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

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

另一种管理爬虫程序的策略是,如果出现误报,对用户体验的影响较小,则需要使用可疑的爬虫程序来解决验证码问题。 只有在完成验证码后才能成功登录。 这使得真正的用户即使被误认为是爬虫程序也能继续。 它还提供有价值的反馈来调整检测方法,以减少误报。

确保串流安全

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

详细了解我们的云安全功能如何保护您的在线业务免受撞库攻击,DDoS攻击等。