Erlo

58信息安全-社区发现算法在黑产识别中的应用

2021-12-14 14:30:08 发布   248 浏览  
页面报错/反馈
收藏 点赞

01

导 语

在目前繁盛的互联网世界中,各个企业都面临着随时准备掠食的黑灰产从业者。 由于互联网的隐身匿名性、技术的普及以及互联网的跨地域性,导致线上线下的黑产互相渗透、深度融合。 网络黑产从传统链条发展到现在的生态化、智能化以及精准化,从而导致黑产行为泛滥蔓延,网络生态的治理面临前所未有的风险与挑战。 为此本文利用无监督社区发现算法来对黑灰产进行识别,通过实验数据表明,该方式具有识别精度高、鲁棒性强等特点,为保障58业务安全提供了切实可行的技术方案。

02

黑产现状与治理 

1.黑产发展现状

受疫情影响,整个黑产市场的基础资源供应受到影响,同时由于国家政策的打击力度不断增强,黑产的规模和活跃程度有所下降。但是这只是短暂的情况,当环境合适之后,黑产将会以更大的规模、更多的形式来袭,所以黑产打击工作时刻都不能停歇。

黑产的主要特点有以下几种:

  • 潜伏性:黑灰产的从业者可能会长期圈养一大批账号,在需要获利的关键活动或者关键时间点钟迅速出击以获取最大的利益。

  • 群体性:单个的黑灰产攻击无法获得有效的利益,但是黑产一般使用团伙作案的形式,通过人海战术获得大量的收益,每次攻击都如蝗虫过境一般。

  • 掠夺性:绝大多数的黑产都不会创造出任何价值,都是以掠夺为生获取收益,不但对企业平台造成经济损失,有时还会造成口碑、名誉等损失。

  • 无限制性:从本质上来说,黑产行为是违法的,为了达到获利目的,会不择手段,比如对企业而言,会进行服务器攻击,刷接口等行为;对个人而言,会收集其他人的隐私信息进行欺诈活动等造成不好的影响。


2.现有黑产识别模式

当前工业界和学术界中,对黑灰产行为的发现主要从两方面来进行的:

  1. 通过图像、文本、音视频等从内容层面上进行检测,发现内容违规则对内容进行删除或账号进行处罚。

  2. 通过账户的行为动作进行分析,对异常的访问浏览、点击发布等行为建模处理,对违规账号执行处理。

以上两种方式中,基于内容的检测可以对明显暴露的违规进行发现处理,而对于多样式的隐藏式黑产发现能力较弱,而基于账号的行为检测中,可以基于账号的角度来进行全局的分析。

在黑产的发展形势中,目前主要以下几种:1、通过以量取胜利用长尾效应,来进行微小收益的最大化;2、黑产资源的平台化,利用平台的基础资源,比如手机号、IP、设备信息、身份证、银行卡等信息来进行低成本的大规模行为。

基于以上几点,在账号的宏观角度下可以更加容易的区分出黑产的群体性行为,因此可以利用社区发现算法,来对黑产账号进行识别与发现。


03

整体架构设计

在整个系统架构中分为4个部分,分别为数据来源层、关系构建层、算法计算层、数据输出层、场景应用层。

数据来源层主要负责数据的收集与整理,利用用户的多媒体数据、基础数据、行为数据以及其他特征数据建立实时用户关系中心,通过kafka或者hive表向上传递相关数据。

关系构建层用于将关系中心的数据构建成算法所需的关系格式与内容,包含设备关系、资源关系、行为关系以及推理关系的构建

算法计算层主要应用spark计算引擎,通过对图进行构建以及子图抽取来执行社区发现算法或标签传播等算法。

在数据输出层中,主要将提交的任务结果进行存储。目前主要有三个存储位置,分别为hive表,用于离线查询或历史任务信息查询;当使用jar包调用时,会返回Dataframe至程序,供开发人员直接进行后续的数据处理与应用;同时也可以存储至Redis中,保证用户的在线实时查询要求。

最后是场景应用层,对社区发现的结果进行高效利用,目前主要用于黑产的团伙发现,提供风险召回功能,同时还用于用户审核和资源审核中,为审核人员提供相应的审核线索。


