如何建立企业欺诈保护 YaC 2018演讲

5月29日, 又举行了一次会议2018-年度和最大的Yandex会议。 今年的YaC分为三个部分:营销技术,智慧城市和信息安全。 在紧追中,我们发布了第三部分的主要报告之一-来自日本乐天公司的Yuri Leonovich tracer0tong


我们如何认证? 在我们的情况下,没有什么特别的,但是我想提到一种方法。 除了传统的类型(验证码和一次性密码)之外,我们还使用工作量证明,PoW。 不,我们不会在用户计算机上开采比特币。 我们使用PoW来减慢攻击者的速度,有时甚至完全阻止它,迫使他解决一个非常困难的任务,他将花费大量时间。

-我在乐天国际公司工作。 我想谈几件事:关于我自己,关于我们公司,关于如何评估攻击成本并了解您是否完全需要预防欺诈的一些知识。 我想告诉您,我们如何收集欺诈预防措施,使用哪种模型在实践中取得了良好的效果,它们的工作方式以及可以采取哪些措施防止欺诈攻击。



关于我自己。 他曾在Yandex任职,从事Web应用程序安全性的工作,在Yandex任职期间,他还曾开发出一种防止欺诈攻击的系统。 我能够开发分布式服务,我有一些数学背景,可以在实践中帮助使用机器学习。

乐天在俄罗斯联邦不是很出名,但是我想大家都知道这有两个原因。 我们在俄罗斯提供的70多种服务中,有乐天Viber闻名,如果这里有足球迷,您可能知道我们公司是巴塞罗那足球俱乐部的总赞助商。

由于我们拥有众多服务,因此我们拥有自己的支付系统,我们自己的信用卡和许多奖励计划,因此我们不断遭受网络犯罪分子的攻击。 当然,我们总是会要求企业提供欺诈防护系统的要求。

当企业要求我们创建欺诈保护系统时,我们总是面临一些困境。 一方面,要求转换率应该很高,以便用户可以方便地通过服务进行身份验证并进行购买。 就我们而言,就安全警卫而言,我希望减少投诉,减少黑客入侵。 而就我们而言,我们希望提高攻击的代价。

如果您要购买防欺诈系统或尝试自己做,则首先需要评估成本。



我们认为,我们需要预防欺诈吗? 我们依靠这样的事实,即我们因欺诈而蒙受了某些类型的财务损失。 这些是直接损失-如果入侵者将其偷走,您将退还给客户的钱。 这是将与用户通信并解决冲突的技术支持服务的费用。 这是退货,通常将货物退回假地址。 开发该系统有直接的成本。 如果您建立了一个防止欺诈的系统,并将其部署在某些服务器上,则您将为基础架构和软件开发付费。 攻击者造成损害的第三个非常重要的方面是利润损失。 它由几个部分组成。

根据我们的计算,有一个非常重要的参数-生命周期价值LTV,即,用户在我们的服务上花费的钱大大减少了。 因为在一半的欺诈案件中,用户只是离开您的服务而不会返回。

我们还支付广告费用,如果用户离开,他们将会迷失方向。 这是客户获取成本,CAC。 而且,如果我们有很多不是真实用户的自动化用户-MAU的数据显示,我们有虚假的每月活跃用户,这也会影响业务。

让我们从攻击者的另一端来看。

一些发言者说,攻击者正在积极使用僵尸网络。 但是,无论他们使用哪种方法,他们仍然需要投资,支付攻击费用,还花费一些钱。 创建防欺诈系统时,我们的任务是找到一个平衡点,使攻击者花太多钱,而花更少的钱。 这样一来,对我们的攻击就无济于事,攻击者只是走开而中断了另一项服务。



对于损害服务,我们将攻击分为四种类型。 这是尝试入侵一个帐户(一个帐户)时的目标。 一个用户或一小群人的攻击。 或者当攻击者攻击许多帐户,信用卡,电话号码等时,对我们来说更危险,更大规模,更无目标的攻击。



我会告诉你发生了什么事,他们是如何攻击我们的。 每个人都知道的最明显的主要攻击类型是密码破解。 在我们的案例中,攻击者正试图整理电话号码,试图验证信用卡号。 存在一些变化。

大量注册帐户,对我们来说显然是有害的。 稍后我将举一个例子。

记录了什么? 虚假帐户(一些不存在的产品)正试图在反馈消息中发送垃圾邮件。 我认为这与许多商业公司相关且相似。

对于电子商务,仍然存在一些问题,但对于Yandex而言,仍然存在一些问题-攻击广告预算,点击欺诈。 好吧,或者仅仅是盗窃个人数据。



我举一个例子。 我们对销售电子书的服务进行了一次相当有趣的攻击,任何用户都有机会注册并开始销售他们的电子作品,这样的机会就可以为新手作家提供支持。

攻击者注册了一个合法的主帐户,以及数千个虚假的奴才帐户。 然后他用随机的句子制作了一本假书,没有意义。 他把它投放市场,我们有一家营销公司,每个奴才有条件地有1美元,他可以花在书上。 而这本假书的价格为1美元。

