简介
在安全对抗中, 黑产会通过各种手段更换资源, 从而绕过策略. 当安全问题爆发时, 需要耗费很大的人力以及精力去分析, 制定各种策略. 由于黑产在账号或者行为之间具有强关联性和聚集性, 比如同一团伙使用同一 IP 段, 同一设备指纹信息, 并且访问时间间隔, 请求的 URL 参数具有一致性等行为特征. 分析人员针对这种联系, 可以制定出各种策略, 但是策略只能是单个或者几个特征的组合, 无法从多个维度或者全局维度进行分析, 拦截.
策略人员通过策略发现异常遇到的主要问题包括:
1. 异常行为需要长时间针对不同场景观测, 分析, 变换策略, 难以短时间满足部署要求.
2. 黑产不断更换资源, 绕过相应的策略行为, 单维度的策略难以满足要求. 因此, 我们在建立模型时充分考虑到模型的通用性, 部署简易型, 同时引入多个维度用户关联性特征, 用户行为特征等.
技术难点
1. 时效性要求
黑产为了绕过相关策略, 往往不断变换相关资源. 例如前几个小时内用来爬取数据的 ip, 在下一个时刻这些 ip 将会被黑产摒弃. 这就要求我们在短时间内判断出该 IP 是否有恶意, 从而可以更好的为下一时刻该 IP 的相关行为作出判断.
2. 计算性能要求
以某个大流量的场景为例, 一个小时内的流量就达 600 万以上. 如何在有限时间内计算出每条流量之间的相似性也是我们需要考虑的问题. 要求我们在设计特征时尽可能考虑等值特征, 而非基于距离的特征设计.
3. 可解释性要求
在异常流量检测中, 我们很难判断一条是否异常, 因为无法通过上下联系观察其行为, 这一点在未登录流量爬虫表现的更加明显. 这就要求我们在模型选取上以及模型判定上有很强的解释性.
模型框架
鉴于此我们设计了基于图的异常检测架构, 它主要分为复杂网络构建层, 图挖掘层以及应用层, 如下图所示:
1. 复杂网络构建
复杂网络主要由用户, 流量实体相关属性进行构建, 具体包括如下几个方面:
A. 构建网络顶点
构建网络顶点在最初的设计上我们以 userid 或者 sessionid 为顶点, 以顶点与顶点相关的特征统计相似性作为两个顶点之间的权重, 构建出了最初的网络图. 但是这样构造的网络在计算顶点与顶点的相似性时其计算复杂度会随着设计的特征复杂度的增加而增加, 同时面临的一个更加现实的问题是在每个小时的流量平均在 600 万以上的场景下, 我们需要在有限的时间内计算出用户的相似性, 这是很难满足要求的. 因此我们在计算每个用户的相似性时, 将其转移到图 (工具 Graphx) 上进行计算. 基于此我们设计了包含主要特征的顶点, 并构建了一个复杂网络. 在构建以上的强关联属性顶点的同时, 我们也考虑到了弱关联属性等相互组合的信息.
B. 构建网络边
通过用户顶点之间的联系建立起复杂网络中的边, 并且根据边的不同类型产生不同边权重, 对于弱关联属性我们通过组合的形式对顶点进行关联.
2. 图挖掘层
我们在对上述的顶点和边的特征以及关联关系提取后, 我们设计了关联关系的设计以及顶点之间的相似性度量计算(这里我们参考了 Facebook 的 SynchroTrap 对恶意账号识别的思想), 在计算完用户的相似性后, 对置信度较低的相似性的两个顶点进行分割, 并根据每个 subgraph 中的相关评价指标选出稳定性较强相关 subgraph, 最终对每个 subgraph 进行异常性评价, 具体步骤如下:
A. 顶点之间的相似性度量设计
首先我们定义出每个顶点之间的关联性, 这里我们采用一个三元组的形式表示一个用户的一个行为:
在关联性的基础上我们定义出了顶点与顶点之间的相似性.
当然根据上述定义方式计算出相似性, 使用相关聚类的方式如 kmeans,DBSCAN 或者通过某些层次聚类也可以得到良好的效果, 但是当我们的数据量比较大时, 这种耗时的计算代价是不可接受的. 这里我们采用了基于图的计算, 它的深度关联性以及对每阶的计算的便捷 性是其主要优势. 目前一个小时用户行为 600 万以上流量数据中, 其中包括了各种关联的资源, 进行计算的时间可以控制在 10 分钟内, 相对于采用其他方式有很大的提升. 鉴于此我们将顶点与顶点的相似性作为边的权重并且计算出各个顶点的出入度以及平均每个顶点边的权重等统计信息.
B. 设计顶点, subgraph 等评价指标
为了保证我们在步骤 C 中子图的稳定性以及子图内部顶点的强关联性. 需要设计一套评价子图内部顶点相关性评价指标. 我们在这里设计的评价指标包括每个子图的纯度, 即子图共同拥有的资源数, 这样设计的目的在于保证子图的强关联性和可解释性. 当然还有很多相关指标需要根据相关实际进行操作.
C. 对边, 顶点进行过滤取 subgraph
在计算相关 subgraph 指标以及每个顶点统计信息后, 为了保证准确性, 我们在这一步需要对满足条件的边以及顶点进行分割. 例如在顶点分割时我们根据综合指标: 某个子图中顶点的权重之和的平均值作为分割的标准. 当然其中还有很多分割方式, 仍需根据业务需求以及效果来实际操作. 在分割完比较大的子图后, 形成了相似度比较高的子图群组, 这就是我们需要的更高准确率的异常群组.
D. 对 subgraph 的一致性评价
3. 应用层
应用层主要针对不同的数据源, 不同的场景, 对不同类型的异常组的识别. 针对不同的场景我们会根据实际情况调整不同的阈值以及相关的评价标准.
效果对比
基于图关联的异常检测目前已经迭代一个版本, 目前应用在异常流量检测与恶意注册识别中
1. 异常流量检测
以某场景的流量检测为例, 目前需要 36 个策略进行拦截, 基于图关联异常检测准确率为 98% 以上, 相同条件下相较于策略拦截量多召回比率近 40%.
近五天相较于策略多召回率占比如下所示:
2. 注册端异常用户识别
以某一天注册端场景异常检测为例, 目前需要 26 个策略进行拦截, 基于图关联异常检测准确率为 97%, 相同条件下相较于策略拦截量多召回比率近 43.4%.
近五天相较于高分值策略多召回率占比如下所示:
未来展望
现有版本是一种基于关联的图划分检测方法, 在安全领域实践过程中展示出来较好的普适性, 能够适应不同业务, 不同场景, 不同数据量大小, 现已经广泛应用于异常检测各个场景中.
为了应对黑产的不同策略变化, 基于用户行为的图挖掘越来越受到了安全领域的重视. 在今后的工作重点中, 我们的关注重点不但在用户的关联信息, 而且会增加用户的行为信息, 并将其有效的结合. 现有的一些实践中 (图表示) 已有效结合这两种信息, 并且在实践中展示出了其结合的优势, 这为后续的工作指明了方向.
来源: http://www.tuicool.com/articles/ZfyQRvR