机器学习算法在用户行为检测(UBA)领域的应用
【摘要】最近看到越来越多的安全圈的同学开始关注UBA或者UEBA的相关产品和技术,恰好这一段时也一直在跟进UBA产品的状况,正如Gartner报告所述,最具创新能力的UBA供应商往往都是一些初创公司,我们比较了IBM、HPE、Splunk这类大公司的UBA产品,但是感觉无非就是SIEM产品的更新升级罢了,相反一些名不见经传的初创公司如Balabit、Sqrrl等的UBA产品到让人眼前一亮。在参考业界的同时,我们也在UBA的核心算法上做了一番研究,要知道UBA之所以号称下一代SIEM,其核心就是将机器学习引入行为数据检测,本文简要总结一下近期研究的适用于UBA的机器学习算法和效果。
UBA产品并不依赖某个“银弹”算法,其必定是一系列机器学习算法的有机融合,稍微了解机器学习的同学都清楚,像贝叶斯家族、线性回归这类有监督学习算法往往都需要大量的训练样本,但是网络安全领域APT攻击的样本一年抓不住两个,要说大量训练几乎没可能,因此UBA产品大量采用非监督学习算法,通过聚合行为数据巧妙的达到异常检测的目的。下面简要介绍一下在行为检测过程中常用的机器学习算法。
首先我们假设一个用户场景,张三,是一个SO的系统管理员,他的账号有很多出入IT系统的权限,某天他的账号被黑客盗用了,黑客通过VPN等通道接入内网,并且将数据偷盗到公司外出售给竞争对手。
一个低风险用户的正常业务活动通常没什么可关注的,但是一些高风险人群的正常活动或者低风险账号进行的高危操作则足以值得调查人员关注,更近一步,如果一个高风险用户做了一些高危并且不长出现的动作,那就绝对需要安全人员介入调查了。这里有一个问题,我们如何知道一个用户风险等级是高还是低?这便是UBA及其算法要解决的核心问题,通过建立动态行为基线发现用户偏离正常模式的行为,并根据风险累计的数值判断用户风险级别。综上,构建用户的特征行为矩阵是第一步,也即User-Profile,特征行为矩阵的构建方法五花八门,考虑到HBase支持数据量大,列式存储等特点,我们选择将特征矩阵保存在HBase里。
张三,像其他特权用户一样,利用其账号的权限登录到某一台主机或者服务器,主机登录算法用以检测每个用户经常使用的主机或者服务,DBA通常倾向于登录固定的几台机器,并且都是使用相似的命令,同时销售人员都是使用天兔或者某个XX系统的服务,两者使用方式完全不同。这里张三登录的是一台保存销售数据的服务器,而显然,这与他之前的模式或者与他所在的Peer-Group都是格格不入的。这里我们使用KMeans算法根据用户行为数据的特征矩阵对用户划分Peer-Group,行为模式类似的人群会划分到一个动态群组。
除了动态群组,根据现有的系统权限组进行风险评估同样是一种有效方式,我们从LDAP或者AD获取用户组以及组的成员数,通常规模较小的组比成千上万用户的组风险系数更高。当张三的账号被黑客从普通管理员组提升到超级管理员组的时候,他的账号瞬间进入了一个人烟罕至的群组,这时候他的风险值会瞬间提升。
除了用户登录的机器,登录时间也是行为特征中非常重要的一个环节,基于时间序列的分析方法有很多,这里我们使用KDE(核心概率密度估计)算法来统计和预测用户在某个时间段登录的概率,这种方法可以有效的克服离散数据在模式匹配过程中容易过耦合的问题。比如张三作为一个系统管理员,通常的登录时间是上班时间以及晚饭以后的时间,早上7:30属于正常登录时间,而凌晨0点登录就会被标记为高度反常和可疑。KDE曲线如下图:
张三登录系统以后进行了一系列的操作,通常一个用户在一段时间内能够产生的操作个数也是一个人的典型特征,User-Profile聚合一个用户在一段时间内产生的所有行为数据的数量,使用KDE重新组织统计数据,并检测这个模式是否发生明显改变。如果这里张三在一小时内接连登录了30+台服务器,而他通常也就登录2、3台,那么这里就与正常的行为有明显的偏移。
基于频繁项集的聚类算法(如Aprior/FP-Growth)在零售行业很早以前就有广泛应用,比如沃尔玛对顾客购买商品的模式发掘发现啤酒和尿布经常一起出售。基于频繁项集的机器学习算法在UBA领域也有广泛应用,比如,张三通常在周末的时候通过SSH协议登录,而在工作日通过RDP协议登录,那么有一天他在周末通过RDP登录就是一个行为模式的偏移。
主成分分析(PCA)是一种应用广泛的降维算法,其在行为数据异常检测的过程中有很好的效果,首先用户行为的特征矩阵往往都有成千上万个维度,如果我们想从海量数据的特征矩阵中找出异常也即离群的点,计算难度会比较大,我们采用PCA对特征进行降维并结合KMeans等聚类算法找出离群点。比如,张三通常会长时间使用前台的服务器,而运维后台服务器的时候比较短,如果他长时间停留在后台服务器上我们的算法会将其潜在的风险值提高。
上面介绍的几个算法Spark的MLlib提供的全部的实现,不得不感叹一下Spark确实是解放程序猿双手的良心之作。再往后,基于图数据的分析挖掘是我们后续的研究方向,安全调查人员时常需要看到用户和实体之间的数据关联,或者所谓的Kill-Chain,图数据库和基于Graph的算法天然支持这一点,好在Spark GraphX又替我们做到了这一步。图数据的挖掘我想业界应该没有比Palantir做的更好的了,就是那个号称帮助美军找到*** 的那家传奇数据公司
作者:菊花茶
机器学习算法在用户行为检测(UBA)领域的应用相关推荐
- 欺诈检测的机器学习算法及企业级欺诈检测方案!
各行各业的欺诈者一直存在,尤其是金融服务行业欺诈性事件更是数不胜数.为了阻止欺诈事件的产生,反欺诈者也越来越多.随着人工智能在计算机领域的发展,使用机器学习进行欺诈检测已在许多行业中流行起来. 本文中 ...
- [当人工智能遇上安全] 5.基于机器学习算法的主机恶意代码识别研究
您或许知道,作者后续分享网络安全的文章会越来越少.但如果您想学习人工智能和安全结合的应用,您就有福利了,作者将重新打造一个<当人工智能遇上安全>系列博客,详细介绍人工智能与安全相关的论文. ...
- python 异常检测算法_吴恩达机器学习中文版笔记:异常检测(Anomaly Detection)
大数据文摘经授权转载 作者:黄海广 在接下来的一系列视频中,我将向大家介绍异常检测(Anomaly detection)问题.这是机器学习算法的一个常见应用.这种算法的一个有趣之处在于:它虽然主要用于 ...
- adadelta算法_对C++用户比较友好的机器学习算法库
由于疫情影响,这几天在家学习编程,整理了基于c++语言的机器学习算法库.目前大部分机器学习库都是面向pyhton语言的,尽管很python包的底层语言是c++,但c++用户使用起来很麻烦,这里整理了一 ...
- 机器学习:基于Knn算法的用户属性判断方案设计
本文作者通过Knn算法进行了一次用户判断预测的流程,文章为作者根据自身经验所做出的总结,希望通过此文能够加深你对Knn算法的认识. knn算法简介 K最近邻(k-Nearest Neighbor,KN ...
- 这才是数据挖掘领域常用的机器学习算法!
"2021-08-05,全体人民,原地失业." 最近,这条字节员工发布的朋友圈一夜刷爆网络,字节跳动教育板块大裁员的消息,引起了行业内的巨大震荡. 图片来源:网络 虽然字节最终并没 ...
- 机器学习算法在自动驾驶领域的应用大盘点!
将汽车内外传感器的数据进行融合,借此评估驾驶员情况.进行驾驶场景分类,都要用到机器学习.本文中,我们讲解了不同的自动驾驶算法. 自动驾驶汽车的设计制造面临着诸多挑战,如今,各大公司已经广泛采用机器学习 ...
- 机器学习算法 拟合曲线_制定学习曲线以检测机器学习算法中的错误
机器学习算法 拟合曲线 机器学习 (Machine Learning) The learning curve is very useful to determine how to improve th ...
- 多元回归求解 机器学习_金融领域里的机器学习算法介绍:人工神经网络
人工智能的发展在很大程度上是由神经网络.深度学习和强化学习推动的.这些复杂的算法可以解决高度复杂的机器学习任务,如图像分类.人脸识别.语音识别和自然语言处理等.这些复杂任务一般是非线性的,同时包含着大 ...
最新文章
- wince6.0 编译报错:error C2220: warning treated as error - no 'object' file generated的解决办法
- lsof查看进程占用文件_lsof命令查看进程socket相关信息
- 外网ip怎么查_无公网IP的情况下,搞定群晖并实现远程Nas访问
- 腾讯开源再获OSCAR 5项大奖,全国首家可信开源治理认证自发开源企业
- C++笔记-远程线程注入
- NB-IoT四大关键特性及实现告诉你,为啥NB
- 物联网火爆,开发者遇到大难题了!
- markdown语法中一些数学符号怎么打
- 时间进度表html,网页的设计进度表.doc
- 2022爱分析· 地产科技厂商全景报告
- 8个免费在线PDF转Word工具,一键轻松转换
- 微信小程序开发之——WeUI快速上手
- 智能语言处理之依存树计算句子结构相似度计算
- Python利用 Anaconda安装pytorch并测试GPU
- dsp gpip操作 data set 和clc
- 单机翻译软件android,计算机辅助翻译软件(Transmate)V7.3.0.1218 单机版
- G. 打印 LOGO(递归)
- 推荐 5 个精选公众号
- unicode中文数字与阿拉伯数字转换
- 培训演讲的小技巧,你知道多少?
热门文章
- mysql connector放在哪_关于MySQL Connector/C++那点事儿
- 长微博android,Android 上最强大的长微博工具:BlackLight 长微博
- mysql show 存储过程_mysql 存储过程 show errors
- 联想m100显示耗材_RTX3070显卡搭档高性能显示器,畅玩精美游戏大作!
- ajax获取session值_java程序员你真的了解session与cookie吗?
- java 不加锁_在java中,在高并发的时候,不加锁的时候。
- lamda获取参数集合去空_集合源码解析之LinkedList
- pycharm -- 小技巧1 (显示文件的代码结构以及错误提示)
- php使用curl实现get和post请求的方法,数据传输urldecode和json
- 开始使用 Markdown