导读:所谓黑灰产,包含网络黑产、灰产两条产业链,随着互联网的飞速发展,网络黑灰产也在不断演变,当前网络黑灰产已经趋于平台化、专业化、精细化运做。基于黑灰产攻击特色,咱们提出了一种基于社群编码的黑灰产攻击识别方法,社群发现部分基于图关系,编码部分引入大规模的图嵌入表示学习。相比于传统的图谱关系挖掘,能够更好的识别和度量未知攻击。并且咱们还提出了基于异步准实时的工程化实现,对频繁变化的黑灰产攻击有更强的应变灵活性。node
全文4424字,预计阅读时间12分钟。算法
1、背景
所谓黑灰产,包含网络黑产、灰色两条产业链,随着互联网的飞速发展,网络黑灰产也在不断发展,当前网络黑灰产已经造成了一个平台化、专业化、精细化,相互独立又紧密协做的产业链。从近几年多起重大网络安全事故看,黑灰产已经再也不局限在半公开化的纯攻击模式,而是转化成为敛财工具和商业竞争的不良手段,据不彻底统计,当前网络黑灰产的市场规模已经超过千亿元人民币,在这千亿级的市场规模下,发展出了很是多的细分领域,如木马病毒,养号刷单,薅羊毛,电信诈骗,知识盗版,流量劫持等。安全
各互联网平台为了防止被网络黑灰产攻击,开发了不少防护及识别技术,最常被广大用户感知到的验证码技术就是其中之一,在验证码技术背后,还有很是多的识别方法,例如经过规则引擎依据防攻击规则进行分析拦截,经过行为序列建模对单次请求进行黑灰产行为断定,经过图谱关系挖掘用户之间的相关性以识别黑灰产团伙,基于层次聚类、均值聚类、高斯混合等聚类模型对黑灰产攻击进行无监督识别,这些方法均能在不一样程度上对黑灰产起到识别和防护做用。cookie
基于以上黑灰产攻击特色,咱们提出了一种基于社群编码的黑灰产攻击识别方法,社群发现部分基于图关系,编码部分引入了大规模的图嵌入表示学习方法,相比于已有的图谱关系挖掘,能够更好的识别和度量未知攻击,并且咱们也提出了基于异步准实时的工程化算法实现,对频繁变化的黑灰产攻击有更强的应变灵活性。网络
2、社群结构
基于社群编码的黑灰产攻击识别方法,在原有图谱挖掘的基础上,引入了大规模的图嵌入表示学习技术,除了能挖掘出黑灰产自己的关联关系,还能识别出潜在的黑灰产网络结构,让识别过程更加准确稳定。并发
该方法基于的关联图有两种,分别是同构图和异构图,这也是黑灰产挖掘过程当中常常会遇到的关联图结构。同构图表示网络图中全部节点的类型都相同,如对于一个帐号关联而言,网络图中的节点有都是用户的帐号ID。异构图则表示网络图中全部节点的类型多是不一样的,如在帐号关联网络中,网络图中的节点除了帐号ID外,可能还有IP地址,设备号,手机号等其余类型的节点。异步
下图表示了同构和异构的两种示意图,同构图表示全部帐号ID组成的网络结构,异构图表示由帐号ID、设备ID、手机号和IP地址组成的网络结构。分布式
对于图结构网络,除了边关系,节点自身也会不少固有属性,如对于一个帐号ID的UGC场景,会有不一样的活跃时间,不一样的业务场景(如浏览图文,浏览视频,发表图文等),不一样的操做类型(如发文、评论,点赞,转发等)。这类节点自身属性以下图中表格所示。函数
为了便于说明通常状况,后文说明中默认全是异构图结构,由于同构图做为异构图的一种特殊状况,即便是实际推广中是同构图,也不影响使用异构图的方法进行分析。实际场景中图网络关系以下图例所示。工具
为了识别出关联结构图中的社群,目前已经有比较多的识别方法,经常使用的有基于节点的统计特征,基于节点出入度的分布变化,基于关联边的自定义权重,人工标注等方法,此类方法能识别不少关联社群,可是因为图谱关联中难以定义边的权重,会存在较多误召,因此咱们在实践中基于已有社群挖掘结果进行编码以提高黑灰产识别效果,同时嵌入式图编码还能够基于节点的邻居关系进行类似性的无监督学习。
3、图嵌入式编码
图嵌入式编码是一种将节点编码成向量的node2vec方法,咱们采用的图嵌入式编码方法为斯坦福大学William L. Hamilton、Rex Ying和Jure Leskovec等人在2016年提出的GraphSAGE,与node2vec相比较而言,node2vec是在图的节点级别上进行嵌入,GraphSAGE则是在整个图的级别上进行嵌入。GraphSAGE同时利用节点特征信息和结构信息获得Graph Embedding的映射,相比以前保存映射结果的方法,GraphSAGE保存了生成embedding的映射,可扩展性更强,对于节点分类和连接预测问题的表现也更加突出。
GraphSAGE算法流程包含三个步骤:
(1)对图中每一个节点邻居节点进行采样,由于每一个节点的度是不一致的,因此为了计算高效,为每一个节点采样固定数量的邻居。
(2)根据聚合函数聚合邻居顶点蕴含的信息。
(3)获得图中各顶点的向量表示供下游任务使用。
下图为该算法做者在论文中提供的采样和聚合示意图。
使用下图所示的方法进行节点采样。每一层的node由上一层生成,与本层无关,如此,1层的帐号ID 1已经聚合了0层设备ID 1和手机号2的信息,在二层,手机号2再聚合IP地址1的信息,通过两层采样,就能够扩展到帐号ID 1的2阶邻居包含设备ID 一、手机号一、设备ID 二、手机号二、帐号ID 2和IP地址1的全部信息。
采样过程当中固定采样层数(本实践使用2层)和每层采样点的节点数(如邻居节点数上限为200个),能够控制每次采样过程对内存的消耗和运算耗时,该方法适用于大规模数据集,对大数据集下的黑灰产社群挖掘很是有效。
咱们采用的聚合函数为均值聚合,直接对目标节点和全部邻居emebdding中每一个维度取平均,后再非线性转换,原论文中相应函数表达式以下:
其主要思想是将目标顶点和邻居顶点的第k−1层向量进行拼接,而后对向量的每一个维度进行求均值的操做,将获得的结果作一次非线性变换产生目标顶点的第k层表示向量。不一样的聚合函数计算方法不一样,除均值聚合函数外,还有池化聚合器、LSTM聚合器等可选,通过测试,对于黑灰产社群挖掘而言,不一样的聚合函数差别并不明显。
如此,通过以上对黑灰产社群的采样与邻居聚合,能够获得每个节点在网络图上的向量表示。如上面采用图示中帐号ID 1的向量就包含了设备ID 一、手机号一、设备ID 二、手机号二、帐号ID 2和IP地址1的网络结构信息,同时包含了这些ID在不一样时间点、不一样业务场景、不一样操做类型上的行为特征。
4、模型训练
基于上面的采样和聚合函数,开始进行参数学习,GraphSAGE不一样的损失函数表明了不一样的参数学习方法,以下所示损失函数就是一种无监督的损失,倾向于使得相邻的顶点有类似的表示,相互远离的顶点的表示差别变大。
上式表示节点 u 和随机游走到的邻居节点 v 有类似的embedding表示,而与通过负采样获得的不相邻节点 vn 有不类似的embedding表示。
对于无监督损失学习到的节点embedding,可继续供下游任务使用,本实践就是采用的该方法。固然,对于特定分类任务,也可使用特定的损失函数,如使用交叉熵进行分类预测。
咱们经过节点的统计特征,人工标注肯定了正负样本,使用节点的编码向量做为特征进行分类模型训练,下图所示即为部分数据的挖掘结果可视化。
直观而言,对于社群团伙的挖掘仍是比较合理的,整体分为三类,红色为一社群,黄色为一社群,其他(绿色)自动归为一类。
5、工程化实现
为了在实际应用中发挥编码的价值,咱们提出了一种异步准实时的黑灰产识别方案。下图表示了这种识别方案的流程结构。
一个用户开始请求客户端,能够采集到用户的关键因子信息,如帐号ID、IP地址、设备号、手机号等,将这部分日志信息写入暂存区,暂存区存储着全部在过去10分钟(也能够是其余某个时间段,通常而言,日志量越大,暂存区时间越短,反之越长)内请求过该客户端的用户的关键因子信息。
超过10分钟的关键信息则存入离线的分区日志库,基于分区日志库进行图谱构建,黑灰产社群挖掘,社群编码,以及使用向量表示训练分类模型,分类模型能够不用实时训练,按期使用过去一段时间的分区日志训练便可。
对于还在暂存区的关键因子,会对请求的用户进行实时图谱构建,以该用户为中心进行节点采样并作向量表示,使用已经训练好的分类模型对该用户的表示向量进行黑灰产预测,若是预测为正经常使用户,则容许用户在客户端上的操做,若是预测该用户为黑灰产用户,则拒绝该用户进行客户端操做。
下图是训练部分较详细的过程:
下图是预测部分的较详细过程:
6、创新点
本实践提出的一种基于社群编码的黑灰产攻击识别方法,主要创新技术点包括:
基于社群编码对黑灰产进行有监督识别的方法,相比于既有图谱挖掘算法,该方法不直接依赖于单个节点属性,而是将整个社群的关联结构编码到一个表示向量中,对黑灰产的表示更加准确,并且对于历史上未出现的黑灰产帐号,也能经过网络结构之间的类似性,经过向量表示进行识别。同时能够有效避免由于噪声关系(如黑灰产帐号链接了商场wifi)致使的错误识别。
因为图编码结果自己就具有邻居之间的强类似性,非邻居之间的弱类似性。故使用编码后的向量进行无监督学习(如密度聚类和层次聚类),也能够识别出部分黑灰产在IP、帐号ID、手机号及设备号之间的内在关系,挖掘出类似黑灰产组成的聚类簇。
使用暂存区将大规模的图嵌入表示学习方法与小数据集的异步预测结合在一块儿,并使用编码后的有监督模型进行快速预测,为实际工程化应用提供了参考方法。
7、部分实践效果
搭建的因子编码模型包含有ip(IP地址)、cookie_id(cookie信息)、device_id(设备ID)、userid(用户ID)、mobile(手机号)等共计5个关键因子,编码的特征包含 scence(业务场景), page(页面), risk(风险程度)等信息(编码特征需依据具体场景而定)。
按10分钟为一个暂存区窗口,获取因子数量百万量级,编码的关系数量近千万,编码的向量长度300左右。通过人工校验,对embding结果使用有监督方式例行化产出ip维度的风险,使用其余策略交叉校验,该策略准确率能达到95%左右。无监督模型实践中效果较差,没有实际使用。
8、发展与思考
基于以上实践发现,社群编码方法在黑灰产识别中具备较好的正向效果,但在实际生产过程当中,仍然面临一些问题,如下做简要探讨。
计算问题:图计算很是消耗计算资源,并且完整过程当中须要短期进行大量预测,当前结合mini batch训练预测,在独立的GPU环境中,完整计算一个日志分区约须要半小时。
关键因子和编码特征的选择问题:图算法的结果很是依赖于图结构和特征属性,这为前期的因子选择和特征工程带来巨大挑战。
识别过程的自动化问题:GraphSAGE算法自己具有无监督识别的能力,但黑灰产识别过程当中发现这很是容易受到中心节点的影响(这能够经过权重优化获得必定程度解决),故当前仍然须要提早作部分社群定义,而该过程须要人工或其余建模方法介入,难以实现彻底自动化。
招聘信息:
百度移动生态事业部MEG,用户中心招聘研发岗位(PHP/GO/C++)。咱们主要负责公司Passport、用户资产、属性、百度APP会员等核心业务方向,致力于打造高效、便捷、安全的用户体系。若是你对Passport、百万级QPS服务、分布式设计&治理感兴趣欢迎加入咱们。
关注同名公众号百度Geek说,输入内推便可,咱们期待你的加入!
推荐阅读:
---------- END ----------
百度Geek说
百度官方技术公众号上线啦!
技术干货 · 行业资讯 · 线上沙龙 · 行业大会
招聘信息 · 内推信息 · 技术书籍 · 百度周边
欢迎各位同窗关注