余生很短,如果要找个人相爱相杀的话,我想这个人就是黑产或者羊毛党。
业务生产线,是个没有灵魂没有思想的系统,来者不拒。而做为系统安全开发,没有黑产的攻击,那么工作是无趣的。哪里有利可图,哪里就有黑产。
画上一个不算全面的架构图:
规则防御系统架构
业务系统:如注册、登录、评论系统、直播关注等
风控系统:根据业务数据或者埋点信息,如用户ID,请求IP、设备ID等来判断当前用户或者事件是否有风险。
管理系统:风控系统的配置管理
分析系统:包括日志系统、AI模型、离线分析。
本系统采用两种防御技术,规则防御、模型防御。规则比较好理解、也比较灵活,但是容易被黑产猜中绕过。比如我们对IP限制,那么黑产就使用代理IP,比如我们针对设备做规则,那么黑产就伪装设备ID等。所以在实际业务中我们会结合多种规则对一个事件进行综合判断。甚至引入用户行为模型来进行防御。
微博、抖音等评论、点赞关注很火爆,假如我们以评论业务为例设置一些规则:
- 单IP5分钟内评论超过100条
- 单设备5分钟内评论超过10条
- 账号注册时间小于1天
- 同一个IP段评论次数
- 是否风险IP
- 是否黑卡
- 等等
实际业务中我们可能加上十几二十种规则,这个都很常见。
那么这些规则怎么生效呢?
1、数据准备
一个用户评论后,评论系统一般会送过来的信息包括:用户ID、设备ID、IP、评论内容、评论时间、评论对象(比如短视频GCID)、客户端版本等等,除了这些信息对我们的安全防御判断还是不够的,所以我们设计了系统函数,可以通过配置去特定的业务方取对应的数据,比如我们可以去账号网关取用户的手机号、邮箱、昵称、注册时间、会员信息等,可以根据IP去IP库去取地址、经纬度等信息。
2、指标统计
比如针对规则单IP5分钟内评论超过100条,我们可以采用redis/ssdb做统计
假设我们的事件名为comment,规则名为ip_per_5min
那么这条规则的统计可以使用comment_ip_per_5min_<ip地址>
做为key,用incr
原子操作来对本规则IP进行统计。
如果系统压力比较大可以考虑采用Flink流计算做准实时统计模块,这样可以大大提高系统性能。
这样的话就多了一条路线,图中黄色框框部分。
优化架构3、规则判断
规则可以分为属性判断和统计指标阈值判断。
3.1、属性判断
比如上面说的是否风险IP、是否黑卡、用户轨迹等
3.2、指标阈值判断
比如上面提到的单IP5分钟内评论超过100条、单设备5分钟内评论超过10条。
4、结果输出
假如命中规则A单IP5分钟内评论超过100条得分50,命中规则B账号注册时间小于1天得分20
那么A & B计算方式:
score = 100 - (100-A)*(100-B)/ 100
同理 命中三条规则 A & B & C 的计算方式就是:
score =(A & B)& C
代入公式:
score = 100 - 50*80/100 = 60
假如 [0,60)结果为PASS, [60,80)结果为REVIEW,[80,100]结果为BLOCK
那么这条用户评论等分60分,结果为REVIEW,业务端需要出验证码。
5、模型训练
以上面介绍的规则防御结果为训练参考,对防御日志进行数据处理,维度提取等操作。
维度:
比如1小时内用户轨迹(根据IP计算用户运动距离):100km
5分钟内IP访问次数:98
5分钟内设备访问次数: 34
手机号是黑卡: 1
IP是风险IP: 0
规则防御结果是:BLOCK
这样就形成一条可以训练模型的数据:
100 98 34 1 0 BLOCK
当然实际维度需要线上的数据支撑调整,我们采用ANN(人工神经网络)进行模型训练,这个网上有很多基础知识,这边不再展开。
6、团伙关系图
比如我们选择常见属性:用户ID、IP、设备ID,那么每次访问都有这些信息。我们通过采集线上日志使用echarts画了一下关系图:
团伙关系图
这个图可以比较直观的反应出团伙关系,零星的点表示正常的用户访问,而中间一团,可以很明显的看出这么多用户使用的是同一个IP。
7、多事件联动
比如,黑产有很多手机号,那么他会通过手机号注册来平台注册很多账号,然后发表评论、给评论点赞让评论置顶,然后修改用户昵称(比如广告信息)。这一系列操作乍一看都是正常的,但是联合起来呢?
用户注册->评论->刷赞置顶->修改昵称
这一波骚操作,当时我就给了满分。这会儿我们从单个事件来看这些用户行为都是再正常不过的们,但是结合起来就很犯难。
防御规则怎么设置?比如
- 注册时间小于n天评论数在单位时间内不能超过m条
- 几个月内没有登录在单位时间内不能超过m条
- 短时间内不同事件使用不通IP
等等
当然对于用户内容(UGC)比如评论、昵称,我们还是要审核的,下次分享内容审核系统架构。
8、日志分析
这是很重要的一个环节,比如你线上业务系统被刷了,而且你的规则都被绕过,那么你就需要根据防御日志去分析这批黑产的特征,定位到问题后添加规则,防御系统已放过的黑产账号是否封号等操作。
最后,在这没有硝烟的战场上,你攻我防,我防住的是责任,你攻入的可能是监狱。法网恢恢,疏而不漏。有那技术干嘛选择可能的牢饭?
网友评论