组织了一次小兵袭击-伪造帐户。 他们都买了这本书,这本书的收视率跃升,成为畅销书,攻击者将价格提高到有条件的10美元。 自从这本书成为畅销书以来,老百姓就开始购买它,并且抱怨着我们卖的是劣质商品,这是一本里面没有意思的书。 攻击者获利。

没有第九点;他后来被警察逮捕。 因此,利润并没有延续到未来。

在我们这个案例中,所有攻击者的主要目标是花费尽可能少的钱,并尽可能多地拿走我们的钱。



有攻击者,一个人只是在试图规避业务逻辑。 但我注意到,我们并不认为此类攻击是优先事项,因为就被黑帐户和被盗资金的比率而言,它们对我们的风险很小。 但是对我们来说主要的问题是僵尸网络。



这些是大规模的分布式系统,它们攻击来自全球,来自不同大洲的我们的服务,但是它们具有一些使它们处理起来更容易的功能。 如同在任何大型分布式系统中一样,僵尸网络节点执行或多或少的相同任务。

另一个重要的事情-现在,正如许多同事指出的那样,僵尸网络分布在各种智能设备,家用路由器,智能扬声器等上。但是这些设备的硬件规格较低,无法执行复杂的脚本。

另一方面,对于攻击者而言,租用僵尸网络以进行简单的DDoS相当便宜,而且还需要搜索帐户的密码。 但是,如果您需要为您的应用程序或服务专门实现某种业务逻辑,则僵尸网络的开发和支持变得非常昂贵。 通常,攻击者只是租用一部分完整的僵尸网络。

我总是将僵尸网络攻击与横滨的皮卡丘游行联系在一起。 我们有95%的恶意流量来自僵尸网络。



如果查看我们的监控系统的屏幕截图,您会看到许多黄点-这些是来自各个节点的被阻止的请求。 在这里,一个细心的人可能会注意到我有点说攻击是在全球范围内平均分布的。 但是地图上有明显的异常现象,即台湾地区的红色斑点。 这是一个很好奇的案例。



此攻击来自家用路由器。 在台湾,一家主要的互联网服务提供商遭到黑客攻击,从而为岛上的大多数居民提供了互联网。 对于我们来说,这是一个非常大的问题,与以下事实有关:在攻击发生的同时,许多合法用户从同一IP地址访问并使用了我们的服务。 我们成功阻止了这次攻击,但这非常困难。

如果我们谈论范围,表面,我们所保护的东西。 如果您有小型电子商务网站或小型区域服务,则没有任何特殊问题。 您在云中有一台服务器(也许有几台)或虚拟机。 好吧,来找您的用户,不好,很好。 没有特别要保护的问题。



在我们的情况下,一切都更加复杂,攻击面很大。 我们在欧洲,东南亚,美国的数据中心部署了服务。 我们在不同大洲都有用户,无论好坏。 另外,某些服务部署在云基础架构中,而不是我们自己的。

拥有如此多的服务和如此广泛的基础架构,很难防御。 另外,我们的许多服务都支持各种类型的客户端应用程序和接口。 例如,我们有一款可在智能电视上运行的Rakuten TV服务,并且保护功能对此非常特殊。



概括地说,这个问题在您的系统中流通着大量用户,就像涩谷十字路口一家商店的人一样。 在这许多人中,有必要识别并抓住攻击者。 同时,您的商店中有很多门,甚至还有更多的人。

那么,从什么以及如何组装我们的系统呢?



我们设法只使用开源组件,它足够便宜。 使用了许多“地鼠”的力量。 该软件的很大一部分是用Golang语言编写的。 使用的消息队列和数据库。 我们为什么需要这个? 我们有两个目标:收集有关用户行为的数据和计算信誉,采取一些措施来识别用户的好坏。



我们在系统中有很多层次,我们使用用Golang编写的前端和Tarantool作为缓存基础。 我们的系统已部署在我们业务所在的所有区域。 我们通过数据总线传输事件,并从中获得声誉。



我们的后端也可以复制Cassandra的用户信誉状态。

数据总线,没什么秘密,Apache Kafka。



事件和日志指向一个方向,信誉指向另一个方向。

当然,系统具有大脑思考用户的好坏,活动的好坏。 大脑是建立在Apache Storm之上的,而有趣的部分是内部发生的事情。

但是首先,我将告诉您我们如何收集数据以及如何阻止入侵者。



有很多方法。 Yandex的同事在第一份报告中已经提到了其中一些。 如何阻止入侵者? 安东·卡波夫(Anton Karpov)说,防火墙不好,我们不喜欢它们。 确实,它可以被IP地址阻止,俄罗斯这个话题非常重要,但是这种方法根本不适合我们。 我们更喜欢在应用程序级别的第七层使用更高级别的锁,通过使用令牌,会话cookie对请求进行身份验证。

怎么了 让我们先来看一下低锁。



