2019-1-20 凌晨一点多,拼多多平台BUG出现。根据脉脉一个ID为“程序员·鹿杖客”的自我爆料,他作为拼多多的一个程序员,将一个100元的无门槛测试券,设置成了自动上线,并在凌晨一点多上线。这些100元无门槛优惠券,拼多多网站页面告知,可以全场通用(特殊商品除外)。
凌晨三点多,已经有大量用户通过网络相互转告领券。而这些可以无条件领取的100无门槛券,经过一些用户以及不排除大职业“羊毛党”发现后,开始叫上身边的朋友一起去重复领取。
凌晨五点多,关于拼多多这个领券BUG,开始在很多公开论坛公开。与此同时,拼多多的运维人员也发现了问题,但是重置系统不成功,超过系统承载阈值。上述爆料的程序员自称曾手动下线,但在早晨八点后又莫名重启上线。
早晨七点,更多消息被人主动公布在网上。有分析认为,这是一些已经领取几十万元的职业羊毛党,故意对外公布拼多多这个BUG,吸引更多人来领取,意图制造人人都有份,从而“法不责众”的效果,达成“薅羊毛”成功的目的。
直到今天上午九点五十分,拼多多内部才最终完全解决了这个问题,并关闭了所有的交易,禁止所有领取的100元优惠券使用。
薅上一天够吃一年。1月20号凌晨一点至9点30分,一则关于拼多多100元无门槛优惠券的线报刷爆了各大羊毛群。从渠道到羊头,从羊头到羊毛党,层层传播,一场的“盛宴”开启了。不限设备不限IP不限账号,每户可领一张100元无门槛券。这个凌晨注定不平静,卡商、接码平台、软件商、羊毛党,整个黑产产业链疯狂的运转。
截止20日上午9时许,拼多多工作人员上班后开始堵截漏洞。21日9时30分左右,基本完成对全平台作废领券入口&禁止无门槛券使用。网传平台预估损失上千万,事故发生后,拼多多平台针对损失的大额变现的虚拟物品进行冻结并对变现实物的订单要求商户停止派发快递,把损失控制在了百万内。

在这个事件中,或多或少都暴露出拼多多在策略流程、技术保障以及企业内部风控保障存在一些问题。针对该事件咱们做一次逆推去重现BUG优惠券的生命流程,就每一步进行拆解分析,从中汲取经验教育为下一次业务流程的完善打下坚实的基础。
重现BUG券产生业务流程
首先是BUG券产生,本次事件最大的问题就是关于优惠券无门槛的设置,现在稍微有点规模的电商在促销反作弊上或多或少都会做一些设置性的门槛。我们常见的无门槛优惠券是电商为了促销商品设置的一种优惠券,虽然往往宣称“无门槛”,但是在实际使用上设置了很多门槛,比如必须新户(这个新包含了新身份证新手机号码甚至新的设备ID),所以我们常说“无门槛”才是最大的门槛。
从BUG优惠券的创建到使用,以及诞生的时候,理论上外人是不知道的,那么是什么导致无门槛优惠券的信息外泄,事件裂变,最后在各大羊毛群中疯狂流转。

1. BUG券产生并上线可能存在的漏洞
(1)技术保障环节存在漏洞
SA系统工程师更新代码时,对前后代码变化的异动未产生风险示警或者说工程师得到了某些批准后便匆匆进行上线更新操作,未对变更代码做严谨的审核。导致最后特定的优惠券代码被更新到正式服。
(2)企业内部业务流程存在漏洞
优惠券一定是在某些特定环节在后台系统优惠券模块生成的。因为一些特殊的场景需要,并未勾选门槛、品类、用户群体等存在风险的规则。不少企业或多或少都会存在这样的事,针对这种情况在创建这样的优惠券使用完毕后,必须进行销毁或封存。并将其记录在工作手则或者进行标注。当发生人员变更交替,避免发生因人员变换导致可能发生的流程风险。

