机器学习算法在用户行为检测(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)领域的应用的更多相关文章
- 机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理)
前言: 找工作时(IT行业),除了常见的软件开发以外,机器学习岗位也可以当作是一个选择,不少计算机方向的研究生都会接触这个,如果你的研究方向是机器学习/数据挖掘之类,且又对其非常感兴趣的话,可以考虑考 ...
- 机器学习&数据挖掘笔记(常见面试之机器学习算法思想简单梳理)
机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理) 作者:tornadomeet 出处:http://www.cnblogs.com/tornadomeet 前言: 找工作时( ...
- [转]机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理)
机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理) 转自http://www.cnblogs.com/tornadomeet/p/3395593.html 前言: 找工作时(I ...
- Python机器学习算法 — 关联规则(Apriori、FP-growth)
关联规则 -- 简介 关联规则挖掘是一种基于规则的机器学习算法,该算法可以在大数据库中发现感兴趣的关系.它的目的是利用一些度量指标来分辨数据库中存在的强规则.也即是说关联规则挖掘是用于知识发现,而非预 ...
- paper 19 :机器学习算法(简介)
本来看了一天的分类器方面的代码,乱乱的,索性再把最基础的概念拿过来,现总结一下机器学习的算法吧! 1.机器学习算法简述 按照不同的分类标准,可以把机器学习的算法做不同的分类. 1.1 从机器学习问题角 ...
- paper 17 : 机器学习算法思想简单梳理
前言: 本文总结的常见机器学习算法(主要是一些常规分类器)大概流程和主要思想. 朴素贝叶斯: 有以下几个地方需要注意: 1. 如果给出的特征向量长度可能不同,这是需要归一化为通长度的向量(这里以文本分 ...
- 机器学习算法GBDT
http://www-personal.umich.edu/~jizhu/jizhu/wuke/Friedman-AoS01.pdf https://www.cnblogs.com/bentuwuyi ...
- 【机器学习PAI实践十二】机器学习算法基于信用卡消费记录做信用评分
背景 如果你是做互联网金融的,那么一定听说过评分卡.评分卡是信用风险评估领域常用的建模方法,评分卡并不简单对应于某一种机器学习算法,而是一种通用的建模框架,将原始数据通过分箱后进行特征工程变换,继而应 ...
- 机器学习算法的基本知识(使用Python和R代码)
本篇文章是原文的译文,然后自己对其中做了一些修改和添加内容(随机森林和降维算法).文章简洁地介绍了机器学习的主要算法和一些伪代码,对于初学者有很大帮助,是一篇不错的总结文章,后期可以通过文中提到的算法 ...
随机推荐
- 「刷题」GERALD07加强版
是LCT了. 首先我们不知道联通块怎么数. 然后颓标签知道了是LCT. 那么考虑一下怎么LCT搞. 有一个很普遍的思路大家也应该都知道,就是如何求一个区间中某种颜色的个数. 这个可以很简单的用主席树来 ...
- NOIP模拟测试40
考试时打了三个正解(或者叫能A的算法?),但是最终一个都没有A. 比较失败的一次考试. T1.队长快跑 先打了70分的dp,然后发现这个式子可以优化,拿线段树搞一下就好了,发现考试已经过去1h了,决定 ...
- CF480E Parking Lot(单调队列+dp然鹅并不是优化)
(全英文题面所以直接放化简题意) 题意:在一个二维平面内,初始有一些点,然后每个时间点加入一些点,对每个时间点求平面内最大的无障碍正方形 (这次的题目是真的神仙啊...) 首先,考虑暴力,如果对每一个 ...
- linux 命令 | 常用命令导图(0)
- Hibernate的多对多关系
1.表的关系: 分别有三个表:课程表.学生表.分数表.课程和学生的关系是多对多的,因为一个学生对应多个课程,而一个课程被多个学生选修.如果用一对多.多对一的观点来看待课程和学生的关系显然是不对的,因为 ...
- static静态关键字
转载自大佬:https://www.cnblogs.com/xrq730/p/4820992.html 静态资源和静态方法 首先,静态的资源和方法等会随着类的加载而进入内存被初始化,而非静态的资源和方 ...
- lqb 基础练习 数列排序 (sort的使用)
基础练习 数列排序 时间限制:1.0s 内存限制:512.0MB 问题描述 给定一个长度为n的数列,将这个数列按从小到大的顺序排列.1<=n<=200 输入格式 第一行为一个整 ...
- 系统信息命令(uname、dmesg、df、hostname、free)
uname 显示计算机及操作系统相关的信息,uname -a显示全部信息,uname -r内核的发行号,各种信息可以有单独的选项分别指出 [lixn@Fedora24 ~]$ uname -a Lin ...
- Ubuntu 16.04 安装Maven3.3.9
1 下载地址 http://maven.apache.org/download.cgi 2 将下载到的apache-maven-3.3.9-bin.tar.gz文件上传到/temp目录下,然后切换到r ...
- 用java实现“钉钉微应用,免登进入某H5系统首页“功能”
一.前言 哈哈,这是我的第一篇博客. 先说一下这个小功能的具体场景: 用户登录钉钉app,点击微应用,获取当前用户的信息,与H5系统的数据库的用户信息对比,如果存在该用户,则点击后直接进入H5系统的首 ...