这是一种便宜的方法,每个人都知道如何使用它,每个人在服务器上都有防火墙。 互联网上有一堆指令,通过IP阻止用户没有问题。 但是,当您以较低级别阻止用户时,如果这是误报,则他将无法以某种方式绕过您的保护系统。 现代的浏览器或多或少都试图向用户显示一些漂亮的错误消息,但是,由于普通用户无法随意更改其IP地址,因此人们无法以任何方式绕过您的系统。 因此,我们认为此方法不是很好且不友好。 加上IPv6在全球范围内移动,如果您有任何表被阻止,那么一段时间后,将需要很长时间在此类表上搜索地址,并且将来也没有这种锁。



我们的方法是在顶层锁定。 我们更喜欢对请求进行身份验证,因为对我们而言,这是一个非常灵活地适应应用程序业务逻辑的机会。 这种方法具有优点和缺点。 缺点是开发成本高,您必须在基础结构上投入大量资源,并且此类系统的体系结构(尽管表面上很简单)仍然很复杂。

您在以前的报告中已经听说过有关基于生物识别和数据收集的各种方法。 当然,我们也考虑过这一点,但是在这里,通过收集用户想要委托给您的错误数据很容易侵犯用户的隐私。



我们如何认证? 在我们的情况下,没有什么特别的,但是我想提到一种方法。 除了传统的类型(验证码和一次性密码)之外,我们还使用工作量证明,PoW。 不,我们不会在用户计算机上开采比特币。 我们使用PoW来减慢攻击者的速度,有时甚至完全阻止它,迫使他解决一个非常困难的任务,他将花费大量时间。



我们如何收集数据? 我们使用IP地址作为功能之一,也是我们的数据源之一是客户端支持的加密协议以及连接建立时间。 同样,我们从用户浏览器收集的数据,这些浏览器的功能以及用于验证请求的令牌。

如何检测入侵者? 您可能希望我说我们建立了一个庞大的神经网络,并立即抓住了所有人。 不完全是 我们使用了多层次的方法。 这是由于以下事实:我们拥有许多服务,流量非常大,如果您尝试在这样的流量上放置复杂的计算系统,则很有可能会非常昂贵,并且会降低服务速度。 因此,我们从一个简单的普通方法开始:我们开始计算有多少个请求来自不同的地址,不同的浏览器。



此方法非常原始,但是当您在流量中出现明显异常时,它可以过滤掉DDoS之类的愚蠢大规模攻击。 在这种情况下,您绝对可以确定这是攻击者,并且可以阻止他。 但是此方法仅在初始级别适用,因为它只能防止最粗暴的攻击。



之后,我们进入下一个方法。 我们决定重点关注这样一个事实,即我们拥有应用程序的业务逻辑,并且攻击者永远无法仅仅为您服务并窃取资金。 当然,如果他不破解。 在我们的案例中,如果您查看某个抽象市场中最简化的方案,我们将看到用户必须首先登录,出示其凭据,接收会话cookie,然后去市场,在那儿寻找商品并将其放入购物篮中。 之后,他继续为购买付款,选择地址,付款方式,最后他单击“付款”,最后发生了商品购买。

您知道,攻击者必须采取许多步骤。 状态之间,服务之间的这些转换类似于一个数学模型-这些是马尔可夫链,也可以在此处使用。 原则上,在我们的案例中,它们显示出很好的结果。



我可以举一个简化的例子。 粗略地说,有时用户会进行身份验证,选择购买并付款,例如,很明显,攻击者的行为异常,他可以尝试使用不同的帐户登录多次。 否则,他可能会将错误的产品添加到普通用户购买的购物车中。 或执行一些异常大量的动作。

马尔可夫链通常考虑国家。 我们还决定为自己增加这些状态的时间。 攻击者和普通用户在时间上的行为大相径庭,这也有助于将他们分开。

马尔可夫链是一个相当简单的数学模型,它们非常容易即时计算,因此它们使您可以添加更高级别的保护,从而消除流量的另一部分。

下一阶段。 我们抓住了愚蠢的袭击者,抓住了卑鄙的头脑袭击者。 现在最聪明的人了。 对于棘手的攻击者,需要其他功能。 我们该怎么办?



我们可以从浏览器中收集一些指纹。 现在的浏览器是非常复杂的系统,它们具有许多受支持的功能,它们运行JS,具有各种低级功能,并且可以收集所有这些数据。 幻灯片上是一个开源库之一的输出示例。

另外,您可以收集有关用户如何与您的服务进行交互,如何移动鼠标,如何在移动设备上进行触摸以及如何滚动屏幕的数据。 这样的东西例如由Yandex.Metrica收集。 , , .



, . ? , , , , . , . machine learning, decision tree, . Decision tree if-else, , . , . - , - — , , .



, , , - , , , Softbank, . , , . - , , , .

, , iTunes — , - , .

, , , .



. , ? , . , , , . , .

. , . . : . , .

Source: https://habr.com/ru/post/zh-CN413059/


All Articles