业务安全的起源是由于黑产的存在,很多年前黑产就通过黑客入侵,拖库,然后卖数据去赚钱。但现在随着互联网承载的各种业务的兴起,黑产盈利的门槛开始降低,不再须要入侵了对方才能套利,仅通过业务层面的漏洞,防范不严或打法律擦边球就能获利。
另一方面,企业间的恶性竞争,黄赌毒等合规性要求也成为业务安全的驱动力。
本文将描述互联网行业各种典型业务的主要风险和控制方法。
1、对抗原则
在谈及具体的风控措施之前,先罗列一下业务安全的策略和原则,具体如下:
相对的风控而非绝对的防黑——业务安全的目标是相对意义上的风险控制,而不是绝对意义上的防黑。拖库只要发生一次就非常严重,但是业务安全,即使漏掉了一些,但解决了大部分的问题,那就算及格了。
增加黑产的成本而非阻断他们的行为——黑产,羊毛党的驱动力就是为了盈利,如果他们投入的成本超过损益点,那就没必要再去攻击你。比如注册一张银行卡的成本>获取一张手机SIM卡的成本>注册一个免费邮箱的成本。
永远的情报——知己知彼,百战不殆。了解黑产怎么干活事半功倍,深入敌后比躲在办公室更聪明,并非只有爬虫抓来的大数据才叫情报,蹲在对方的QQ群里也能搞到情报。
方法比技术更重要——上兵伐谋,最下攻城。技术的对抗是无止尽的,并且会不断地消耗内部的研发资源和IDC资源,改变战场规则可能起到一招退敌的效果。
数据比算法更重要——大数据的典型特征,算法可以不高大上,但是没有数据或数据太少,风控这件事也许您玩不起来。
勤能补拙——也许您没有大数据,但是不断地改变业务逻辑,不断地升级会使对手疲于奔命。自PS3/PSV时代起,sony不再封堵破解,而是以更短的迭代周期,更高的版本发布频率升级操作系统,新的游戏必须运行于高版本系统之上,使破解者疲惫不堪,盗版用户都懒得再破解。谁主导节奏,另外一方就疲惫。
忽略性能、用户体验和成本的风控没有意义——风控本身的意义在于保障正常用户和平台自身,如果正常用户体验受损或大面积误杀,则风控起了反效果。同样,一家创业型公司不太可能有资源为了做风控而爬遍整个ipv4的地址库。
纵深防御——纵深、多维度、降维防御在风控场景仍然适用,使用漏斗模型,由机器规则处理最原始的数据,逐步筛选过滤,由人工审核做最后一道防线。
杀鸡给猴看——只要条件允许,用法律武器端掉主力,用风控手段扫尾。2:8原则,对危害最大的部分不一定要用常规手段,无论什么土方法,能达成目的就好。能在安全大会上讲的高大上的方法不一定是解决问题性价比最高的手段。
人民的战争——教育正常的用户安全意识,动用一切资源和手段反剿黑产,以资鼓励全民情报。
社工库——敌人有的,我也要有。
2、账号安全
账号安全是所有强账号体系应用的基础,强账号体系,如电商、网游、第三方支付、社交网络、即时通信等,是需要登录后产生数据和交互的应用,而搜索、导航、杀毒客户端不需要登录也能用,则属于弱账号体系应用。
(1)注册
对于羊毛党而言,平时需要“养号”,批量注册一批号放着不用,等到促销之类的活动开始了才用。垃圾注册、虚假小号是垃圾抢购、欺诈钓鱼的源头,账号安全要从源头收紧。
对抗垃圾注册一般的手段包括:
● 图片验证码
● 邮件验证码
● 短信验证码
● 语音验证码
● 电话语音验证码
有些产品是PC客户端,或者Web注册界面不是使用标准的加密算法通过https post请求,自动注册机需要模拟客户端协议才能工作,逆向的协议如果经常变化或者复杂程度较高就会成为黑产研发的一个门槛。
真实的新用户如果在注册时使用了原来其他网站被拖库的邮件地址和相同的密码怎么办?对甲方安全团队而言,自己应持有各种社工库,并随时更新,在用户注册时比对社工库内容,如个人注册信息相同,做出风险提示或强制修改密码。
对于使用分布式代理的注册机,如果有账号风控系统的可以根据来源属性和机器人行为特征标注恶意灰度,从而给与不同级别的验证码。对于产品线较长的企业来说,一般这个环节只做检测,不做“严打”,因为像网游等业务注册小号也是正常的,具体打击和封锁策略留给更后端的业务系统去做。
此外,对于利用注册接口检测用户名/账号是否存在的暴力枚举也应该做人机识别。以防止批量得到账号信息用于批量扫号等动作。
(2)登录
登录环节的问题包括:撞库、暴力破解、盗号登录、非常用设备登录、黑产小号和僵尸号登录等。
对于大型平台而言,登录的入口往往不止一个,且除了Web还有其他的协议入口,例如POP3、手机APP等,尽可能使入口统一,以便于做集中管控。
使用风控系统对比用户画像检测登录地域来源、IP属性、可信设备、登录频率、代理使用习惯等从而推送不同复杂等级的验证码或开启多因素认证。或根据离线数据,即一段时间内的请求(行为)异常,以及其他业务风控子系统判断的行为异常,再调用风控的接口推送二次认证要求做人机识别,如图1所示。
图1 账号风控架构示意图
对于大规模的扫号、暴力破解,除了依赖于机器规则外,还应准备手工策略和应急预案。
风控服务依赖于很多数据,例如设备指纹、IP信誉库、黑产手机号等,获取这些数据是一个比较庞大的工程,对于大型企业而言相对容易获取,中小企业在不借助第三方数据合作的情况下,自己去抓取数据成本会非常高。
(3)密保/密码找回
QQ的密保功能如图2所示。
图2 QQ的密保功能
首先平台应提供多种密码保护手段,并在用户界面显眼处提示或安全教育。其次,应确保平台的密码找回/密码重置等功能不存在逻辑漏洞可以被绕过,或发生过度信息披露。账户展现本身不应该存在可以被爬虫抓取聚合后用于撞库或暴力破解的信息。
在认证设备之间提供异地登录提醒、异常登录提醒、破解账号提醒。对密码找回业务进行人机识别,防止批量找回、密码重置等接口的机器行为。
(4)多因素认证
重要的操作必须使用2FA(双因素认证)或MFA(多因素认证),例如密码找回、密码重置、安装证书等。记得某大型电商平台安装证书不需要二次认证,所以他们的大BOSS站在台上被消费者问及盗号问题时非常尴尬。
之前某厂邮箱账号疑似拖库,引发了大量的iCloud账户被盗,没有开启2FA的用户被彻底控制,手机被iCloud远程锁定,不交钱就直接远程擦除数据,IOS擦数据是直接擦加密文件系统的密钥,基本不可能恢复。
(5)多设备登录
多设备登录时,应保证同平台不能“串号”——同一账号可以在PC端和APP端同时登录,但不能在两个PC端登录同一账号,或不同的手持设备上登录同一账号(iCloud这种可以在iPhone和iPad同时登录,为不同设备间共享和同步数据而设计的账户体系除外),如果在另一台PC上登录同一账号,前一个将被强制踢下线,或前一个设备保持登录状态,第二次登录请求由户主的认证设备通过2FA之后才能登录,再将前者踢下线。
多设备同时登录时应支持交叉认证,例如PC端的可疑登录自动发起2FA请求到手机端,经由手机端确认后才能从PC端登录。微信的设计如图3所示。
图3 微信多设备登录界面
(6)账号共享体系
绝大多数互联网平台都采用SSO的账号共享体系,在开放平台业务上使用Oauth、Openid等联合认证协议。一方面Oauth等协议坑比较多,非常容易出问题,另一方面内部在对账户数据的使用上也容易不遵守规范,过度共享和滥用账户数据,这些都需要在相关的应用安全开发标准中约束。
大型平台一般有很多应用,凭借一个登录token直接无障碍登录所有子应用在安全上并不是一个好的设计,一旦被XSS盗取token就相当于全线溃防。所以在功能和应用入口比较多的平台,会对业务划权重,分类分级,涉及个人认证信息、个人隐私、支付类的一般属于高级Web安全域,信息发布类的归入一般Web域。对高安全域的应用,登录除了SSO token之外,引入第二层认证的secure token,黑客光有一个token登录不了重要应用,只有两个token齐备才可以继续登录。安全研究者d4rkwind实现secure token的一个例子,如图4所示。
图4 某互联网公司SSO登录流程
BDUSS是SSO token,STOKEN是secure token,LOGA是一个用户跳转的接口,跳转到passport(即SSO),正常用户passport域下肯定有STOKEN,LOGA成功后会给原域名STOKEN,所以只需要跳转就可以安全登录而无需输入密码。这个方案会比一般的单点登录多一次跳转,但对用户基本无感知,这样做完全不显得激进。
3、电商类
电商是互联网行业中走得比较靠前的行业,在当下互联网+和O2O时代比较热门,因为跟钱强相关,所以也促成了一系列的业务安全问题。这里的电商,实际上把广义上涉及在线交易的都算进去了,比如OTA在线旅游代理这些都统统纳入电商的范畴。
(1)恶意下单
跟syn-flood神似,拍下商品但不付款,旨在侵占库存,一般的对策是高峰时段下单使用验证码,下单后一段时间不付款订单自动失效,限制下单频率,有风控数据源可以对恶意账户进行标记,冻结下单。
(2)黄牛抢单
黄牛一般事前批量注册小号,抢购前准备好抢单机器人程序(黑色产业链中间环节也有码农的参与),如图5所示,抢购开始时犹如遭受了CC攻击。
图5 黄牛抢单
对于恶意养号,风控系统一般会根据小号、僵尸号平时的行为与正常账户的区别标注、登录的途径、登录地域、登录设备指纹、收货地址来分类标记,抢购开始前就能在账号层面冻结掉。
在活动开启前如果抢单程序是针对既有页面逻辑的,可以临时更换业务逻辑使抢单程序失效。在抢购过程会使用验证码做人机识别。
(3)刷优惠券和奖励
首先要在账号层面根据大数据标记账户恶意灰度,其次优惠券跟账号绑定,无法流通和交易。跟网游中的经济体系数值类似,建立阶梯模型,给优质账户高额回馈,给低信誉账户小额优惠。
(4)反价格爬虫
价格爬虫主要是竞争对手比价。但凡是爬虫就有爬虫的特征,比如爬虫所在的IP段,同时爬虫不是正常的浏览器,可能不会解析JavaScript,缺少正常的浏览器客户端行为和通信,所以通过这个做人机识别跟DDoS中的CC攻击有点类似。
(5)反欺诈
根据账户注册信息的真实性、登录设备的真实性、绑卡异常、账号异常,结合自有或第三方历史征信数据综合判断欺诈的可能性。依赖于大数据的反欺诈对数据源的要求比较高,绝大多数中小企业自建数据源不太具有可行性,初期还应该依仗大平台开放的基础数据能力做定制分析,并逐步积累自己的业务数据,等自身业务数据积累到一定规模时再考虑自建风控机制。
(6)信息泄露
信息泄露有几大来源,撞库、用户信息过度展现和披露、开放平台API滥用、供应链上下游信息泄露,“内鬼”兜售内部数据。
目前隐私保护在国内尚不成气候,很多公司有安全开发标准,却没有隐私保护标准,所以对数据的分类分级,加密脱敏等几乎没有通用的约束。而对客户元数据的访问权限,内部的信息安全管理,基本上都只有成熟的大公司才会考虑。
对于野蛮成长期的创业型公司强调这个可能有点难,但对于已有安全团队的企业,这应该纳入安全负责人的视野之中。
(7)交易风控
交易风控依赖于几个方面:
1)账户安全
● 账号安全中部分
2)客户端安全
● 反钓鱼
● 反木马
3)认证机制
● 证书PKI
● 令牌
● 多因素认证
4)风险评估
● 账户历史行为
● 账户历史征信数据
● 交易和账户异常
● 漏斗模型筛选,机器规则+人工审核
交易风控在传统安全(包括认证、账户、KMS、PKI、客户端完整性等)基础上还需要由3大组成部分:
● 用户数据、交易数据。
● 来自传统金融行业的风险管理。
● 基于大数据的风控平台。
交易风控团队需要两拨人:一拨来自传统金融行业,一拨来自互联网。
4、广告类
因为点击欺诈非常严重,数据作假水分很高,所以目前都是按广告效果、实际订单效果收费,以前的CPM、CPC模式都不行,基本都是CPA为主,但是即便是CPA,广告联盟有时候还是跟黑产玩一样的,会假装正常用户注册登录然后充值,甚至小量消费,只要这些充值消费低于它所获取的广告费它就是赚的,因此对于这类行为的打假也需要依靠账号标签以及对用户行为模式的数据分析来获取。
5、媒体类
媒体类的问题主要是黄赌毒、舆情安全。基础的手段包括:敏感字过滤、设置举报功能、加上人工审核。高级的手段本质上就是搜索引擎的技术:抓取样本,用机器学习的方法做特征识别。
6、网游类
游戏行业除了盗号盗充外,最主要的问题就是反外挂、私服、打金工作室。总结一下有几个层面的保护手段:
客户端——对于flash等瘦客户端最主要的技术是代码混淆,用于对抗反编译后逆向游戏的逻辑和网络协议。对于大型客户端游戏,对抗的方式主要是加密加壳,以及各种二进制反调试手段。
网络封包——对抗重放型攻击,具体实现方式可以参考大多数rest API的安全设计如何防止packet replay攻击,原理基本类似。
服务端校验——把大部分逻辑验证放在服务端,同时校验时钟同步等。
人机识别——通过定期弹出验证码或回答问题实现前端的人机识别,后端根据地图移动轨迹,鼠标轨迹,物品使用速度等做人机识别。
产品内容设计——物品与账号绑定,如图6所示,随时间降低收益,内部经济平衡数值体系,游戏内产出利益分配倾向性等对抗打金工作室对游戏内部环境的污染。
图6 网游中的虚拟物品绑定
运营数据监控——通过运营数据,如虚拟装备产出数量,个人成长速度等监控发现异常行为。
私服——主要的根源在于供应链管理,研发到运营的交付过程,研发的信息安全管理,运营平台的防黑建设,研发团队集体跳槽的知识产权保护,主创人员敏感异动预警,竞业协议,保密协议等。
游戏是将互联网用户流量转化为金钱变现能力最强的业务,故而黑产的分工也比较成熟,所以对抗上也需要各种情报,姑且不去加上威胁情报的大帽子了,这是一个需要发动广大群众进行持久对抗的大课题。
7、云计算
这里站在云计算平台厂商的角度来看,而不是站在租户的立场上看的。主要问题是CaaS(Crime as a service),云平台被当做犯罪的场所,除黄赌毒外,很多虚拟机实例被植入木马变成“养鸡场”,僵尸网络的集中地,频繁的DDoS其他IDC,或用于暴利密码破解等网格计算行为。
对于云平台的监管,一方面手不能伸得太长,触及用户隐私数据,一方面又要做治理。对于租户使用云平台开展黄赌毒业务的,可以参考媒体类的解决方案。而“养鸡场”这类问题,纯粹是一个租户级的整体安全防护能力,基于网络的异常流量分析。对于使用云资源跑彩虹表又不公开提供服务的行为而言,目前似乎没有太好的检测手段。
云计算作为一个公共平台,上层业务可能会覆盖全行业全类型,滋生的问题可能层出不穷,在提供安全解决方案以外,如何为租户的风控提供便利是一个长期而有挑战的课题。