2. BUG券外泄事件中可能存在的问题
(1)技术保障有待加强
羊毛党中技术流派利用python爬虫,采集到拼多多平台所有的优惠券信息,通过数据筛选轻易的发现了存在的无门槛优惠券信息。加强技术保障,实现技术对后台的保障安全墙,当“安全墙”被攻击或者进入增加预警机制。
(2)企业内部管理存在问题
拼多多内部有员工外泄优惠券信息,里应外合,配合羊毛党牟取不正当利益。这种情况需加强企业内部管理,适当增加企业流程审批,针对这样的员工进行依法处理。
3. BUG券传播裂变过程中风险监控存在的缺陷
实时风险监控未落实,此次事件发生在凌晨,微信群、QQ群早已传疯了,甚至到早上8时许,笔者甚至在朋友圈看到分享的线报。这里也说明拼多多并未做好实时的风险监控,在大量地方羊毛党线报体系内没有自己的眼睛,直达上午9时30分才进行了处置。
而整个事件的裂变,如果用一个词形容就是疯狂,看来金钱确实是最大的裂变驱动力。
4. BUG发现后的补救措施
笔者记录当时较为精准的补救时间应该是上午9点30时前后,首先是关闭了领券地址防止用户继续领券,随后对无门槛优惠券进行作废使已领券的用户无法使用BUG券进行商品结算,并在同一时间沟通所有拼多多的三方商户,要求商家不发货订单结算中使用无门槛优惠券的订单。直至下午,所有包含无门槛的订单被取消,已领券用户的账号中的优惠券被删除。
从事件补救的响应速度来看,拼多多平台虽然未在第一时间发现BUG券,但在随后的处理过程中补救措施相对得体,根据笔者线报可见的大批量将优惠券价值变现为虚拟物的账号大多都做封停处理并未造成更大的二次扩散,一定程度挽回了损失,才能够在最后将原来预估上千万损失降低至几百万的可承受范围。这也是拼多多平台就风险处理方面值得咱们借鉴的地方。

当然不论事后拼多多做了多少努力,挽回了多少损失降低了多少影响,咱们都得清晰的明白这是补救措施,面对风险最重要的依旧是避免风险的发生。
御守互联网羊毛党
你问我有没有办法完全杜绝羊毛党,我想未来可能会有但现在绝对不会有。
常见的风控防止薅羊毛的数据风控如下:
- 账号信息:身份证、预留银行卡、手机号等等;
- 设备信息:设备IMEI码、Android_ID、序列号、SIM卡号等等;
- 网络信息:SSID值、Mac地址等等。
从信息采集层面,我们知道不少信息来自App本身从设备中获取。如果我告诉你这些可以作假呢?
技术流羊毛党早已针对这类模型找到了对应的办法,如下图:

作弊和反作弊是一直斗争抗拒的,想要筑好完善的制度和规则,咱们做产品必须得接地气深入群众打入羊毛党深处。
历史上惊人的反作弊案例:
1929年以前,美国证券市场没有完善的法律和监管制度。第一次世界大战后,美国经济繁荣吸引了大批投资者。他们只做发财梦,不考虑当时失控的股票市场的风险和股市操作中的欺诈。 1929年股市大崩盘来临,到1932年美国纽约证交所的市值由890亿美元降至150亿美元。
为了挽救公众对资本市场的信心,让经济复苏,美国国会1934年创建《证券交易法》。为让《交易法》顺利通关,美国政府还作了不少让步,最大让步就是成立了SEC。SEC第一任主席是Joseph Kennedy,当年华尔街最大庄家之一。
Joseph Kennedy在日后善用自己以往的违规经验,变成证券界违规者的大杀手。甚至聘任力主加强监管的兰德斯与道格拉斯 为副手。道格拉斯是第二任主席,兰德斯是第三任主席。
对了,他还有一个儿子叫做John F. Kennedy特别有名,我们常称呼他为肯尼迪总统。
在重建整个事件流程后,咱们从中可以看出一些问题所在,核心的本质无外乎业务流程存在漏洞缺少风控意识。所以当需要做一个整体风控的时候,跨部门跨团队让全体小伙伴都形成反作弊风控意识就十分重要了。
所以,当风控部门在做风控时,除了联合BI大数据部门外,还需要即使协作业务团队在策划活动做用户增长用户推广时,业务层面可能存在的风险隐患。使人人都有识别风险、预警风险、监控风险、应对风险的基本意识和一定程度的能力。
做为一名羊毛党的笔者这里有三个小小的建议
1. 异常数据预警
异常数据预警一般包括两个方面,一方面是价格异常预警,另一面是商品销量预警。
(1)价格异常预警
这一块功能阿里电商后台目前做的较为完善。天猫淘宝改变原固有叠加优惠券模式变为平行优惠券模式,曾在一段时间内经常发生运营乌龙指事件,直接导致用户花费十几元甚至几元购买了原价值几百上千元价值的商品,直接伤害到了商户的利益。
根据淘宝的规则,订单创建后也就代表了契约,商户不得不发货延迟发货或者取消订单。因为规则的改变,有部分商户未重视直接导致损失巨大。(可参考笔者之前的文章产品思维双十一薅羊毛,平行优惠券逻辑下也极易把商家薅废)。目前这块价格预警已经完善,估计日后较难发生错价商品。
(2)商品销量预警
做过电商的都知道在一个成熟体系下商品销售量是具有周期性变化的,除了大促活动外日常的正常营销体系下商品的销量不会出现较大的变化。当某一商品突然以非常态的状态短时间内大量销售,那么一定是来自某一消息面的影响,比如“非典买盐”等特殊情况。如果没有,那么极有可能就是风控失控的表现。
2. 创建个人信息白名单
目前太多的黑产,利用信息不对称、伪造信息甚至买卖身份信息。要想完全杜绝黑产笔者认为是一件长期的任重道远的工作,也绝不是一家公司可以实现的。但是咱们做一份白名单用户,我认为理论上是可以的。
这里常见的商业手段一般就是推出XX盾服务,提供给其他企业获取其他企业信息,整合为自己的大数据不断丰富个人信息白名单。对于中小电商企业来说,这显然是一件较为困难的事情,中小企业的痛点无外乎用户数据基础薄弱资金有限。如果能够以苏秦之势,行合纵六国之策,共享用户信息黑/白名单,消灭一个个信息孤岛,那么我相信整个市场的大环境会越来越好。
3. 优化企业内部风控流程
增加审批机制。对一切涉及“钱”的运营活动策划,在“面向群体”上必须做上报审批,项目活动结束后,做好项目收尾工作。
任何的市场活动都有经费预算,预算的组成来自多方面,对于企业来说市场战略代表着未来。所以才有咱们看到的各种黑客增长以及裂变,本质就是花钱买现在吆喝和口碑为日后的回馈打下基础。
那么有利益就一定会有灰产,这是不可避免的。那么咱们可以做的事情是,尽可能的通过企业内部审批流程机制控制风险的产生以及风险的扩散范围。
从拼多多优惠券事件看到的一些反思
黑产“羊毛党”现状介绍
“羊毛党”一般先利用自动机注册大量的目标网站账号,当目标网站搞促销、优惠等活动的时候,利用这些账号参与活动刷取较多的优惠,最后通过某宝等电商平台转卖获益。
一.“羊毛党”分工
据初步估计,全国“羊毛党”在20万人左右,他们往往有着明确的分工,已形成了几大团伙:
1.软件制作团伙:专门制作各种自动、半自动的黑产工具,比如注册自动机、刷单自动机等;他们主要靠出售各种黑产工具、提供升级服务等形式来获利。
2.短信代接平台:实现手机短信的自动收发。这其中,有一些短信平台是亦正亦邪,不但提供给正常的商家使用,一些黑产也会购买相关的服务。
3.账号出售团伙:他们主要是大量注册各种账号,通过转卖账号来获利;该团伙与刷单团伙往往属于同一团伙。
4.刷单团伙:到各种电商平台刷单,获取优惠,并且通过第三方的电商平台出售优惠,实现套现。
也就是说,这些“羊毛党“在电商促销或优惠活动中,已逐步形成了相对完善的刷单及变现工作流程(见图1:电商刷单团伙工作流程):
图1:电商刷单团队的工作流程
二.“羊毛党”从业特点
从“羊毛党“的分工与工作流程看,他们具有以下从业特点:
1.专业化:有专业团队、人员、机器来做。
2.团伙化:已经形成一定规模的团伙,而且分工明确;从刷单软件制作、短信代收发平台、电商刷单到变卖套现等环节,已经形成完整的刷单团伙。
3.地域化:刷单黑产团伙基本分布在沿海的一些经济发达城市,比如,北京、上海、广东等城市,这或许跟发达城市更加容易接触到新事物、新观念有关。
下图2显示了我们TOP5的黑产刷单团伙分别位于:北京、上海、广州、江苏、浙江这些沿海较发达的经济区域。
图2 TOP5黑产刷单团伙的地域分布
三.对抗刷单的思路
面对黑产刷单,我们有什么对抗思路呢?一般来讲,对抗刷单主要从注册、登陆、活动三个环节入手:
1.注册环节:识别虚假注册、减少“羊毛党”能够使用的账号量。在注册环节识别虚假注册的账号,并进行拦截和打击。
2.登录场景:提高虚假账号登录门槛,从而减少能够到达活动环节的虚假账号量。比如,登录环节通过验证码、短信验证码等手段来降低自动机的登录效率,从而达到减少虚假账号登录量、减轻活动现场安全压力的目的。
3.活动环节:这个是防刷单对抗的主战场,也是减少“羊毛党”获利的直接战场;这里的对抗措施,一般有两个方面: 1)通过验证码(短信、语音)降低黑产刷单的效率。 2)大幅度降低异常账号的优惠力度。
电商防刷架构
一. 腾讯防刷总体架构
面对疯狂的黑产刷单,按照对抗刷单的思路,基于腾讯的多维度大数据,腾讯专门设计并构建了电商防刷技术体系。总体防刷架构见下图3:
图3:腾讯防刷单技术架构
从上面的总体架构我们可以看到,整个系统分三层:接入层、实时计算层、存储&挖掘层。整个系统充分利用了腾讯海量业务生态中的多维度大数据,以及全方位的风控经验与能力。接下来我们详细介绍其中的一些核心模块。
二.防刷单技术架构核心模块与框架介绍
1.风险学习引擎
对于风险学习引擎而言,效率问题非常关键。该模块线上采用的都是C++实现的DBScan等针对大数据的快速聚类算法,性能卓越;而且主要的工作都是线下进行,所以线上系统也不存在学习的效率问题。
风险学习引擎采用了黑/白双分类器风险判定机制,可以很好地减少对正常用户的误伤。例如,某个IP是恶意的IP,那么该IP上可能会有一些正常的用户,比如大网关IP。再比如,黑产通过ADSL拨号上网,那么就会造成恶意与正常用户共用一个IP的情况。
其中,黑分类器风险判定是根据特征、机器学习算法、规则/经验模型,来判断本次请求异常的概率。而白分类器风险判定则是判断属于正常请求的概率。见下图4示意:
图4 风险引擎的宏观构成
2.分类器逻辑框架
如何实现风险评估的判定呢?我们以黑分类器为例,来详细剖析下分类器的逻辑框架。
系统总体是采用一种矩阵式的逻辑框架。
黑分类器最初设计是整体检测判定,即按需随意地建立一个个针对黑产的检测规则、模型。但这种设计出来的结果,发现不是这个逻辑漏过了,而是那个逻辑误伤量大,要对某一类的账号加强安全打击力度,改动起来也非常麻烦。
因此,我们最终设计出一套矩阵式的框架(见下图5),较好地解决上述问题。
图5 黑分类器的矩阵逻辑框架
矩阵的横向采用了Adaboost方法,该方法是一种迭代算法,其核心思想是针对同一个训练集训练不同的弱分类器,然后把这些分类器集合起来,构成一个最终的分类器。而我们这里每一个弱分类器都只能解决一种帐号类型的安全风险判断,集中起来才能解决所有账户的风险检测。
这个矩阵逻辑的横向方法,在工程实现上也带来三个好处:
1.便于实现轻重分离。比如某平台虚假账号集中在邮箱账号,策略就可以加大对邮箱账号的打击力度,影响范围也局限在邮箱帐号,而不是该平台所有的账号。
2.减少模型训练的难度。模型训练最大的难度在于样本的均衡性问题,拆分成子问题,就不需要考虑不同账号类型之间的数据配比、均衡性问题,大大降低了模型训练时正负样本比率的问题。
3.逻辑的健壮性。某一个分类器的训练出现了问题,受影响的范围不至于扩展到全局。
矩阵纵向则采用了Bagging方法,该方法是一种用来提高学习算法准确度的方法。它在同一个训练集合上构造预测函数系列,然后设法将他们组合成一个预测函数,从而来提高预测结果的准确性。
腾讯大数据处理平台-魔方
毫无疑问,对抗黑产刷单离不开大数据。大数据一直在安全对抗领域发挥着重要的作用,从我们的对抗经验来看,大数据不仅仅是数据规模很大,而且还包括两个方面:
1.数据广度:要有丰富的数据类型。比如,不仅仅要有社交领域的数据、还要有游戏、支付、自媒体等领域的数据,这样就提供了一个广阔的视野让我们来看待黑产的行为特点。
2.数据深度:黑产的对抗,我们一直强调纵深防御。不仅仅要有注册数据,还要有登录,以及账号的使用的数据,这样我们才能更好的识别恶意。
所以想要做风控和大数据的团队,一定要注意在自己的产品上多埋点,拿到足够多的数据,先沉淀下来。
腾讯安全团队研发了一个叫魔方的大数据处理和分析的平台,底层集成了MySQL、MongoDB,Spark、Hadoop等技术,在用户层面我们只需要写一些简单的SQL语句、完成一些配置就可以实现例行分析。
这里我们收集了社交、电商、支付、游戏等场景的数据,针对这些数据我们建立一些模型,发现哪些是恶意的数据,并且将数据沉淀下来。
沉淀下来的对安全有意义的数据,一方面就存储在魔方平台上,供线下审计做模型使用;另一方面会做成实时的服务,提供给线上的系统查询使用。
一.腾讯用户画像沉淀方法
用户画像,本质上就是给账号、设备等打标签。但我们这里主要从安全的角度出发来打标签,比如IP画像,我们会标注IP是不是代理IP,这些对我们做策略是有帮助的。
我们看看腾讯的IP画像,目前沉淀的逻辑如下图6:
图6 IP画像系统构成
一般的业务都有针对IP的频率、次数限制的策略,那么黑产为了对抗,必然会大量采用代理IP来绕过限制。既然代理IP的识别如此重要,那我们就以代理IP为例来谈下腾讯识别代理IP的过程。
识别一个IP是不是代理IP,技术不外乎就是如下四种:
1.反向探测技术:扫描IP是不是开通了80,8080等代理服务器经常开通的端口,显然一个普通的用户IP不太可能开通如上的端口。
2.HTTP头部的X_Forwarded_For:开通了HTTP代理的IP可以通过此法来识别是不是代理IP;如果带有XFF信息,该IP是代理IP无疑。
3.Keep-alive报文:如果带有Proxy-Connection的Keep-alive报文,该IP毫无疑问是代理IP。
4.查看IP上端口:如果一个IP有的端口大于10000,那么该IP大多也存在问题,普通的家庭IP开这么大的端口几乎是不可能的。
以上代理IP检测的方法几乎都是公开的,但是盲目去扫描全网的IP,被拦截不说,效率也是一个很大的问题。
因此,我们的除了利用网络爬虫爬取代理IP外,还利用如下办法来加快代理IP的收集:通过业务建模,收集恶意IP(黑产使用代理IP的可能性比较大)然后再通过协议扫描的方式来判断这些IP是不是代理IP。每天腾讯都能发现千万级别的恶意IP,其中大部分还是代理IP。
二.腾讯用户画像类别概览
腾讯用户画像的维度与类别很多,这里仅举部分用户画像数据来说明。比如用户画像其中有手机画像和QQ画像这两个重要类别。涉及画像的标签见下图7:
以QQ的画像为例,比如,一个QQ只登录IM、不登录其他腾讯的业务、不聊天、频繁的加好友、被好友删除、QQ空间要么没开通、要么开通了QQ空间但是评论多但回复少,这种号码我们一般会标注QQ养号(色情、营销),类似的我们也会给QQ打上其他标签。
标签的类别和明细,需要做风控的人自己去设定,比如:地理位置,按省份标记。性别,按男女标记。其他细致规则以此规律自己去设定。
三. 风险判定的基础逻辑
有了用户画像的基础数据,我们就可以进行风险判定了。腾讯风险判定的系统现已开放为腾讯云的能力,即天御系统。我们来看一下风险判定的基础逻辑,见下图8:
图8 腾讯云天御系统防御逻辑示意图
实时防御系统使用C/C++开发实现,所有的数据通过共享内存的方式进行存储,相比其他的系统,安全系统更有他自己特殊的情况,因此这里我们可以使用“有损”的思路来实现,大大降低了开发成本和难度。
但这里在安全策略方面,可能会面临一个挑战:多台机器,使用共享内存,如何保障数据一致性?其实,安全策略不需要做到强数据一致性。
从安全本身的角度看,风险本身就是一个概率值,不确定,所以有一点数据不一致,不影响全局。但是安全系统也有自己的特点,安全系统一般突发流量比较大,我们这里就需要设置各种应急开关,而且需要微信号、短信等方式方便快速切换,避免将影响扩散到后端系统。
电商企业接入天御系统,启用带防刷能力的业务架构
通过剖析腾讯对抗“羊毛党”刷单的防刷系统技术架构与原理,我们了解到了天御系统可以帮助咱们电商企业在促销、优惠活动时,有效打击黑产刷单团伙。特别是马上到来的双十一“购物狂欢节”,该系统将让广大电商企业更好地服务用户,真正为用户带来贴心的实惠与好处。
天御系统可适应的场景包括但不限于:
- 电商o2o刷单、刷券、刷红包
- 防止虚假账号注册
- 防止用户名、密码被撞库
- 防止恶意登录
那么如何接入并使用天御系统呢?其实,电商企业接入天御系统仅需要四步,见下图9:
其中:第一步离线数据分析与第二步搭建实时模型为前期的准备工作,第三步正式接入其实并不耗费多少时间,不过第四步上线后,还需要持续的优化,以进一步提高对抗的能力。
图9 企业接入天御系统步骤
业务接入天御系统后的架构图,见下图10:
图10 业务接入天御防刷后的架构图
从上图可以看到,接入天御防刷是旁路接入,不需要调整现有业务任何核心逻辑、关键流程,可以快速上线。另外,运行过程中,即使天御防刷有任何异常也不会影响业务主逻辑。
Q&A
Q:风险学习引擎是自研的,还是使用的开源库?
风险学习引擎包括两个部分,线上和线下两部分:
线上:自己利用c/c++来实现。
线下:涉及利用python开源库来做的,主要是一些通用算法的训练和调优。
Q:请问魔方平台中用到的MongDB是不是经过改造?因为MongDB一直不被看好,出现问题也比较多。
我们做了部分改造,主要是DB的引擎方面。
Q:请问黑分类器和白分类器有什么区别?
白分类器主要用来识别正常用户,黑分类器识别虚假用户。
Q:风险概率的权重指标是如何考虑的?
先通过正负样本进行训练,并且做参数显著性检查;然后,人工会抽查一些参数的权重,看看跟经验是否相符。
Q:安全跟风控职责如何区分呢?
相比安全,风控的外延更丰富,更注重宏观全局;针对一个公司来讲,风控是包括安全、法务、公关、媒体、客服等在内一整套应急处理预案。
Q:如果识别错了,误伤了正常用户会造成什么后果么?比如影响单次操作还是会一直失败。
如果识别错了正常用户不会被误伤,但是会导致体验多加了一个环节,如弹出验证码、或者人工客服核对等。