04

社区发现算法

1.Louvain算法原理
从直观上来理解,社区指的是网络中的一些密集群体,每个社区内部的节点连接相对紧密,而各个社区之间连接比较稀疏。目前社区发现的算法很多,比如infomap、GN、CPM等,本文将主要讲解基于模块度方法的Louvain算法。
louvain算法是基于模块度(Modularity)的社区发现算法,通过模块度来衡量一个社区的紧密程度。如果一个节点加入到某一个社区中会使得该社区的模块度有最大程度的增加,则该节点就应当属于该社区;如果加入到其他社区后没有使其增加,则留在自己当前社区中。
模块度公式:
模块度Q的物理意义:社区内节点的连边数与随机情况下的边数之差,定义函数如下:

在此公式中,只有节点i和节点j属于同一社区,公式才有意义,所以该公式是衡量某一社区内的紧密度。对于该公式的简化变形如下:

在louvain算法中不需要求每个社区具体的模块度,只需要比较社区中加入某个节点之后的模块度变化,所以需要求解,将节点i分配到某一社区中,社区的模块度变化为:


2.Louvain算法流程与优化

算法原始流程

1. 初始化,为每个节点分配不同的社区
2. 遍历节点,按模块度最大化准则归属社区
3. 合并同社区节点生成新的节点
4. 构造新图
5. 重复2-5,直到算法收敛稳定

在实际使用中发现,louvain算法会存在大社区合并小社区的现象,不符合实际业务的使用要求,为此我们对整个流程进行优化,在原流程3和4之间新增权重更新的步骤:

3.1 判断新图边权重是否小于一定比例
3.2 低权重边切断(低权置0)

整体流程如下图:


05

 黑产识别应用

该数据为58某业务线数据,利用用户相关事实资源数据进行关系构建,如电话、微信、qq、IP等信息,通过利用原始louvain算法对用户进行分群挖掘之后的可视化图像,从该图中可以看出大部分用户为正常无关联用户,中间深色部分为异常聚集用户。

对中心聚集部分进行放大,可以明显观察到聚集群体之间也存在着部分关联,由此可见几个较大的黑产团伙之间也存在着资源共用、行为相似的情况。

原始Louvain算法效果:

根据数据分析可知社群越大,该社群的用户风险比例越高。

优化Louvain算法效果:

红色数据为算法优化后相关效果。从图中可以看出,优化后的方式可以将大社区拆分,保留更多风险数据在群内,提高了群内用户的风险比例,从而对业务产生更大的价值。

下图为通过对某一团伙进行用户抽样的结果,可以看出抽样用户均属于恶意引流违规,对社区内所有用户审核后发现95%以上为黑产用户,从中可以得到该群体用户大部分为黑产用户的结论。

实际业务应用中,聚集群体通过自定义相关指标(社群大小、社群权重,群体资源比等)进行筛选,在黑产团伙识别中,平均识别准确率可达70%以上,黑产用户召回数量比原有策略提升30%以上,未暴露风险用户识别能力大幅度提升。


07

 展望与规划

根据实际中遇到的相关情况,分享2个未来的规划:

1、由于多数业务场景不同,不存在一个算法模型可以解决所有问题,所以将会在未来增加更多的算法模型进行融合结果处理;

2、黑产账户被处理之后通常会快速的申请其他新账户,会导致新账户与其他节点没有连边关系,为了保证可以及时捕捉到该账户,将会引入更多的行为类特征关系来处理冷启动问题。


参考文献:

【Fast unfolding of communities in large networks】 https://arxiv.org/abs/0803.0476

作者简介:

庄伟,58同城信息安全部高级算法开发工程师,2019年加入58同城,主要负责业务风控算法设计与开发等工作。


本文分享自微信公众号 - 58技术(architects_58)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

登录查看全部

参与评论

评论留言

还没有评论留言,赶紧来抢楼吧~~

手机查看

返回顶部

给这篇文章打个标签吧~

棒极了 糟糕透顶 好文章 PHP JAVA JS 小程序 Python SEO MySql 确认